viernes, 1 de diciembre de 2017

REDES NEURONALES

Una Red Neuronal Artificial (RNA) es un modelo matemático inspirado en el comportamiento biológico de las neuronas y en cómo se organizan formando la estructura del cerebro. El cerebro puede considerarse un sistema altamente complejo, donde se calcula que hay aproximadamente 100 mil millones (1011) neuronas en la corteza cerebral y que forman un entramado de más de 500 billones de conexiones neuronales (una neurona puede llegar a tener 100 mil conexiones, aunque la media se sitúa entre 5000 y 10000 conexiones).

Respecto a su funcionamiento, el cerebro puede ser visto como un sistema inteligente que lleva a cabo tareas de manera distinta a como lo hacen las computadoras actuales. Si bien estas últimas son muy rápidas en el procesamiento de la información, existen tareas muy complejas, como el reconocimiento y clasificación de patrones, que demandan demasiado tiempo y esfuerzo aún en las computadoras más potentes de la actualidad, pero que el cerebro humano es más apto para resolverlas, muchas veces sin aparente esfuerzo (por ejemplo, el reconocimiento de un rostro familiar entre una multitud de otros rostros).
Si bien hay distintos tipos de neuronas biológicas, la imagen de la izquierda muestra un esquema simplificado del tipo más común, y donde podemos reconocer diferentes partes:
  • El cuerpo central, llamado soma, que contiene el núcleo celular.
  • Una prolongación del soma, el axón
  • Una ramificación terminal, las dendritas.
  • Una zona de conexión entre una neurona y otra, conocida como sinapsis.
La función principal de las neuronas es la transmisión de impulsos nerviosos. Estos viajan por toda la neurona comenzando por las dendritas hasta llegar a las terminaciones del axón, donde pasan a otra neurona por medio de la conexión sináptica.

La manera en que respondemos ante los estímulos del mundo exterior, y el aprendizaje que podemos realizar del mismo, está directamente relacionado con las conexiones neuronales del cerebro, y las RNAs son un intento de emular este hecho.

Modelo neuronal de McCulloch-Pitts

El primer modelo matemático de una neurona artificial, creado con el fin de llevar a cabo tareas simples, fue presentado en el año 1943 en un trabajo conjunto entre el psiquiatra y neuroanatomista Warren McCulloch y el matemático Walter Pitts.


La siguiente figura muestra un ejemplo de modelo neuronal con n entradas, que consta de:
  • Un conjunto de entradas x1,xn.
  • Los pesos sinápticos w1,wn, correspondientes a cada entrada.
  • Una función de agregación, Σ.
  • Una función de activación, f.
  • Una salida, Y.
Las entradas son el estímulo que la neurona artificial recibe del entorno que la rodea, y la salida es la respuesta a tal estímulo. La neurona puede adaptarse al medio circundante y aprender de él modificando el valor de sus pesos sinápticos, y por ello son conocidos como los parámetros libres del modelo, ya que pueden ser modificados y adaptados para realizar una tarea determinada.
En este modelo, la salida neuronal Y está dada por:
Y=f(i=1nwixi)
La función de activación se elige de acuerdo a la tarea realizada por la neurona. Entre las más comunes dentro del campo de las RNAs podemos destacar:

 

Usando el Perceptron para clasificar clases en el plano

Aplicaremos el modelo neuronal de la sección anterior para realizar tareas de clasificación en el plano (por lo que solo haremos uso de dos entradas, x1 y x2). Para ello, vamos a considerar que existe una entrada de peso 1, llamada b y consideraremos como función de activación a la función signo definida por:
Γ(s)={1si s01si s<0
Por lo tanto, la salida neuronal Y estará dada en este caso por:
Y={1si w1x1+w2x2+b01si w1x1+w2x2+b<0
Supongamos que tenemos dos clases en el plano: la clase C1, formada por los círculos rojos, y la clase C2, formada por los círculos azules, donde cada elemento de estas clases está representado por un punto (x,y) en el plano. Supondremos además que tales clases son separables linealmente, es decir, es posible trazar una recta que separe estrictamente ambas clases.
Diremos que la neurona artificial clasifica correctamente las clases C1 y C2 si dados los pesos sinápticos w1 y w2 y el término aditivo b, la recta con ecuación
y=w1w2xbw2
es una recta que separa las dos clases. La ecuación implícita de la recta es w1x+w2y+b=0. Obsérvese que si el punto (x0,y0)C1, entonces w1x0+w2y0+b<0 y si (x0,y0)C2, entonces w1x0+w2y0+b>0. Por lo tanto, dado el par (x0,y0)C1C2, la neurona clasifica de la siguiente manera:
(x0,y0)C1Y=1
(x0,y0)C2Y=1
Si ahora tomamos dos clases C1 y C2 (separables linealmente) distintas a las anteriores, entonces la neurona puede no clasificar correctamente a estas clases, pues la recta anterior puede no ser una recta válida para separarlas. Sin embargo, es posible modificar los parámetros anteriores y obtener nuevos parámetros w1,w2 y b tal que la recta y=w1w2xbw2 sí sirva como recta de separación entre ellos. El proceso por el cual la neurona pasa de los parámetros w1,w2,b a los parámetros  w1,w2,b se conoce como método de aprendizaje. Este proceso es el que permite modificar los parámetros libres con el fin de que la neurona se adapte y sea capaz de realizar diversas tareas.
El método de aprendizaje que detallaremos a continuación y que utilizaremos para adaptar los parámetros libres con el fin de clasificar correctamente las clases C1 y C2 se conoce como método de error-corrección. Para aplicarlo es necesario:
  • Un conjunto de entrenamiento, D.
  • Un instructor.
  • Valores iniciales, w1,w2,b, arbitrarios de los parámetros libres.
El conjunto de entrenamiento es definido por D=C1C2. El entrenamiento consiste en lo siguiente:
  • El instructor toma un elemento (x0,y0)D al azar y presenta éste a la neurona.
  • Si la neurona clasifica mal este punto, es decir, si la salida de la neurona es Y=1 cuando (x0,y0)C2 o Y=1 cuando (x0,y0)C1, entonces se aplica la siguiente corrección a los parámetros libres iniciales
w1=w1+dx0
w2=w2+dy0
b=b+d
donde el valor de d se obtiene de la siguiente manera:
d=={1si Y=1 y (x0,y0)C21si Y=1 y (X0,y0)C1
  • Si la neurona clasifica bien el punto (x0,y0), entonces no se realiza ninguna corrección.
  • El procedimiento se repite pasando a la neurona otro punto del conjunto D y usando los últimos parámetros w1,w2,b corregidos (no los iniciales). Nuevamente, si la neurona clasifica mal el punto, entonces se aplica una corrección similar a la anterior.
  • Esta tarea se repite con todos los puntos del conjunto D. Si en el proceso hubo correcciones, entonces el procedimiento es repetido nuevamente con todos los puntos de D.
  • El entrenamiento termina cuando la neurona clasifica correctamente todos los elementos del conjunto de entrenamiento.
Este procedimiento converge, es decir, en un número finito de pasos es posible obtener los parámetros finales que separan entre sí los conjuntos.
Aplicación de las Redes Neuronales a la Identificación de Patrones
Redes Neuronales


Un modelo neuronal utilizado para clasificación, cuya salida está dada de la forma anterior y que utiliza el método de error-corrección para modificar sus parámetros libres se conoce como Perceptron (el nombre deriva de la palabra en inglés “perception”). Estas neuronas pueden agruparse formando una RNA conocida como Perceptron múltiple.

El Perceptron multicapa

Un caso particular de perceptron múltiple se puede formar organizando sus neuronas en capas. Así, tenemos la capa de entrada formada por las entradas a la red, la capa de salida formada por las neuronas que constituyen la salida final de la red, y las capas ocultas formadas por las neuronas que se encuentran entre los nodos de entrada y de salida. Una RNA puede tener varias capas ocultas o no tener ninguna de ellas. Las conexiones sinápticas (las flechas que llegan y salen de las neuronas) indican el flujo de la señal a través de la red, y tienen asociadas un peso sináptico correspondiente. Si la salida de una neurona va dirigida hacia dos o más neuronas de la siguiente capa, cada una de estas últimas recibe la salida neta de la neurona anterior. La cantidad de capas de una RNA es la suma de las capas ocultas más la capa de salida. En el caso de existir capas ocultas nos referimos a la RNA como un Perceptron multicapa.
El problema habitual con este tipo de redes multicapa es el de, dados un conjunto de datos ya clasificados, de los que se conoce la salida deseada, proporcionar los pesos adecuados de la red para que se obtenga una aproximación correcta de las salidas si la red recibe únicamente los datos de entrada.
A mediados de los años 80 se ofreció un algoritmo, llamado de Propagación hacia atrás, que aproxima en muchos casos los pesos a partir de los datos objetivo. Este algoritmo de entrenamiento de la red se puede resumir muy brevemente en los siguiente puntos:
  • Empezar con unos pesos sinápticos cualesquiera (generalmente elegidos al azar).
  • Introducir datos de entrada (en la capa de entrada) elegidos al azar entre el conjunto de datos de entrada que se van a usar para el entrenamiento.
  • Dejar que la red genere un vector de datos de salida (propagación hacia delante).
  • Comparar la salida generada por al red con la salida deseada.
  • La diferencia obtenida entre la salida generada y la deseada (denominada error) se usa para ajustar los pesos sinápticos de las neuronas de la capa de salidas.
  • El error se propaga hacia atrás (back-propagation), hacia la capa de neuronas anterior, y se usa para ajustar los pesos sinápticos en esta capa.
  • Se continua propagando el error hacia atrás y ajustando los pesos hasta que se alcance la capa de entradas.
  • Este proceso se repetirá con los diferentes datos de entrenamiento. 
Entre las diversas tareas en las que una RNA puede aplicarse podemos mencionar la clasificación lineal y no lineal de una cantidad arbitraria C1,,Cm de clases, regresión lineal y no lineal, análisis de series temporales, control de procesos, robótica, optimización de funciones, procesamiento de señales, etc...