Xataka
Contenidos contratados por la marca que se menciona

+info

Las apps para inteligencia artificial son esencialmente las mismas aplicaciones que podemos encontrar en cualquier smartphone. Con la particularidad de que estas usan ciertas APIs y librerías de programación destinadas a hacer uso de algoritmos y técnicas de machine learning en general y deep learning en particular. Con ello, consiguen que estas aplicaciones se comporten de un modo inteligente.

Hablamos, por supuesto, de IA estrecha, en la que las aplicaciones de inteligencia artificial están destinadas a resolver un problema específico en vez de comportarse de un modo inteligente ante cualquier circunstancia. La IA estrecha o narrow está enfocada a resolver tareas específicas dentro de campos como el reconocimiento de imágenes o el procesamiento del lenguaje natural.

Este tipo de inteligencia artificial encuentra sus aplicaciones más inmediatas en campos como los mencionados anteriormente, aunque también se usa en áreas como la salud, la geolocalización y optimización de rutas, economía, recomendaciones para compras o en plataformas como Netflix, etcétera.

Los algoritmos de la IA

El deep learning no es la única técnica empleada para programar aplicaciones de IA a través de machine learningTambién hay modelos lineales y modelos de árbol, además de las redes neuronales. Dependiendo de la complejidad del problema que haya que resolver se usará uno u otro tipo de algoritmo.

Dentro de los lineales, encontramos métodos de regresión lineal y de regresión logística. Son los que se emplean para problemas simples. En los modelos de árbol tenemos los árboles de decisión y los bosques aleatorios. Sirven para atacar problemas más complejos.

En el caso de las redes neuronales, los problemas que pueden atacarse son de un nivel de complejidad mucho mayor, pero los procesos de entrenamiento son más laboriosos. Además, se tiene que contar con el tiempo de entrenamiento durante la fase de diseño. Solo así es posible programar una inteligencia artificial capaz de entendernos.

Elige un lenguaje de programación

Como todo programa, los algoritmos de IA se pueden implementar en diferentes lenguajes de programación, como los que sirven de base para diseñar apps. Una vez que sabemos qué problema queremos resolver, es el momento de elegir en qué lenguaje lo programaremos.

En este sentido, existen diferentes opciones donde elegir. Unos de los lenguajes de programación más usados, tanto para inteligencia artificial como para otros objetivos es Python. Si buscas alguno con muchos tutoriales, también puedes emplear lenguajes como C++, R, LISP, Perl o CUDA.

Para facilitar la programación de aplicaciones de IA, existen librerías y APIs de programación que hace que no haya que partir de cero a la hora de programar los algoritmos que se emplean en la resolución de problemas de IA. Es el equivalente a los relojes digitales mundiales: no tiene sentido programar el cambio de hora a verano en cada página web del mundo, pero sí copiar y pegar ese fragmento de código que tanto aporta.

Estas librerías y APIs estarán disponibles en uno o más lenguajes de programación, y hacen posible que ahorremos mucho tiempo programando el armazón básico de las apps.

¿Dónde busco las librerías y APIs?

Como las librerías y APIs están pensadas para facilitar el desarrollo de aplicaciones y servicios web de inteligencia artificial usando machine learning en alguna de sus modalidades, suelen ser de acceso público. Google, Microsoft, IBM, Facebook y otras empresas cuentan con APIs y librerías como TensorFlowCNTKWatson o Caffe2 respectivamente. En casi todos los casos están dentro del dominio del código abierto y uno puede usar estos fragmentos en sus proyectos.

TensorFlow es una de las más conocidas, precisamente por tratarse de la librería de Google para machine learning. Permite programar en C++ y en Python, y cuenta con un excelente conjunto de recursos para programar aplicaciones de inteligencia artificial. TensorFlow cuenta incluso con modelos pre-entrenados. Es decir, que parte del trabajo de entrenamiento ya está realizado siempre y cuando nuestro proyecto se alinee bien con el código.

Microsoft CNTK es para C++, Python o Java, y es la “competencia” de TensorFlow. CNTK es el acrónimo de Computational Network ToolKit. Por otro lado, Caffe y Caffe 2 son las librerías que usa Facebook, aunque están dentro del modelo de código abierto. Su especialidad es la clasificación de imágenes. Se pueden usar lenguajes como Python y C++ para programar aplicaciones.

Torch es otra librería especializada en operaciones numéricas y científicas basada en el lenguaje Lua, y provee a los programadores con un gran número de algoritmos para el desarrollo de aplicaciones. Watson de IBM es el API que permite acceder a los recursos de IBM en lo que a machine learning se refiere. Es posible desarrollar aplicaciones dentro de los recursos cloud de IBM. Todo parece muy técnico al principio, pero es cuando entramos a programar que nos damos cuenta de la riqueza de estas bases de datos.

Huawei tiene su propio Kit de Desarrollo de Software (SDK) al que llama HiAI. Esta IA está asociada a su procesadores, y concretamente a los que integran la tecnología de aceleración para algoritmos de machine learning a través de su NPU, como el Huawei P20 Pro.

Desarrollo de aplicaciones móviles

El desarrollo de apps móviles requiere del uso de las versiones “ligeras” de las APIs. Por supuesto, hay muchas más APIs que las mencionadas anteriormente. En realidad, decenas de ellas, en ocasiones específicas para determinado tipo de tareas en contextos de investigación y desarrollo. Pero TensorFlow o Caffe2 son, por decirlo de algún modo, librerías de propósito general. Su uso es más extendido y fácil para los programadores porque además hay gran cantidad de tutoriales.

El desarrollo de apps móviles, además, se ha visto revitalizado por la adopción generalizada de una estrategia en la que el procesamiento de las aplicaciones de IA se lleva al smartphone en vez de depender exclusivamente de la nube. Es decir, las apps de IA se ejecutan localmente e los dispositivos, con lo que se evita tener que usar la conexión de datos para subir una imagen o un audio o un mapa a la nube para identificar la foto, procesar el audio o calcular una ruta.

¿Hardware local para acelerar la IA?

Esta estrategia, la de procesar las apps de inteligencia artificial en los propios terminales, tiene como pionera a empresas como Amazon, que está desplegando una plataforma de IA donde los dispositivos “en el Edge” procesan las apps de IA en vez de usar la nube. En el mercado de la tecnología móvil está Huawei, su procesador Kirin 970, y su NPU integrada en el SoC, capaz de acelerar el procesamiento de apps de IA.

La clave radica en que estas apps precisan de un elevado paralelismo en la ejecución de los algoritmos de machine learning, ya sean lineales, de árbol o basados en redes neuronales. Los modelos se entrenan en la nube, pero una vez calculados los coeficientes que hacen que estos algoritmos identifiquen una imagen, un audio o clasifiquen y ordenen los datos para los que han sido entrenados, el procesamiento se lleva a cabo en el propio dispositivo móvil. Huawei ha sido una empresa pionera en este campo, con terminales como el Mate 10 o el Huawei P20 Pro listos para procesar apps de IA a través de la NPU.

Dicho esto, a la hora de programar una app que aproveche esta tecnología de aceleración habrá que usar las librerías de Huawei para que la aplicación “redirija” la ejecución del código hacia la NPU. El procesamiento de IA en tiempo real es clave para la implementación de aplicaciones que sean realmente funcionales. De poco vale tener una app que identifique imágenes si tarda más tiempo del que estamos delante de la escena que queremos reconocer.

Huawei proporciona a los desarrolladores el HiAI SDK, que permite aprovechar la potencia de cálculo de la NPU, siendo además compatible con librerías como Caffe/Caffe2 y TensorFlow/TensorFlow Lite. Depende del programador que la aplicación pueda utilizar la NPU como hardware para acelerar la ejecución de un algoritmo de inteligencia artificial, sea TensorFlow o Caffe2 entre otros. De otro modo, la app usará la CPU o la GPU, con un rendimiento menor y menos posibilidades, especialmente si trabajamos con algoritmos de machine learningespecialmente complejos.

La programación de apps: cada vez más sencilla

Las aplicaciones se pueden programar de un modo progresivamente más sencillo. La existencia de librerías como TensorFlow o Caffe2, así como los SDKs de los fabricantes de hardware, permiten a los programadores integrar algoritmos de machine learning en sus aplicaciones de un modo más asequible. La complejidad radica en el entrenamiento de las redes neuronales o los árboles de decisión en busca de los coeficientes que permitan hacer que, por ejemplo, una imagen se identifique como un gato.

El procesamiento de la IA en el propio terminal es una tendencia que está aquí para quedarse, especialmente ahora que empieza a haber aplicaciones aceleradas mediante el hardware en el propio dispositivo, como la NPU de Huawei. El objetivo es que el procesamiento sea en tiempo real, sin necesidad de recurrir a los súper ordenadores de la nube para ello.

La esencia de una app de IA está en los algoritmos, el diseño de un modelo lineal, un árbol o una red neuronal, su entrenamiento y su implementación haciendo uso de la aceleración del hardware para que pueda funcionar en tiempo real.

Foto | Principal de Huawei, Red neuronal de WikipediaIA, ML y DL de NVIDIATensorFlow de GoogleHiAI de Huawei