Introducción a las Redes Neuronales Artificiales. Última modificación: 2018/9/24. Contenido I. Introducción. Modelo de Neurona Biológica. ................................................... 3 II. Redes Neuronales Artificiales. Modelo de Neurona Artificial. ............................. 4 2.1 Topologías de las Redes Neuronales Artificiales. ......................................... 6 2.2 Aplicaciones de las Redes Neuronales Artificiales. ....................................... 7 III. Aprendizaje Redes Neuronales Artificiales...................................................... 8 3.1 Conocimiento de una Red Neuronal Artificial. Tipos de aprendizaje. .............. 8 IV. Perceptrón Simple. ................................................................................... 10 4.1 Perceptrón Simple. Arquitectura ...............................................................10 4.2 Perceptrón Simple. Cálculo de la respuesta - o - de la red: ..........................10 4.3 Algoritmo de Entrenamiento del Perceptrón. ..............................................11 4.4 Poder de representación del perceptrón. Limitantes. ...................................13 V. Red Adaline ............................................................................................. 14 5.1 Funciones de activación. ..........................................................................14 5.2 Regla Delta (Delta Rule, Widrow-Hoff Rule)................................................15 5.2.1 Regla Delta. Variante on-line. .............................................................15 5.2.2 Regla Delta. Variante Batch. ...............................................................16 VI. Perceptrón Multicapa. ............................................................................... 17 .................................................................................................................17 6.1 Backpropagation.....................................................................................18 6.1.1 Backpropagation. Variante Batch. .......................................................18 6.1.2 Backpropagation Variante On-line. ..................................................19 6.1.3 Otras consideraciones sobre el entrenamiento de redes neuronales. ....21 Estimados del Desempeño. Train-Test, Crossvalidation .....................................22 VII. Mapas Auto organizados de Kohonen. ......................................................... 23 7.1 Algoritmo de Clustering Kohonen-SOM. .....................................................24 VIII. Problemas Redes Neuronales Artificiales. .............................................. 26 IX. Soluciones Problemas Redes Neuronales Artificiales. ..................................... 31 Bibliografía .................................................................................................... 32 1 2 I. Introducción. Modelo de Neurona Biológica. Que es una Red de Neuronas Artificiales? • ¿? • Pues eso, una Red de Neuronas Artificiales. • Un invento de la Inteligencia Artificial que sirve para un montón de cosas. Sin dudas pocos nombres en la Inteligencia Artificial son tan sugerentes y tan famosos como este, rápidamente hace pensar al menos en nuestras pequeñas neuronas, y ya que estas entran en el tema pues ¿que tienen de particular nuestras neuronas? Al contrario de lo que se pensaba hace no tanto tiempo – gracias a los estudios de Santiago Ramón y Cajal1 - hoy todo el mundo sabe que nuestro Sistema Nervioso Central está formado por una densa red de sencillas unidades – las neuronasconectadas entre sí. Nos asombramos también al ver las maravillas que puede hacer nuestro cerebro, aprender, memorizar y tener emociones, por solo citar algunos ejemplos. Sabemos también – sin muchos detalles rigurosos - que las neuronas están formadas por un cuerpo o soma, que tienen varias prolongaciones llamadas dendritas y una mayor llamada axón al que se conectan las dendritas de otras neuronas mediante las sinapsis (Figura 1). Figura 1: Neurona Biológica. 1 Santiago Ramon y Cajal (1852-1934) 3 A grandes rasgos, el funcionamiento de las neuronas puede describirse como sigue: 1. Se recibe un conjunto de estímulos recepcionados a través de las dendritas y el propio cuerpo, de estos unos tienden excitar a la neurona mientras que otros tienen una naturaleza inhibidora. 2. A partir de estos estímulos y del estado interno de la neurona esta produce a su vez un impulso que se transmite por su axón hasta otras neuronas. Si comparamos ahora el tiempo que toma a una neurona en cambiar su estado -10−3 𝑠 - y el que demora una computadora - 10−10 𝑠– puede verse cuan lentas son las primeras, sin embargo, podemos realizar operaciones extremadamente complejas de manera extraordinariamente rápida. Por ejemplo una persona necesita solamente 10−1 𝑠 para reconocer el rostro de su madre.(Mitchel 1997). Esta observación condujo a la idea de que la gran habilidad que poseen los sistemas biológicos para el procesamiento de la información, está dada por el alto nivel de paralelismo operando sobre representaciones distribuidas en un gran número de neuronas. II. Redes Neuronales Artificiales. Modelo de Neurona Artificial. Esta es la característica que se ha intentado imitar al desarrollar el modelo de las Redes Artificiales de Neuronas, tenemos entonces pues que una Red Neuronal Artificial puede definirse como: Modelo de computación constituido por unidades de procesamiento (Neuronas Artificiales) relativamente simples las cuales interactúan entre sí a través de interconexiones masivas. Donde evidentemente el papel protagónico lo tienen las Neuronas Artificiales, pero antes de establecer un modelo para estas, es necesario examinar más de cerca la estructura que conecta las dendritas con los axones en la neurona biológica, es decir las sinapsis, Figura 2. Sin conocer los roles que cumple esta sería lógico pensar que si dos impulsos P y P' son iguales entonces deben producir idénticos estímulos E y E' sin embargo se ha comprobado que el valor de estos no depende solamente de los impulsos sino también de una característica de las sinapsis llamada Eficiencia Sináptica la cual hace que el impulso recibido desde una neurona transmisora repercuta más o menos significativamente en la activación de la neurona receptora. Ya con esto nos podemos formar una idea sobre las neuronas artificiales, Figura 3. Figura 2: sinapsis. Modelo simplificado de la Estas deben tener una estructura que de alguna manera pueda recibir los impulsos provenientes de otras neuronas – agrupémoslos en un vector X - deben además tener de alguna manera representada la Eficiencia Sináptica de la sinapsis asociada a cada 4 una de estas entradas – de manera similar a las entradas agrupémoslas en un vector W de manera que a la entrada X i corresponda la eficiencia sináptica (peso sináptico o simplemente peso) Wi – es necesario también representar el estado interno de la neurona, para esto puede utilizarse una variable, llamémosle y finalmente es necesario definir alguna manera mediante la cual a partir de X y W se calcule la respuesta O de la neurona, usualmente para esto se procede de la siguiente forma, se computa: • Act= w x i 1 • • i i y se calcula O=F(Act) donde a F(Act) se le llama función de activación, en este caso si Act 0 1 f ( Act ) 1 eoc por w0 , considerándose como el peso sináptico correspondiente a una entrada x0 1 cuyo valor permanecerá constante. Para simplificar la notación, se denotará Este es un modelo bastante similar al propuesto por Warren S. McCulloch and Walter Pitts en el trabajo “A logical calculus of the ideas immanent in nervous activity” publicado en 1943, donde ya se describe un modelo de Neurona Artificial. Entonces definido un modelo de neurona artificial, podemos ver ejemplos de redes neuronales que permiten calcular algunas funciones sencillas Figura 3: Modelo de neurona artificial. Red para calcular la función lógica AND. 5 X1 W1=0.2 θ=0.7 W2=0.6 X2 X1 X2 AND Act F(Act) 1 1 1 0,1 1 1 -1 -1 -1,1 -1 -1 1 -1 -0,3 -1 -1 -1 -1 -1,5 -1 X1 X2 OR Act F(Act) 1 1 1 1,6 1 1 -1 1 0,6 1 -1 1 1 0,6 1 -1 -1 -1 -0,4 -1 Red para calcular la función lógica OR. X1 W1=0.5 θ =-0.6 X2 W2=0.5 Red para calcular la función lógica NOT. X1 W1=-1 θ =0 X1 Act F(Act) 1 -1 -1 -1 1 1 2.1 Topologías de las Redes Neuronales Artificiales. Como puede observarse estas redes son muy sencillas pero claro, es posible construir redes de muchas neuronas las cuales pueden interconectarse de disímiles maneras para dar lugar a diferentes configuraciones topológicas de la red. Atendiendo a este criterio las redes tienen diferentes clasificaciones: • Redes de alimentación hacia adelante (feedforward networks): Presentan una estructura de grafos acíclicos dirigidos, lo cual hace que las neuronas estén divididas en niveles 1..n, donde la respuesta del nivel 1 sirve de estímulo a las neuronas del nivel 2 – si existe – y así sucesivamente, esto 6 hace que una neurona no pueda recibir como estímulo la respuesta de una neurona situada en un nivel más alto. • Redes de retroalimentación o recurrentes(feedback/recurrent networks) Presentan una estructura de grafos cíclicos dirigidos, donde la salida de algunas entidades en el momento de tiempo t sirve de entrada en el momento t+1. En la Figura 4 se muestra la clasificación de las redes atendiendo a su topología así como algunos tipos de redes distintivas de cada modelo. Redes Neuronales Feedforward Perceptrón Simple Perceptrón Multicapa Recurrent/feedback Funciones de Base Radial Kohonen’s SOM Hopfield ART Figura 4: Algunos modelos de Redes Neuronales Artificiales clasificados de acuerdo a la topología. 2.2 Aplicaciones de las Redes Neuronales Artificiales. Los funciones calculadas por las redes mostradas son muy sencillas, naturalmente las Redes Neuronales Artificiales pueden ser empleadas para resolver problemas muy complejos como la aproximación de funciones, categorización de elementos, compresión de datos etc. Hay varios aspectos que las hacen muy atractivas entre estos: • Los ejemplos de entrenamiento pueden contener errores. Los métodos de aprendizaje empleando ANN son bastante robustos a errores en los datos de entrenamiento. • Rápida evaluación de la función aprendida: Aunque los tiempos de entrenamiento de las ANN son relativamente largos, la evaluación de la red en una nueva instancia es normalmente bastante rápido. Sin embargo, es necesario señalar que hay ciertas cuestiones que nunca deben olvidarse cuando se está pensando construir una Red de Neuronas Artificiales. • Largos tiempos de entrenamiento: Los algoritmos de entrenamiento de las redes normalmente requieren más tiempos que los empleados en otros modelos de aprendizaje. 7 • Mecanismo de caja negra: Usualmente el conocimiento representado por la red no es comprensible por los humanos, es decir que muchas veces no podemos formarnos una idea de la manera en que la red realiza su trabajo. III. Aprendizaje Redes Neuronales Artificiales. 3.1 Conocimiento de una Red Neuronal Artificial. Tipos de aprendizaje. Como puede verse, las redes mostradas en las Figura 5 y Figura 6 presentan una estructura muy similar, pues están formadas solamente por una neurona, la cual recibe como entrada un vector de dos elementos y sin embargo calculan funciones bien distintas. Un breve vistazo induce a pensar que en este caso, la diferencia en el funcionamiento – es decir del conocimiento- de las redes esta dado por el valor de los pesos asociados a cada uno de los elementos de la entrada, además del valor w0 . X1 X1 W1=0.2 W1=0.5 θ =0.7 θ =-0.6 X2 X2 W2=0.6 Figura 5: Red AND W2=0.5 Figura 6: Red OR Entonces nuestro problema es precisamente este, calcular los valores adecuados para los pesos de la red o más exactamente, encontrar una forma en que esta pueda buscarlos por sí sola. Es decir, debemos definir un algoritmo de aprendizaje. Detengámonos un momento para analizar – con permiso de los psicólogos – algunas de las maneras en que los seres humanos aprendemos. No obstante debe quedar claro que en la realidad el aprendizaje es un proceso mucho más complejo donde intervienen otros factores y donde se manejan representaciones de naturaleza muy distinta a la intensidad de los pesos sinápticos, incluso cuando se trata de aprender funciones tan simples como las mostradas. Veamos primeramente la manera en que aprendemos a identificar dígitos escritos a mano. La Figura 7 muestra varios ejemplos de números 1, al observarlos y conociendo que son números 1, de alguna manera aprendemos a identificar también los ejemplos mostrados en la Figura 8. Figura 7: Ejemplos de números 1. Figura 8: Números 1 no vistos durante el aprendizaje. En este caso, se ha partido de un conjunto de entrenamiento – ejemplos de la Figura 7– y además se conoce la respuesta acertada en cada caso, es decir que son: 8 Aprendizaje Supervisado: A la red se le muestra un conjunto de ejemplos de entrenamiento de la forma {<X(1),t(1)>,<X(2),t(2)>......<X(n),t(n)>} donde X(i) es la entrada de la red y t(i) es la respuesta que se espera obtenga la red – las imágenes de unos y la correcta clasificación como un 1 respectivamente en nuestro ejemplo. Supongamos ahora que tenemos un conjunto de figuras como las mostradas en la Figura 9 de alguna manera, si tener un conocimiento previo, podemos encontrar una asociación entre los elementos mostrados y agruparlos de forma similar a la mostrada en la Figura 10. En este caso hemos aprendido mediante lo que se llama Figura 9: Conjunto etiquetadas. de figuras no Figura 10: Figuras agrupadas de acuerdo a un determinado patrón. Aprendizaje no supervisado: En este caso a la red no se le suministran respuestas asociadas a cada ejemplo del conjunto de entrenamiento, que tiene la forma {<X(1)>,<X(2)>...<X(n)>}. La red hace una exploración de estructuras o interrelaciones en los ejemplos de entrenamiento y los agrupa atendiendo a alguno de estos criterios. Finalmente tratemos de mantener un bastón en equilibrio2, en este caso no conocemos exactamente en qué posición debemos colocarlo, sin embargo podemos formarnos un criterio de cuán bien lo hemos puesto, Figura 11. Figura 11: Distintas posiciones al tratar de mantener el bastón en equilibrio. Esta forma usualmente es llamada Aprendizaje por Reforzamiento: Esta es una variante de aprendizaje supervisado. En este caso se le suministra a la red un conjunto de entrenamiento de la forma {<X(1),c(1)>,<X(2),c(2)>......<X(n),c(n)>} donde c(i) es un índice del desempeño – llamado señal de reforzamiento - de la red. En nuestro ejemplo la red nos daría una posición para el bastón, y entonces como no conocemos la respuesta que esta debía darnos, se le indica que la posición dada es más o menos buena según el caso. 2 Luis Martí, Universidad de la Habana, 2004. 9 Estos modelos de aprendizaje pueden emplearse de manera combinada, dando lugar al llamado Aprendizaje Hibrido. La clasificación aquí descrita es de muy común empleo en materiales referentes a las redes neuronales, no obstante es frecuente encontrar algunas clasificaciones para los modelos de aprendizaje atendiendo a otros criterios, como por ejemplo el método matemático mediante el cual se desarrolla el aprendizaje. En este caso tenemos Aprendizaje basado en el error: En el aprendizaje supervisado, como es conocida la respuesta de la red y la que esta debería dar se puede definir alguna función que cuantifique el error cometido por la red de esta manera se pueden modificar los parámetros de la red de manera que se minimice este error. IV. Perceptrón Simple3. En los apartados anteriores, se definieron dos cuestiones muy importantes en el diseño de una red de neuronas artificiales, la arquitectura y el algoritmo de aprendizaje a emplear. En las siguientes secciones se estudiarán diferentes modelos de redes neuronales artificiales, comenzando por una de las más simples, el Perceptrón. 4.1 Perceptrón Simple. Arquitectura Red con una sola capa de unidades de procesamiento, Figura 12 … Figura 12: Arquitectura de un perceptrón simple formada por m unidades de procesamiento (perceptrones) 4.2 Perceptrón Simple. Cálculo de la respuesta - o - de la red: - j w [w1j , w2j ,..., wnj ] : Vector de pesos del j-ésimo Perceptrón. - CE= { x 1 , t 1 , x 2 , t 2 ,..., x D , t D }: Conjunto de entrenamiento, donde x d es un d vector de entrada (estímulo) de la red y t la salida esperada para este. 3 La definición tomada para el perceptrón se ha adoptado por ser ampliamente referida en la literatura sin embargo difiere en algunos aspectos a la dada por Rosenblatt, en “The perceptron: a probabilistic model for information storage and organization in the brain”. Psychological Review, 65, 386-408. 10 La salida de la cada neurona x d , t d se computa de acuerdo a para el ejemplo o jd f ( Act jd ) , donde: n Act jd wij xid j i 1 1 si f ( Act ) 1 Act 0 eoc. j : Umbral o estado interno de la neurona j-ésima. En este caso f ( y ) se conoce como indistintamente por: función signo (sgn) de y, heavyside function, o threshold function. Notar que: Para simplificar la notación, se prescindirá del símbolo vectores y, como antes, se denotará adicional xo 1 , luego j por j 0 asumiendo w en la notación de los que existe una entrada Act j i0 wij xi n 4.3 Algoritmo de Entrenamiento del Perceptrón. Los pesos de cada neurona se ajustan de acuerdo al siguiente procedimiento: Algoritmo de Entrenamiento del Perceptrón. Comienzo: j 1 - Inicializar los wi (peso correspondiente a la entrada i-ésima del j-ésimo perceptrón) aleatoriamente. 2 - Seleccionar un vector x d ,t d CE y calcular o jd . 3 – Cambiar los pesos de acuerdo a: wij wij wij donde wij (t jd o jd ) xid 4 – Volver al paso 2. Fin. : Factor de aprendizaje, controla la magnitud en que cambian los pesos en cada paso. o d t d no se hacen modificaciones en los pesos. Cuando es d necesario ajustar se tienen los siguientes casos de acuerdo a los signos de wij y x i Notar como cuando que ilustran la idea intuitiva de la expresión para modificar los pesos. 11 Caso 1: o d 1 y t d 1 . La respuesta debió ser 1, por lo que Act jd debería ser mayor que 0, esto se logra aumentando el valor de las componentes wi xi para así aumentar j d Act jd i 0 wij xid n . Signo de Signo d de x i Acción + + Aumentar el valor de + - La componente wij wij . Como ejercicio analice por qué wij xid será negativa, por lo tanto hay que disminuir (acercar a 0 por la derecha) el valor del peso para que esta influya menos en - + La componente Act jd . wij xid será negativa, por lo tanto hay que aumentar (acercar a 0 por la izquierda) el valor del peso para que esta influya menos en - - Act jd . Disminuir (alejar de 0 por la izquierda) el valor de wij . Como ejercicio analice por qué. Caso 2: d d o 1 y t 1 . La respuesta debió ser -1, por lo que Act dj debería ser menor que 0, esto se logra wij xi para así disminuir Act jd i 0 wij xid n disminuyendo el valor de las componentes . Signo de Signo d de x i Acción + + Disminuir el valor de + - La componente wi xi wij j wij d será negativa, por lo tanto hay que aumentar el valor del peso para hacerla más negativa aún. 12 - + La componente wi xi j d será negativa, por lo tanto hay que disminuir el valor del peso para hacerla más negativa aún. - - Aumentar (acercar a 0 por la izquierda) el valor de wij . 4.4 Poder de representación del perceptrón. Limitantes. En secciones anteriores se han mostrado perceptrones capaces de calcular las funciones lógicas AND y OR, estas son casos particulares de las llamadas funciones M de N, donde la respuesta es 1 si al menos M de las N entradas son 1. La función OR se corresponde con 1 de N mientras que el AND a la N de N. Sin embargo, determinadas funciones lógicas no pueden ser aprendidas por el perceptrón simple, inténtese encontrar la red capaz de representar la función XOR, representada en la Figura 13. 1 1 -1 X2 XOR 1 1 1 -1 2 1 -1 1 3 -1 1 1 4 -1 -1 -1 -1 1 B A X1 1 -1 1 Ej. 1 C Figura 13: Representación gráfica de las funciones AND, OR y XOR en A, B y C respectivamente, sombreados las entradas para las que la función es verdadera. Examinemos la expresión para la activación de un perceptrón con dos entradas X1 y X2: Act w0 x0 w1 x1 w2 x2 de la que si Act=0 se obtiene: como puede verse representa una recta determinada por los x2 wx w1 x1 0 0 que w2 w2 wi . De acuerdo a la función de activación resulta que el perceptrón calcula una recta, o hiperplano en un espacio n-dimensional, de modo que a cada lado solo se encuentran instancias de la misma clase, en la Figura 13 puede verse estas rectas para las funciones AND y OR. En cambio para el XOR, de la Error! Reference source not found., resulta que deben cumplirse las siguientes restricciones para que la red responda correctamente: Act 1 w0 w1 w2 0 (1) Act 3 w0 w1 w2 0 (3) 13 Act 2 w0 w1 w2 0 Act 4 w0 w1 w2 0 (2) 2w0 0 . dónde w0 0 . Sumando (2) y (3) se tiene que resulta que 2w0 0 de (4) Por otra parte, de la suma de (1) y (4) Luego, de (2) sumando w2 en ambos w1 w2 debe cumplirse. En (3), sumando w1 en ambos miembros se llega a que w2 w1 lo que contradice el resultado anterior. De lo anterior miembros se tiene que se desprende ambas inecuaciones son insatisfacibles simultáneamente o lo que es lo mismo, NO puede construirse un perceptrón simple capaz de aprender la función XOR. Se ha demostrado una importante limitación del perceptrón simple, que puede enunciarse como sigue: Importante: El perceptrón solo puede aprenderse conjuntos de entrenamiento cuyas clases sean linealmente separables, es decir, si existe un hiperplano capaz de dividir las instancias de modo que a cada lado solo se encuentren ejemplos pertenecientes a una misma clase. V. Red Adaline 5.1 Funciones de activación. - Función sigmoide o (logistic function): f ( Act j ) 1 1 exp( Act j ) Figura 14: Logistic Function. - Tangente hiperbólica: f ( Act ) c j 1 exp( Act j ) 1 exp( Act j ) 1 14 Figura 15: Tangente hiperbólica. 5.2 Regla Delta (Delta Rule, Widrow-Hoff Rule). La idea básica consiste en definir cierta expresión E ( w) para medir el error de la red que sea una función de los pesos, luego mediante descenso del gradiente se puede minimizar esta función. Ahora wij wij wij donde wij E . Sin perder wij generalidad, se expondrá asumiendo que la red está compuesta por una única neurona j. 5.2.1 Regla Delta. Variante on-line. Función de error: E ( w) d 1 2 (t jd o jd ) 2 , luego la derivada con respecto a cada peso queda: ▪ E jd E jd o jd Act jd donde: wij o jd Act jd wij ▪ E jd (t jd o jd ) o jd ▪ o jd f ( Act jd ) f ' ( Act jd ) jd jd Act Act ▪ Act jd xid j wi Luego: ▪ E jd (t jd o jd ) f ' ( Act jd ) xijd j wi Obtenida la expresión para cada elemento del vector gradiente, los pesos se ajustan según la expresión wij wij wij donde wij (t jd o jd ) f ' ( Act jd ) xid quedando el algoritmo: Regla Deltha Variante On-line 15 Comienzo: wij aleatoriamente. 1 - Inicializar 2 – Hasta que la condición de parada se satisfaga: 2.1 - Seleccionar un vector x d jd , t d CE y calcular o . 2.2 – Cambiar los pesos de acuerdo a: wij (t jd o jd ) f ' ( Act jd ) xid wij wij wij donde 2.3 – Volver al paso 2. Fin. 5.2.2 Regla Delta. Variante Batch. E ( w) Función de error: D 1 2 (t jd o jd ) 2 , luego la derivada con respecto a cada d 1 peso queda: ▪ E wij (t jd o jd ) 2 o jd Act jd donde: o jd Act jd wij d 1 D 1 2 ▪ (t jd o jd ) 2 2(t jd o jd ) jd o ▪ o jd f ( Act jd ) f ' ( Act jd ) jd jd Act Act ▪ Act jd xid wij Luego: D E (t jd o jd ) f ' ( Act jd ) xid j wi d 1 D De donde wij (t jd o jd ) f ' ( Act jd ) xid quedando el algoritmo: d 1 Regla Deltha Variante Batch Comienzo: 1 - Inicializar wij aleatoriamente. wij 0 2 – Hasta que la condición de parada se satisfaga: 16 2.1 – Para cada vector x - o - d , t d CE calcular: jd wijd (t jd o jd ) f ' ( Act jd ) xid - wi wi wi j j jd 2.1.1 – Cambiar los pesos de acuerdo a: wij wij wij 2.2 – Volver al paso 2. Fin VI. Perceptrón Multicapa. X1 X0 =1 P1 X2 XOR w01=-0.5 w03=1 w11=0.6 1 1 -1 w13=1 1 -1 1 w21=0.2 w23=-1 -1 1 1 -1 -1 -1 X 1 P3 w02=0.5 P2 w12=0.4 X 2 w12=0.8 X1 X2 P1 P2 1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 P1 P2 P3 1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 Figura 16: Perceptrones estructurados para aprender la función XOR 17 6.1 Backpropagation 6.1.1 Backpropagation. Variante Batch Backpropagation Variante Batch Comienzo: 1 - Inicializar w ij aleatoriamente. w ij 0 2 – Hasta que la condición de parada se satisfaga: 2.1 – Para cada vector x - o d , t d CE calcular: d - Para las neuronas de la capa de salida: od (t od o od ) f ' ( Act od ) - Para las neuronas de las capas ocultas: hd jd whj f ' ( Act hd ) C j 1 C : Cantidad de neuronas en la capa siguiente a la neurona h. whj : Peso con que la neurona j pondera el estímulo recibido desde la neurona h. - Hacer wij wij jd o id 2.2 Cambiar los pesos de acuerdo con: wij wij widj 2.3 – Volver al paso 2. Fin. Notar que o id es la salida de la i-ésima neurona, siendo a su vez un impulso transmitido a las neuronas de la siguiente capa. 18 6.1.2 Backpropagation Variante On-line. Backpropagation Variante On-line Comienzo: 1 - Inicializar w ij aleatoriamente. w ij 0 2 – Hasta que la condición de parada se satisfaga: 2.1 – Para cada vector x - o d , t d CE calcular: d - Para las neuronas de la capa de salida: o (t od o od ) f ' ( Act od ) - Para las neuronas de las capas ocultas: hd jd whj f ' ( Act hd ) C j 1 C : Cantidad de neuronas en la capa siguiente a la neurona h. whj : Peso con que la neurona j pondera el estímulo recibido desde la neurona h. 2.1.1– Cambiar los pesos de acuerdo con: wij wij widj donde widj jd o id 2.2 – Volver al paso 2. Fin. Notar que o id es la salida de la i-ésima neurona, siendo a su vez un impulso transmitido a las neuronas de la siguiente capa. 19 Ejemplo (Backpropagation on-line): w03=0.5 w01=0.1 X0= -1 w11=1 w21=-0.3 P1 X1 P2 X2 w02=-0.5 w12=-0.9 X1 w13=0.7 w23=1 P 3 X2 E-Fic 1 1 1,-1 1 -1 1,1 -1 1 1,1 -1 -1 1,-1 P 4 w04=0.6 w14=0.2 w24=-1 w12=0.1 Para simplificar los cálculos se asumirá que las neuronas utilizan la función identidad como función de activación cuya derivada es 1. 0.2 1- Tomar un ejemplo del conjunto de entrenamiento, por ejemplo el primero. 2- Calcular la salida de la red, para esto primero calcular la respuesta de P1 y P2 Para P1 Act P1 w0P1 x0 w1P1 x1 w2P1 x2 (0.1* 1) (1*1) (0.3 *1) 0.6 y o F ( Act ) 0.6 P1 P1 Para P2 Act P 2 w0P2 x0 w1P 2 x1 w2P 2 x2 (0.5 * 1) (0.9 *1) (0.1*1) 0.3 y o P2 F ( Act P2 ) 0.3 Para P3 Act P3 w0P3 x0 w1P3 o P1 w2P3 o P 2 (0.5 * 1) (0.7 * 0.6) (1 * 0.3) 0.4 y oP3 F ( Act P3 ) 0.4 Para P4 Act P 4 w0P4 x0 w1P 4 o P1 w2P 4 o P 2 (0.6 * 1) (0.2 * 0.6) (1* 0.3) 0.2 y o F ( Act ) 0.2 P4 P4 3- Calcular P3 y P4 P3 (t P3 o P3 ) f ' ( Act P3 ) (1 (0.4)) *1 0.6 P 4 (t P 4 o P 4 ) f ' ( Act P 4 ) (1 (0.2)) *1 1.2 20 Ejemplo (Backpropagation on-line) (cont.): 4- Calcular P1 y P2 P1 ( P3wPP13 P 4 wPP14 ) * f ' ( Act P1 ) ((0.6 * 0.7) (1.2 * 0.2)) *1 0.2 P 2 ( P3 wPP23 P 4 wPP24 ) * f ' ( Act P 2 ) ((0.6 *1) (1.2 * 1) *1 1.8 5- Cambiar los pesos w0P1 w0P1 w0P1 w0P1 P1 x0 0.1 0.2 * (0.2) * (1) 0.14 w1P1 w1P1 w1P1 w1P1 P1 x1 1 0.2 * (0.2) * (1) 0.96 w2P1 w2P1 w2P1 w2P1 P1 x2 0.3 0.2 * (0.2) * (1) 0.34 Ejercicio: Calcular la actualización de los restantes pesos en la red. 6.1.3 Otras consideraciones sobre el entrenamiento de redes neuronales. Profundización en aspectos esenciales del algoritmo de retro propagación y mejoras de sus capacidades para el entrenamiento supervisado de una red neuronal multicapa. Sobreajuste (overfit): Dado un espacio de hipótesis H (conjunto de pesos de la red en este caso), una hipótesis h H se dice que sobre ajusta los datos si existe una h' H tal que h tiene menor error sobre el conjunto de entrenamiento que h ' , pero h ' tiene un error menor que h sobre todo el conjunto de hipótesis alternativa instancias. Momento: (Velocidad de convergencia, mínimos locales.) Cualquiera de las siguientes definiciones: wijt (1 ) j x j wij ,t 1 wijt j x j wij ,t 1 (Fyfe, 1996) (Mitchel, 1997) Efectos: Mayores modificaciones a los pesos cuando en el paso t son en la misma dirección que en el paso t-1 y pequeñas variaciones sino. Aumenta velocidad de convergencia. Si la superficie de error tiene mesetas (regiones donde la derivada de E con respecto a los pesos es pequeña o 0) los pesos no cambiarán, el momento funciona como una especie de inercia en estas regiones. Permite sobrepasar pequeños mínimos locales. 21 En el caso de Backpropagation On-line, el momento provee una especie de promedio en las variaciones de los pesos. Es decir, como en cada paso los pesos se mueven de acuerdo al ejemplo presentado, con el momento se puede lograr que no se desplacen tanto en el nuevo sentido, sino que se recuerda la dirección y magnitud del cambio anterior, no alejando tan significativamente los pesos de donde fueron llevados por el ejemplo anterior. Weight Decay: (sobreajuste) wij (1 )wij (Fyfe,1996) No siempre conduce a un mejor desempeño (generalización) de la red, aunque generalmente sí. Como puede verse, los pesos que se modifican poco (no necesarios o que repercuten poco en la disminución del error) se hacen cada vez más pequeños. Mientras aquellos que son importantes no decaen indefinidamente. Los pesos no necesarios modelarían el ruido, ya que comienzan a variar cuando los otros han convergido a mínimos del error y solo entonces variaciones de estos conducen a pequeñas reducciones del error. Estimados del Desempeño. Train-Test, Crossvalidation Train-Test (criterio de parada, sobreajuste, estimar desempeño de un clasificador) De las D instancias disponibles se extrae una porción | 0 1 como conjunto de prueba (test set), las instancias restantes son utilizadas como conjunto de entrenamiento (training set). Usualmente 0.1 no obstante existen otros criterios para determinar el valor de . Un elemento muy importante a tener en cuenta el número de grados de libertad del clasificador, el número total de pesos en el caso de las Redes Neuronales Artificiales; cuanto mayor sea este número, menor debe ser . Sin embargo si es pequeño comparado con el número de ejemplos de entrenamiento entonces los resultados no son muy sensibles al valor de . Una vez seleccionados ambos conjuntos, se entrena el clasificador hasta el número de ciclos de entrenamiento que conduzca al menor error sobre el conjunto de prueba. Cuando se cuentan con suficientes datos, es conveniente crear tres conjuntos, Train-TestValidation; los dos primeros son empleados como ha sido explicado mientras que el conjunto Validation se utiliza para tener un estimado del desempeño del clasificador. Este último esquema persigue validar el clasificador con datos que no hayan intervenido en el entrenamiento, notar que el conjunto Test interviene indirectamente, al ser utilizado para determinar el número de ciclos de entrenamiento. Crossvalidation (criterio de parada, sobreajuste, estimar desempeño de un clasificador) En este caso el conjunto de entrenamiento con D instancias es dividido en K M porciones de tamaño K . Se entrenan K clasificadores empleando un esquema TrainTest donde Ki-esimo clasificador entrenado toma como conjunto de prueba la porción Ki y como conjunto de entrenamiento el conjunto formado por las porciones restantes. En cada experimento se determina el número de ciclos de entrenamiento 22 I Ki que conduce al menor error en el conjunto de prueba calculándose la media de estos valores. Finalmente se entrena una red con todos los datos por I Ki I Ki ciclos de entrenamiento. Importante: Tanto en el esquema Train-Test como en la Crossvalidation debe cuidarse que en el conjunto de prueba no se incluyan instancias también contenidas en el conjunto de entrenamiento. Este error tiene el nombre de “testing on the training set” VII. Mapas Auto organizados de Kohonen. A diferencia de las redes neuronales artificiales vistas en los epígrafes anteriores, los Mapas Auto Organizados de Kohonen (Kohonen SOMs), en su definición más simple, son un ejemplo de red que emplea Aprendizaje NO Supervisado. Su arquitectura la define como una red de una sola capa, compuesta por neuronas situadas en un espacio de dimensión arbitraria, aunque usualmente se utilizan solamente una o dos dimensiones como en el ejemplo de la Figura 17. Cada neurona es caracterizada por dos vectores, uno con las coordenadas en el espacio físico y otro con pesos asociados a cada una de las dimensiones de los vectores de entrada, cuatro en el ejemplo. Una de las ideas que define este modelo es que, al presentar un ejemplo X a la red una neurona es seleccionada como ganadora. Los pesos de esta son actualizados de modo que se parezcan más a X. Las restantes neuronas son modificadas, comúnmente de forma que también intenten asemejarse a X aunque cambian sus pesos en una cantidad menor, proporcional a una función de vecindad que describe que tan cerca está la neurona en cuestión de la ganadora, en el espacio físico. Debe notarse que cada instancia X mostrada a la red representa un punto en el espacio de pesos. Al tener cada neurona un vector de coordenadas en el espacio físico, puede decirse que a cada punto del espacio de pesos se le hace corresponder un punto en el espacio físico. Así, por ejemplo, si al presentar el ejemplo X=[1,2,1,5] a la red en la Figura 17 resultara como ganadora N3, estaríamos estableciendo un mapeo desde el punto X en el espacio de pesos al punto [1,3] en el espacio físico. Importante: El mapeo que establecen los Mapas Auto Organizados de Kohonen tiene la particularidad de preservar la topología, es llamado “topology preserving map”, lo que, entre otras propiedades significa que neuronas cercanas en el espacio físico deben responder a ejemplos cercanos en el espacio de los pesos. 23 Neuronas (espacio físico) [1,1] N1 [..,..] N4 N7 [1,2] [1,3] N2 N3 N5 N8 N6 N9 Vector de pesos (espacio de los pesos) de la neurona 3, situada en las coordenadas [1,3] del espacio físico. w13=0.6 w23=0.2 w33=-1 w43=-1 [3,3] X=[x1,x2,x3,x4] Figura 17: Ejemplo de la arquitectura de un Mapa Auto Organizado de Kohonen. 7.1 Algoritmo de Clustering Kohonen-SOM. Algoritmo de Entrenamiento y Clustering, Kohonen-SOMs Comienzo: S: Conjunto de instancias {X1,X2…Xp} N: Número de iteraciones a realizar.] /*Fase de entrenamiento*/ 1- Inicializar los pesos de cada neurona. 2- Seleccionar una instancia Xk en S de forma aleatoria y calcular D(Xk,Ni) para cada neurona i en la red. 3- Seleccionar la neurona ganadora i*, que es aquella que tiene menor D(Xk,Ni). 4- Actualizar los pesos para cada neurona en la red: wijt wijt 1 ( x j wijt 1 ) * f (d (i, i*)) donde es cualquiera de las funciones en la Figura 18 y d (i, i*) es la distancia euclidiana entre i e i*. f (d (i, i*)) 5- Volver al paso 2 si t < N /*Fase de identificación de clústeres*/ 6- Identificar los clústeres: cada instancia X es asignada al clúster definido por la neurona ganadora al presentar X a la red. Notar que: - La función de vecindad se refiere al espacio donde están situadas las neuronas, y no a las distancias en el espacio del vector de pesos. 24 - Debe prestarse atención al hecho de que muchas neuronas pueden no haber ganado nunca, por lo que no conforman ningún clúster. - Puede cambiarse la función de vecindad, dando lugar a diferentes comportamientos del algoritmo. Por ejemplo empleando la función del “Sombrero Mexicano” provoca que las neuronas más alejadas de la neurona ganadora muevan sus pesos en dirección contraria al vector de entrada. La Figura 18 ilustra algunas funciones de vecindad. Figura 18: Diferentes funciones de vecindad. Importante: La regla de actualización de los pesos depende de la métrica utilizada para determinar la neurona ganadora. Por ejemplo, si se emplea como criterio el Coeficiente de Correlación: entonces debe tomarse d ( x, n) w jn x j j 1 w w t jn t 1 jn ( x j ) * f (d (i, i*)) . En caso de no emplearse la regla de actualización adecuada pueden repercutir negativamente en el desempeño de la red. Nota: En caso de emplear el Coeficiente de Correlación, la neurona ganadora es la que tenga mayor valor. 25 VIII. Problemas Redes Neuronales Artificiales. Problema 1 Para los ejemplos de la tabla de verdad del operador lógico AND, tabule los pesos de un perceptrón simple con 0.5 luego de presentar los 4 ejemplos si inicialmente wo 0.3 , w1 0.2 , w2 0.1 . Problema 2 Empleando el algoritmo de entrenamiento del perceptrón ajuste los pesos de la red representada a continuación de modo que aprenda la función NAND. 𝑥1 𝑤1 = 1 𝑤0 = 1.5 a) Repita el ejercicio, pero esta vez para aprender la función NOR. 𝑥2 𝑤2 = 1 Problema 3 Explique la razón por la que el perceptrón simple con función de activación sgn(X) no puede aprender la función XOR. Problema 4 ¿Puede una red de dos perceptrones estructurados como se muestra en la figura aprender la función XOR? Justifique. Problema 5 Dado el conjunto de ejemplos que se muestra en la siguiente tabla. X1 X2 X3 Y 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 a) Sin emplear el algoritmo de entrenamiento del perceptrón, determine un vector de pesos adecuado para que un Perceptrón simple pueda responder correctamente cada ejemplo. 26 Problema 6 Dado el conjunto de ejemplos que se muestra en la siguiente tabla. X1 X2 X3 Y 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 1 a) Diga si es posible crear un Perceptrón simple capaz de aprenderse todos los ejemplos. Justifique su respuesta. Problema 7 En el lenguaje de su preferencia implemente un Perceptrón simple que permita especificar: - Tabla 1 E1,E2,E3,E4,Final El factor de aprendizaje que se utilizará durante el entrenamiento. 1,5,2,3,Aprobado - Un valor booleano decay que indicará si el factor de aprendizaje se disminuirá durante el entrenamiento. 4,2,3,4,Aprobado - La cantidad máxima de iteraciones. - La dirección de un fichero que contendrá un conjunto de entrenamiento en el siguiente formato: Att1, Att2, Att3, …, Attn, Clase Con estos datos, su programa deberá entrenar el perceptrón. Luego de esto, deberá permitir especificar la dirección de un archivo CSV con el mismo formato, pero en el que no se especificará la clase para cada instancia, esto se denotará mediante el valor “?” La aplicación deberá imprimir la clasificación que asigna el perceptrón a cada ejemplo. 6,2,6,6,Aprobado 7,2,6,6,Aprobado 6,4,1,5,Aprobado 6,5,2,4,Aprobado 3,7,3,4,Aprobado 3,5,4,7,Aprobado 5,4,2,7,Aprobado 5,5,3,4,Aprobado 2,1,1,3,Aprobado 4,4,3,5,Aprobado 5,6,4,4,Reprobado a) Utilice esta herramienta para entrenar perceptrones que modelen las funciones lógicas OR, AND, NAND y NOR 4,2,3,2,Reprobado b) En Estasia los estudiantes deben realizar cuatro evaluaciones semestrales en las que reciben calificaciones de 1 a 7 puntos. Posteriormente una supercomputadora decide si el estudiante ha aprobado o no utilizando un extraño procedimiento desconocido por todos. 7,6,6,3,Reprobado 3,4,6,1,Reprobado 4,5,6,4,Reprobado 4,1,6,1,Reprobado 6,4,5,3,Reprobado 2,4,3,1,Reprobado E1,E2,E3,E4,Final 27 Cinco estudiantes que cursan Inteligencia Artificial tienen las calificaciones que se dan a continuación, pero desconocen si aprobarán. Saberlo con antelación, al menos con cierta exactitud, les permitirá prepararse con más tiempo para las recalificaciones. 6,6,1,7, ? 3,7,2,6, Tabla 2? 1,6,7,4, ? 6,5,4,7, ? 1,5,6,1, ? Conocen además las calificaciones obtenidas por sus compañeros y si estos aprobaron o no (Tabla 1). Entrene un perceptrón a partir de los datos en la Tabla 1. Cuide realizar las siguientes sustituciones: Aprobado=1 y Reprobado=-1 b.1) Evalúe el perceptrón utilizando los propios datos de entrenamiento. ¿Qué % de las instancias clasifica correctamente? b.2) Utilice este perceptrón para asignar las calificaciones a los cinco estudiantes si sus notas fueron las que se indican en la Tabla 2. Problema 8 Investigadores de la UCSC han estudiado el efecto de campañas de sensibilización sobre donaciones de sangre atendiendo a la importancia que estas tienen. Para esto han recopilado información sobre donantes durante una campaña realizada en la ciudad de Concepción según se muestra en la Tabla 2. Durante el estudio se ha observado que algunos donantes solo participan si los visita el laboratorio móvil pues por diversas razones no desean ir al hospital. En esta ocasión se realizará una campaña similar en Cañete pero dado que los recursos son limitados, se desea visitar personalmente a aquellos donantes que se presume no lo harán a menos que los visten, sin embargo no se conoce con exactitud quienes serán. Su tarea es ayudarlos a predecir quienes deben ser visitados utilizando un perceptrón simple y la información recopilada en Concepción, algunos de cuyos ejemplos se muestran en la Tabla 3 Tabla 2 Datos recopilados Variable Descripción R Meses desde la última donación F Número total de donaciones realizadas Total de decilitros donados histórico Meses desde la primera donación Indica si ha donado, representado por 1, durante el mes de la campaña M T D a) Diseñe el perceptrón (elaborar un diagrama similar al visto en clases donde indique los diferentes elementos de su red) b) Indique cuál sería la salida de la red al presentarle el segundo ejemplo luego de ajustados los pesos al aplicar el algoritmo de entrenamiento del perceptrón con el primer ejemplo. Deje indicadas las fórmulas y cálculos necesarios. Tabla 3 R F 0 13 1 24 4 4 2 7 1 16 Ejemplos M T 3.2 28 5.0 77 1.0 4 1.7 14 4.0 35 D 1 0 0 1 1 28 Problema 9 Obtenga la expresión para w al emplear la Regla Deltha cuando se toma como función de activación tanh(Act). Problema 10 Para los ejemplos de la tabla de verdad del operador lógico OR: a) Aplique un ciclo de entrenamiento mediante la variante on-line de la Regla Deltha. b) Aplique un ciclo de entrenamiento mediante la variante batch de la Regla Deltha. c) Compare los valores finales de los pesos si 0.5 wo 0.3 , w1 0.2 , w1 0.1 inicialmente. Problema 11 Se conoce que los ejemplos en un determinado conjunto de entrenamiento no son linealmente separables. Describa como podría encontrar el vector de pesos que cometa la menor cantidad de errores empleando solamente el algoritmo de entrenamiento del perceptrón. Problema 12 Sean hj y hk dps funciones booleanas definidas sobre X. Se dice que “hj es tan o más general que hk”, y se escribe h j g hk , si y solo si x X [hk ( x) 1 h j ( x) 1] . Si se cumple que (h j g hk ) (hk g h j ) se dice que “hj es más general que hk” y se denota por h j g hk . w0 w1 x1 w2 x2 0 w0 0, w1 2, w2 1 . Puede a) Considere dos perceptrones A y B definidos por la expresión donde A tiene los pesos w0 1, w1 2, w2 1 y B decirse que A g B . Justifique. Problema 13 Responda verdadero o falso según corresponda. Justifique en cada caso. a) ___ En el algoritmo de Retropropagación batch la medida del error de las neuronas ocultas se calcula wdj (t d o d ) f ' ( Act d ) x dj b) ___ El algoritmo de Retropropagación es un ejemplo de método de aprendizaje supervisado. 29 c) ___ Si dos Perceptrones Multicapa A y B con idéntica topología se diferencian en que todas las neuronas de A calculan f (net) net mientras que B utiliza funciones sigmoides entonces A tiene mayor poder de representación que B. d) La técnica de weight decay consiste en dividir el conjunto de datos en N subconjuntos, tomando N-1 para entrenar y 1 como conjunto de prueba. e) ___ La red mostrada en el diagrama se corresponde con la arquitectura definida para el Perceptrón multicapa. Problema 14 Suponga que desea transmitir por la red 20 imágenes en tonos de gris de 64x64 pixeles, donde para representar cada pixel se emplea 1 byte. Según estas condiciones necesitaría enviar 20x64x64= 81920 bytes por la red. Dado que puede construir un Perceptrón Multicapa con la topología siguiente: 1 capa oculta de 10 neuronas y 64 neuronas en la capa de salida. Se sabe también que la topología de la red puede codificarse en un fichero donde cada peso ocupará 1 byte. a) Sabiendo que es permitida la pérdida de cierta cantidad de información, describa de qué forma podría emplear el Perceptrón Multicapa para transmitir las 20 imágenes empleando una cantidad de bytes menor que los 81920 requeridos inicialmente. Problema 15 Se conoce que los Perceptrones Multicapa pueden presentar problemas respecto a la velocidad de convergencia, los mínimos locales y la capacidad de generalización. a) Seleccione dos de estos problemas y explique mediante que técnicas los resolvería. Problema 16 Asuma que tiene un mapa auto organizado de Kohonen de dos dimensiones con 9 neuronas. Las coordenadas de cada neurona en el retículo son n1=[0,0], n2=[1,0], n3=[2,0], n4=[0,1], n5=[1,1], n6=[2,1], n7=[0,2], n8=[1,2], n9=[2,2]. En la iteración t cada neurona tiene pesos w1=[4,5], w2=[5,3], w3=[4,6], w4=[1,1], w5=[2,2], w6=[0,0], w7=[6,4], w8=[3,5], w9=[5,4]. Si se presenta a la red el vector x=[3,3] qué valor tendrán los pesos de cada neurona en la iteración t+1 si 0.5 y si d (i, j ) 0 1 f ( d (i, j )) 0.5 si d (i, j ) 1 0 eoc 30 IX. Soluciones Problemas Redes Neuronales Artificiales. Problema 8 Pauta: 𝑤0 𝑥0 = −1 𝑤1 𝑥1 𝑤2 𝑥2 4 𝐴𝑐𝑡 = 𝑤𝑖 𝑥𝑖 𝑜 = 𝑓(𝑎𝑐𝑡) = ቄ 1 ⬚ 𝑎𝑐𝑡 > −1 ⬚ 𝑒𝑜𝑐 𝑖=0 𝑤3 𝑥3 𝑤4 𝑥4 - 1 pto x diseñar red con 4 entradas y pesos correspondientes a R, F, M, T y 𝑥0 , 𝑤0 1pto expresiones de 𝐴𝑐𝑡 y 𝑜 Pauta: -3 pts. por calcular correctamente la salida de la red para el ejemplo 1 (dejando expresiones y cálculos correspondientes incluyendo valores iniciales para los 𝑤𝑖 ) -3 pts. por expresión aplicar correctamente actualización de los pesos en función de 𝑤𝑖 = 𝑤𝑖 + 𝜂(𝑡 − 𝑜)𝑥𝑖 - 2pts calcular correctamente la salida de la red para ejemplo 2. 31 Bibliografía 1. Jain, A.K. and J. Mao, Artificial Neural Networks: A Tutorial. IEEE, 1996: p. 31-44. 2. Pollack, J.B., Connectionism: Past, Present, and Future. Artificial Intelligence Review, 1988. 3. Theodoridis, S. and K. Koutroumbas, Pattern Recognition. 2006. (080510_IA_11). 4. Brío, B.M.d. and A.S. Molina, Redes Neuronales y Sistemas Difusos., ed. Alfaomega. 2001. (IA_080418_18). 5. Mitchell, T.M., Machine Learning. 1997: McGraw-Hill. (IA_080419_0). 6. Krose, B. and P.v.d. Smagt, An Introduction to Neural Networks. 1996: University of Amsterdam. (IA_080419_05). 7. Fyfe, C., Artificial Neural Networks. 1996, University of Paisley. 8. Freeman, J.A. and D.M. Skapura, Neural Networks. Algorithms, Applications and Programming Techiniques. 1991: Addison-Wesley. (IA_080419_21). 9. Duda, R.O., P.E. Hart, and D.G. Stork, Pattern Classification. 2001: Wiley-Interscience. (IA_080419_30). 10. Veelenturf, L.P., Analysis and Applications of Artificial Neural Networks. 1995: Prentice Hall. (IA_080919_1) 32