Redes Neuronales Artificiales y Estadística

8,855 views
8,696 views

Published on

Estudio teórico y práctico sobre redes neuronales Artificiales y los modelos estadísticos convencionales. Además aplicaciones en R cran, algoritmo diseñados.

Published in: Technology
1 Comment
4 Likes
Statistics
Notes
No Downloads
Views
Total views
8,855
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
649
Comments
1
Likes
4
Embeds 0
No embeds

No notes for slide

Redes Neuronales Artificiales y Estadística

  1. 1. PONTIFICIA UNIVERSIDAD CATÓLICA DE VALPARAÍSO FACULTAD DE CIENCIAS INSTITUTO DE ESTADÍSTICA “COMPARACIÓN TEÓRICO PRÁCTICA ENTRE MODELOS ESTADÍSTICOS Y EL PERCEPTRÓN MULTICAPA” MEMORIA PARA OPTAR AL TITULO DE ESTADÍSTICO ISAI ORLANDO MORALES GONZÁLEZ PROFESOR GUÍA JORGE GALBIATI RIESCO VALPARAÍSO, 2010
  2. 2. Esta Memoria de título está dedicada al Sr. Francisco Javier González Nova, Quien hoy no está presente físicamente, pero sus consejos y valores estarán por siempre en mi vida. 2
  3. 3. Agradecimientos, A Dios, por ser siempre mi fortaleza A mis padres, a quienes les debo todo lo que soy y todo lo que tengo. A mi mami Lucy, a quien quiero y admiro profundamente A mis tíos y tías cercanas, quienes me han apoyado siempre, no sólo en forma material, también transmitiendo principios que me llenan de orgullo A mis hermanitas y mi hermano, quienes son parte importante de mi vida A mis primos y primas, quienes más que eso, son mis grandes amigos A mis compañeros y compañeras, por su compañía y ayuda cuando lo necesite A mi profesor guía de esta memoria, Dr. Jorge Galbiati Riesco por su infinita paciencia. A todos mis profesores de Carrera por enseñarme el poder del conocimiento Y a todos lo que alguna vez han extendido, desinteresadamente, su ayuda a su servidor Atte., Isai Orlando Morales González 3
  4. 4. …“Si tu única herramienta es un martillo, tiendes a tratar cada problema como si fuera un clavo”… Abraham H. Maslow, Sicólogo y Siquiatra norteamericano. 4
  5. 5. Índice Prólogo ...................................................................................................................................... 7 Capítulo 1: Introducción a las redes neuronales artificiales ................................................... 9 1.1 Generalidades .............................................................................................................................. 10 1.2 Inspiración Biológica ................................................................................................................... 12 1.3 Breve Reseña Histórica ................................................................................................................ 16 1.4 La Red Neuronal Artificial ........................................................................................................... 19 1.4.1 Modelo Genérico de una red neuronal artificial ..................................................................... 19 1.4.2 Aprendizaje o Entrenamiento de una Red Neuronal ............................................................... 22 Capítulo 2: Primeros modelos basados en redes neuronales artificiales................................24 2.1 Célula de Mc Culloch y Pitt ......................................................................................................... 25 2.2 El Perceptrón ............................................................................................................................... 28 2.3 La Adalina ................................................................................................................................... 36 Capítulo 3: El perceptrón multicapas y el algoritmo de retropropagación de los errores ....47 3.1 El perceptrón multicapa ............................................................................................................... 48 3.2 Aprendizaje en un PMC ............................................................................................................... 49 3.2.1 El Algoritmo de Retropropagación ........................................................................................ 51 3.2.1.1 Cálculo de los pesos de la penúltima capa a la capa de salida ............................................... 52 3.2.1.2 Cálculo de los pesos de las capas ocultas. ........................................................................ 54 3.3 Construcción del Perceptrón Multicapa ........................................................................................ 60 3.4 Generalización en un perceptrón multicapa .................................................................................. 63 3.4.1 Validación Cruzada ............................................................................................................... 64 3.4.2 Técnica de regularización: decaimiento de los pesos (Weight Decay) .................................... 65 3.5 Comentarios finales sobre la construcción del perceptrón multicapa ............................................. 66 5
  6. 6. Capítulo 4: Redes neuronales y modelos Estadísticos ............................................................67 4.1 Redes neuronales y modelos Estadísticos ..................................................................................... 68 4.1.1 Terminología de redes neuronales y estadística...................................................................... 68 4.1.2 Redes neuronales artificiales y regresión ............................................................................... 70 4.2 Redes neuronales y problemas de clasificación ............................................................................. 80 4.2.1 Análisis sobre muestras reales ............................................................................................... 82 4.2.1.1 Muestra Real 1: Reconocimiento de Vinos....................................................................... 83 4.2.1.2 Muestra real 2: Quiebra de Bancos Españoles. .................................................................. 85 4.2.1.3 Muestra Real 3: Flores de Fisher ................................................................................... 87 4.2.1.4 Muestra Real 4: Diagnostico de Problemas al corazón ........................................................ 89 4.2.1.5 Muestra Real 5: Juego Gato ......................................................................................... 91 4.2.1.6 Muestra Real 6: Análisis de investigación criminalísticas sobre Vidrios. ................................. 93 4.2.2 Análisis sobre regiones atípicas ............................................................................................. 95 4.2.2.1 Muestra experimental, Gráfica 1 ................................................................................... 97 4.2.2.2 Muestra experimental Gráfica 2 .................................................................................... 98 4.2.2.3 Muestra experimental Gráfica 3: ................................................................................... 99 4.2.2.4 Comentario ............................................................................................................ 100 Conclusión y discusión ........................................................................................................... 101 Bibliografía ............................................................................................................................. 103 Apéndices ............................................................................................................................... 105 Apéndice A: Software para implementación de Redes neuronales Artificiales .................................. 105 Apéndice B: Algoritmos del programa R cran utilizados en esta memoria. ....................................... 106 6
  7. 7. Prólogo En los últimos años se ha consolidado un nuevo campo de la computación el que abarcaría un conjunto de ideas inspiradas en el funcionamiento de los modelos biológicos. El desarrollo de estas metodologías no es más que el resultado de múltiples investigaciones orientadas a diseñar sistemas inteligentes, que puedan, en cierta medida emular la capacidad humana de razonar, característica que discrimina absolutamente a nuestra especie de otros seres vivos. Cuando nos referimos a “sistemas inteligentes”, entendemos sistema cualquier dispositivo físico o lógico capaz de realizar alguna tarea requerida. El conjunto de estas metodologías emergentes dan origen a la disciplina científica conocida con el nombre de Inteligencia artificial o Computación Soft. Esta disciplina comprende una gran cantidad de nuevas metodologías como: la lógica borrosa, las redes neuronales artificiales, el razonamiento aproximado, los algoritmos genéticos, la teoría del caos y la teoría del aprendizaje. Entre todas estas la que ha causado mayor impacto son las Redes neuronales artificiales, principalmente por su capacidad de amoldarse a muchos problemas reales, haciéndola una de las técnicas con gran aplicabilidad práctica. Originalmente, las redes neuronales nacieron como una forma de emular matemáticamente el funcionamiento del sistema neuronal, con el tiempo se desarrollaron sistemas físicos aplicados a distintas ramas de la ingeniería, hasta que su versatilidad captaron la atención de profesionales del área Estadística y del análisis de datos, quienes comenzaron a utilizar con mucha frecuencias estos modelos, cuya versatilidad y facilidad de uso los hizo, rápidamente muy populares. Cualquier búsqueda en la web sobre trabajos de redes neuronales artificiales nos arrojará millones de resultados sobre investigaciones que utilizan esta metodología. Analizando con más detalle estos trabajos notaremos que muchos de los problemas tratados con redes neuronales artificiales podrían ser afrontados con alguna técnica estadística conocida. Poco a poco los investigadores han reemplazado técnicas estadísticas más clásicas por los modelos neuronales artificiales, debido a que estos son más fáciles de utilizar, no trabajarían bajo ningún supuesto y los softwares con un entorno muy visual nos permitirían utilizar las redes sin mayor preocupación de conocimientos teóricos profundos. Sin duda, para muchos de estos investigadores las redes son finalmente unas “cajas negras” que trabajan de una forma desconocida pero que entregan, finalmente, un buen resultado. 7
  8. 8. Para un investigador con una formación estadística nace la duda de forma inmediata, ¿Son éstos modelos de redes neuronales una alternativa tan válida y tan eficaz como los análisis estadísticos históricamente utilizados? Es aquí donde nace el principal objetivo de esta memoria, estudiar los modelos neuronales, específicamente el denominado perceptrón multicapa. Compararlos y ver cuáles son sus ventajas y desventajas con los modelos estadísticos más comunes como son la regresión, regresión logística, árboles de clasificación y predicción, método de los vecinos más cercanos, etc. Si bien esta memoria contiene 4 capítulos, en forma general puede distinguirse dos partes de estudio. La primera está formada por los capítulos 1,2 y 3, donde se estudia las redes neuronales, en particular el perceptrón multicapa, sus orígenes, su funcionamiento y su construcción. La segunda parte, capítulo 4, es donde se comparan en problemas reales y experimentales las redes neuronales con las técnicas estadísticas antes mencionadas, y cuyos resultados son discutidos al final de la lectura. 8
  9. 9. Capítulo 1: Introducción a las redes neuronales artificiales 9
  10. 10. 1.1 Generalidades Las redes neuronales artificiales (RNA) o sistemas conexionistas, son sistemas de procesamiento de la información cuya estructura están inspirados en las redes neuronales biológicas. Consisten en un conjunto de elementos simples de procesamiento llamados neuronas, conectadas entre sí por conexiones que tiene un valor numérico modificable llamado peso. Las redes neuronales artificiales corresponden a una de las múltiples ramas desarrolladas por la inteligencia artificial denominada “Inteligencia Artificial Subsimbolica” cuyo objetivo final es reproducir la habilidad cognoscitiva humana, imitando los mecanismos físicos de los sistemas nerviosos y del cerebro. [Isasi, 06]. Debido a su construcción y fundamento las RNA tienen características similares a las redes neuronales biologicas, por ejemplo son capaces de aprender de la “experiencia” y poner a prueba lo aprendido frente a nuevos casos, extraer características esenciales de un conjunto de ejemplos y así tomar alguna decisión en el futuro. En definitiva, buscan (de una forma mucho más discreta que el cerebro, claro está) ser procesadores “inteligentes” de la información. Las redes neuronales artificiales se utilizan en la resolución de problemas de clasificación, estimación funcional y optimización, en general, el reconocimiento de patrones o rasgos suele considerarse como un denominador común. Se puede señalar, entre otras, las siguientes áreas de aplicaciones de las redes neuronales artificiales: Neurobiología: Aprender más acerca del cerebro y otros sistemas, modelar matemáticamente la actividad cerebral. Medicina: Diagnóstico de cardiopatías, detección de tumores cancerígenos, caracterización de la dinámica en la variabilidad cardiaca, predicción de enfermedades degenerativas cardíacas, análisis de imágenes para el diagnostico de enfermedades, diagnósticos a partir de datos analíticos, analizadores del habla para ayudar en la audición de sordos, predicción de reacciones adversas a los medicamentos, etc. Ciencias, Empresa e Ingeniería: Evaluación de formaciones geológicas y petrolificas, reconocimiento del habla, reconocimiento de caracteres e imágenes, robots automatizados, procesamiento de señales físicas, inspección de la calidad, control de producción en líneas de 10
  11. 11. proceso, identificación de candidatos para posiciones especificas, explotación de base de datos, predicciones de demanda, etc. Economía/finanzas: Concesiones de créditos, detección de posibles fraudes en tarjetas de crédito, determinación de la posibilidad de quiebra de un banco, predicción del gasto eléctrico de empresas y centrales, cambio de moneda, tendencias en bolsas de valores, predicción de stocks, predicción de series temporales de indicadores económicos, interpretación de firmas, etc. Aplicaciones Militares: Identificación de blancos de radares, optimización de recursos escasos, reconocimiento y seguimiento de tiro al blanco en armas avanzadas e individuos, sistemas para dar ayuda a el piloto en caso de alcance por fuego enemigo, aterrizaje de aviones sin intervenció n humana, etc. Según [Warren, 94] estas aplicaciones puedes encuadrarse en tres grupos:  Como una forma de modelar matemáticamente el sistema nervioso biológico.  Como procesadores de señales físicas para implementación de hardware y robots “inteligentes”.  Como un método analítico de datos. Como vemos, en los primeros dos grupos las aplicaciones son propias de las áreas de biología e ingenierías: el estudio biológico hace un esfuerzo por entender cómo funciona realmente el cerebro, por otro lado el avance tecnológico ingenieril hace que se produzca mejores dispositivos robóticos de ayuda a diferentes áreas, donde la intervención humana es dificultosa. Sin embargo, hay un tercer grupo que como estadísticos puede llamar la atención y es la aplicación de las redes neuronales al análisis de datos. Hace aproximadamente veinte años el análisis de datos con redes neuronales artificiales ha tomado fuerza, siendo aplicada en áreas donde, históricamente, la estadística era la única metodología utilizada. Además, a través de trabajos prácticos se ha evaluado la eficiencia de estas técnicas y muestran resultados iguales o mejores que las técnicas estadísticas utilizadas tradicionalmente. Sobre este tema nos dedicaremos más detalladamente en capítulos posteriores donde intentaremos encontrar similitudes entre la estadística y las RNA, y comparar su eficiencia. 11
  12. 12. 1.2 Inspiración Biológica El nacimiento de las neuronas artificiales tiene una inspiración biológica, gran parte de las características que serán descritas sobre el sistema neuronal biológico son realizadas en los modelos artificiales de los que se va a hablar en este trabajo. El aparato de comunicación neuronal de los hombres y de algunos animales superiores se compone de tres partes principales:  Los receptores, que son las células sensoriales que recogen información del interior y exterior del organismo.  El sistema nervioso, que recibe la información, la elabora, analiza y envía una respuesta a los estímulos recibidos.  Organismos efectores, como glándulas y músculos, que reciben la respuesta del sistema nervioso interpretándola en forma de acciones motoras, hormonales, etc. En todo este sistema la función principal la cumple el sistema nervioso, que esta constituido por una célula muy particulares, que tiene la difícil misión de elaborar una respuesta frente a distintos estímulos: la neurona. A pesar de que desde la antigüedad se intento estudiar el funcionamiento del cerebro solo en el año 1888 se demostró que el sistema nervioso estaba compuesto por una red de células individuales ampliamente interconectadas entre sí, este descubrimiento fue tan valioso que se le concedió el premio Nobel de medicina a su descubridor, el Dr. español Santiago Ramón y Caja. Obviamente, gracias al advenimiento de la microscopía electrónica y a la introducción de otras importantes técnicas, se ha llegado a profundizar mucho más en el estudio de la neurona. Para la presente tesis nos limitaremos a un nivel de descripción de la neurona biológica que nos permita trazar el paralelismo existente entre las redes neuronales biológicas y artificiales. Se estima que el sistema nervioso contiene alrededor de cien mil millones de neuronas. Vistas microscópicamente, este tipo de células puede presentarse en diferente formas, pero la gran mayoría presentan un aspecto particular como lo muestra la figura 2.1: con un cuerpo celular o soma, del que nace un denso árbol de ramificaciones compuesto por las dendritas, y del cual parte una fibra tubular denominada axón, que también se ramifica en su extremo final para conectar con otras neuronas, o con los organismos efectores. 12
  13. 13. En términos generales, las dendritas y el cuerpo celular reciben información de los organismos receptores, dicha información se envía entre las distintas neuronas, a través del axón, formando redes, en las cuales se elabora y almacena la información. Así como hay una parte de neuronas relacionadas con los receptores, otra parte está conectada con los organismos efectores, para interpretar la orden entregada por el sistema nervioso. De esta forma las neuronas tienen la función de recoger la información en forma de impulsos procedente de otras neuronas receptoras, integrar esta información en un código de activación propio de cada célula, transmitir la información a través de impulsos electro-químicos por el axón a otras neuronas o a organismos receptores, según corresponda. A pesar de que están altamente conectadas, las neuronas nunca se fusionan, ya que entre ellas existe una mínima separación denominada espacio sináptico, este es un pequeño espacio liquido donde existen determinadas cantidades de iones de sodio o potasio, estos iones hacen que el espacio sináptico posea conductividad que activen o impidan el paso de los impulsos eléctricos. A estas conexiones o traspasos de impulsos eléctricos se le denomina Sinapsis. Esta sinapsis se convierte en potenciadores o inhibidores de la señal procedente de los axones, actuando como aislante o amplificadores a conveniencia, así una neurona puede ser activada o inhibida. El cerebro humano contiene 1011 o 100 billones de neuronas ese número es aproximadamente el numero de estrellas en la vía Láctea y el numero de galaxias conocidas por el hombre. Se calcula que cada una de estas neuronas tiene 104 conexiones, eso da un total de 1015 o un cuatrillón de 13
  14. 14. conexiones totales, teniendo en cuenta que la frecuencia de disparos de impulsos oscila habitualmente entre 1 y 100 pulsos por segundo, aunque algunas neuronas pueden llegar a los 500 durante pequeños periodos de tiempo, el cerebro funciona como un sistema dinámico, asincrónico, no lineal, masivo, paralelo y recurrente de proporciones astronómicas, demás está decir que todo nuestro comportamiento, interno y externo, adecuado o no, es manejado por este sistema. Como hemos dicho anteriormente, 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 artificial recibe muchas señales de entrada y envía señales de salida. Estas señales introducidas son variables numéricas a las que denominaremos xi , estas se 14
  15. 15. introducen en la neurona artificial a través de una suma ponderada por los denominados pesos sinápticos que hacen el papel de las dendritas y que denominaremos como wi . n De esta forma, si tenemos n estímulos la neurona recibirá como entrada I   xi wi , en forma i 1 vectorial I  X TW . Además, la neurona posee una función que les permite activarse o inhibirse a partir de las señales que recibe como entrada, dicha función se denomina función de activación f  I  , y activará a la neurona si iguala o sobrepasa algún valor umbral, es decir, activará a la neurona sí  n  f   xi wi    . La figura 1.2 representa esta analogía.  i 1  Un conjunto de estas neuronas conectadas entre sí de forma ordenada formarán lo que se conoce como redes neuronales artificiales, y en el caso que la función de activación estuviera en las neuronas que tienen contacto con el exterior de la red, entonces esas funciones se denominarán función de salida. Antes de explicar el funcionamiento de una red neuronal artificial haremos una breve reseña histórica sobre el desarrollo de estos modelos. 15
  16. 16. 1.3 Breve Reseña Histórica En 1936 Alan Turing fue el primero en estudiar el cerebro como una forma de ver el mundo de la computación, y aún antes Freud había realizado algunos análisis en el periodo del pre sicoanálisis, sin embargo, el trabajo de Warren McCulloch y Walter Pitts en 1943 se considera como el punto de arranque de la investigación en las redes neuronales artificiales, ellos modelaron una red “simple” mediante circuitos electrónicos, ideas que plasmaron en el boletín “A logical calculus of the ideas immanent in nervous activity”, [McCulloch y Pitt, 43]. Posteriormente, en 1949 se lanza un importante libro: “Organization of Behavior” (la organización del comportamiento), por Donald Hebb donde por primera vez se formaliza el proceso de aprendizaje de una neurona artificial: la regla Hebbiana, utilizado hasta hoy . En el primer período de la investigación en redes neuronales artificiales, entre mediados de los 50 y mediados de los 60, una cantidad importante de científicos, ingenieros y grupos de investigación dedicaron importantes esfuerzos a la construcción y experimentación de estos sistemas. Entre los grupos más importantes se podrían destacar el grupo de F. Rosenblatt en la Universidad de Cornell (Nueva York), el grupo de C. Rosen en el Instituto de Investigación de Stanford (California), y el grupo de B. Widrow en el departamento de Ingeniería Electrónica de la Universidad de Stanford. El más famoso de los investigadores de esa época fue Frank Rosenblatt, psicólogo Newyorkino que en 1957 en su libro “The Perceptrón: A perceiving and recognicing automation” desarrolló el Perceptrón, el tipo de red neuronal más antigua basadas en la idea original de McCulloch y Pitts, utilizándose hasta hoy en día para el reconocimiento simple de patrones, no obstante, el perceptrón tenía una serie de limitaciones, pues como veremos solo es efectivo bajo ciertas condiciones. Posteriormente, surgió una red basada en el perceptrón pero con ciertos cambios en su forma de aprendizaje, esta fue conocida como Adaline y fue desarrollada por Bernard Widrow y Marcial Hoff en 1960. El perceptrón y el Adaline eran una buena idea, pero no tuvieron mayor cabida en los círculos científicos de la época, y es posible que los problemas que tuvieron fueran provocados más que nada por el exagerado entusiasmo de sus creadores. Lo peor vino en 1969, cuando Marvin Minsky y Seymour Papert, investigadores del instituto técnico de Massachussets, publicaron “Perceptrón”, donde mostraban matemáticamente que esta red no era capaz de resolver problemas relativamente fáciles, y lo definieron simplemente como “un camino sin salida”. Lamentablemente estas críticas frenaron, por dos décadas, el crecimiento que estaban 16
  17. 17. experimentando las investigaciones sobre redes neuronales artificiales. En los años setenta algunos investigadores continuaron trabajando en la computación neuronal: Stephen Grossber y James Anderson. Los trabajos de Grossber derivaban de sus estudios fisiológicos, trasladando reglas sinápticas de asociación a ecuaciones explicitas, mientras Anderson intentaba modelar los esquemas de almacenamiento y recuperación de la memoria a través de un asociador lineal basado en la regla hebbiana. El renacimiento de estas técnicas, en la década de los 80, se debe principalmente al naciente desarrollo de los computadores los que permitieron una aplicación renovada de las redes neuronales y que ha extendido la investigación hasta el día de hoy. Este periodo se caracteriza por ser bastante rico en aportaciones teóricas, prácticas, y desarrollo de nuevos modelos. En este nuevo impulso de investigación de las RNA, cabe destacar algunos autores notables, el primero Teuvo Kohonen, Ingeniero electrónico Finlandés de la Universidad de Helsinki, que produjo el primer sistema de redes “topográfico”, denominado comúnmente como mapa autoorganizado y formalizando el aprendizaje competitivo; en 1980 Kunihiko Fukushima desarrolló en Japón un modelo neuronal para el reconocimiento de patrones visuales, luego John Hopfield, en 1982 provocó un leve renacimiento de las redes neuronales con su libro: "Computación neuronal de decisiones en problemas de optimización", Hopfield presento este trabajo en la Academia Nacional de Ciencias Estadounidense, donde su entusiasmo, la claridad de su presentación y la alta consideración que le tenía la comunidad científica hizo que este trabajo fuera muy bien recibido, teniendo en cuenta que hace más de veinte años que un trabajo de redes neuronales no era presentado a esa academia. El reconocimiento de la comunidad científica en el mundo ya se hacía evidente y se verá reforzado por las investigaciones del PDP (Parallel Distributed Processing Research Group) de la Universidad de California, cuyo trabajo se publicó en 1987 por David Rumelhart y G. Hinton, cuyos dos volúmenes son considerados clásicos, y que entre otras cosas redescubrieron formalmente el hoy famoso algoritmo de aprendizaje de retropropagación (backpropagation), ideado originalmente en la década de 1970, este modelo Posteriormente Kosko desarrollo la llamada Bi-directional Associative Memory (BAM), y las arquitecturas de redes denominadas Fuzzy Cognitive Map (FCM) y Fuzzy Associative Memory (FAM). 17
  18. 18. También podemos agregar que en las décadas de los noventas una serie de investigadores han ligado los modelos de redes neuronales con la estadística, como la máquina de soporte vectorial orientada a la resolución de problemas de carácter estadístico como reconocimiento de patrones, estimación y modelos de regresión. Finalmente, el desarrollo de RNA ha culminado positivamente con el surgimiento, crecimiento e institucionalización de una comunidad científica con su correspondiente sistema de comunicación y control especializado: publicaciones científicas, congresos, cursos de postgrado, instituciones de investigación, etc. Actualmente las investigaciones de redes neuronales se difunden en los congresos Internacional Joint Conference on Neural Networks (UICN) y Neural Information Processing Conference (NIPS). Entre las principales publicación periódicas se encuentran Neural Computation, Neural Networks, IEEE Transactions on Neural Networks, Internacional Journal of Neural Systems, Concepts in Neuroscience y Advances in Neural Information Processing Systems. 18
  19. 19. 1.4 La Red Neuronal Artificial 1.4.1 Modelo Genérico de una red neuronal artificial Una definición interesante de una red neuronal hace hincapié en el concepto matemático de grafo. Una red neuronal puede ser un grafo dirigido, donde los nodos son las neuronas y las conexiones son las sinapsis, en estos grafos se distinguen tres tipos de nodos los de entrada, los de salida y los intermedios. Estos nodos cumplen las siguientes características: i. A cada nodo i se asocia una variable de estado xi . ii. A cada conexión  i, j  de los nodos i y j se asocia un peso wij  R. iii. A cado nodo i se asocia un umbral  i . iv. Para cada nodo se define una función de activación f j  x j , wij , j  , que depende de los pesos sinápticos de sus conexiones, del umbral y de los estados de los nodos j a él conectados. Esta función proporciona el nuevo estado del nodo. Cada uno de estos nodos representa una neurona artificial, una conexión de estas neuronas, ordenada en capas y con un sistema definido para procesar la información es lo que se conoce como una red neuronal artificial. Figura 1.3. Formalmente, podemos decir que una red neuronal es una aplicación f : Rn W    R p , donde el conjunto W , se denomina espacio de pesos. 19
  20. 20. También podemos definir otros conceptos: se denomina capa de entrada a las neuronas ordenadas sin sinapsis entrantes, se denomina capa de salida a las neuronas ordenadas sin sinapsis salientes, las neuronas ordenadas que no son de entrada ni de salida se denominan capas ocultas. Una red es unidireccional cuando no presenta bucles o ciclos en sus conexiones, es decir las conexiones entre las neuronas son en un solo sentido y se denomina recurrente cuando el flujo de información puede encontrar unos bucles, es decir, una retroalimentación. Una red neuronal artificial monocapa es aquella que no tiene capas ocultas, mientras que una red multicapa puede tener una o varias capas ocultas. 20
  21. 21. En cuanto a las funciones de activación, estas son elegidas, como veremos más adelante, dependiendo el tipo de problema al que nos enfrentemos. Las funciones que se utilizan se muestran en la figura 1.5. 21
  22. 22. 1.4.2 Aprendizaje o Entrenamiento de una Red Neuronal El proceso de aprendizaje o entrenamiento en una red neuronal puede ser visto como un problema de actualización de los pesos sinápticos de las neuronas de manera tal que la red neuronal mejore la forma en que realiza cierta tarea específica. Estas mejoras en el desempeño de una red neuronal son logradas a lo largo de este proceso de entrenamiento y mediante la actualización iterativa de los pesos sinápticos, los cuales están representados por un vector o matriz denominado vector o matriz de pesos W . El aprendizaje de las RNA es un aprendizaje basado en ejemplos o patrones, estos ejemplos deben tener dos características fundamentales, primero, ser significativo, debe haber un número suficiente de ejemplos para que la neurona sea capaz de adaptar sus pesos en forma eficaz y ser representativo, es decir los ejemplos deberán ser diversos y reflejar todas los posibles estados de la red. Algunos autores aconsejan usar muestras aleatorias como ejemplos, sin embargo, en la mayoría de las aplicaciones no se encontrarán muestras aleatorias sino muestras de tamaño muy grande. En general, el proceso de aprendizaje se alcanza de dos maneras. En ocasiones, las redes neuronales utilizarán información previamente establecida; y basándose en dicha información se lleva a cabo la actualización de los pesos. En otras ocasiones las redes neuronales deben aprender a establecer los pesos sin esta información. A estos tipos de aprendizaje se les denomina Supervisado y no supervisado o auto organizado, respectivamente (en general, cualquier técnica de clasificación y predicción puede encontrarse en uno de estos dos grupos). En el aprendizaje supervisado básicamente a la red se le presenta un conjunto de ejemplos denominado muestra de aprendizaje, junto con la salida deseada u objetivo, e iterativamente ajusta los pesos hasta que la salida de la red tienda a ser la deseada, Figura 2.5. Para entender este procedimiento veamos un ejemplo: supongamos que queremos entrenar una red neuronal artificial que sea capaz de clasificar imágenes de rostros de diferentes individuos, entonces cada uno de los patrones de entrada contendrán la información codificada de la imagen, pero además estos patrones tendrán información para saber de qué individuo se trata, cada vez que uno de los ejemplos es introducido en la red esta la procesa y entrega una salida, en este caso el individuo al que pertenece la imagen, si la red se equivoca se retroalimentará con la información contenida en el patrón de entrada y modificará los pesos, de modo que, al introducir una imagen parecida, la salida de la red sea el individuo correcto. 22
  23. 23. Formalmente, en el aprendizaje supervisado primero debemos definir una función que represente el error esperado de la operación de la red, expresado en función de sus pesos sinápticos E  w  , el aprendizaje supervisado pretende estimar una función desconocida f : R n  R m a partir de muestras  X  R n , Y  R m  que deben ser tomadas aleatoriamente, por medio de la minimización iterativa de E  w  mediante aproximación estocástica. Por otro lado, en el aprendizaje no supervisado o autoorganizado, las redes son capaces de encontrar y descubrir, de manera automática, patrones de similitud dentro del conjunto de datos de entrenamiento, esto lo realiza sin ningún tipo de retroalimentación con el medio externo y sin la utilización de información a priori, cuando se utiliza este tipo de aprendizaje la red trata de determinar características de los datos del conjunto de entrenamiento: rasgos significativos, regularidades o redundancias. 23
  24. 24. Capítulo 2: Primeros modelos basados en redes neuronales artificiales 24
  25. 25. 2.1 Célula de Mc Culloch y Pitt En 1943, Mc Culloch y Pitt, publican un boletín donde exponen formalmente el primer sistema artificial de neuronas reales. Ellos modelaron una neurona simplificada considerándola con dos estados posibles: activada o inhibida. La célula de Mc Culloch y Pitt (M-P) recibe como entrada un conjunto de n valores binarios, que proceden de las salidas de otras células o del exterior, y que envían una respuesta binaria, ya que utilizan como función de salida la función umbral:  n 1 si  wi xi   f  w, x,    i 1 (2.1) 0  en otro caso Donde xi son las variables de entrada de la red y wi los pesos. De esta forma el primer modelo de redes neuronales era una colección de estas neuronas, donde sus salidas están conectadas a otras neuronas. Los ejemplos clásicos para exponer el funcionamiento de estas neuronas son las funciones lógicas “O” e “Y”, y los veremos a continuación. Ejemplo 1. Función lógica Y: Como sabemos, la función lógica Y posee la siguiente tabla de verdad. A B “Y” 0 0 0 0 1 0 1 0 0 1 1 1 Para recrear esta función a través de la célula M-P tendremos dos variables de entrada x1 y x2 , el valor umbral será   1 , y los pesos sinápticos w1  w2  1 , Figura 2.1. 25
  26. 26. Al procesar los valores de entrada se obtiene: x1 x2 I  1xi  1x2 f (I ) 0 0 0 0 0 1 1 0 1 0 1 0 1 1 2 1 Como vemos la neurona procesa en forma eficiente la función lógica Y, produciendo las salidas correctas. Ejemplo 2. Función lógica O: De forma análoga al ejemplo anterior podemos representar la función lógica O, el valor umbral será   0 , y los pesos sinápticos w1  w2  1 . Obteniéndose: A B “O” x1 x2 I  1xi  1x2 f (I ) 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 2 1 En este caso hemos utilizado los valores 0 y 1, pero es bastante común que la literatura utilice la codificación 1 y -1. Para solucionar este tipo de problemas los valores de los pesos deben ser 26
  27. 27. encontrados por el investigador de forma analítica. Aparentemente, el diseño de células M-P es sencillo, pero cuando se trata de funciones más complejas, el número de entrada puede ser más elevado y los pesos involucrados demasiados, sin un mecanismo para encontrar estos valores aplicar este tipo de redes es casi imposible. Este dilema llevó a muchos investigadores a buscar un método automático de cálculo para los pesos, uno de los resultados de esta investigación dio como resultado al primer modelo de red neuronal denominado Perceptrón. 27
  28. 28. 2.2 El Perceptrón El modelo perceptrón fue introducido en los años 1950, por Rosenblat, quien tomó la idea de Mc Culloch y Pitt, pero introdujo una forma automática para encontrar los valores de los pesos y umbrales. Rosenblat fue pionero en introducir el aprendizaje, de tipo supervisado, para entrenar la red. La estructura de un perceptrón es monocapa unidireccional, con dos o más variables de entrada binaria o real, y una salida binaria. La salida de la red la calculamos de igual forma que el modelo M-P pero con el valor  al otro lado de la ecuación, es decir:  p  y  f   wj x j    (2.2)  j 1  Donde xi son las variables de entrada de la red, wi los pesos y la función f   de salida es escalón del tipo:  1 si s  0 f s   (2.3) 1 en otro caso La Ecuación (2.2) equivale a introducir el valor umbral como un nuevo peso cuya variable de entrada será x0  1 . La figura 2.2 nos muestra este tipo de red con dos variables de entrada. Como 28
  29. 29. indica (2.3) la función de salida es binaria y podemos utilizarla como una clasificación de dos categorías de la siguiente forma:  Si la red produce salida 1, la entrada pertenece a la categoría A.  Si la red produce salida -1, la entrada pertenece a la categoría B. En el caso que tengamos solo dos variables de entrada la separación entre estas dos clases es una línea recta dada por la ecuación: w1 x1  w2 x2    0 (2.4) Este modelo representa una función discriminante lineal lo que podemos apreciar en la representación geométrica del perceptrón en la figura 2.3. La ecuación (2.4) puede ser escrita como: w1  x2   x1  (2.5) w2 w2 29
  30. 30. Los pesos determinan la pendiente de la recta y el umbral determina el intercepto con el eje de las ordenadas. Además la recta de discriminación entre la categoría A y B, es perpendicular al vector p p de pesos, pues si escribimos  w j x j     w j x j  0 en forma vectorial, tenemos X TW  0 . j 1 j 0 El proceso de aprendizaje o entrenamiento del perceptrón Supongamos que tenemos una colección de patrones de aprendizaje, e introducimos un patrón a través de la red, perteneciente, por ejemplo a la categoría A, y se obtiene la salida que genera la red para dicho patrón. Si la salida producida es 1, la respuesta de la red para dicho patrón es correcta, y no se realizará ninguna acción. Si por el contrario la salida producida es -1, entonces la respuesta de la red es incorrecta porque la red categoriza el patrón en la clase B, esto es un error de clasificación y es en este caso cuando se produce el aprendizaje. Ya que la respuesta de la red ha sido errónea debemos cambiar el valor de los pesos sinápticos. Dado que el valor de salida es inferior a lo que se debería haber obtenido, los pesos son incrementados para que en la próxima presentación del mismo patrón la salida sea la correcta. El cálculo de los pesos sináptico y el valor umbral se realiza iterativamente de la siguiente forma: w j  nuevo   w j  anterior   wj (2.6)   nuevo     anterior    (2.7) La forma de obtener w j y  se realiza de la siguiente forma: el contrario la salida producida es -1, entonces categoría, se obtiene la salida que genera la red para dicho patrón. tenemos una muestra de aprendizaje, que es un conjunto de n vectores de entradas X p1 , la salida de la red e y , la salida objetivo d  X  , en el caso del perceptrón d  X  e y serán 1 o -1. La regla de aprendizaje del perceptrón puede ser descrita de la siguiente forma: i. Aleatorizar valores para los pesos. ii. Seleccionar un vector de entrada sin reposición X i   x1i ,..., xip  de nuestra muestra de aprendizaje e introducirlo a la red. 30
  31. 31. iii. Si la salida de la red es distinta a la deseada, es decir, d ( X i )  y i , el perceptrón ha dado una respuesta incorrecta, entonces modificamos todas las conexiones w j , de acuerdo a w j  i   d  X i  xij , si d ( X i )  y i no realizar cambio en los pesos. iv. Si no se han modificado los pesos en un número n de pasos, terminar el proceso de aprendizaje, si no volver a 2, si los patrones se han terminado volver a introducirlos nuevamente. Además de modificar los pesos también debemos modificar el valor umbral, la forma de hacerlo es considerarlo como un peso sináptico w0 , donde el valor de x0 es siempre 1, de esta forma el valor umbral es siempre modificado de una forma particular: 0  si el perceptrón responde correctamente   t    d  X  en otro caso t (2.8)  Gráficamente podemos deducir este algoritmo. Sabemos que X TW  0 es el hiperplano que provoca la discriminación entre las dos clases, y el ángulo que forman los dos vectores X y W ,  es 90º cuando su producto punto es 0, es decir X TW  0 . Figura 2.4. Cuando entrenemos nuestra red, nos encontraremos con tres posibles casos: 31
  32. 32. Caso 1: La salida objetivo de la neurona es d ( X )  1 , entonces el producto escalar de X y W , debería ser positivo X TW  0 , para que y  1 , Sin embargo, es negativo X TW  0 . Eso significa que el ángulo   90º . Figura 2.5 Entonces la regla del perceptrón debería acercar W a X , lo cual se puede realizar de la siguiente forma, Figura 2.6: W (nuevo)  W (anterior )   X (2.9) 32
  33. 33. Caso 2: Cuando la salida objetivo sea d ( X )  1, entonces para que la red clasifique correctamente el patrón de entrada el producto escalar de X y W debería ser negativo X TW  0 , luego y  1 . Sin embargo, es positivo X TW  0 , eso significa que   90º . Entonces la regla del debería alejar W a X , lo cual se puede realizar de la siguiente forma, Figura 2.7. W (nuevo)  W (anterior )   X (2.10) Caso 3: Cuando la salida objetivo coincida con la salida de la red, entonces no realizaremos ningún cambio en el vector de pesos, pues entrega una salida correcta. Si reemplazamos   d ( X ) , lo anterior se reduce a, W (nuevo)  W (anterior )  d  X  X (2.11) Que da origen al algoritmo ya expuesto. En definitiva, este algoritmo moverá el hiperplano X TW , variando el valor de W , hasta que todos los patrones sean bien clasificados. Por ejemplo, supongamos que un perceptrón es iniciado con los siguientes pesos: w1  1 , w2  2 ,   2 . El primer patrón de aprendizaje A, con valores de entrada X A   x1A , x2A    0.5,1.5 y un valor de salida esperado y A  1 , si procesamos X A por la red, utilizando la ecuación (2.2), obtenemos: 33
  34. 34.  2  d  X A   f   w j x A     f 1 0.5  2 1.5  2   f 1.5   1  d ( X A ) j  j 1  La salida deseada es igual a la salida de la red, por lo que los pesos no son ajustados. Para el segundo patrón de aprendizaje B, con valores de entrada X B   x1B , x2    0.5, 0.5 y un valor B de salida esperado y B  1 , haciendo el mismo cálculo obtenemos que:  2  d ( X B )  f   w j x A     f 1 (0.5)  2  0.5  2   f  1.5   1  y B j  j 1  Procesemos ahora un tercer patrón de entrada C, con X C   x1C , x2    0.5, 0.5 la red entrega un C valor de salida de -1, mientras que el valor esperado es de 1, calculando de acuerdo a la regla del perceptrón el cambio en los pesos es: w 1  0.5 , w2  0.5 ,   1 , los nuevos pesos ahora son: w 1  1.5 , w2  2.5 ,   1 , y el punto C es clasificado correctamente, figura 2.8. 34
  35. 35. Rosemblat demostró que actualizando los pesos de la forma anteriormente descrita es posible encontrar una clasificación exacta en un número finito de modificaciones, esta demostración se conoce en la literatura como “teorema de convergencia del perceptrón” [Bishop, 95]. Sin embargo, el teorema de convergencia del perceptrón garantiza la clasificación sólo cuando las dos categorías son linealmente separables, es decir que existe un hiperplano que pueda separar ambas clases. En caso contrario el algoritmo no solo nunca terminará, sino que tampoco garantiza que con un número suficientemente grande de modificaciones se obtenga una clasificación aceptable. Además, el perceptrón presenta otra gran limitación por la naturaleza de sus salidas, al ser binarias solo pueden codificar un conjunto discreto de estados, en cambio si sus salidas fueran reales podría codificar cualquier tipo de salida. En esta idea fue en la que se basaron Widrow y Hoff unos años después, en 1960 creando un modelo de salida real e introduciendo en el aprendizaje un criterio de minimización del error cometido por la red, dando como resultado el segundo modelo clásico de redes neuronales: La Adalina. 35
  36. 36. 2.3 La Adalina Otro de los modelos clásicos es el Adaline, introducido en 1960 por Widrow y Pitt, cuyo nombre proviene de su acrónimo en ingles Adaptive linear neuron, que posteriormente, pasó a nombrarse Adalina, Adaptive linear element. Este modelo utiliza una neurona similar a la del perceptrón pero con función de transferencia de tipo lineal en vez de la función signo o escalón, es decir la salida de la red es:  p  p p S    f   w j x j      wi xi     w j x j (2.12)  j 1  j 1 j 0 La salida de la red es real y no binaria como en el perceptrón, no obstante, la diferencia fundamental entre estos modelo reside en el algoritmo de aprendizaje: Al igual que en el perceptrón se dispone de un conjunto de patrones de entrenamiento A , compuesto por un vector de entrada X i y su salida asociada y i :  xip    A  X , y  ,  X 1 1 2  , y 2  ,...,  X n , y n  , donde X i     P e yi  .  xi   p El aprendizaje en este caso incluye el error cometido por la salida de la red para algún patrón introducido. Este error es medido a través una función denominada función de coste o de error. La medida de error global que más se utiliza es el error cuadrático medio: 2 1 n  i p i i 2  y SXi   n 1 n i E  E  i    y   wj x j  (2.13) i 1 2n i 1 2n i 1  j 0  Donde S  X i  representa la salida de la red para el patrón X i , y se ha incluido el término 1 2 con el fin de simplificar el cálculo de las derivadas, como veremos a continuación. Aunque generalmente este error es medido globalmente, en el caso de la adalina el cálculo se hace en un proceso iterativo en el que se van presentando los patrones de aprendizaje uno a uno, 36
  37. 37. 2 1 p  E   y i   w j xij  i (2.14) 2 j 0  Y modificando los pesos de la red mediante el descenso por el gradiente de la superficie del error. La idea del descenso por el gradiente, como muestra la Figura 2.9, buscar los valores para los pesos sinápticos que minimicen iterativamente la función de error, entonces en cada presentación de los valores se realizará un cambio en cada peso proporcional a la derivada del error, respecto del peso, Ecuación 2.14. Más formalmente, el gradiente es un vector de dirección perpendicular a las curvas de nivel de la superficie de error y que indica el sentido de crecimiento de la función. En general, a cada punto de la superficie de error le corresponde un gradiente y la dirección en la que la pendiente de la función del error crece más rápido es la dirección del gradiente, mientras que la dirección en la que decrece más rápido es la dirección negativa del gradiente: E i i w j   (2.15) w j 37
  38. 38. Donde  es denominada la tasa de aprendizaje y controla el tamaño del cambio de los pesos en cada iteración. Para el cálculo de la derivada anterior se utiliza la regla de la cadena: aplicando la regla a la expresión 2.13 queda como sigue: E i S  X  i E i  w j S  X  w j i     yi  S  X i  xij Que, sustituyendo en 2.15 queda:   i w j   y i  S  X i  xij (2.16) La regla de actualización de los pesos definida en la Ecuación 2.16 es una regla supervisada basada en la corrección del error y conocida como “regla delta”. Finalmente podemos definir el algoritmo de aprendizaje para la Adalina: i. Aleatorizar valores para los pesos sinápticos. ii. Introducir un patrón de entrada X i . iii. Calcular la salida de la red S  X i  , compararla con la deseada y obtener la diferencia  y  S  X  . i i iv. Para todos los pesos multiplicar dicha diferencia por la entrada correspondiente y   ponderarla por  , i w j   yi  S  X i  xij . v. Modificar el peso restando el valor antiguo la cantidad obtenida en 4. vi. Si no se ha cumplido algún criterio de convergencia, regresar a 2, si se han acabado los patrones introducir nuevamente los patrones. Si se ha cumplido el criterio de convergencia terminar el proceso de aprendizaje 38
  39. 39. Después de haber definido la regla de aprendizaje para la adaline podemos ver las diferencias entre el perceptrón y la adaline:  Mientras que en el perceptrón la salida es binaria, en el adaline es real.  En el aprendizaje de la adaline existe una medida de cuánto se ha equivocado la red, mientras que el perceptrón indica sólo si la red se ha equivocado o no.  En el adalina existe un valor  que indica la proporción que va afectar el gradiente. A continuación veremos un ejemplo para entender cómo funciona este modelo. Supongamos que queremos generar una red adalina que sea capaz de descodificar un número de binario a real, es claro que sería trivial obtener una red para este tipo de problema pues existe una solución analítica, pero es sólo para ejemplificar el algoritmo y dar a conocer algunos conceptos. Los patrones de aprendizaje podrían ser son los siguientes: Binario Decimal x1i i x2 i x3 yi 0 0 1 1 0 1 0 2 0 1 1 3 1 0 0 4 1 0 1 5 1 1 0 6 1 1 1 7 En este caso la neurona tendrá tres entradas que serán binarias y una salida real como se muestra en la figura 2.11. 39
  40. 40. El primer paso para llevar a cabo el algoritmo es aleatorizar los valores para los pesos y elegir un valor para la tasa de aprendizaje en este caso utilizaremos   0, 6 . Los pesos aleatorizados son: w1 w2 w3  0,5 0,6 0,3 0,2 Introducimos el primer patrón y calculamos su salida: Patrón 1: 1 x1 x1 2 1 x3 y1 0 0 1 1 Salida de la red Diferencia S  X 1   0,5  0  0,6  0  0,3 1  0,2 1  0,5 ( S  X 1   y1 )  - 0,5 La salida de la red no es igual a la que esperamos, entonces debemos aplicar el aprendizaje, según hemos definido anteriormente: Pesos w1 w2 w3  Antes 0,5 0,6 0,3 0,2  w j  0.6 S  X 1   y1 x1j  0 0 -0,3 -0,3 Después 0,5 0,6 0 -0,1 Luego introducimos el segundo patrón y así sucesivamente hasta el patrón 7, donde se obtiene: Patrón 7: x17 7 x2 7 x3 yi 1 1 1 7 40
  41. 41. Salida de la red Diferencia X 7 W  0.5 T ( y 7  S  X 7 )  -0,0131 La salida de la red no es igual a la que esperamos, entonces aquí debemos aplicar el aprendizaje, según hemos definido anteriormente: Pesos w1 w2 w3  Antes 2,0780 1,5717 0,6134 2,7500  w j  0.6 y 7  S  X 7  x7 j  -0,0078 -0,0078 -0,0078 -0,0078 Después 2,0701 1,5639 0,6056 2,7421 Cuando hemos introducido todos los patrones de aprendizaje, se dice que hemos completado una Iteración o Ciclo. No obstante, los pesos todavía no ajustan correctamente, esto ocurre porque la regla delta actualiza los peso basándose en los valores actuales “olvidando” los anteriores valores, las redes que actualizan los pesos de esta manera se les denomina Redes Estáticas. Intuitivamente notamos que después de haber procesado los siete patrones los pesos actualizados nos están entregando un mínimo local de la función de error, para encontrar un mínimo global debemos realizar un gran número de iteraciones hasta que los pesos sean capaces de entregar las salidas correctas. La siguiente tabla nos entrega el detalle de las siguientes iteraciones: Iteración Pesos Error por Patrón Nº w1 w2 w3  1 2 3 4 5 6 7 1 2,0701 1,5639 0,6056 2,7421 0,5000 0,9000 0,2200 2,3280 -0,1976 0,4995 -0,0131 2 2,4409 2,2439 1,3621 2,3553 -2,3477 -0,8974 1,9825 -0,0547 0,6245 -0,9534 1,0016 3 2,9480 2,5540 1,3857 1,5280 -2,7174 -0,9687 1,4621 0,5382 0,2835 -0,9877 1,0112 4 3,3838 2,5651 1,3061 0,8249 -1,9137 -0,9338 0,9493 0,6629 0,0604 -0,7683 0,7714 5 3,7018 2,4447 1,2016 0,3463 -1,1310 -0,7114 0,5148 0,5879 -0,0539 -0,5000 0,4960 6 3,9000 2,2955 1,1130 0,0702 -0,5479 -0,4623 0,2196 0,4263 -0,0899 -0,2765 0,2705 7 4,0045 2,1676 1,0510 -0,0599 -0,1832 -0,2558 0,0481 0,2643 -0,0848 -0,1220 0,1165 8 4,0467 2,0771 1,0139 -0,1004 0,0089 -0,1131 -0,0337 0,1381 -0,0637 -0,0307 0,0267 9 4,0538 2,0224 0,9954 -0,0947 0,0865 -0,0287 -0,0600 0,0550 -0,0407 0,0140 -0,0165 41
  42. 42. 10 4,0446 1,9947 0,9888 -0,0711 0,0993 0,0127 -0,0575 0,0082 -0,0221 0,0294 -0,0307 11 4,0309 1,9845 0,9886 -0,0454 0,0823 0,0270 -0,0436 -0,0130 -0,0094 0,0291 -0,0297 12 4,0183 1,9837 0,9910 -0,0246 0,0569 0,0269 -0,0281 -0,0188 -0,0021 0,0225 -0,0226 13 4,0090 1,9870 0,9941 -0,0105 0,0336 0,0208 -0,0154 -0,0171 0,0014 0,0148 -0,0146 14 4,0031 1,9913 0,9966 -0,0023 0,0165 0,0136 -0,0067 -0,0125 0,0026 0,0082 -0,0081 15 4,0000 1,9950 0,9985 0,0016 0,0057 0,0076 -0,0016 -0,0078 0,0025 0,0037 -0,0035 16 3,9987 1,9977 0,9996 0,0029 -0,0001 0,0034 0,0009 -0,0041 0,0019 0,0010 -0,0009 17 3,9985 1,9993 1,0001 0,0027 -0,0024 0,0009 0,0017 -0,0017 0,0012 -0,0004 0,0004 18 3,9987 2,0001 1,0003 0,0021 -0,0029 -0,0003 0,0017 -0,0003 0,0007 -0,0008 0,0009 19 3,9991 2,0004 1,0003 0,0013 -0,0024 -0,0008 0,0013 0,0004 0,0003 -0,0008 0,0009 20 3,9995 2,0005 1,0003 0,0007 -0,0017 -0,0008 0,0008 0,0005 0,0001 -0,0007 0,0007 21 3,9997 2,0004 1,0002 0,0003 -0,0010 -0,0006 0,0005 0,0005 0,0000 -0,0004 0,0004 22 3,9999 2,0003 1,0001 0,0001 -0,0005 -0,0004 0,0002 0,0004 -0,0001 -0,0002 0,0002 23 4,0000 2,0001 1,0000 0,0000 -0,0002 -0,0002 0,0001 0,0002 -0,0001 -0,0001 0,0001 24 4,0000 2,0001 1,0000 -0,0001 0,0000 -0,0001 0,0000 0,0001 -0,0001 0,0000 0,0000 25 4,0000 2,0000 1,0000 -0,0001 0,0001 0,0000 0,0000 0,0001 0,0000 0,0000 0,0000 26 4,0000 2,0000 1,0000 -0,0001 0,0001 0,0000 0,0000 0,0000 0,0000 0,0000 0,0000 27 4,0000 2,0000 1,0000 0,0000 0,0001 0,0000 0,0000 0,0000 0,0000 0,0000 0,0000 28 4,0000 2,0000 1,0000 0,0000 0,0000 0,0000 0,0000 0,0000 0,0000 0,0000 0,0000 29 4,0000 2,0000 1,0000 0,0000 0,0000 0,0000 0,0000 0,0000 0,0000 0,0000 0,0000 Se aprecia en la tabla que al correr los ciclos los errores van disminuyendo lentamente, hasta que en la iteración 28 la red no entrega errores en su respuesta, finalmente, la red ha sido capaz de aprender. Y el valor de los pesos para que la red entregue todas sus respuestas correctamente es: w1 w2 w3  4 2 1 0 El número de iteraciones que tomará la red para converger es relativo y depende en gran manera de la tasa de aprendizaje  . Para valores altos de  la red disminuirá rápidamente el error pero demorará el ajuste final de los pesos será más lento, por otro lado valores pequeños de  producirá el efecto contrario. Un método bastante efectivo es variar la tasa de aprendizaje  dándole el valor , donde t corresponde al número de iteración, de esta forma el ajuste final de t los pesos será más rápido. A principio de la década de 1960 estos modelos llamaban la atención de los investigadores de inteligencia artificial e iniciaba el desarrollo de investigaciones sobre 42
  43. 43. estos temas, sin embargo, en 1969 dos investigadores de la universidad de Princeton, Minsky y Papert publican “Perceptrón: An Introduccion ta computacional geometry” donde ponen a prueba el perceptrón y la adalina dejando de manifiesto que no eran capaces de resolver problemas relativamente simples. El motivo por el que estos modelos no entregan buenos resultados en algunos problemas es sencillo: en problemas de clasificación la Adalina solo será capaz de clasificar correctamente si los conjuntos son linealmente separables, ya que, al igual que el perceptrón crea un hiperplano discriminante. Uno de los ejemplos más estudiados en la literatura en crear una red que sea capaz de codificar la función lógica “O exclusivo”, cómo sabemos, la tabla de verdad para esta función lógica es: A B “O ex” 0 0 1 0 1 0 1 0 0 1 1 1 Y si llevamos a la gráfica esta función, podemos apreciar que es imposible obtener una recta que sea capaz de discriminar entre estas dos categorías. Una solución a este problema podría ser un elipsoide o dos rectas. Figura 2.12. 43
  44. 44. Sin embargo, estos tipos de solución son imposibles de generar con un perceptrón o con la Adalina. Una posible solución, propuesta por los mismos Minsky y Papert, fue concatenar tres perceptrónes A, B, C, como en la Figura 2.13. Podemos dar distintos valores a los pesos y será capaz de obtener soluciones correctas, aún cuando el problema no es linealmente separable. La Figura 2.13 muestra valores para los pesos sinápticos de los tres perceptrónes concatenados, que hemos marcado de amarillo, cada uno de estos perceptrónes actúan en conjunto para generar algún tipo de solución en conjunto. En particular, los pesos dados en la figura 2.14 dan solución a la función O EX, debemos utilizar con la siguiente tabla de valores para que las salidas sean coherentes con las que obtenemos de un perceptrón, Ecuación 2.3. 44
  45. 45. A B “O ex” -1 -1 1 -1 1 -1 1 -1 -1 1 1 1 Supongamos que introducimos el primer valor (1, 1) en la red de la Figura 2.15. El cálculo que realiza el perceptrón A es, (1)(1)  (1)1  2  2 y como este resultado es mayor que 0 la salida del perceptrón A es 1, en el caso del percetron B el cálculo es (1)1  (1)(1)  2  2 , que también es mayor que 0 por lo que la salida del perceptrón B es 1. Por último, la salida final es el la salida del perceptrón C, que utiliza como valores de entrada las salidas de A y B, obteniendo 0 1  0 1  1  1 que también es mayor que cero por lo que la salida final de esta concatenación de perceptrónes es 1, o sea, coincide con la salida deseada. El lector puede comprobar que, para los otros tres patrones de entrada, esta concatenación también entrega una respuesta correcta. La capa intermedia realiza una proyección de los patrones de entrada en un cubo cuya dimensión viene dada por el número de unidades de la capa oculta. Se trata de realizar una transformacion en la que los patrones de entrada resulten separables linealmente de manera que la unidad de salida pueda realizar una clasificación correcta. Figura 2.10. Nuevamente, el problema que no supieron solucionar los investigadores de la época fue cómo realizar el cálculo para los valores de tantos pesos, en primer lugar el teorema de convergencia 45
  46. 46. del perceptrón fue desarrollado sólo para una capa y en segundo lugar el algoritmo de la Adalina permitía calcular el error de la capa de salida, pero no podía saber cuál es el error que cometía la capa intermedia, por lo que no podía encontrar los valores para los pesos ocultos. El resultado de todas estas dificultades, sumadas a las críticas de Minsky y Papert, quienes argumentaban que no existía una forma automática de encontrar el valor de los pesos y que buscarlos de forma analítica no valía la pena, dieron por estancado el estudio de redes neuronales por 20 años. 46
  47. 47. Capítulo 3: El perceptrón multicapas y el algoritmo de retropropagación de los errores 47
  48. 48. 3.1 El perceptrón multicapa El perceptrón multicapa (PMC) es una generalización de la Adaline y del perceptrón simple, nacida a principio de la década los años ochenta. Es la red neuronal más conocida, utilizada y estudiada en el análisis de datos, y sus aplicaciones son casi ilimitadas. La popularidad del PMC tiene varias razones, algunas son: i. Es catalogada como una técnica no paramétrica, evitando así el cumplimiento de algunos supuestos. ii. Su adaptabilidad le permite procesar cualquier tipo de variables. iii. Funciona como un aproximador universal de funciones. El PMC es una red bastante compleja y aplicarla de una forma inteligente requiere conocer su funcionamiento y sus limitaciones, es lo que haremos en esta sección. La arquitectura de un perceptrón multicapa con p1 variables de entrada, C  2 capas ocultas cada una de pc neuronas (con c  2,..., C 1 ), y donde todas las conexiones son unidireccionales como se muestra en la figura 3.1. 48
  49. 49. 3.2 Aprendizaje en un PMC A continuación estableceremos la notación que utilizaremos para entender cómo procesa la información el perceptrón Multicapa, esta notación también será utilizada en los capítulos posteriores. Sea un perceptrón multicapa como el de la figura 3.1. Sean W c   wc  la matriz de pesos jk asociada a las conexiones de la capa c a la capa c  1 , para c  1,..., C  1 , donde wc representa jk la conexión de la neurona j de la capa c a la neurona k de la capa c  1 , y sea U c   uk  el c c vector de umbrales de la capa c, donde uk representa el valor umbral de la capa c , para c  2,..., C . Se denotará como ak a la salida o (activación) de la neurona k de la capa c . c   Al introducir un patrón de entrada X  x1 ,..., x p1 , las neuronas de la primera capa se encargan de transmitir las variables de entrada recibidas desde el exterior, entonces podemos escribir: a1  xk , para k  1,..., p1 k (3.1) A continuación las neuronas de la capa oculta c de la red procesan la información recibida aplicando la función de activación f a la suma de los productos de las activaciones que reciben por sus pesos correspondientes, es decir:  pc1 c 1 c 1 c  a  f   w jk a j  uk  , para k  1, 2,..., pc 1 c k (3.2)  j 1  C Finalmente la salida de la red, es la activación de las capas de salida ak , al igual que las salidas de las capas ocultas la activación de estas neuronas viene dada por la función de activación aplicada a la suma ponderada de los productos de las entradas por sus correspondientes pesos:  pC1 C  sk  ak  f   wC 1a C 1  uk  C jk j (3.3)  j 1  49
  50. 50.   Para i  1, 2,..., pC , donde S  X   s1 ,..., s pC , es el vector de salida de la red para el vector X . La Figura 3.2 muestra la conexión de una neurona oculta. Las funciones de activación ya fueron descritas anteriormente. Pero en el caso del perceptrón multicapa las más utilizadas son la función sigmoidal, más conocida como logística. 1 f1  x   , donde x [0,1] (3.4) 1  e x y la función tangente hiperbólica 1  e x f2  x   , donde x [1,1] (3.5) 1  e x Aunque ambas están relacionadas, pues: f 2  x   2 f1  x   1 (3.6) 50
  51. 51. Por lo que la elección de una o de otra se elige únicamente en función del recorrido que interese. Generalmente, la función de activación es común en todas las neuronas de una misma capa, sin embargo, en ocasiones la función de activación de salida es diferente a las demás, y casi siempre se utiliza la función identidad. 3.2.1 El Algoritmo de Retropropagación El aprendizaje del perceptrón es una generalización de la regla delta utilizada en la Adaline y se denomina “Regla delta Generalizada”. Cuando aplicábamos la regla delta en la Adaline solo teníamos una capa de salida, introducíamos un patrón a la red y podíamos calcular inmediatamente el error que cometía y así minimizarlo directamente a través del método del gradiente descendiente. En el perceptrón multicapa se utiliza la misma idea, pero como se desconoce el error que comete la salida de las neuronas ocultas, se le atribuye a cada neurona oculta una parte del error cometido por la salida de la red. Basándose en el valor del error recibido, se reajustan los pesos de cada neurona. De esta forma el error cometido por la salida de la red se propaga hacia atrás desde la salida de la red hasta la primera capa oculta, es por eso que este procedimiento es también conocido como Algoritmo de retropropagacion de los errores (Backpropagation). A continuación mostraremos esta idea formalmente. Al igual que en los modelos anteriores se dispone de un conjunto de patrones de entrenamiento, compuesto por un vector de entrada y su salida asociada: A   X (1), Y (1)  ,  X (2), Y (2)  ,...,  X (n), Y (n)  , donde  X (i)  x1 (i),  , x p1 (i)  P1 e  Y (i)  y1 (i),  , y pC (i)  PC Utilizamos como función de coste el error cuadrático medio para el i esimo patrón de entrada, el cual es definido como: 2 1  PC  E  i      yk  i   sk  i    (3.7) 2  k 1  51
  52. 52.   , donde S  X (i)   s1 ,..., s pC es la salida de la red. 3.2.1.1 Cálculo de los pesos de la penúltima capa (capa C  1) a la capa de salida (capa C ) Para calcular los pesos sinápticos de la capa oculta C  1 a la capa C al introducir el i -esimo patrón de entrada, es decir wC 1 (i) , utilizaremos el método del gradiente descendiente que hemos jk explicado anteriormente, entonces los pesos se modifican siguiendo la dirección negativa del gradiente del error: E (i) wC 1  i   wC 1  i  1   (3.8) wC 1 jk jk jk , donde  es la tasa de aprendizaje. Por tanto, para la actualización de dicho parámetro es necesario evaluar la derivada del error en dicho punto E  i  , de acuerdo con la expresión del error (Ecuación 3.7) y teniendo en cuenta, por una lado que las salidas deseadas Y  i  son constantes que no dependen del peso y, por otro lado, que el peso wC 1 sólo afecta a la neurona jk de salida k , sk (i) , se obtiene que: E (i) s  i  C 1    yk  i   sk  i   k C 1 (3.9) w jk w jk Ahora debemos calcular la derivada de la neurona de salida sk  i  respecto al peso wC 1 . La salida jk de la red es la función de activación f aplicada a la suma de todas las entradas por sus pesos, como se mostró en la Ecuación 2.15:  pC1 C  sk  ak  f   wC 1aC 1  uk  c jk j (3.10)  j 1  52
  53. 53. Aplicando la regla de la cadena para derivar la composición de dos funciones y teniendo en cuenta que, de todos los términos de la sumatoria, el único en el que interviene el peso wC 1 es jk wC 1aC 1 , y por lo tanto es el único valor cuya derivada es distinta de cero. De esta forma jk j obtenemos: sk  i   pC1 C  C 1  f    wC 1aC 1  uk  aC 1 (i ) (3.11) w jk jk j j  j 1  Se define el termino  , asociado a la neurona k de la capa de salida (capa C ) y al patrón i esimo,  kC (i) , del siguiente modo:  pC1   kC (i)    yk  i   sk  i   f    wC 1aC 1  uk  jk j C (3.12)  j 1  Reemplazando esta expresión en la Ecuación (3.9) el valor de la derivada de la neurona de salida sk  i  dado por la Ecuación (3.11), se obtiene que: E (i)   kC (i)aC 1 (i) (3.13) wC 1 j jk Finalmente, reemplazando la derivada del error E  i  respecto del peso wC 1 obtenida en la jk Ecuación (3.13) en la Ecuación (3.8), se obtiene la ley iterativa para modificar dicho peso. La cual toma la forma: wC 1  i   wC 1  i  1  kC (i)aC 1 (i) jk jk j (3.14) Para j  1,..., pC 1 e k  1,..., pC . Esta ley de aprendizaje puede ser extendida a los valores umbrales de la capa de salida: 53
  54. 54. uk  i   uk  i  1  kC (i) C C (3.15) Para k  1,..., pC . 3.2.1.2 Cálculo de los pesos de las capas ocultas c , para c  1,..., C  2 . Para explicar el cálculo de los pesos sinápticos de estas capas de la forma más simple posible, utilizaremos el caso particular de la capa C  2 a la capa C  1. Sea whj  2 el peso de la conexión la C neurona h de la capa C  2 a la neurona i de la capa C  1. Siguiendo el método de descenso del gradiente, la ley para actualizar dicho peso viene dada por: E (i) whj 2  i   whj 2  i  1   C C (3.16) whj 2 C en este caso y a diferencia del anterior (pesos hacia la capa de salida), el peso whj  2 influye en C todas las salidas de la red, por lo que la derivada del error E  i  , Ecuación (3.7), respecto de dicho peso viene dada por la suma de las derivadas para cada una de las salidas de la red, es decir: E (i) pC  s  i       yk  i   sk  i   k C 2  (3.17) whj 2 C  i 1  whj   sk  i  Para calcular la derivada de la salida sk  i  respecto del peso whk2 , es decir C , es necesario whj  2 C tener en cuenta que este peso influye en la activación de la neurona influye en la activación de la neurona j en la capa C  1, a C 1 , y que el resto de las neuronas en esta capa no dependen de j dicho peso. Por lo tanto, y de acuerdo con la Ecuación (3.3) se tiene que: sk  i   pc1 C  aC 1 C 2  f    wC 1aC 1  uk  wC 1 C 2 j (3.18) whj whj jk j jk  j 1  54
  55. 55. Sustituyendo este valor en la ecuación y de acuerdo a la definición de  en el punto anterior, se obtiene que: pC  E (i)  pc1 C 1 C 1 C  C 1 aC 1  pc1 C C 1 aC 1     yk  i   sk  i   f    w jk a j  uk  w jk   k jk wC 2 C 2  j   w j (3.19) C 2 whj  whj  j 1 i 1   j 1  hj Para obtener la ley de aprendizaje para el peso whj  2 , solo falta derivar la activación de la neurona C j de la capa oculta C  1, a C 1 , respecto de dicho peso. Aplicando la regla de la cadena a la j ecuación (3.3), dicha derivada es: aC 1  pc2 C 2 C 2  C j  f    whj ah  u C 1  ah 2  i  (3.20) whj 2 C j  h 1  Se define el valor de  para la neurona de la capa oculta C-1,  C 1  i  , como: j  PC2  PC  C 1  i   f    whj 2 ah 2  u C 1    C  i  wC 2 j C C j j jk (3.21)  h 1  i 1 Sustituyendo (3.20) en la ecuación (3.19) y de acuerdo con el valor de  C 1 definido j anteriormente, se obtiene que: E (i) C 1   C 1 (i)ah 2 (i) C (3.22) whj j De esta forma la ley de aprendizaje para modificar el peso whj  2 viene dada por: C whj 2  i   whj 2  i  1   C 1  i  ah 2  i  C C j C (3.23) Para h  1, 2,..., P 2 y C j  1, 2,..., PC 1 55

×