Avances en redes neuronales

En años recientes la inteligencia artificial y específicamente el campo llamado «aprendizaje automático» han cobrado notable fuerza, principalmente debido a los numerosos éxitos logrados en diferentes pruebas a las que ha sido sometida. Específicamente, gracias a la sub área del «aprendizaje automático» denominada «aprendizaje profundo», en la actualidad, vemos al software inteligente automatizar el trabajo rutinario, comprender el lenguaje o las imágenes, realizar el diagnóstico en medicina y apoyar la investigación científica básica.

El aprendizaje profundo, se refiere a la combinación de diferentes técnicas o algoritmos de redes neuronales artificiales con otros tipos de técnicas, en numerosas capas o niveles, con la finalidad de descubrir complejas representaciones de datos subyacentes en las inmensas cantidades de información disponible hoy día. Sin embargo, el término moderno «aprendizaje profundo» va más allá de la perspectiva neurocientífica de la línea actual de modelos de aprendizaje automático. Se apela a un principio más general de aprendizaje de múltiples niveles de la composición, que se puede aplicar en los marcos de aprendizaje automático que no están necesariamente inspirados en neuronas.

1. Las redes neuronales artificiales y el perceptrón

Dado que se sabe que el comportamiento inteligente es posible, desde hace alrededor de 70 años ha existido un especial interés por simular el funcionamiento del cerebro para poder reproducir su inteligencia. En este sentido, McCulloch y Pitts (1943) proponen el primer modelo matemático de una neurona, y Rosenblatt (1958) implementa el modelo de perceptrón (fig. 1.1). El modelo de Rosenblatt, provee una salida ejecutando tres (3) operaciones simples sobre los datos de entrada: 1) multiplica las entradas por los pesos correspondientes, 2) suma el resultado de todos los productos anteriores y 3) compara la suma obtenida con el umbral provisto por la función de activación.

Figura 1.1: Modelo de perceptrón. (Wikipedia: 2016)

Las críticas realizadas por Minsky (1969) donde demuestra que el perceptrón simple sólo sirve para clasificar problemas linealmente separables, cosa que ya se podía hacer mediante métodos estadísticos, y de una forma mucho más eficiente, significó una muerte prematura para el perceptrón. Sin embargo, Rumelhart (1986) revivió el interés por las redes neuronales gracias a su algoritmo de «Retropropagación» (Regla delta generalizada), el cual además de agregar una capa adicional, tomaba en cuenta el error y lo transmitía a la capa anterior.

Con la existencia de un algoritmo de retropropagación, se logró implementar, según Daumé III (2014), un enfoque para hacer una cadena de colección de perceptrones para construir redes neuronales más complejas, o como comúnmente se le denomina «perceptrón multicapa» (ver figura 1.2). Al poseer varias capas de neuronas se logró ganar mayor flexibilidad en las salidas, y por ende se pudo solucionar el clásico problema de la operación XOR que no era posible por medio del perceptrón simple.

Figura 1.2: Perceptrón multicapa (Wikipedia, 2016)

Otro avance importante, fue cambiar la función de activación binaria original, por otras funciones no lineales como sigmoide, gaussiana y tangente hiperbólica, las cuales proporcionan un umbral más suave y por ende más precisa.

2. El panorama actual

En la actualidad, las redes neuronales se componen de numerosas capas de procesamiento, en las cuales se emplean métodos para obtener modelos de representación de los datos de entrada, a través de módulos simples no lineales de representación, que se encargan de extraer las características y patrones de los datos en bruto y transferirlas a capas posteriores más abstractas. Esta forma de trabajar, dota a la red la capacidad de deducir por sí misma, la mejor manera de representar los datos, sin necesidad de haber sido programada explícitamente para ello. En tal sentido, un ejemplo de funcionamiento de una red neuronal moderna (profunda), que debe analizar imágenes podría ser el siguiente: una primera capa analiza la imagen dada como vectores de pixeles en la cual aprende a detectar bordes, otro nivel detecta esquinas y otro tipo de figuras, el siguiente nivel segmenta los objetos diferentes presentes en la imagen, un posterior nivel etiqueta semánticamente dichas imágenes según el tipo de objeto detectado.

La forma más frecuente de aprendizaje automático, es el aprendizaje supervisado, en el cual el algoritmo requiere de una función objetivo, para ajustar los pesos de modo tal que las salidas del algoritmo se acerquen a la meta. De tal forma, las redes neuronales de aprendizaje supervisado, necesitan de una función objetivo, la cual es comparada con las salidas de la red, para calcular el valor de la función de costos, y así poder ajustar los pesos de las capas anteriores, de modo tal que en cada iteración se disminuya el error. Debido a que una red neuronal profunda puede tener millones de neuronas, y centenares de millones de conexiones (incluso miles de millones), resulta impráctico ajustar uno a uno los pesos, incluso se puede intentar calcular el error mediante un procedimiento analítico empleando derivadas, pero dado el elevado número de variables de la red el proceso sería extremadamente complicado. Es por eso que, el efecto de aprendizaje (reducción del error) se consigue empleando el método de gradiente descendente. Hay una hermosa analogía que sugiere un algoritmo que funciona bastante bien. Empezamos imaginando a nuestra función como una especie de un valle. Y nos imaginamos una bola rodando por la ladera del valle. Nuestra experiencia cotidiana nos dice que la pelota finalmente rodará hasta el fondo del valle. Tal vez podemos utilizar esta idea como una manera de encontrar un mínimo de la función. (Ver figura 2.1)

Figura 2.1: Algoritmo de gradiente de descendente. (Nielsen, 2015)

En la práctica, dado el elevado número de neuronas de la red, el proceso de aprendizaje empleando el método de gradiente se torna muy lento, por lo que suele usarse una variante llamada «gradiente de descenso estocástico» (SGD) Este consiste en introducir el vector de entrada para algunos ejemplos, se calcula las salidas y los errores, la pendiente media de esos ejemplos, y se ajustan los pesos correspondientes. El proceso se repite para muchos pequeños conjuntos de ejemplos (muestras) del conjunto de entrenamiento hasta que el promedio de la función objetivo deja de decrecer. La idea es estimar el gradiente ∇C calculando ∇Cx para una pequeña muestra de entradas de entrenamiento elegido al azar. Promediando sobre esta pequeña muestra resulta que podemos obtener rápidamente una buena estimación del verdadero gradiente ∇C, esto ayuda a acelerar el descenso del vector gradiente, y por lo tanto el aprendizaje.

Al utilizar varias capas de neuronas, se logra una mejor manera de extraer las características, debido a que cada capa va incrementando la selectividad y la invarianza en la representación de los datos, por lo que la última capa es sensible a pequeños detalles e insensible a detalles irrelevantes.

2.1. Redes neuronales convolucionales (CNN)

Las redes neuronales convolucionales o de convolución, son un tipo de red bio-inspirado que simula la forma en que funciona la visión del ser humano, es una modificación del perceptrón multicapa. El nombre de «red neuronal de convolución» indica que la red emplea una operación matemática llamada convolución. La convolución es un tipo especializado de operación lineal. Las redes convolucionales son simplemente las redes neuronales que utilizan convolución en lugar de la multiplicación general de matrices en al menos una de sus capas. Las CNN explotan la correlación espacial local mediante la aplicación de un patrón de conectividad local entre las neuronas de las capas adyacentes. Cada unidad es insensible a variaciones fuera de su campo receptivo con respecto a la retina. Así pues, la arquitectura garantiza que los «filtros» aprendidos producen la respuesta más fuerte a un patrón de entrada en el espacio local. La figura 2.1.1 ilustra la forma en que la capa de convolución recibe los datos de entradas.

Figura 2.1.1: Capa convolucional (Nielsen, 2015)

Cabe destacar que en este tipo de red, la operación de convolución y reducción de muestreo se realizan en la primera capa del nivel, con la finalidad de detectar conjunciones locales de características, la capa posterior se encarga de sumar las características similares entre sí, de modo tal que el dilema de la selección-invarianza sea solucionado correctamente (ver figura 2.1.2).

Figura 2.1.2: Capa de agrupación (Nielsen, 2015)

Este comportamiento, emula el de las células visuales, donde las células encargadas de recibir la luz, están entrenadas para detectar características específicas como lo son los bordes de las imágenes. Este tipo de redes ha demostrado ser especialmente eficaces en el etiquetado y procesamiento de imágenes como (ver figura 2.1.3), detección de señales de tráfico, segmentación de imágenes biológicas, detección de rostros.

Figura 2.1.3: Categorización de Especies de aves usando redes neuronales convolucionales

2.2. Redes neuronales recurrentes (RNN)

Las redes neuronales recurrentes son redes que son capaces de influir en sí mismas por medio de recurrencias, por ejemplo, mediante la inclusión de la salida de la red en los siguientes pasos de cálculo. Para una red neuronal recurrente, normalmente hay tres conjuntos de parámetros: la entrada a los pesos ocultos (W), los pesos ocultos (U), y los pesos ocultos a etiquetar (V). Observe que todos los W son compartidos, toda la U son compartidos y todo los V son compartidos (figura 2.2.1). La propiedad de compartir el peso hace que la red sea adecuada para entradas de tamaño variable.

Figura 2.2.1: Red Neuronal Recurrente

Así como las redes convolucionales fácilmente pueden escalar a imágenes con gran anchura y la altura y en algunas redes convolucionales pueden procesar imágenes de tamaño variable, las redes recurrentes pueden escalar a secuencias mucho más largas de lo que sería práctico para redes sin especialización basada en la secuencia. La mayoría de las redes recurrentes también pueden procesar secuencias de longitud variable. De tal manera, las redes neuronales recurrentes han demostrado ser especialmente eficientes en el procesamiento de entradas secuenciales como el reconocimiento del habla y el lenguaje. Debido a que las RRN procesan las secuencias de entrada de un elemento a la vez, estas mantienen en sus unidades ocultas un «vector de estado» que contiene la información relacionada con la historia de todos los elementos anteriores a la secuencia.

Este tipo de redes se caracteriza por que cada neurona está conectada con las neuronas posteriores en la siguiente capa, con las neuronas de la capa anterior, y consigo misma, a través de vectores de peso variables. De esta forma, su arquitectura es la que más se asemeja a las redes neuronales biológicas, principalmente porque tiene la capacidad de memoria a largo plazo, alto nivel de conectividad entre neuronas y comportamiento variable en el tiempo. Sin embargo, en la práctica han demostrado ser sumamente complejas de implementar, además de requerir capacidades de cálculo muy elevadas, sobre todo para la fase de entrenamiento de la red.

La RNN más usada en la actualidad es la de Long-Short Term Memory, la cual a diferencia de las RNN tradicionales incluye bloques LSTM, que se encargan de recordar un valor y determinar la duración en el tiempo del mismo. Además, estas unidades deciden qué entradas debe almacenar y si debe recordarlas, borrarlas o enviarlas como salidas de la red. Recientemente un grupo de científicos propusieron un modelo de red neuronal recurrente el cual incluye una máquina de Turing ampliada por una memoria la cual funciona como una especie de cinta que se mueve hacia adelante y hacia atrás, y decide si leer o escribir en ella, mientras que otro grupo presentó una alternativa basada en una red ampliada con una especie de memoria asociativa. Este tipo de redes ha demostrado ser muy eficientes en problemas tipo pregunta-respuesta, y pueden ser entrenadas para almacenar el estado del mundo y así estar en la capacidad de responder a preguntas que requieren información compleja basada en la experiencia.

2.3. Máquinas de Boltzmann restringida (RBM)

Las máquinas de Boltzmann se introdujeron generalmente como un enfoque «conexionista» para aprender distribuciones de probabilidad arbitraria sobre vectores de distribución. Las máquinas de Boltzmann, poseen unidades con una «energía» definida para la red. También dispone de unidades binarias, pero dichas unidades son estocásticas. Ésta se vuelve más poderosa cuando no se observan todas las variables. Una máquina de Boltzmann con unidades ocultas no se limita a modelar relaciones lineales entre las variables. En cambio, la máquina se convierte en un aproximador universal de la función de probabilidad sobre las variables discretas. En la práctica, el tipo de máquina de Boltzmann más empleada es la de tipo restringido, en la cual las capas visibles no están conectadas entre sí (ver figura 2.3.1).

Figura 2.3.1: A) La máquina de Boltzmann restringida en sí es un modelo gráfico no dirigido basado en un grafo bipartito, con las unidades visibles en una parte de la gráfica y unidades ocultas en la otra parte. No hay conexiones entre las unidades visibles, ni ninguna conexión entre las unidades ocultas. B) Maquina de Boltzmann Profunda. Es la ampliación a varias capas de la máquina de boltzmann restringida, obsérvese que tanto las capas visibles como las capas ocultas no poseen conexión entre sí

2.4. Redes neuronales con intuición

Las redes neuronales encuentran desde sus inicios un sinfín de aplicaciones donde han tenido bastante éxito al ser eficientes y flexibles. Sin embargo, la mayoría de los algoritmos y arquitectura de inteligencia artificial, han demostrado ser poco eficientes en lo que respecta al manejo de la intuición. El relativo éxito logrado por Deep Blue en 1997 fue tempranamente opacado por la realidad de otros problemas que no podían ser abordados explotando el espacio de búsquedas. El tradicional juego Go por mucho tiempo se ha considerado como el más difícil de los juegos clásicos para la inteligencia artificial, debido a su enorme espacio de búsqueda y la dificultad de evaluar las posiciones del tablero y los movimientos. Un nuevo enfoque de Computer Go que usa «redes de valores» para evaluar las posiciones del tablero y «redes de políticas» para seleccionar los movimientos. Estas redes neuronales profundas son entrenadas por una combinación nueva de aprendizaje supervisado de juegos de expertos humanos y de aprendizaje por refuerzo de los juegos contra sí mismos. Sin ningún tipo de búsqueda hacia delante, las redes neuronales juegan al Go al nivel del estado de la técnica de los programas de búsqueda de árbol Monte Carlo que simulan miles de juegos de azar de juegos contra sí mismo.

Podemos ver en esto que AlphaGo no comenzó con un sistema de valoración basado en una gran cantidad de conocimiento detallado de Go, de la forma que Deep Blue usó para el ajedrez. En su lugar, mediante el análisis de miles de juegos anteriores y participando en una gran cantidad de auto-juegos, AlphaGo ha creado una red de políticas a través de miles de millones de diminutos ajustes, cada uno destinados a hacer sólo una pequeña mejora incremental. Eso, a su vez, ayudó a AlphaGo construir un sistema de valoración que capta algo muy similar a la intuición de un buen jugador de go sobre el valor de las diferentes posiciones en el tablero.

Dichos avances en materia de redes neuronales podrían significar una nueva era para la inteligencia artificial. Podríamos pronto aprender a capturar parte del juicio intuitivo que se dedica a escribir las pruebas matemáticas, o en la escritura de cuentos o una buena explicación. Es un momento tremendamente prometedor para la inteligencia artificial.

Conclusiones

Desde el descubrimiento de la neurona el interés acerca de cómo funciona el cerebro es creciente. En primera instancia el perceptrón, y su implementación, hasta evolucionar a modelos más complejos como lo son, las redes neuronales multicapa, para posteriormente introducir modelos más complejos como las redes convolucionales, las redes neuronales recurrentes y sus variante Long-Short Term Memory. Dichos avances, han tenido un impacto directo en la industria tecnológica actual, y sus aplicaciones van desde detección de peatones, etiquetado semántico de imágenes, reconocimiento del habla, vehículos con conducción autónoma, diseño de fármacos y un largo número de aplicaciones.

Sin embargo, cabe destacar que la mayoría de los grandes avances se han dado en el campo de los algoritmos supervisados. Por lo que se espera, que en un futuro próximo se puedan ver avances en cuanto a algoritmos no supervisados se refieren, motivado principalmente al hecho que el aprendizaje humano es en gran parte no supervisado. Al respecto las máquinas de Boltzmann tienen un futuro prometedor, sobre todo en la comprensión del lenguaje natural y documentos de textos. Se espera poder mejorar las arquitecturas actuales que combinan algoritmos supervisados con no-supervisados, así como el aprendizaje por refuerzo.

Por último, otros retos por superar para los algoritmos de redes neuronales de aprendizaje profundo son la comprensión definitiva del lenguaje natural, para poder comprender frases y documentos completos. En última instancia, un gran avance en la inteligencia artificial se logrará a través de sistemas que combinan el aprendizaje con la representación razonamientos complejos. El futuro de la inteligencia artificial estará marcado por computadoras con un alto sentido común e intuición.