TIC, TAC, TEP: Aprender en el siglo XXI

IA, IoT y Tecnologías Información, Aprendizaje y Participación


Deja un comentario

Deep learning para clasificar polen

¿Sabías que el Deep Learning te puede evitar pasar un mal rato por la alergia, detectar si la miel está adulterada, o ayudar a resolver un crimen? Esta ductilidad del deep learning, su capacidad de facilitar nuestro día a día gracias sus aplicaciones en gran cantidad de campos es, precisamente, el secreto de su éxito.

Deep Learning y alergia

¿Cómo puedo el deep learning mejorar la vida de las personas alérgicas?. La clave está en el polen. En poder contar y clasificar cuántos granos de cada tipo hay en una muestra determinada. Anteriormente, esta tarea se realizaba de forma manual. El problema es que algunos granos resultan prácticamente indistinguibles. Por ello, los porcentajes de acierto no eran especialmente buenos, situándose en torno al 63,5%.

Figura 1: Euphorbia.pulcherrrima-polen
Figura 1: Euphorbia-pulcherrima-polen (Wikipedia)

Un equipo de investigadores de la UNED, liderado por José Luis Aznarte ha desarrollado un algoritmo que utiliza redes neuronales convolucionales para clasificar de forma automática hasta 46 especies diferentes de polen en una muestra. El porcentaje de acierto es un 98%, lo cual supone una excelente noticia para ese (estimado) 40% de la población mundial que moquea, lagrimea, o incluso puede tener dificultades para respirar debidas a la rinitis alérgica por exposición a polen.

Clasificación de pólenes

Para prevenir o contrarrestar estos episodios, de mayor o menor gravedad, es preciso saber cuántos granos se encuentran suspendidos en el aire y en qué planta germinan. Por ello es necesario clasificarlos por especies.

Pero la clasificación automática de polen no es sólo útil para alertar a la población alérgica, o establecer protocolos en los centros sanitarios para atender mejor sus síntomas. También se aplica a otros campos.

Paleobotánica

Los paleontólogos examinan granos de polen fosilizados en sedimentos antiguos para reconstruir cómo era la flora en un lugar hace milenios.

Lepidodendron aculeatum (Wikipedia)
Figura 2: Lepidodendron aculeatum (Wikipedia)

Palinología forense

El polen también puede ser una interesante referencia forense para ubicar el lugar dónde se ha cometido un delito, ya que puede usarse como biomarcador capaz de conectar personas y objetos a lugares y espacios de tiempo determinados.

Industria alimentaria

Y en la industria alimentaria, distinguir, por ejemplo, si está adulterada esa “miel pura” que acabamos de comprar. La miel “ultrafiltrada” es producto de someterla a temperaturas muy altas, y añadirle agua para sacarle mayor rendimiento al producto. El resultado es la pérdida del polen, y con ello sus propiedades nutritivas y saludables. Por ello, es muy interesante poder detectar si una miel está adulterada de forma automática.

Vemos, nuevamente, como el Deep Learning se cuela en nuestro día a día para hacernos la vida más fácil.


Referencia:

Precise automatic classification of 46 different pollen types with convolutional neural networksVíctor Sevillano, Katherine Holt,  View ORCID ProfileJosé L. Aznarte

Anuncio publicitario


Deja un comentario

Deep Learning para predecir la calidad del aire

Contaminación en la ciudad

La contaminación atmosférica por gases procedentes de combustibles fósiles genera graves problemas de salud a los habitantes de las ciudades. Por ello, la creación de modelos predictivos que permitan estimar los niveles de calidad del aire en un lugar, momento y condiciones dadas resulta de gran interés. Pero no es una tarea fácil. Veamos cómo el Deep Learning puede a superar estas dificultades.

El problema

Las principales agencias encargadas de la protección de la salud y del medio ambiente -como la OMS, la Agencia Europea de Medio Ambiente o la Agencia de Protección Ambiental de los EEUU (EPA), afirman que la inhalación de contaminantes, especialmente de las partículas de menor tamaño, incrementa el riesgo de daños pulmonares permanentes y muerte prematura. A pesar de la gravedad de sus efectos, tanto a corto como a largo plazo, las observaciones existentes sobre contaminación no son adecuadas para planificar estrategias de protección a la población vulnerable con suficiente antelación.

¿Por qué resulta tan complicado?

El problema principal radica en cómo combinar las dos fuentes de datos principales. Por un lado, las observaciones por satélite, que permiten medir la contaminación atmosférica en un lugar determinado a la misma hora cada día, pero no pueden medir cómo varían las emisiones a horas distintas. Por otro lado, las estaciones meteorológicas terrestres, que recogen datos de forma continuada, pero sólo en un número limitado de ubicaciones.

Sensores satelitales

El Sentinel-5p (p de precursor) es un satélite de monitorización atmosférica que, mediante instrumentos como el TROPOMI y UVNS, permite monitorizar la distribución de componentes atmosféricos como: ozono (O3), dióxido de nitrógeno (NO2), dióxido de azufre (SO2), formaldehidos (HCHO), monóxido de carbono (CO) y metano (CH4), o el espesor óptico de aerosoles (AOD).

(los datos de los satélites Sentinel son siempre gratuitos y de acceso libre para todos los usuarios y, por supuesto, preferente para los servicios Copernicus).

En particular, TROPOMI, el espectrómetro de imágenes multiespectrales fue desarrollado conjuntamente por la ESA y la Oficina Espacial de los Países Bajos. Proporciona una medición de la calidad del aire troposférico de alta resolución espacial (~5 km) que capta la variabilidad espacial de la contaminación del aire. En la imagen, podemos ver como ejemplo una visualización de la variación en la concentración de dióxido de nitrógeno sobre China.

Gif: Concentración de dióxido de nitrógeno sobre China (ESA (CC BY-SA 3.0 IGO) )
Gif: Concentración de dióxido de nitrógeno sobre China (ESA (CC BY-SA 3.0 IGO) )

Estaciones terrestres

AirNow es una asociación que unifica datos procedentes de diferentes asociaciones gubernamentales de EEUU, y datos procedentes de sus embajadas y consulados en todo el mundo con el objeto de poner a disposición del investigadores, empresas y publico en general datos de calidad sobre contaminación atmosférica.

Las estaciones de AirNOW, ofrecen observaciones horarias de los niveles de dióxido de nitrógeno (NO2) a nivel del suelo. Sin embargo, se trata de mediciones discretas, procedentes de las distintas estaciones terrestres asociadas al programa. Los niveles de dióxido de nitrógeno varían mucho durante el día. Por ello, resultaría muy interesante comparar las observaciones a nivel de superficie con las registradas por satélite, para así poder elaborar estimaciones con mayor resolución espacial y temporal. Lo ideal sería disponer de medidas a escala suburbana cada hora.

Deep Learning para medir contaminación atmosférica

En un estudio publicado en Science Direct, los investigadores Manzhu Yu y Qian Liu aplican algoritmos de aprendizaje profundo (Deep Learning) para integrar las observaciones horarias de NO2 a nivel del suelo, con las observaciones de la columna de NO2 troposférica recogidas por TROPOMI. Para ello, trabajaron con datos de la ciudad de Los Ángeles, donde los altos niveles de NO2 se deben, principalmente a emisiones del tráfico y de las centrales eléctricas.

¿Por qué usar Deep Learning?

El deep learning o aprendizaje profundo es, por tanto, un subcampo dentro del Machine Learning que utiliza redes neuronales para obtener representaciones cada vez más significativas de los datos mediante el aprendizaje por capas. Cada una de estas capas va extrayendo características de un nivel cada vez más alto hasta llegar a su respuesta final.

Es por ello, que el deep learning es especialmente apropiado para detectar patrones a partir de grandes volúmenes de datos, incluso datos no estructurados. También realiza de forma automática una de las tareas más complejas del proceso de trabajo de Machine Learning: la ingeniería de atributos. Las redes neuronales seleccionan de forma automática qué atributos son los relevantes y cuáles se pueden desechar. 

¿Cómo lo hicieron?

Para obtener estimaciones de las emisiones de NO2 a escala suburbana sobre una base horaria, los investigadores entrenaron los modelos con los siguientes datos de entrada:

  • Ubicación de las estaciones AirNOW
  • Observaciones de NO2 de AirNOW, la altura de la capa límite,
  • Información meteorológica
  • Altitud
  • Vías de tráfico principales
  • Centrales eléctricas

Trabajaron sobre dos modelos:

  • un método integrado entre la distancia ponderada inversa y una red neuronal de avance (IDW + DNN),
  • y una red matricial profunda (DMN) que mapea las observaciones discretas de AirNOW directamente a la distribución de las observaciones de TROPOMI

Compararon las precisiones de ambos modelos utilizando diferentes configuraciones de predictores de entrada y validamos su error medio cuadrático medio (RMSE), su error medio absoluto (MAE) y la distribución espacial de los errores. Comprobaron que el modelo DMN, que compara las observaciones terrestres directamente con las observaciones por satélite, genera estimaciones de NO2 más fiables y captura una mejor distribución espacial de las concentraciones de NO2 que el modelo IDW + DNN. La adición de información como los datos meteorológicos, la elevación y la ubicación de las estaciones terrestres y las principales carreteras y centrales eléctricas mejoró aún más la precisión de la predicción.

El modelo, una vez entrenado, ofrece estimaciones horarias de de dióxido de nitrógeno atmosférico en cuadrículas de aproximadamente 5km cuadrados. Esta alta resolución espacio-temporal resulta muy útil para estudiar la evolución de los contaminantes en el aire, ya que también podría aplicarse a otros gases de efecto invernadero y a otras escalas geográficas (de ciudades a regiones o continentes). Por otra parte, el modelo también podrá actualizarse y mejorar su precisión cuando se lancen nuevos satélites de mayor resolución.

Conclusión

La aplicación de algoritmos de deep learning a las distintas fuentes de datos sobre contaminación atmosférica permite crear modelos que predicen, con una alta resolución espacio-temporal, los niveles de calidad del aire. Este resultado es de gran importancia, la calidad del aire, especialmente en los entornos urbanos, tiene un gran impacto sobre nuestra salud.

________________________________________

1.         Manzhu Yu, Qian Liu. Deep learning-based downscaling of tropospheric nitrogen dioxide using ground-level and satellite observations. Science of The Total Environment, 2021; 773: 145145 DOI: 10.1016/j.scitotenv.2021.145145 ________________________________________

Post original publicado en ThinkBig Empresas.


2 comentarios

Deep Learning para todos los públicos: ¿Qué son los tensores? ¿Qué es TensorFlow?

En el primer post de esta serie, “Atrévete con el Deep Learning: principios básicos al alcance de todos” ya os contamos que una de las características de las redes neuronales que les otorga mayor ventaja frente a otros algoritmos de Machine Learning, es su capacidad para trabajar de forma eficiente con datos no estructurados. Es decir, las redes neuronales nos permiten etiquetar y clasificar cualquier tipo de input. Así, estos datos pueden ser de distintos tipos: números, imágenes, sonidos, textos, series temporales.

¿Y cómo lo consiguen? Lo que hacen es convertiros en  valores numéricos y expresándolos con un formato matemático en el que resulta mucho más fácil identificar patrones: en forma de tensor. Si intentamos buscar en la red ¿Qué es un tensor?, seguramente nos desanimemos ante la avalancha de contenido matemático para expertos, pero no resulta tan fácil encontrar una explicación intuitiva. Daniel Jeffries, en un post de su serie sobre cómo aprender sobre IA cuando “se te dan fatal las matemáticas” (“Learning AI if you suck at Maths”) nos ofrece una explicación clara y divertida sobre tensores (ilustrada con gatos), del que vamos a resumir las ideas principales.

¿Por son importantes los tensores en Deep Learning ?

Los tensores son objetos matemáticos que almacenan valores numéricos y que pueden tener distintas dimensiones. Así, por ejemplo, un tensor de 1D es un vector, de 2D una matriz, de 3D un cubo etc.

Figura 1: Representación gráfica de tensores de 1 a 5 dimensiones.
Figura 1: Representación gráfica de tensores de 1 a 5 dimensiones.

En Python, estos tensores normalmente se almacenan en lo que se conoce como NumPy arrays. NumPy es una de las librerías científicas de Python más se usan en cualquier entorno de trabajo con IA y sirve para manipular números. 

Veamos algunos ejemplos concretos.

  • Una lista de números, se puede “guardar” como un vector de 1D
  • Una lista de correos, con 10.000 usuarios, y 6 campos por cada uno (nombre, apellidos, dirección, ciudad, país, código postal) puede almacenarse en un tensor 2D con dimensiones (10.000, 6).

¿Y si en lugar de tener una lista, tenemos 10 listas?

  •  Entonces, es cuando entran en juego los tensores 3D, que se representarían como (10, 10.000, 6), es decir (“número de listas”, “número de personas por lista”, “número de características por persona”).
Figura 2: Representación de un tensor 3D.
Figura 2: Representación de un tensor 3D.

Un caso típico de uso de tensores 3D es el análisis de tuits. Los tuits tienen 280 caracteres, y usan el estándar UTF-8. Aunque este estándar permite crear millones de caracteres, sólo nos interesan los primeros 128 que coinciden con los básicos del sistema ASCII. Por tanto, un solo tuit se podría encapsular en un vector 2D con la forma (280, 128). Pero en un análisis de sentimiento típico, no trabajamos con un único tuit. Si lo que que queremos es analizar, por ejemplo, un corpus de 1 millón de ellos, los podemos “encapsular” en un tensor 3D de la siguiente forma (1.000.000,280,128). Por su parte, los tensores 4D, se suelen usar para el análisis de imágenes. Por ejemplo, una imagen en color RGB (Red, Green, Blue), con un tamaño de 750×750 píxeles se puede almacenar en un tensor (750, 750, 3). Pero si lo que queremos es trabajar con un corpus de un millón de imágenes de gatos, con este tamaño y en este formato de color, usaremos un tensor 4D :(1.000.000, 750, 750,3). 

Figura 4: Representación de cómo una imagen se puede “encapsular” en un tensor 4D.
Figura 4: Representación de cómo una imagen se puede “encapsular” en un tensor 4D.

Las librerías y entornos  frameworks de código abierto para Machine Learning son herramientas de software que están disponibles en la web de forma gratuita. Son, por tanto, una forma muy interesante probar las ventajas que puede aportar el Data Science a una empresa, sin tener que comprometerse antes con entornos propietarios, como pueden se Microsoft Azure o Amazon Machine Learning.

Este tipo de frameworks están sustentados por una gran comunidad de ingenieros y científicos de datos que comparten abiertamente conjuntos de datos y modelos pre-entrenados. Así, en lugar de tener que construir un sistema de reconocimiento de imágenes desde cero, se puede empezar a partir de modelos de clasificación ya entrenados con datos de Imagenet, o construir tu propio modelo basado en estos datos.

En el post anterior también apuntamos que la creación de la librería Tensorflow marcó un hito importante en la historia del Deep Learning. TensorFlow es una biblioteca de software de código abierto para el cálculo numérico que utiliza grafos de flujo de datos. Los nodos en el grafo representan operaciones matemáticas, mientras que los bordes del grafo representan los conjuntos de datos multidimensionales (tensores) comunicados entre ellos.

En 2011 Google Brain, un equipo de investigadores e ingenieros de Google especializados en Inteligencia Artificial, desarrollaron DistBelief, el predecesor de TensorFlow.  A finales de 2015 Google decidió liberarlo y publicarlo como software libre bajo licencia Apache 2. En 2017 liberó una nueva versión con multitud de mejoras, como mejores rendimientos, y la posibilidad de aprovechar las ventajas de ejecutar sobre GPU´s. También, mejoraron integraciones con otras bibliotecas del ecosistema como Keras.

Google lleva ya años aplicando esta tecnología a muchos de sus productos y servicios, como por ejemplo, el componente de generación de respuestas automáticas de Gmail, o el de traducción automática en Google Translator. Pero desde la liberación del software en 2015 la respuesta de la comunidad ha sido espectacular, y tanto startups de Silicon Valley, como grandes corporaciones usan TensorFlow en sus proyectos. Algunos tan conocidas como UberAirbnbTwitterAirbus o IBM.

Si quieres hacerte una idea de cómo funciona TensorFlow de forma muy visual, puedes visitar esta página web, donde, sin necesidad de programar ni una línea de código, se puede configurar y ver en tiempo real cómo aprende una red neuronal.

Figura 5: Ejemplo de visualización del funcionamiento de una red neuronal.
Figura 5: Ejemplo de visualización del funcionamiento de una red neuronal.

Además de Tensorflow,  hay otros frameworks y librerías muy conocidos, como Theano, Torch, scikit-learn, Caffe, Cognitive Toolkit, Pytorch. En este post podéis encontrar un resumen de sus características más importantes, aunque una común a todos ellos es el uso de librerías como cuDNN y NCCL que ofrecen altos rendimientos en el entrenamiento de los algoritmos gracias al uso de GPUs.

Tras este segundo post más teórico, en el siguiente, nos pondremos manos a la obra y crearemos sencillas aplicaciones basadas en algoritmos Deep Learning. ¿te animas a probar?


Post de la serie:


Post original publicado en ThinkBig Empresas


3 comentarios

Atrévete con Deep Learning: Principios básicos al alcance de todos

¿Tienes una idea clara de lo que es el Deep Learning? Si no es así, no te preocupes, ya que, aunque está en boca de todos, es un concepto que genera mucha confusión. ¿Y por qué se habla tanto de algo de lo que se sabe tan poco? La respuesta es muy sencilla.

El Deep Learning es una de las áreas de investigación más populares dentro del campo de la Inteligencia Artificial en los últimos años porque , gracias a estas técnicas, cosas como la visión artificial o el procesamiento del lenguaje natural han saltado del ámbito de la ciencia ficción a la realidad. Y porque es intrínseco a la naturaleza humana el querer comprender aquello que nos es significativo, que está en nuestro día a día. Y el Deep Learning lo está. En esta nueva miniserie “Deep Learning para todos los públicos” vamos a intentar superar las barreras conceptuales, matemáticas o técnicas para lograr transmitir de forma intuitiva el significado de este concepto y el impacto tiene en nuestra vida presente y futura. En este primer post explicaremos:

  • La relación entre los conceptos de Inteligencia Artificial, Machine Learning y Deep Learning. 
  • Qué es un perceptrón y  veremos un ejemplo de cómo funciona
  • Qué son las redes neuronales y qué las caracteriza
  • Cómo funciona una red neuronal, comparándola con un Sistema Experto y otros algoritmos de Machine Learning
  • Por qué es tan potente el Deep Learning y el tipo de cosas que permite hacer

Por último, veremos un vídeo resumen de lo más interesante. 

Deep Learning vs Machine Learning vs IA

En nuestro post Artificial Intelligence, Machine Learning y Deep Learning: ¿Conoces las diferencias? ya os contamos las principales diferencias entre los conceptos de IA, ML y DL, pero lo cierto es que pasamos un poco “de puntillas” por este último. Si recordamos, la idea principal que subyace al campo de la IA es conseguir que una computadora resuelva un problema complejo como lo haría un humano. A mediados de los años 60, la comunidad IA desarrolló los primeros sistemas expertos , en los que se creía que un potente ordenador y unas pocas reglas de razonamiento podrían emular expertos de rendimiento “superhumano” Sin embargo, claramente, los “recursos” no acompañaban. 

Figura 1: De los Sistemas Expertos a las Redes Neuronales.

Por este motivo, no fue hasta los años 80 que empezó a cobrar importancia el aprendizaje automático o Machine Learning. Se trata de una forma de IA que ya no necesita un programador que codifique reglas, sino que es capaz de establecer sus propias reglas y aprender por sí misma. Y fue en ese momento, casi 30 años después del los inicios de la Inteligencia Artificial, gracias al desarrollo de las tecnologías Big Data y de las mejoras en capacidad de procesamiento. 

Del Machine Learning al Deep Learning: redes neuronales

Cuando hablamos de Machine Learning, hablamos de algoritmos de aprendizaje. Hay muchos tipos de ellos. La elección del más adecuado, dependerá del tipo de tarea que se quiera resolver en cada caso. Por ejemplo, podemos hablar de algoritmos de clasificación como los árboles de decisión, o Naïve Bayes, algoritmos de regresión, de clustering, de análisis de componentes principales… Pero también podemos hablar de redes neuronales

Las redes neuronales son un conjunto de algoritmos diseñados especialmente para reconocer patrones. Son muy potentes porque permiten que una computadora resuelva esos “problemas” que hasta entonces eran fáciles para un humano, pero muy complejos para una IA. Nos referimos a la percepción sensorial. Sí, el conocido ejemplo de “identificar un gato en una foto”, o “identificar un sonido”. 

Origen de las redes neuronales: el perceptrón 

Para que la identificación de imágenes llegara a ser una realidad, hubo que recorrer un largo camino. El origen de la historia se remonta a 1943, cuando McCulloch y Pitts crearon el primer modelo de neurona artificial.  Casi 20 años después, en 1962,  Rosenblatt retomó la idea, creó una estructura llamada “Perceptrón” y el mecanismo de “Backpropagation”, que es el que permite a la neurona “aprender por sí misma”y descubrir la información oculta en los datos de entrada con los que la “entrenamos” . 

¿Cómo funciona el perceptrón?

La idea es sencilla. Dados unos datos de entradan1, n2 etc, existe una combinación de parámetros o coeficientes, que llamaremos función peso (w0, w1, etc), que combinados con ellos ofrecen un determinado resultado. El problema consiste en averiguar qué valores han de tener esos coeficientes wi para obtener el resultado que mejor se ajusta a la realidad. Para ello, lo que se hace es “entrenar” la red neuronal (en este caso, el perceptrón, una red de una única neurona).  

Figura 2; Representación de un perceptrón.

Por tanto, entrenar una red neuronal es averiguar qué combinación de valoreswi, aplicados (=multiplicados) a los valores ni de los datos de entrada, dan como resultado los valores de salida que conocemos. Por ejemplo, si lo que queremos en entrenar una red neuronal para detectar imágenes de gatos, los datos de entrada son las imágenes, los datos de salida indican si hay o no un gato en esa imagen, y mediante el entrenamiento, la red neuronal ajustará los parámetros para detectar cuáles son los patrones ocultos en los datos de entrada que permiten identificar si, efectivamente, en esa imagen hay un gato. (tamaño, número de extremidades, aspecto peludo etc). 

Para entenderlo mejor, tomamos prestado un ejemplo muy claro de este artículo de Xataka. En este ejemplo, los datos de entrada son las notas de dos exámenesn1 y n2. Si la suma de estos datos de entrada, multiplicadas por su peso correspondiente wi es mayor que un determinado umbral, la salida del perceptrón nf=1, que significa que el alumno ha aprobado. Si es menor que ese valor umbral, la salida del perceptrón tiene un valor nf=0 y significa que el alumno ha suspendido. Matemáticamente es tan sencillo como escribir:  

Figura 3: Fórmula simplificada de la entrada del perceptrón.
Figura 3: Fórmula simplificada
de la entrada del perceptrón.

 Para encontrar el valor de los pesoswi,entrenamos la red neuronal y empezamos asignando a estos coeficientes wi un valor aleatorio. Por ejemplo, podemos elegir dar el mismo peso a cada examen y asignar un valor 0,5. Entonces vemos qué resultado da la red neuronal para cada alumno. Como tenemos un conjunto de datos de entrenamiento etiquetados, (lo datos de notas de exámenes, pareados con la nota final de curso correspondiente para cada alumno), sabemos qué resultado final es el que tiene que salir y esto nos permite ir ajustando los pesos en cada interacción. Con estos ajustes, la red neuronal va extrayendo información oculta en los datos de entrenamiento, aprende a detectar patrones. Por ejemplo, si un alumno ha sacado muy buena nota en el segundo examen, pero sin embargo ha suspendido, significa que ese examen influye poco en la nota final y por tanto hay que reducir su peso (w2). 

Definición de red neuronal

Una red neuronal no es más que una superposición de perceptrones de distintos tipos conectados unos con otros en estructuras complejas. La estructura más sencilla se conforma de tres capas, una capa de entrada, una capa intermedia u oculta y una capa de salida. 

Figura 4: Esquema de una red neuronal.
Figura 4: Esquema de una red neuronal.

¿Cómo funciona una red neuronal?

La idea es sencilla. Los datos de entrada viajan a través de las conexiones entre neuronas. La fortaleza de esos enlaces entre neuronas se representa por los pesos. Si la señal es lo suficientemente fuerte, se activará una determinada neurona. De esa manera el sistema “aprende” a distinguir las características de los datos de entrada que influyen más en el resultado, de las que no lo hacen, es decir, aprende a interpretar los patrones ocultos en los datos.

El Deep Learning o aprendizaje profundo es, por tanto, un subcampo dentro del Machine Learning que utiliza redes neuronales para obtener representaciones cada vez más significativas de los datos mediante el aprendizaje por capas. Cada una de estas capas va extrayendo características de un nivel cada vez más alto hasta llegar a su respuesta final.

Por ejemplo, una red neuronal diseñada para identificar rostros humanos empieza buscando relaciones simples entre los datos, como identificar bordes. Según vamos profundizando en la red, estas funciones más simples se van combinado para buscar relaciones más complejas,  como puedan ser partes concretas de la cara (ojos, boca, nariz). En un siguiente paso se identificaría la cara completa y por último se identificaría a la persona a la que corresponde esa cara. Así las sucesivas capas de abstracción serían:Imagen– Bordes–Partes de la cara — Cara–Identificar a la persona por su rostro.

Las redes neuronales van "aprendiendo" características de los datos de forma progresiva de menor a mayor nivel, evitando el costoso trabajo previo de selección de características necesario en el Machine Learning tradicional.
Figura 5: Las redes neuronales van «aprendiendo» características de los datos de forma progresiva de menor a mayor nivel, evitando el costoso trabajo previo de selección de características necesario en el Machine Learning tradicional.

Para entenderlo mejor, vamos a comparar cómo realizar una tarea de clasificación típica usando un sistema experto, un algoritmo de Machine Learning clásico, y una red neuronal.

Figura 5: ejemplo de tarea de clasificación.
Figura 6: ejemplo de tarea de clasificación.
  • Sistema Experto: Usando sentencias tipo “IF- THEN”. Si es redonda y de color naranja, entonces es una naranja
  • Algoritmo ML. El algoritmo ML no usa reglas, sino que “aprende” a identificar una nueva fruta mediante el entrenamiento con un amplio conjunto de datos “etiquetados”. Son datos etiquetados, porque sabemos de antemano cuál el resultado correcto de la clasificación. El objetivo del entrenamiento es que algoritmo “aprenda” a identificar el conjunto de características que corresponden a una respuesta correcta determinada, para que cuando se le pida clasificar una fruta desconocida con características forma=redonda, color=naranja, la clasifique correctamente como “naranja”
  • Red Neuronal: Cada entrada de la red neuronal representa una característica del objeto. Se diseña la red para que, por ejemplo, la entrada uno se active cuando el color sea naranja, y la entrada dos cuando la forma sea alargada. Entrenamos el algoritmo con ejemplos para los cuales, cuando se activa la entrada uno, la respuesta correcta sea naranja, y cuando se active la dos, pera. Así el algoritmo aprende a distinguir una fruta de otra.
    • Esta activación se realiza por medio de una operación que realizan todas las capas salvo la capa de entrada, antes de continuar multiplicando sus valores por las conexiones salientes. La función de activación recibe como entrada la suma de todos los números que llegan por las conexiones entrantes, transforma el valor mediante una fórmula, y produce un nuevo número.
    • Existen varias opciones, (funciónes lineales, logísticas, hiperbólicas) lo cual le otorga una gran flexibilidad a las redes neuronales, pero una de las funciones más habituales es la función sigmoide. Esta función transforma los datos de entrada en valores de salida consistentes «0» o «1», ya que estamos hablando de probabilidad.
    • Después, el proceso se automatiza por medido de algoritmos de propagación del error. Compara el valor de salida ofrecido por la red neuronal con el valor real (los datos de entrenamiento están etiquetados), calcula la diferencia entre ambos resultados y la toma como error.
    • A continuación, varía los pesos de las neuronas de forma que en la siguiente interacción se minimice este error. De esta forma, mediante múltiples interacciones, encuentra los valores de wi que ofrecen  el mejor resultado.

¿Por qué es tan potente el Deep Learning?

El Deep Learning es tan importante porque está permitiendo resolver de forma más fácil y eficiente un gran número de problemas. Por una parte, realiza de forma automática una de las tareas más complejas del proceso de trabajo de Machine Learning: la ingeniería de atributos. 

Las redes neuronales seleccionan de forma automática qué atributos son los relevantes y cuáles se pueden desechar.  Otra de las grandes ventajas de trabajar con redes neuronales es que permiten trabajar con cualquier tipo de input. Cualquiera: números, imágenes, sonidos, textos, series temporales.

Teniendo en cuenta que los datos no estructurados, aquellos que no encajan en la estructura tradicional filas/columnas de las bases de datos relacionales, suponen más de un 90% de todos los datos generados, es fácil comprender la importancia de poder manejarlos de forma eficiente. Estamos hablando de datos como mensajes de correo, vídeos, ficheros de audio, páginas web, mensajes en redes sociales etc. 

¿Y cómo lo consiguen? 

Convirtiéndolos en valores numéricos y expresándolos con un formato matemático en el que resulta mucho más fácil identificar patrones: en forma de tensor. De hecho, uno de los hitos más importantes en el desarrollo del Deep Learning fue la creación de la librería Tensorflow, de la que hablaremos en otro post. 

Así, una red neuronal entrenada con datos etiquetados, también se puede aplicar a datos no estructurados, lo cual les da a los algoritmos de Deep Learning una gran ventaja respecto a otros algoritmos al poner a su disposición un volumen de datos de entrenamiento mucho mayor.

 Algoritmos no muy buenos entrenados con enormes conjuntos de datos pueden dar mejores resultados que buenos algoritmos entrenemos con conjuntos de datos reducidos.

De hecho, mientras en el caso de los algoritmos tradicionales usados en Machine Learning llega un momento en el un mayor volumen de datos no implica un mejor rendimiento, en el caso del Deep Learning no ocurre así. El rendimiento no deja de crecer, según lo hacen el volumen de datos y el número de capas del modelo.

Figura 6: Evolución del rendimiento del algoritmo según el volumen de datos disponibles.
Figura 6: Evolución del rendimiento del algoritmo
según el volumen de datos disponibles.

Así, gracias al desarrollo de la computación paralela masiva con GPUs (las redes neuronales son en realidad un enorme número de cálculos que se ejecutan en paralelo), la disponibilidad de volúmenes masivos de datos, las nuevas plataformas de software como TensorFlow, Theano, Keras, CNTK, PyTorch, Chainer, y mxnet, y los avances matemáticos (optimizadores más robustos, mejores funciones de activación etc), se ha conseguido que una IA pueda hacer cosas tan sorprendentes como (del libro de  François Chollet book sobre DL): 

  • Clasificar imágenes de forma similar a como lo haría un humano
  • Reconocimiento de voz de forma similar a como lo haría un humano
  • Reconocimiento de texto escrito de forma similar a como lo haría un humano
  • Mejores sistemas de traducción automática
  • Mejoras en la conversión texto-audio-texto
  • Asistentes digitales
  • Conducción autónoma de forma similar a como lo haría un humano 
  • Mejores anuncios personalizados, como hacen Google, Baidu y Bing
  • Mejores resultados de búsquedas en la web
  • Procesamiento de lenguaje natural
  • Ganar al campeón mundial de Go etc

Para terminar, os proponemos ver este interesante vídeo de la red de divulgación scenio, perteneciente a la Cátedra de Cultura Científica de la Universidad del País Vasco, en el cual, en menos de 10 minutos, cuentan de forma muy amena cómo funciona una neurona.

No te pierdas los siguientes post de esta miniserie, donde hablaremos de los distintos tipos de redes neuronales que existen y para que se utilizan, de cómo se consiguen la redes neuronales trabajar con datos no estructurados y multidimensionales y haremos nuestros pinitos con código.

Post de la serie:

Otras miniseries de nuestro blog que pueden interesarte:


Post original publicado en ThinkBig Empresas


Deja un comentario

Redes neuronales en dispositivos IoT

sensores Iot inteligentes

¿Cómo podemos dotar de inteligencia a nuestros dispositivos IoT? Funciones como reconocimiento facial 3D, control por voz, detección de piezas defectuosas, falsificaciones etc son aplicaciones que requieren CPUs potentes con GPUs igualmente potentes para ejecutar predicciones en redes neuronales profundas. Si a esto le sumamos la necesidad de ejecutar estas funciones de forma offline, sin acceder a potentes servidores en la nube, comprenderemos la importancia de investigar sobre nuevas redes neuronales capaces de funcionar en microcontroladores (MCU) con poca RAM.

Para comprenderlo mejor, basta un pequeño cálculo. En un ordenador normal, la RAM se calcula en gigabytes, mientras que, por ejemplo, un chip microcontrolador Atmega328 tiene una RAM del orden de 1-2KB.

ATmega328P-PU
Figura 1: Microcontrolador ATmega328P-PU (Fuente)

LogNNet

Andrei Velichko, de la Universidad Estatal de Petrozavodsk (Rusia), ha creado una nueva arquitectura de red neuronal LogNNet, que utiliza filtros caóticos deterministas para las señales de entrada. El sistema mezcla aleatoriamente la información de entrada, pero al mismo tiempo extrae datos valiosos de la información que no son visibles inicialmente. Es un mecanismo similar a que usan las redes neuronales tipo reservorio reservoir computing«).

Reservoir computing

Un «reservorio» representa un conjunto de unidades conectadas de forma recurrente que se conectan de forma aleatoria. La computación de reservorio utiliza una red neuronal recurrente (RNN) pero, en lugar de actualizar todos los parámetros de la red, sólo lo hace con algunos de ellos, manteniendo los demás fijos tras elegirlos aleatoriamente. Esto permite utilizar algoritmos de aprendizaje mucho más rápidos

De la misma forma, en la arquitectura LogNNet, el procesador reduce considerablemente el consumo de memoria al calcular secuencialmente los coeficientes de peso necesarios durante el funcionamiento de la red, utilizando para ello la ecuación analítica del mapeo logístico. De esta manera, se introduce el factor «caos».

(La aplicación o ecuación logística se utiliza habitualmente en biología de poblaciones y es un ejemplo típico de ecuación simple a partir de la cual calcular una secuencia de valores caóticos.)

Resultados experimentales

Para poner a prueba su red neuronal, Velichko utilizó un dataset clásico para el entrenamiento de redes neuronales en reconocimiento de imágenes: MNIST. La base de datos, con más de 70.000 dígitos escritos a mano, se particionó en un conjunto de entrenamiento con 60.000 dígitos, y otro de prueba de 10.000. La precisión de los resultados mejoraba cuanto más neuronas y más caos tenía la red, llegando a una precisión máxima de un 96,3%, con un consumo de no más de 29 KB de RAM. Lognet demostró resultados prometedores utilizando tamaños de RAM aún más pequeños, del orden de 1-2kB.

Por lo tanto, esta red puede utilizarse en implementaciones de inteligencia artificial basadas en dispositivos con limitaciones de memoria , que son la base de la inteligencia ambiental en los entornos IoT.

Y no sólo esto. Desde una perspectiva de investigación, LogNNet puede contribuir a la comprensión de la influencia del caos en el comportamiento de las redes neuronales de tipo reservoir.

Ejemplos de aplicación que ya son una realidad

En la feria Embeded World 2019 ya se presentaron algunas iniciativas basadas en la ejecución de redes neuronales profundas en microprocesadores con interesantes aplicaciones prácticas.

En una de las demostraciones se vio cómo predecir el fallo de motores en electrodomésticos como lavadoras, frigoríficos y aparatos de aire acondicionado mediante una placa con un microcontrolador (MCU) RX66T, que utiliza dos entradas de sensores que recogían:

  • La vibración del motor, medida con un acelerómetro.
  • Y su consumo eléctrico.

Cuando los rodamientos se desgastan, la fricción del tambor giratorio es mayor, por tanto, el motor consume más corriente. Otros posibles predictores de avería son una vibración demasiado fuerte, o ruidos extraños y fuertes procedentes del motor. Al embeber redes neuronales en los sensores, éstos son capaces de identificar comportamientos anómalos como probables precursores de averías, y generar alertas de mantenimiento antes de que éstas lleguen a producirse.

Como vemos, el mantenimiento predictivo es una de las aplicaciones más interesantes que puede tener la incorporación de inteligencia a los dispositivos. Pero es fácil darse cuenta del universo de oportunidades que abre al desarrollo de aplicaciones IoT va mucho más allá.

¿Cómo lo aplicarías tú?


Referencias:


Post original publicado en ThinkBig Empresas


4 comentarios

Diferencias entre Inteligencia Artificial, Aprendizaje Automático y Aprendizaje Profundo

En el mundo de los negocios, la ciencia y la tecnología, se habla mucho de estos tres conceptos, pero muchas veces no tenemos una idea clara de su significado, sus relaciones y sus límites. Iniciamos una nueva “miniserie”, en este caso, sobre Machine Learning.  Introduciremos los conceptos básicos de forma clara y sencilla, pero también nos pondremos manos a la obra con en ejemplos reales.  En este post definiremos el concepto de Machine Learning y sus diferencias respecto a los conceptos de Inteligencia Artificial y Deep Learning.

¿Qué es IA?

El concepto de inteligencia artificial no es nuevo. Lleva dando vueltas por el mundo por lo menos desde los años 50, en que Alan Turing creó su famoso test para determinar si un ordenador posee inteligencia real. Poco después, en 1956 tuvo lugar en Dartmouth la primera Conferencia de Inteligencia Artificial, que supuso el pistoletazo de salida oficial para este nuevo campo de la ciencia.

En esta conferencia se planteó la conjetura de que tanto el aprendizaje, como la inteligencia humana, en todos sus aspectos, podían ser descritos con el detalle suficiente para poder ser reproducidos por una computadora. Porque la idea fundamental en que se basa la inteligencia artificial es en conseguir que una computadora resuelva un problema complejo como lo haría un humano.

En ocasiones, esos problemas “complejos” para una persona no lo son tanto. Por ejemplo, para una persona, resulta muy sencillo como:

  • Identificar un gato en una foto.
  • Descifrar un texto borroso, o en el que falta alguna letra.
  • Identificar un sonido.
  • Priorizar tareas.
  • Conducir un coche.
  • Jugar a un juego y ganar (incluso ganar al campeón mundial de ajedrez, aunque no sea un buen ejemplo del algo “muy sencillo” para cualquier persona).
  • O hacer algo creativo como escribir un poema o resumir una idea con un dibujo.
Figura 1: Desde los años 50 distintas áreas de la IA, primero el ML y luego el DL han supuesto grandes disrupciones.
Figura 1: Desde los años 50 distintas áreas de la IA, primero el ML y luego el DL han supuesto grandes disrupciones.

¿Cómo resuelve estas tareas una persona?

Para poder emular el proceso, una computadora debe sumar a sus capacidades en cuanto a potencia de cálculo, velocidad de procesamiento y capacidad de almacenamiento de datos, otras nuevas que permitan imitar el razonamiento de la mente humana de forma funcional. Así, necesita poder:

  • Captar información del entorno: Percepción. Los humanos, nos comunicamos con nuestro entorno por medio de nuestros sentidos. Hoy día existen multitud de sensores de todo tipo que pueden realizar esta función, recogiendo información del entorno y enviándola para su procesamiento en la computadora. Incluso pueden superar a los “sentidos humanos”, ya que no están sometidos a los límites de nuestra biología.
  • Comprender el lenguaje natural (Natural Language Processing). Interpretar el lenguaje hablado y escrito. Comprender el significado de una frase, entender distintos acentos. Ésta es una tarea difícil, ya que el significado de una frase puede variar mucho según su contexto.
  • Representar el conocimiento. Esta IA capaz de percibir personas, objetos, conceptos, palabras, símbolos matemáticos etc., necesita ser capaz de representar ese conocimiento en su “cerebro artificial”.
  • También necesita la capacidad de razonar. Ser capaz de conectar todo ese conocimiento, datos y conceptos, para poder resolver problemas usando la lógica. Por ejemplo, una máquina de ajedrez detecta los movimientos de las fichas sobre el tablero, y aplicando las reglas del ajedrez a los datos que ha recogido, decide la mejor jugada.
  • Ser capaz de planificar y desplazarse. Paraparecerse realmente a un humano, no basta con pensar como un humano. Nuestra IA debe ser capaz de moverse en un mundo tridimensional, eligiendo la ruta óptima. Esto es lo que hacen ya lo vehículos autónomos, pero deben hacerlo bien, porque en este caso, los errores cuestan vidas.

¿Qué factores han ayudado a impulsar el desarrollo de la IA?

A lo largo de las últimas décadas aquello que en un principio parecía una utopía ha ido haciéndose realidad. Son varios los factores que han ayudado a impulsar el desarrollo de la IA.Uno de los factores que más ha contribuido al avance de la IA, además de la inversión de las grandes tecnológicas en I+D, ha sido la ley de Moore.

La ley de Moore no es una ley en el sentido científico, sino más bien una observación. En 1965 Gordon Moore predijo el incremento continuado de la complejidad de los circuitos integrados, (medida por el número de transistores contenidos en un chip de computador), al tiempo que se reducía su coste.

Esto permitió a la entonces naciente la industria de semiconductores crear el microprocesador (en 1971) y otros circuitos integrados que en principio de aplicaban a las computadoras, pero hoy en día podemos encontrar en cualquier dispositivo (móviles, televisores, vehículos) o incluso en seres vivos (como los chips de identificación implantados en animales). Gracias a esto, las aplicaciones de inteligencia artificial forman hoy en día parte de nuestra vida cotidiana.

Otro de los factores que ha impulsado en gran medida el desarrollo de la inteligencia artificial (IA) han sido las tecnologías Big Data. En 2012 Google dio la campanada cuando demostró ser capaz de identificar la imagen de un gato en una foto con un 75% de precisión. Para lograrlo, utilizó redes neuronales a las que entrenó con un corpus de 10 millones de vídeos de Youtube. Evidentemente, esto no hubiera sido posible sin recurrir al Big Data.

Figura 2: El cerebro artificial de Google aprende a identificar la imagen de un gato.(fuente)
Figura 2: El cerebro artificial de Google aprende a identificar la imagen de un gato.(fuente)

¿Qué tipos de IA hay?: weak AI vs strong AI

Básicamente, hay dos tipos de inteligencia artificial. La conocida como “débil o estrecha” (narrow/weak AI) se caracteriza por estar “especializada” en una tarea concreta. Por ejemplo, ganar a un juego. Deep Blue, creada por IBM ganó a en 1996 al gran maestro de ajedrez Gary Kasparov.

En 2016, DeepMind’s AlphaGo, creada por Google, venció al el jugador profesional de Go surcoreano Lee Sedol. Los asistentes digitales como Siri Cortana también son ejemplos de este tipo de IA. Pueden darnos la predicción meteorológica, o recomendarnos una ruta alternativa para ir al trabajo, pero no leer nuestros mensajes y borrar los que no son importantes. No pueden ir más allá de aquello para lo que originalmente fueron programados.

Figura 3: Primeras 99 jugadas de la partida de AlphaGo vs Lee Sedol (fuente)
Figura 3: Primeras 99 jugadas de la partida de AlphaGo vs Lee Sedol (fuente)

La inteligencia artificial “fuerte” (strong AI) sí nos lleva al mundo de la ciencia ficción. Un excelente ejemplo sería Samatha, asistente personal del protagonista Theodore Twombly en la película Her. Samantha es la asistente personal perfecta, porque puede aprender cosas nuevas y modificar su código base. Puede organizar tu correo, tus reuniones, ganarte al ajedrez y escribir la lista de la compra. Es inteligente, empática, adaptativa…

Ya tenemos una idea más clara de lo que es la inteligencia artificial. Una de sus áreas de aplicación más conocidas es la robótica, pero tiene también importantes aplicaciones en los campos de la medicina, la educación, el entretenimiento, la gestión de la información, las matemáticas, las aplicaciones militares, diseño urbano, arquitectura etc.

Figura 4: Robot.(fuente)
Figura 4: Robot.(fuente)

¿Qué es el Aprendizaje Automático o Machine Learning (ML)?

Los primeros programas basados en IA, como Deep Blue, se basaban en reglas y eran programados por una persona. Machine Learning o Aprendizaje Automático es una rama de la inteligencia artificial que empezó a cobrar importancia a partir de los años 80. Es una forma de IA que ya no depende de unas reglas y un programador, sino que la computadora puede establecer sus propias reglas y aprender por sí misma.

DeepMind de Google, que consiguió ganar al campeón del mundo de Go, lo hizo aplicando técnicas de aprendizaje automático y entrenándose con una gran base de datos que recogía jugadas de expertos en el juego. Por tanto, es un buen ejemplo de aplicación de ML.

Los sistemas de ML trabajan sobre grandes volúmenes de datos, identifican patrones de comportamiento y, basándose en ellos, son capaces de predecir comportamientos futuros. De esa forma son capaces de identificar a una persona por su cara, comprender un discurso, distinguir un objeto en una imagen, hacer traducciones y muchas otras cosas más. Es la herramienta más potente en el kit de IA para los negocios. Por ello, las grandes empresas tecnológicas como Amazon, Baidu, Google, IBM, Microsoft y otros más, ofrecen sus propias plataformas de “ML for business”.

¿Cómo aprenden las máquinas?

El aprendizaje automático se produce por medio de algoritmos. Un algoritmo no es más que una serie de pasos ordenados que se dan para realizar una tarea. El objetivo del ML es crear un modelo que nos permita resolver una tarea dada. Luego se entrena el modelo usando gran cantidad de datos. (En los próximos post de la serie lo analizaremos con más detalle).

El modelo aprende de estos datos y es capaz de hacer predicciones. Según la tarea que se quiera realizar, será más adecuado trabajar con un algoritmo u otro. Los modelos que obtenemos dependen del tipo de algoritmo elegido. Así, podemos trabajar con modelos geométricos, modelos probabilísticos, o modelos lógicos.

Por ejemplo, uno de los modelos lógicos más conocidos es el basado en el algoritmo árbol de decisión, que también veremos con detalle más adelante. Pero como “tráiler” os remito a este clásico ejemplo de aprendizaje basado en árboles de decisión, sobre las probabilidades de supervivencia de un pasajero del Titanic, según su sexo, su edad y si tenían hermanos/as a bordo. Se trata de resolver una tarea de clasificación, de asignar a cada individuo una etiqueta “died“(murió) o “survived” (sobrevivió), basándose en las respuestas a las preguntas que se plantean en cada uno de los nodos.

Figura 5: Árbol de Decisión de los supervivientes del Titanic. (fuente)
Figura 5: Árbol de Decisión de los supervivientes del Titanic. (fuente)

¿Qué es el Aprendizaje Profundo o Deep Learning?

Las redes neuronales son una de las familias de algoritmos de ML que más expectación despiertan.  Se trata de una técnica que se inspira en el funcionamiento de las neuronas de nuestro cerebro.

Se basan en una idea sencilla: dados unos parámetros hay una forma de combinarlos para predecir un cierto resultado. Por ejemplo, sabiendo los píxeles de una imagen habrá una forma de saber qué número hay escrito. Los datos de entrada van pasando secuencialmente por distintas “capas” en las que se aplican una serie de reglas de aprendizaje moduladas por una función peso. Tras pasar por la última capa, los resultados se comparan con el resultado “correcto”, y se van ajustando los parámetros (dados por las funciones “peso”).

Aunque los algoritmos y en general el proceso de aprendizaje son complejos, una vez la red ha aprendido, puede congelar sus pesos y funcionar en modo recuerdo o ejecución. Google usa este tipo de algoritmos, por ejemplo, para las búsquedas por imagen.

No existe una definición única de lo que es Deep Learning. En general, cuando hablamos de Deep Learning hablamos de una clase de algoritmos de Machine Learning basados en redes neuronales que, como hemos visto, se caracterizan por un procesamiento de los datos en cascada. La señal de entrada se va propagando por las distintas capas, y en cada una de ellas se somete a una transformación no lineal que va extrayendo y transformando las variables según determinados parámetros (pesos o umbrales). No hay un límite establecido para el número de capas que debe tener una red neuronal para considerarse Deep Learning. Sin embargo, se considera que el aprendizaje profundo surgió en los años 80, a partir de un modelo neuronal de entre  5 o 6 capas, el neocognitrón, creado por el investigador japonés Kunihiki Fukushima. Las redes neuronales son muy efectivas en la identificación de patrones.

Un ejemplo muy llamativo de aplicación de Deep Learning es el proyecto conjunto de Google con las Universidades de Stanford y Massachusetts para mejorar las técnicas de procesamiento de lenguaje natural de un tipo de IA llamada Modelo de Lenguaje de Redes Neuronales Recurrentes  (Recurrent Neural Network Language Model RNNLM). Se usa para traducción automática y creación de subtítulos, entre otras cosas. Básicamente, va construyendo frases palabra a palabra, basándose en la palabra anterior. Incluso, puede llegar a escribir poemas.

Figura 8: Poema escrito por una IA de Google después de entrenarse con miles de novelas románticas.
Figura 8: Poema escrito por una IA de Google después de entrenarse con miles de novelas románticas.

Una vez puestos en contexto, os invitamos a aprender más sobre Machine Learning en los próximos post de esta miniserie sobre el tema. ¡No te los pierdas!.


Post original publicado en ThinkBig Empresas