REDES ALIMENTADAS HACIA ADELANTE ❧ El perceptrón ❧ Redes multicapa ● Back-Propagation ● Algoritmos de Diseño Basados en VoD ● Aprendizaje no Supervisado ● Redes Probabilísticas El perceptrón: Reconocimiento de patrones El perceptrón es una máquina para el reconocimiento de patrones Fue propuesto por McCulloch y Pitts en el año 1943 para el reconocimiento de letras. Se puede considerar la neurona básica como un modelo muy simplificado de una neurona biológica. Se pretende que dadas dos clases de patrones, una neurona pueda distinguir si un patrón es de una clase o de la otra. ù én y = fh ê wi xi −θ ë i=1 La salida de la neurona deberá ser entonces: ù é y = fh ê wi xi −θ ú ë i=1 n donde xi es la entrada, wi es el peso correspondiente a xi, θ representa el umbral y fh es la función: ì1 si x > 0 f h ( x) = í 0 si x ≤ 0 Geométricamente la ecuación: w1 x1 + w 2 x 2 + ..... + w n x n = θ representa un hiperplano en Rn. La neurona básica podría también utilizarse como un clasificador del conjunto {0, 1}n, ya que podría decirse que todo {x1, x2, ...., xn}∈ {0, 1}n, pertenece o bien a la clase [1], si {x1, x2, ...., xn} es un punto situado encima del hiperplano, es decir si w1 x1 + w 2 x 2 + ..... + w n x n > θ é y = fh ê ë n i =1 wi xi − θ ù =1 o bien a la clase [0], si {x1, x2, ...., xn} es un punto situado debajo del hiperplano, es decir si é y = fh ê ë n i =1 wi xi − θ ù = 0 APRENDIZAJE DE LA NEURONA SIMPLE A B ¿Podemos conseguir que la neurona distinga las Aes de las Bes? Imagen digitalizada El problema consiste en encontrar los pesos para que reconozca el patrón digitalizado de A como perteneciente a [A] Queremos que al presentar una A se supere el umbral θ y al presentar una B no se supere, por tanto, en el instante t + 1, si se ha presentado una A los pesos aumentarán: wi (t +1) = wi (t) + µ xi donde 0 < µ ≤1 y en general: w1(t +1).x1 +....+ wn (t +1).xn = [w1(t).x1 +....+ wn (t).xn ] + µ(x1 +...+ xn ) A B ì x ∈ [A] Þ 1 ≥ µ > 0 í x ∈ [B ] Þ −1 ≤ µ < 0 ìx∈[A] Þµ (x1 +...+ xn ) > 0 í x∈[B] Þµ (x1 +...+ xn ) < 0 ¿Converge? Por último se sustituye el umbral por una nueva conexión de entrada que lo emule, obteniendo así un hiperplano vectorial: w1 x1 + w2 x2 + ..... + wn xn − θ = 0 ⇔ w1 x1 + w2 x2 + ..... + wn xn + wn +1 xn +1 = 0 wn+1 = -θ xn+1 = 1 ALGORITMO DE APRENDIZAJE Se trata de obtener el vector de pesos (w1 , w2 , ... wn , wn+1 ) de forma que los elementos de [A] queden por encima del hiperplano y los de [B] por debajo. El algoritmo consistiría en: • Asignar valores aleatoriamente a los pesos y al umbral. • Presentar un input. • Calcular un output. • Alterar los pesos reforzándolos o debilitándolos según lo anteriormente expuesto. ALGORITMO DE APRENDIZAJE 1. Hacer t = 0, y asignar aleatoriamente, ∀i = 1,..., n, valores a los pesos wi 2. Tomar un patrón x = {x1,...,xn} de L conjuntamente con la respuesta deseada d (que será 1 o 0), y hacer [wn+1(t) = - θ] y [xn+1(t) = 1] 3. Hacer [wi(t) ← wi ], ∀i = 1,..., n, y calcular la salida actual 4. é n +1 ù y (t + 1) = f h ê wi (t ). xi ë i =1 Adaptar los pesos: Si [d= y(t+1) ], STOP Si [d= 1 ] y [y(t+1) = 0 ], Hacer [wi← wi(t)+µxi ], ∀i = 1,..., n, 0<µ ≤ 1 Si [d= 0 ] y [y(t+1) = 1 ], Hacer [wi← wi(t)-µxi ], ∀i = 1,..., n, 0<µ ≤ 1 Hacer t = t+1. Ir a 3. ALGORITMO DE APRENDIZAJE II (considerando el espacio aumentado Rn+1 y µ=1) Inicio: Elegir un valor arbitrario de w. Test: Si ya se han elegido todos los elementos de L, STOP. Elegir x de L1 ∪ L0 Si (x ∈ L1) y (w.x > 0) ir a Test. Si (x ∈ L1) y (w.x ≤ 0) ir a Sumar. Si (x ∈ L0) y (w.x < 0) ir a Test. Si (x ∈ L0) y (w.x ≥ 0) ir a Test. Sumar: Reemplazar w por (w + x). Ir a Test. Restar: Reemplazar w por (w - x). Ir a Test. ALGORITMO DE APRENDIZAJE III (en vez de valores binarios se consideran valores bipolares) Inicio: Elegir un valor arbitrario de w. Test: Si ya se han elegido todos los elementos de L, STOP. Elegir x de L1 ∪ L0 Si (x ∈ L0) cambiar x por -x Si (w.x > 0) ir a Test en caso contrario ir a Sumar. Sumar: Reemplazar w por (w + x). Ir a Test. ALGORITMO DE APRENDIZAJE IV (considerando F = L1 ∪ -L0) Inicio: Elegir un valor arbitrario de w. Test: Si ya se han elegido todos los elementos de L, STOP. Elegir x de F Si (w.x > 0) ir a Test en caso contrario ir a Sumar. Sumar: Reemplazar w por (w + x). Ir a Test. TEOREMA DE CONVERGENCIA Partimos de la hipótesis de que existe un vector solución w* (el cual se toma normalizado, es decir |w*| = 1), tal que: w*. x > 0 para todo x (también normalizado) de L. El mínimo m de los , w*. x , ∀x ∈ L será por tanto, también, mayor que cero. Tomando un δ arbitrario tal que δ (0, m), se tendría un número δ fijo positivo, de modo que se cumple: w* . x > δ , ∀x ∈ L TEOREMA DE CONVERGENCIA Por la definición de producto interno, se sabe que, para todo vector de pesos w se cumple que: w .w * = w . w * cos( w , w * ) = w cos( w , w * ) Definiendo G, como la función que a todo vector de pesos w, le hace corresponder el coseno del ángulo entre w y w*, es decir: se puede asegurar que para todo w, se verifica que G(w) ≤ 1. Elegimos como valor arbitrario inicial de w el vector w0 = 0, y vamos a estudiar como se comporta G, cada vez que en el algoritmo se pasa por sumar. Definimos un contador t de las veces que se pasa por sumar. Despues de t veces w* . w(t + 1) = w* . (w(t)+ x ) = w* . w(t)+ w* .x ≥ w* . w(t) + δ es decir, w * . w(t + 1) ≥ w * . w(t) + δ Dado cualquier número natural n, cuando se haya pasado n veces por sumar, se tendrá que w* por el vector de pesos actual w(n), será, al menos, igual al valor inicial más todos los incrementos que ha sufrido. Es decir: w * . w(n) ≥ n δ Luego ya tenemos una cota del numerador de Para ver ahora una cota del denominador podemos decir que como, w( t + 1 ) = w( t + 1 ). w( t + 1 ) = (w( t ) + x )(w( t ) + x ) = w( t ) + 2w( t )x + x 2 2 y el algoritmo se pasa por sumar si w(t).x es negativo (es decir si 2w(t).x < 0) y como |x|=1, se deduce que 2 w( t + 1 ) < w( t ) + 1 Luego, después de pasar n veces por sumar, se verifica que 2 w( n ) < n es decir w( n ) < n 2 w ( n ). w * nδ 1 ≥ G ( w ( n )) = > =δ w( n ) n n es decir 1 n≤ 2 δ Luego el número de veces n que en el algoritmo se puede pasar por sumar es un número acotado y por tanto finito. Es decir, en caso de existir un vector de pesos w* solución, dicha solución es obtenida. ESPACIO SOLUCIÓN El problema ahora es saber si existe solución. Si tuviésemos por ejemplo sólo dos patrones en R2 L = { x1, x2} w2 x12w1 + x22w2 = 0 x = (x , x ) 1 1 1 1 2 Región Solución w1 x1 x11w1 + x21 w2 = 0 x 2 = ( x12 , x22 ) CAPACIDAD DEL PERCEPTRÓN Dicotomía Lineal Si en un espacio de patrones aumentado de dimensión n+1, se toman aleatoriamente p patrones cualesquiera { } L = x 1 , x 2 ,..., x p , x j = ( x1j , x2j ,..., xnj+1 ), ∀j = 1,.., p Una dicotomía de L, es una partición de L en dos subconjuntos L0 y L1; es decir (L1 ∪ L0 = L) y (L1 ∩L0 = ∅ ). Si existe un hiperplano separador de los dos subconjuntos, se dice que es una dicotomía lineal. ¿Cuál será la probabilidad de que dada una dicotomía de L esta sea lineal? Si la probabilidad es muy grande, se dice que la capacidad de la red es muy grande; en caso contrario, será muy pequeña. CAPACIDAD DEL PERCEPTRÓN En un espacio de dimensión n+1, el máximo número de patrones o vectores linealmente independientes es n+1. Si los p vectores de L, se han tomado aleatoriamente lo más probable es que los vectores sean linealmente independientes. Por ejemplo si L tuviese solo dos vectores x1 e x2, estos serían linealmente dependientes si vistos los vectores x1 e x2 como puntos del espacio, estos están alineados con el origen. Es evidente la probabilidad de que dos puntos elegidos al azar estén alineados con el origen es prácticamente nula. De la misma forma la probabilidad de que tres puntos elegidos al azar estén situados en un plano que pasa por el origen, también tiene una probabilidad nula de que ocurra. Y así sucesivamente. CAPACIDAD DEL PERCEPTRÓN Se puede entonces definir el concepto de posición genérica. p patrones, en un espacio de dimensión n+1 están en posición genérica si los patrones (o vectores) de cualquier subconjunto de n+1 elementos (o menos) son linealmente independientes Un conjunto de puntos tomados mediante una función de distribución aleatoria y continua, estarán obviamente en posición genérica, excepto posibles coincidencias (las cuales tendrán una probabilidad cero de que ocurran). TEOREMA DE COVER Dado un conjunto aleatorio de vectores L = {x1, x2, ..., xp}∈ {0,1}n+1, la probabilidad P(p,n+1), de que una dicotomía aleatoria cualquiera de L sea lineal, cuando esta dicotomía se realiza mediante un perceptrón con n unidades de proceso y un valor umbral asociado, es: ì 1− p 2 P( p,n + 1 ) = í î1 æ p − 1ö çç i =0 è i n si p > n + 1 si p ≤ n + 1 TEOREMA DE COVER Si consideramos por ejemplo p = 2 (n+1) es decir, el número de puntos es doble de la dimensión del espacio en el cual están inmersos, la probabilidad de que una dicotomía sea lineal será: n 2n + 1 2 ( 1 ) 1 n + − æ ö æ ö -1- 2n 1−2( n+1) P(2(n + 1), (n + 1)) = 2 çç çç ÷÷ = 2 i i i =0 è i =0 è n que operando resulta ser igual a 1/2, es decir siempre que tengamos doble número de puntos p que dimensión tiene el espacio en el cual están inmersos, la probabilidad de encontrar un hiperplano que los separe será igual a 1/2 EJEMPLO: LA FUNCIÓN XOR Veamos cual es la probabilidad de que un perceptrón simule la función XOR: (1,1) (0,1) (0,0) (1,0) Obviamente es imposible encontrar un hiperplano (recta) separador, pero la probabilidad de que exista según el teorema de Cover es 1/2. EJEMPLO: LA FUNCIÓN XOR Por tanto no es computable por el perceptrón, lo que supuso en su tiempo un serio revés en el desarrollo del mismo. Para resolver el problema, Rosenblatt, aplicó una transformación a los patrones, pasando a un espacio de dimensión superior donde sí es computable: R2 R3 (1,1,1/2) (0,0,-1/2) (1,0,-1/2) (1,0,-1/2) (0,1,1/2) (0,1,-1/2)