Redes neuronales artificiales

Anuncio
REDES NEURONALES ARTIFICIALES
• Introducción
De la prehistoria al futuro que tal vez Babbage nunca soñó. El desarrollo de máquinas que puedan imitar la
capacidad de aprendizaje del hombre es actualmente un desafío en el que pone sus miras buena parte de la
comunidad científica. Con esta amplia Introducción a las redes neuronales, pretendemos dar a conocer los
elementos básicos de lo que comúnmente se denomina Inteligencia Artificial, para así comprender de qué
modo pueden llegar a «pensar» y «aprender» las máquinas.
El hombre se ha caracterizado siempre por una búsqueda constante de nuevas vías para mejorar sus
condiciones de vida. Estos esfuerzos le han servido para reducir el trabajo en aquellas operaciones en las que
la fuerza juega un papel primordial. Los progresos obtenidos han permitido dirigir estos esfuerzos a otros
campos, como por ejemplo, a la construcción de máquinas calculadoras que ayuden a resolver de forma
automática y rápida determinadas operaciones que resultan tediosas cuando se realizan a mano.
Uno de los primeros en acometer esta empresa fue Charles Babbage, quien trató infructuosamente de construir
una máquina capaz de resolver problemas matemáticos. Posteriormente otros tantos intentaron construir
máquinas similares, pero no fue hasta la Segunda Guerra Mundial, cuando ya se disponía de instrumentos
electrónicos, que se empezaron a recoger los primeros frutos. En 1946 se construyó la primera computadora
electrónica, ENIAC. Desde entonces los desarrollos en este campo han tenido un auge espectacular.
Estas máquinas permiten implementar fácilmente algoritmos para resolver multitud de problemas que antes
resultaban engorrosos de resolver. Sin embargo, se observa una limitación importante: ¿qué ocurre cuando el
problema que se quiere resolver no admite un tratamiento algorítmico, como es el caso, por ejemplo, de la
clasificación de objetos por rasgos comunes?. Este ejemplo demuestra que la construcción de nuevas
máquinas más versátiles requiere un enfoque del problema desde otro punto de vista. Los desarrollos actuales
de los científicos se dirigen al estudio de las capacidades humanas como una fuente de nuevas ideas para el
diseño de las nuevas máquinas. Así, la inteligencia artificial es un intento por descubrir y describir aspectos de
la inteligencia humana que pueden ser simulados mediante máquinas. Esta disciplina se ha desarrollado
fuertemente en los últimos años teniendo aplicación en algunos campos como visión artificial, demostración
de teoremas, procesamiento de información expresada mediante lenguajes humanos... etc.
Una Red Neuronal es el resultado de los intentos por reproducir mediante computadoras el funcionamiento del
cerebro humano. El cerebro está compuesto por miles de millones de neuronas, interconectadas de forma
variable y compleja. Su peculiar forma de trabajo le convierte en el dispositivo más eficaz para procesar
información del mundo real.
Cada neurona recibe impulsos procedentes de otras neuronas, que procesa individualmente dándole un peso
determinado. Después transmite la señal resultante a otras neuronas, siguiendo una configuración variable
para cada caso. Las redes neuronales tratan de simular este proceso en un equipo computacional.
El papel de las neuronas es tomado por los nodos, que son pequeñas unidades inteligentes con capacidad de
almacenar y procesar señales.
Al igual que las neuronas en el cerebro humano, cada nodo recibe unas señales que proceden del exterior de la
red o de otros nodos, las procesa dando distinto peso a cada una y genera una única señal de salida que se
transmite a otros nodos.
Desde el punto de vista práctico, un nodo debe poseer los medios para almacenar señales y procesarlas según
1
pesos o funciones. Por lo mismo, los nodos deben ser circuitos electrónicos, computadoras o fragmentos de
programas.
Para simplificar el diseño de las redes, los especialistas realizan topologías sencillas de distribución de nodos,
disponiéndolos en capas sucesivas. Una de las más utilizadas, sitúa los nodos en tres niveles (entrada,
intermedio, salida) en los que cada nodo actúa con las señales de la misma forma. La topología es sencilla de
llevar a la práctica (mediante un programa) y produce redes neuronales que aprenden por sí mismas.
En los inicios de la revolución tecnológica, cuando se querían obtener diferentes señales de salida de un
sistema, dependiendo de los tipos y niveles de estímulo presentes en su entrada, era necesario dotarle de una
relación matemática entre dichas entradas y salidas.
Con la aparición de las redes neuronales, el sistema se autorregula, deduciendo los pesos que debe de dar a las
distintas señales y la forma de conectar los nodos. Tras esta regulación, puede trabajar en situaciones para las
que aún no se hayan establecido reglas de funcionamiento.
Una red neuronal nueva establece las conexiones de cada nodo de forma convencional. Su proceso de
aprendizaje empieza al darle una pareja de datos de entrada y salida. La red va haciendo pruebas mediante la
determinación de los pasos más convenientes y de las conexiones entre nodos más adecuadas. Al cabo de
varios intentos, repetidos con varias parejas de datos de entrada y salida conocidos, el sistema está ya
educado, es decir, en condiciones de trabajar; la información que almacena una red se halla dispersa por todos
sus nodos, lo que le confiere características distintas a las de una computadora convencional y le hace menos
propensa a fallos.
Es fácil suponer que una de las primeras aplicaciones es la simulación del cerebro humano y sus cientos de
miles de millones de neuronas. Hasta la fecha sólo se ha logrado simular unas 10,000, lo que no esta mal, pero
quedó lejos del órgano original. En esas simulaciones se han empleado grandes computadoras, que han
necesitado horas para repetir procesos que el cerebro realiza en segundos. Se sigue intentando desarrollar un
modelo donde experimentar los efectos de nuevas medicinas, el comportamiento ante estímulos, etc.
En el campo tecnológico las aplicaciones se refieren, sobre todo, a situaciones donde hay que tratar datos
difusos, desarrollar modelos o pronosticar situaciones complejas.
Se conocen cinco aplicaciones tecnológicas aplicadas:
• Reconocimiento de textos manuscritos
• Reconocimiento del habla
• Simulación de centrales de producción de energía
• Detección de explosivos
• Identificación de blancos de radares
Las redes neuronales son otra forma de emular otra de las características propias de los humanos: la capacidad
de memorizar y asociar hechos. Si examinamos con atención aquellos problemas que no pueden expresarse a
través de un algoritmo nos daremos cuenta de que todos ellos tienen una característica común: la experiencia.
El hombre es capaz de resolver estas situaciones acudiendo a la experiencia acumulada. Así, parece claro que
una forma de aproximarse al problema consista en la construcción de sistemas que sean capaces de reproducir
esta característica humana. En definitiva, las redes neuronales no son más que un modelo artificial y
simplificado del cerebro humano, que es el ejemplo más perfecto del que disponemos de sistema que es capaz
2
de adquirir conocimiento a través de la experiencia. Una red neuronal es «un nuevo sistema para el
tratamiento de la información cuya unidad básica de procesamiento está inspirada en la célula fundamental del
sistema nervioso humano, la neurona».
2. La neurona y la sinapsis
El cerebro humano contiene aproximadamente 12 billones de células nerviosas o neuronas. Cada neurona
tiene de 5.600 a 60.000 conexiones dendríticas provenientes de otras neuronas
(figura 1). Estas conexiones transportan los impulsos enviados desde otras neuronas y están conectadas a la
membrana de la neurona. Cada neurona tiene una salida denominada axón. El contacto de cada axón con una
dendrita se realiza a través de la sinapsis. Tanto el axón como las dendritas transmiten la señal en una única
dirección.
La sinapsis (figura 2) consta de un extremo presináptico de un axón conectado a un extremo postsináptico de
una dendrita, existiendo normalmente entre éstos un espacio denominado espacio sináptico.
Figura 1
3
Figura 2
Las neuronas son eléctricamente activas e interactúan entre ellas mediante un flujo de corrientes eléctricas
locales. Estas corrientes se deben a diferencias de potencial entre las membranas celulares de las neuronas. Un
impulso nervioso es un cambio de voltaje que ocurre en una zona localizada de la membrana celular. El
impulso se transmite a través del axón hasta llegar a la sinapsis, produciendo la liberación de una sustancia
química denominada neurotransmisor que se esparce por el fluido existente en el espacio sináptico. Cuando
este fluido alcanza el otro extremo transmite la señal a la dendrita. Los impulsos recibidos desde la sinapsis se
suman o restan a la magnitud de las variaciones del potencial de la membrana. Si las contribuciones totales
alcanzan un valor determinado (alrededor de 10 milivoltios) se disparan uno o más impulsos que se
propagarán a lo largo del axón.
Aunque todavía no está del todo claro, parece que este impulso se inicia en la conexión entre el axón y la
membrana. Su amplitud y velocidad dependen del diámetro del axón y su frecuencia del número de disparos
que se efectúen.
Las redes neuronales artificiales basan su funcionamiento en las redes neuronales reales, estando formadas por
un conjunto de unidades de procesamiento conectadas entre sí. Por analogía con el cerebro humano se
denomina «neurona» a cada una de estas unidades de procesamiento. Cada neurona recibe muchas señales de
entrada y envía una única señal de salida (como ocurre en las neuronas reales).
3. El modelo de McCulloch−Pitts
Uno de los primeros modelos matemáticos de una neurona fue el propuesto por McCulloch y Pitts en 1943 y
es en el que se basan las redes neuronales actuales.
En este modelo (figura 3) cada neurona consta de un conjunto de entradas, Si, y una sola salida Sj. Cada
entrada i está afectada por un coeficiente que se denomina peso y que se representa por la letra wij
(gráficamente suele representarse como una media luna).
4
Figura 3
El subíndice i refleja que el peso afecta a la entrada i, y el subíndice j que se trata de la neurona j.
La cantidad calculada como la suma del producto de cada entrada multiplicada por su respectivo peso se
denomina activación de la neurona, xj. La salida, Sj, de la neurona es una función de la activación de ésta. Es
decir:
xj = Sum Si wij + Qj
i
Sj = f(xj)
donde el término Qj es un valor «umbral», y f(xj) es una función de la activación de la neurona.
Por ejemplo, en una de las primeras arquitecturas neuronales, el «Perceptrón», se utiliza la siguiente función
de salida:
Sj = 0 si xj < h
Sj = 1 si xj >= h
donde la constante h se denomina umbral. Esta es una función de salida de tipo binaria, y existen otras de tipo
lineal puro, lineal con umbral, y sigmoidea, entre otras.
En este modelo tan sencillo puede verse que la activación de la neurona depende del valor que tomen los
pesos y las entradas, de forma que la variación de éstos origina distintas salidas para la misma entrada a la
neurona. En la práctica, los pesos de las neuronas se modifican sometiendo a la red a un entrenamiento,
permitiendo que la red realice una función determinada. Esta es la característica que diferencia a una red
neuronal de una máquina algorítmica clásica: una red neuronal no se programa, se «educa». La red es capaz
de retener y asociar el conocimiento a través de la adaptación de los pesos de las neuronas siguiendo una regla
de aprendizaje. Estas reglas son ecuaciones expresadas en función de las entradas y salidas de las neuronas y
describen la forma de variación de los pesos. En definitiva, son el instrumento empleado por las neuronas para
adaptarse a la información que se le presenta.
El aprendizaje de una red se puede producir de tres formas:
5
• Aprendizaje supervisado: consiste en introducir una serie de patrones de entrada a la red y a su vez
mostrar la salida que se quiere tener. La red es capaz de ajustar los pesos de las neuronas de forma
que a la presentación posterior de esos patrones de entrada la red responde con salida memorizada.
• Aprendizaje no supervisado: se presentan los patrones de entrada a la red y ésta los clasifica en
categorías según sus rasgos más sobresalientes.
• Aprendizaje autosupervisado: la propia red corrige los errores en la interpretación empleando una
realimentación.
Una de las primeras reglas de aprendizaje fue propuesta por Donald Hebb en 1949, y se basa en un hecho
biológico constatado: cuando dos neuronas se activan simultáneamente su conexión se refuerza. Esta idea se
expresa matemáticamente como:
dwij
−−−− = alpha Si xj
dt
4. Desarrollo histórico de las redes neuronales
Partiendo de que las redes neuronales se fundamentan en el sistema nervioso humano deberíamos remontarnos
a los tiempos de Galeno en los que ya se tenía un conocimiento considerable de éste. Sin embargo, los
verdaderos avances en neurología se produjeron a partir de la segunda mitad del siglo XIX. Investigadores
ilustres de esta época son Jackson, Ramón y Cajal y Golgi entre otros.
Fue en 1943 cuando Warren McCulloch y Walter Pitts propusieron el clásico modelo de neurona en el que se
basan las redes neuronales actuales. Seis años después, en 1949, en su libro The Organization of Behavior,
Donald Hebb presentaba su conocida regla de aprendizaje.
En 1957, Frank Rosenblatt presentó el Perceptrón, una red neuronal con aprendizaje supervisado cuya regla
de aprendizaje era una modificación de la propuesta por Hebb. El Perceptrón trabaja con patrones de entrada
binarios, y su funcionamiento, por tratarse de una red supervisada, se realiza en dos fases: una primera en la
que se presentan las entradas y la salidas deseadas; en esta fase la red aprende la salida que debe dar para cada
entrada. La principal aportación del Perceptrón es que la adaptación de los pesos se realiza teniendo en cuenta
el error entre la salida que da la red y la salida que se desea. En la fase siguiente, de operación, la red «es
capaz» de responder adecuadamente cuando se le vuelven a presentar los patrones de entrada. Se crearon
grandes expectativas sobre sus aplicaciones, que posteriormente se tornaron en gran decepción cuando en
1969 Minsky y Papert demostraron las grandes limitaciones de esta red.
En los años 60 se propusieron otros dos modelos, también supervisados, basados en el Perceptrón de
Rosenblatt denominados Adaline y Madaline. En estos, la adaptación de los pesos se realiza teniendo en
cuenta el error, calculado como la diferencia entre la salida deseada y la dada por la red, al igual que en el
Perceptrón. Sin embargo, la regla de aprendizaje empleada es distinta. Se define una función error para cada
neurona que da cuenta del error cometido para cada valor posible de los pesos cuando se presenta una entrada
a la neurona. Así, la regla de aprendizaje hace que la variación de los pesos se produzca en la dirección y
sentido contrario del vector gradiente del error. A esta regla de aprendizaje se la denomina Delta.
La era moderna de las redes neuronales artificiales surge con la técnica de aprendizaje de propagación hacia
atrás o Back Propagation. La estructura de las redes citadas anteriormente (Perceptrón, Adaline y Madaline)
consta de dos capas: una capa primera formada por unidades que dejan pasar la entrada y que no tienen
6
aprendizaje, y una segunda capa formada por una o varias neuronas en el caso del Madaline. La contribución
de Minsky y Papert fue la de demostrar que una red del tipo Perceptrón no es capaz de aprender todas las
posibles combinaciones entre entradas y salidas. La solución del problema consiste en añadir capas
intermedias de neuronas, introduciendo de esta forma el problema de cómo enseñar a estas capas intermedias.
Aquí es donde tiene importancia el algoritmo de propagación hacia atrás. En éste se compara la salida real con
la salida deseada. La diferencia entre ambas constituye un error que se propaga hacia atrás desde la capa de
salida hasta la de entrada permitiendo así la adaptación de los pesos de las neuronas intermedias mediante una
regla de aprendizaje Delta. Sin embargo, también tiene sus limitaciones.
Posteriormente se han desarrollado otros modelos que permiten un aprendizaje no supervisado como el mapa
auto−organizativo de Kohonen, los basados en la Teoría de Resonancia Adaptativa (ART) de Grossberg y
Carpenter, o los modelos de control motor de Bullock, Gaudiano y Grossberg, entre otros.
5. El Perceptrón
A continuación se mostrará el funcionamiento de una de las redes neuronales clásicas, el Perceptrón de
Rosenblatt. Su importancia es más bien histórica puesto que las limitaciones que presenta hacen que en la
actualidad no se emplee en aplicaciones prácticas. Se verá en primer lugar la estructura del Perceptrón, a
continuación se detallará su funcionamiento y por último se mostrará el código fuente en C de un programa
que realiza una simulación por ordenador de un Perceptrón, donde puede verse cómo es capaz de aprender
funciones lógicas de tipo OR y AND.
5.1 Estructura
Un Perceptrón consta de dos niveles o capas (figura 4). El primer nivel está compuesto por un número de
unidades de entrada, denominadas unidades sensoriales, que en nuestro ejemplo son dos. El segundo nivel está
compuesto por un número de unidades de salida, denominadas unidades de asociación, cuyas entradas son las
salidas de las unidades de entrada ponderadas por unos pesos. En el ejemplo sólo se empleará una neurona en
la capa de salida. Las unidades de entrada tienen una sola entrada correspondiente a una de las entradas a la
red, y una sola salida. Estas unidades transmiten la señal que aparece en su entrada.
Figura 4
5.2 Funcionamiento
El Perceptrón se diseñó para trabajar con patrones de entrada y salida de tipo binario. Así, la salida será 1
cuando la activación de la neurona alcance un valor y 0 en caso contrario.
Según lo expuesto, la activación de la neurona del segundo nivel para un
7
umbral 0 se calcula, en el ejemplo, como:
xj = S1 w1j + S2 w2j
donde S1 y S2 son las entradas, y w1j y w2j sus correspondientes pesos.
La función de salida vendrá determinada por:
Sj = { 1 si xj > h ; 0 si xj <= h }
donde h es el umbral.
La regla de aprendizaje que se emplea para la adaptación de los pesos está basada en el error. Durante la fase
de aprendizaje se presentan a la red los patrones de entrada y la salida bj deseada para > h cada entrada. El
error viene dado por la diferencia entre la salida deseada bj, y la salida real de la neurona, Sj. Es decir:
dj = bj − Sj
5.3 Mecanismo de variación de los pesos:
• Si la entrada fue correctamente categorizada (es decir, que la salida de la neurona corresponde con la
salida deseada), entonces no se hace ningún cambio.
• Si la salida es 1 cuando debería ser 0, entonces los pesos y el umbral se modifican de la siguiente
manera: en primer lugar se incrementa el umbral en una unidad, para hacer menos probable la
activación de la neurona. Si la entrada ii es 0, entonces no se hace ningún cambio en su peso, puesto
que esta entrada no ha contribuido a activar la neurona. Por el contrario, si la entrada ii es 1, se
decrementa su peso wi en una unidad. En el otro caso en el que la salida es 1 cuando debiera ser un 0,
los cambios que deben hacerse son los opuestos.
El método requiere que cada patrón de entrada y salida se presente a la red las veces necesarias hasta que ni
los pesos ni el umbral varíen. Por otro lado, el cambio en el umbral y en los pesos se expresa
matemáticamente como:
Incremento h = −dj
Incremento wi = djii
Esta regla de aprendizaje, que Rosenblatt denominó back coupled error correction, tiene la propiedad de
converger siempre al valor correcto de los pesos siempre que este valor exista. En uno de los apartados
siguientes veremos que hay determinadas combinaciones de entradas y salidas que el Perceptrón no puede
aprender.
6. Conclusiones
El Perceptrón aprende bien las funciones OR y AND, sin embargo no ocurre lo mismo con la función XOR.
Esto es debido a que a medida que se van presentando los patrones de entrada y su correspondiente salida, la
red va adaptando los pesos, pudiendo ocurrir (como en el caso del XOR) que la diferencia entre las entradas y
la salida sea muy grande provocando un cambio grande en el valor de los pesos y haciendo que se borre lo
aprendido anteriormente.
Este problema en el que la red «va olvidando» lo aprendido a medida que aprende nuevas cosas ya ha sido
8
resuelto en otras redes neuronales más modernas. En algunos casos el problema se soluciona presentando las
entradas en un orden distinto. Sin embargo, en el caso del Perceptrón se ha demostrado que no puede aprender
determinadas combinaciones de entrada y salida. En este sentido, en 1969 Minsky y Papert demostraron en su
libro Perceptróns que este tipo de redes no puede clasificar patrones de entrada que no sean linealmente
separables. Unos patrones de entrada/salida se consideran linealmente separables cuando en una
representación geométrica en el plano pueden separarse por una línea recta los grupos de entradas/salidas del
mismo tipo. Por ejemplo, en el caso de la función OR, la figura 6 muestra cómo pueden ser separados por una
línea recta los patrones de entrada clasificados con una salida 0 de los clasificados con una salida 1. Sin
embargo, en el caso del XOR, véase la figura 7, no es posible hacer una separación de este tipo.
Figura 6 Figura 7
Veamos que esto es así. Para que el Perceptrón aprenda una función XOR deben cumplirse las siguientes
cuatro desigualdades:
0 w1 + 0 w2 < h => 0 < h
1 w1 + 0 w2 < h => w1 > h
0 w1 + 1 w2 < h => w2 > h
1 w1 + 1 w2 < h => w1 + w2 < h
Sin embargo, si w1 y w2 son mayores que el umbral h, su suma nunca podrá ser menor que éste, y por tanto
no hay ninguna combinación de estos valores que cumpla simultáneamente las cuatro desigualdades.
Para ilustrar estas ideas puede representarse en el espacio de los pesos la superficie del error para cada
función. Así, puede tomarse una función de error del tipo:
n
Ej = Sum (djp)²
p=1
donde djp es el error de la neurona j para cada patrón p de entrada. Es decir, la función de error Ej da el error
total en la neurona j para un valor dado de los pesos y para un grupo de entradas y salidas. El error se calcula
como la suma de los errores elevados al cuadrado cuando se presentan las n entradas a la neurona. En el
ejemplo que nos ocupa n=4, puesto que hay cuatro patrones de entrada distintos.
9
La función de error definida de esta manera toma un valor para cada par de valores que tengan los pesos w1j y
w2j. De esta forma, en el espacio de los pesos la función de error es una superficie donde podrá observarse
qué combinaciones de los pesos hacen mínimo el error.
Las figuras 8, 9 y 10 muestran las superficies del error, con un umbral de valor 1, para las funciones OR,
AND y XOR, respectivamente. Se ha representado en color más oscuro las porciones de superficie de error 0
en cada caso. Además, los bordes de la función de error se han unido al plano de error 0 para mayor claridad.
Figura 8
10
Figura 9
Como puede observarse hay infinitas combinaciones de los pesos que hacen que hacen el error 0 para la
función OR. Igualmente puede verse que hay una única combinación de los pesos que hace que valga 0 en el
caso de la función AND. Y por último, que no hay ningún valor de los pesos que haga nulo el error cuando se
trata de una función XOR, como era de esperar.
Una solución al problema, ya conocida por Minsky y Papert, consiste en introducir una capa adicional de
neuronas entre la capa de entrada y la capa de salida. Sin embargo, esta solución implica modificar la regla de
aprendizaje para poder enseñar también a las neuronas de la capa intermedia.
11
Figura 10
7. Aplicaciones al control automático
Por último, se muestran algunas de las múltiples aplicaciones que pueden darse a las redes neuronales en este
campo.
• Visión artificial: Se emplean modelos de redes neuronales que son capaces de emular características
del funcionamiento visual humano permitiendo, por ejemplo, el reconocimiento de imágenes
texturadas en color, el aprendizaje para determinar posiciones a partir de la información proveniente
de dos cámaras, y representación de la visión binocular.
• Reconocimiento y categorización de patrones: Estas redes emplean las arquitecturas de la Teoría de la
Resonancia Adaptativa o ART. Entre otras aplicaciones se encuentran el reconocimiento de caracteres
manuscritos, autorización de descubiertos bancarios y clasificación de cromosomas.
• Procesos químicos: Dos aplicaciones posibles son: el control de la temperatura en un reactor químico
y el control de procesos químico−orgánicos no lineales.
• Control motor: Permiten resolver el problema cinemático inverso en manipuladores y robótica móvil,
consistente en determinar la secuencia de movimientos que deben realizar las distintas partes del robot
12
para alcanzar una posición deseada. También permiten el aprendizaje de la dinámica del manipulador,
es decir, de la generación de las fuerzas y pares que hay que aplicar para producir un movimiento
determinado.
• Otros campos, como la predicción económica y problemas de gestión, aprendizaje preventivo, etc...
8. El futuro de las redes neuronales
Las redes neuronales alcanzan cada vez mayor auge, teniendo multitud de aplicaciones en campos diversos y
dando soluciones sencillas a problemas cuya resolución resulta complicada cuando se emplean máquinas
algorítmicas. Aún así, el futuro de las redes neuronales no está todavía claro y será en los próximos años
cuando se determine su evolución.
13
Descargar