El Perceptrón ´ 1958 - El psicólogo Frank Ronsenblant desarrolló un modelo simple de neurona basado en el modelo de McCulloch y Pitts que utilizaba una regla de aprendizaje basada en la corrección del error: Perceptrón x1 x2 x3 w1 w2 1 y = f ( x1 , x2 ,..., xn ) = − 1 si w1 x1 + w2 x2 + ... + wn xn ≥ θ si w1 x 1 + w2 x2 + ... + wn xn < θ y w3 w1 x1 + w2 x2 > θ w1 x1 + w2 x2 < θ Función paso o De Heaviside Función signo w1 x1 + w2 x2 = θ ¿Qué se pretende con el Perceptrón? Se dispone de la siguiente información: L Conjunto de patrones {xk}, k = 1,2,…,p1 , de la clase C1 (zk = 1) L Conjunto de patrones {xr}, k = p1+1,...,p , de la clase C2 (zr = -1) Se pretende que el perceptrón asigne a cada entrada (patrón xk) la siguiendo un proceso de corrección de error salida deseada zk (aprendizaje) para determinar los pesos sinápticos apropiados Regla de aprendizaje del Perceptrón: w j (k ) + 2ηx j (k ) w j (k + 1) = w j (k ) w j (k ) − 2ηx j (k ) ∆w j (k ) = η (k )[z (k ) − y (k )]x j (k ) si y (k ) = −1 y z (k ) = 1, si y (k ) = z (k ) si y (k ) = 1 y z (k ) = −1 error tasa de aprendizaje ¿Cómo se modifica el sesgo θ ? w1 x1 + w2 x2 + ... + wn xn ≥ θ x1 x2 x3 −1 ⇔ w1 x1 + w2 x2 + ... + wn xn + wn+1 xn+1 ≥ 0 w1 w2 θ y w1 x1 + w2 x2 + ... + wn xn + θ (−1) ≥ 0 w3 θ −1 ∆θ (k ) = −η (k )[z (k ) − y (k )] Algoritmo del Perceptrón Paso 0: Inicialización Inicializar los pesos sinápticos con números aleatorios del intervalo [-1,1]. Ir al paso 1 con k=1 Paso 1: (k-ésima iteración) n+1 Calcular y(k ) = sgn ∑ w j x j (k ) j =1 Paso 2: Corrección de los pesos sinápticos Si z(k) ≠ y(k) modificar los pesos sinápticos según la expresión: w j (k + 1) = w j (k ) + η [z i (k ) − y i (k )]x j (k ) , j = 1,2,..., n + 1 Paso 3: Parada Si no se han modificado los pesos en las últimas p iteraciones, es decir, w j (r ) = w j (k ), j = 1,2,..., n + 1, r = k + 1,..., k + p parar. La red se ha estabilizado. En otro caso, ir al Paso 1 con k=k+1. Teorema de convergencia del Perceptrón Si el conjunto de patrones de entrenamiento con sus salidas deseadas, {x1 ,z1}, {x2 ,z2},…,{ xp ,zp}, es linealmente separable entonces el Perceptrón simple encuentra una solución en un número finito de iteraciones Demostración Como es linealmente separable entonces existen n ∑w x > wn +1 si son de la clase C1 * w ∑ j x j < wn+1 si son de la clase C2 j =1 n j =1 * j j w1* , w2* ,..., wn*+1 θ Demostración ∑ (w (k + 1) − w ) = ∑ (w (k ) + η[z (k ) − y(k )]x (k ) − w ) n +1 j j =1 n +1 * 2 j ( = ∑ w j (k ) − w j =1 ) * 2 j n +1 j j =1 * 2 j j + η [z (k ) − y (k )] 2 2 n +1 ∑ x (k ) j =1 2 j n +1 ( ) + 2η [z (k ) − y (k )]∑ w j (k ) − w*j x j (k ) j =1 n +1 n +1 j =1 j =1 + 2η [z (k ) − y (k )](∑ w j (k ) x j (k )) −2η [z (k ) − y (k )]∑ w*j x j (k ) n +1 − 2 ∑ w j (k )x j (k ) j =1 n +1 ( ≤ ∑ w j (k ) − w j =1 ) * 2 j + 4η 2 n +1 ∑ x (k ) j =1 2 j n +1 + 0 − 4η ∑ w*j x j (k ) j =1 n +1 2 ∑ w*j x j (k ) j =1 Demostración ∑ (w (k + 1) − w ) ≤ ∑ (w (k ) − w ) + 4η ∑ (w (k + 1) − w ) ≤ ∑ (w (k ) − w ) + 4η 2 L − 4ηT n +1 * 2 j j j =1 n +1 * 2 j j j =1 n +1 j =1 * 2 j j n +1 j =1 * 2 j j 2 n +1 ∑ x (k ) j =1 2 j n +1 − 4η ∑ w*j x j (k ) j =1 n+1 * T = min ∑ w j x j (k ) 1≤ k ≤ p j =1 n+1 2 L = max ∑ x j (k ) 1≤ k ≤ p j =1 ∑ (w (k + 1) − w ) ≤ ∑ (w (k ) − w ) n +1 j =1 Si * 2 j j ηL − T < 0 n +1 j =1 j * 2 j + 4η (ηL − T ) ∑ (w (k + 1) − w ) < ∑ (w (k ) − w ) n +1 j =1 η< T L j * 2 j n +1 j =1 j * 2 j Tasa de aprendizaje óptima Se trata de elegir de la tasa de aprendizaje η manera que se produzca un mayor decrecimiento del error en cada iteración Error cuadrático en la iteración k+1 E (η ) = D(k + 1) = D(k ) + 4η 2 n +1 j =1 n +1 ( D(k + 1) = ∑ w j (k + 1) − w*j n +1 n +1 j =1 j =1 * ( ) ( ) ( ) x k − 4 η w k x k − 4 η w ∑ j ∑ j j ∑ j x j (k ) 2 ) 2 j =1 n +1 n +1 n +1 ∂E (η ) 2 = 8η ∑ x j (k ) − 4 ∑ w j (k )x j (k ) − 4 ∑ w*j x j (k ) = 0 ∂η j =1 j =1 j =1 n +1 η opt = ∑ w j (k )x j (k ) + j =1 n +1 n +1 * w ∑ j x j (k ) j =1 2∑ x j (k ) j =1 2 Tasa de aprendizaje óptima n +1 η opt = n +1 n +1 ∑ w (k )x (k ) + ∑ w x (k ) j =1 j j n +1 j =1 * j j η~opt = 2∑ x j (k ) 2 ∑ w (k )x (k ) j j =1 n +1 ∑ x j (k ) j =1 j =1 n +1 n +1 j =1 j =1 − 2 ∑ w j (k ) x j (k ) = [z (k ) − y (k )]∑ w j (k ) x j (k ) n +1 η~opt = − [z (k ) − y (k )]∑ w j (k )x j (k ) j =1 n +1 2∑ x j (k ) j =1 j 2 2 Regla de aprendizaje normalizada n +1 w j (k + 1) = w j (k ) − [z (k ) − y (k )]∑ w j (k )x j (k ) j =1 n +1 2∑ x j (k ) 2 j =1 n +1 w j (k + 1) = w j (k ) − 2 ∑ w (k )x (k ) j =1 n +1 j j ∑ x j (k ) j =1 2 x j (k ) [z (k ) − y(k )]x j (k ) Regla de aprendizaje normalizada n +1 w (k + 1) = ∑ w j (k + 1) 2 2 j =1 2 n +1 n +1 w j (k ) x j (k ) n +1 ∑ w j (k ) x j (k ) ∑ n +1 n +1 j =1 − 4 j =1 = ∑ w j (k ) 2 + ∑ x j (k ) 2 2 n +1 w j (k ) x j (k ) ∑ n +1 j =1 j =1 x j (k ) 2 x j (k ) 2 i =1 ∑ ∑ j =1 j =1 n +1 = ∑ w j (k ) 2 = 1 j =1 Interpretación de la regla de aprendizaje del Perceptrón n +1 w x = ∑ wj x j ≥ 0 T j =1 n +1 w x = ∑ wj x j < 0 T ∀x ∈ C1 ∀x ∈ C2 j =1 y = sgn(w T x) = z , ∀x ∈ C1 ∪ C 2 Interpretación de la regla de aprendizaje del Perceptrón Se realizan las correcciones siempre y cuando se producen clasificaciones incorrectas. Z= +1 Y= -1 El aprendizaje debe acercar los vectores W y X W(k+1)= W(k) + α * X Interpretación de la regla de aprendizaje del Perceptrón Se realizan las correcciones siempre y cuando se producen clasificaciones incorrectas. z= -1 y= +1 El aprendizaje debe alejar los vectores w y x W(k+1)= W(k) - α * X Interpretación de la regla de aprendizaje del Perceptrón a) b) w(k+1)= w(k) + α * x j w(k+1)= w(k) - α * x j z= +1 y= -1 z= -1 y= +1 w j (k + 1) = w j (k ) + η [z i (k ) − y i (k )]x j (k ) , η = α/2 j = 1,2,..., n + 1 Ejemplo ☺ Diseña un perceptrón que implemente la función lógica AND AND Entradas (1, 1) x1 Salidas 1 (1, −1) −1 x2 (−1, 1) −1 −1 (−1,−1) −1 Paso 0: Inicialización aleatoria w1 = 0.4, w2 = − 0.2, θ = 0.6, w1 w2 θ y Diseña un perceptrón que implemente la función lógica AND ☺ 1 −1 −1 0.3 −0.2 y −0.6 Paso 1: Patrón de entrada (1,−1): h = 0.3(1) − 0.2(−1) − 0.6(−1) = 1.1 Paso 2: Corrección de los pesos sinápticos w1 (1) = w1 (0) − 2η1 = 0.3 − 1 = −0.7 w2 (1) = w2 (0) − 2η (−1) = −0.2 + 1 = 0.8 θ (1) = θ (0) − 2η (−1) = −0.6 + 1 = 0.4 y=1 Elegimos η=0.5 Diseña un perceptrón que implemente la función lógica AND ☺ −1 −1 −1 −0.7 0.8 y 0.4 Paso 1: Patrón de entrada (−1,−1): h = −0.7(−1) + 0.8(−1) + 0.4(−1) = −0.5 Como y = − 1 y z = −1 la clasificación es correcta y=−1 Diseña un perceptrón que implemente la función lógica AND ☺ 1 1 −1 −0.7 0.8 y 0.4 Paso 1: Patrón de entrada (1,1): h = −0.7(1) + 0.8(1) + 0.4(−1) = −0.3 Paso 2: Corrección de los pesos sinápticos w1 (2) = w1 (1) + 2η (1) = −0.7 + 1 = 0.3 w2 (2) = w2 (1) + 2η (1) = 0.8 + 1 = 1.8 θ (2) = θ (1) + 2η (−1) = 0.4 − 1 = −0.6 Elegimos η = 0.5 y=−1 Diseña un perceptrón que implemente la función lógica AND ☺ −1 1 −1 0.3 1.8 y −0.6 Paso 1: Patrón de entrada (−1,1): h = 0.3(−1) + 1.8(1) − 0.6(−1) = 2.1 Paso 2: Corrección de los pesos sinápticos w1 (3) = w1 (2) − 2η (−1) = 0.3 + 1 = 1.3 w2 (3) = w2 (2) − 2η (1) = 1.8 − 1 = 0.8 θ (3) = θ (2) − 2η (−1) = −0.6 + 1 = 0.4 y=1 Elegimos η = 0.5 Diseña un perceptrón que implemente la función lógica AND ☺ -1 1 −1 1.3 0.8 y 0.4 Patrón (1,1): h = 1.3(1) + 0.8(1) + 0.4(−1) = 2.7 Patrón (1,−1): h = 1.3(1) + 0.8(−1) + 0.4(−1) = 0.1 Patrón (−1,−1): h = 1.3(−1) + 0.8( −1) + 0.4(−1) = −2.5 Patrón (−1,1): h = 1.3(−1) + 0.8(1) + 0.4(−1) = −0.9 1.3x1 + 0.8 x2 − 0.4 = 0 Diseña un perceptrón que implemente la función lógica AND ☺ 1 −1 −1 1.3 0.8 y 0.4 Paso 1: Patrón de entrada (1,−1): h = 1.3(1) + 0.8(−1) + 0.4(−1) = 0.1 Paso 2: Corrección de los pesos sinápticos w1 (3) = w1 (2) − 2η (1) = 1.3 − 1 = 0.7 w2 (3) = w2 (2) − 2η (−1) = 0.8 + 1 = 1.8 θ (3) = θ (2) − 2η (−1) = 0.4 + 1 = 1.4 y=1 Elegimos η = 0.5 Diseña un perceptrón que implemente la función lógica AND ☺ 1 −1 −1 0.7 1.8 y 1.4 Paso 1: Patrón de entrada (1,−1): h = 1.3(1) + 0.8(−1) + 0.4(−1) = 0.1 Paso 2: Corrección de los pesos sinápticos w1 (3) = w1 (2) − 2η (1) = 1.3 − 1 = 0.7 w2 (3) = w2 (2) − 2η (−1) = 0.8 + 1 = 1.8 θ (3) = θ (2) − 2η (−1) = 0.4 + 1 = 1.4 y=1 Elegimos η = 0.5 Algoritmo de aprendizaje por lotes del Perceptrón: Evaluamos las salidas de la red para todos los patrones de entrenamiento y recién modificamos los pesos Paso 0: Inicialización Inicializar los pesos sinápticos con números aleatorios del intervalo [-1,1]. Fijar un valor de parada s. Ir al paso 1 con k=1 Paso 1: (k-ésima iteración) Corrección de los pesos sinápticos w ( k + 1) = w ( k ) + η ( k ) ∑ a( k ) k∈I ( w ) Paso 2: Parada Si η (k ) ∑ a( k ) < s x(k) si z(k) =1 a(k)= −x(k) si z(k) =−1 parar. k∈I ( w ) En otro caso, ir al Paso 1 con k=k+1. Tipos de aprendizaje Algoritmo de aprendizaje continuo (on-line) Evaluamos las salidas de la red para el patrón presentado y modificamos los pesos sinápticos de acuerdo a ese ejemplo Algoritmo de aprendizaje por lotes (batch) Evaluamos las salidas de la red para todos los patrones de entrenamiento y recién modificamos los pesos