Redes Neuronales Las redes neuronales son modelos computacionales que buscan imitar el funcionamiento de las neuronas biológicas. Se usan principalmente para el reconocimiento de patrones complejos. Para construir una red neuronal, es necesario hacerla pasar por un proceso de aprendizaje. Jorge Baier Aranda, PUC 24 Redes Neuronales Artificialies (RNAs) Una red neuronal es un grafo dirigido construido a partir de elementos computacionales básicos. Una red neuronal codifica funciones numéricas. La función representada depende de parámetros de la red (especificados como etiquetas en el grafo), y de la arquitectura de la misma (forma dada a las interconexiones). Los elementos computacionales básicos de una red son: • Suma un nodo suma recibe un conjunto de entradas numéricas. Cada entrada puede provenir de otros nodos o del medio. x0 .. . Σ Pn i=0 xi xn Jorge Baier Aranda, PUC 25 • Multiplicación w x wx • Umbral (threshold units) x Jorge Baier Aranda, PUC cd 1 si x > 0 0 en otro caso 26 ¿Cuándo Utilizar RNAs? Problemas de aprendizaje altamente multidimensional (valores discretos o reales) Función a aprender (función objetivo) real o discreta (puede ser vectorial). Datos con ruido. Función a aprender con forma desconocida. El resultado (la función objetivo encontrada) no requiere de ser analizada. Jorge Baier Aranda, PUC 27 Una Neurona El modelo de neurona de McCulloch-Pitts (1943) o perceptrón es: x0 = 1 x1 w1 w0 .. . Σ xn cd wn Esta neurona elemental es conocida como una unidad de umbral lineal (linear threshold unit o ltu) y representa una familia de funciones parametrizada por los pesos w1, w2, . . . , wn, en particular, la función de salida será: ( Pn 1 Si i=0 wi xi > 0 f (x) = 0 en otro caso Jorge Baier Aranda, PUC 28 En notación vectorial: ( 1 Si w · x > 0, f (x) = 0 en otro caso. La función de salida se conoce también como función de activación. Jorge Baier Aranda, PUC 29 Funciones no Lineales Además de la función umbral que hemos visto recién, se utilizan funciones continuas, las más utilizadas son: Gaussiana: 1 − 2σ f (x) = e Pn i=1 (xi −ci ) 2 Activación Gaussiana 1.00 0.90 0.80 0.70 0.60 1.00 0.5 2 0.50 0.40 0.30 0.20 0.10 0.00 -5 -4.5 -4 -3.5 -3 -2.5 -2 -1.5 -1 -0.5 Jorge Baier Aranda, PUC 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 30 Donde σ y c1, . . . , cn son constantes. La respuesta de esta función depende de la distancia entre x y c. Sigmoidal: Se utiliza como una alternativa no lineal a la función umbral (cd). f (x) = 1 1+ e− Pn i=1 wi xi Activación Sigmoidal 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 -5 -4.5 -4 -3.5 -3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 Esta función también se conoce como función logı́stica. Una razón importante para preferir esta función a la función umbral , es que 1/(1 + e−x) es continua y diferenciable. Jorge Baier Aranda, PUC 31 Tangente Hiperbólica: Similar a la función logı́stica, pero tiene como rango a [−1, 1]. La expresión es la siguiente. 1 − e−x . −x 1+e Jorge Baier Aranda, PUC 32 Redes Neuronales Una red neuronal se construye en base a neuronas como la de McCulloch-Pitts. Si N1, . . . , N3 son neuronas de dos entradas, entonces una red puede ser como: x1 N1 N4 x2 N6 N2 N5 x3 N3 Toda red neuronal determina una familia de funciones de salida. Una configuración de pesos determina a una función individual de la familia. Jorge Baier Aranda, PUC 33 Estructura de una Red Neuronal Existen muchos tipos de redes neuronales. Las redes neuronales más utilizadas de tipo feed-forward , que son grafos dirigidos acı́clicos. En el resto de nuestra exposición trabajaremos con redes que están ordenadas en capas. En una red de este tipo, cada neurona está conectada sólo con neuronas de la siguiente capa. Jorge Baier Aranda, PUC 34 Aprendizaje en Redes Neuronales Para lograr que una red neuronal pueda representar una función es necesario someterla a un proceso de aprendizaje. Debemos estar conscientes que por el sólo hecho de elegir una cierta estructura para la red estamos incurriendo en un sesgo inductivo. Si queremos aprender una función f (x) podemos usar una red neuronal de alguna arquitectura y pesos que hay que definir. Jorge Baier Aranda, PUC 35 Limitaciones de los Perceptrones Los perceptrones sólo pueden aprender conceptos linealmente separables. Un concepto es linealmente separable si existe un hiperplano capaz de separar todos los puntos que el concepto clasifica como 1 de los que clasifica como 0. Por ejemplo, un perceptrón no puede aprender el XOR. Jorge Baier Aranda, PUC 36 Regla de Aprendizaje del Perceptrón Veremos el caso particular de la neurona de McCulloch-Pitts: La red se inicializa con valores aleatorios para los pesos wi. Si se está procesando un ejemplo de entrenamiento con salida correcta d y la red entrega salida y, el peso wi de la entrada xi se ajusta de acuerdo a la regla: wi ← wi + η(d − y)xi. η es una constante positiva llamada constante de aprendizaje. La regla de aprendizaje se aplica iterativamente a cada uno de los ejemplos. Cada vez que se procesa un ejemplo, se ajustan los pesos. Si todos los ejemplos se clasifican correctamente, se detiene el proceso. En otro caso, se vuelve al punto anterior. Jorge Baier Aranda, PUC 37 Error Cuadrático Medio El problema de aprendizaje en una red neuronal es un problema de búsqueda. El espacio queda definido por: • La arquitectura de la red. • El espacio de valores de los parámetros de la red (pesos). Dada la arquitectura de la red, buscaremos una hipótesis que maximice el rendimiento (minimice el error, con respecto a los ejemplos). Ası́, si T es un conjunto de n ejemplos, con hxi, dii ∈ T para i = 1 . . . n, el rendimiento es: n 1X P =− (f (xi) − di)2. n i=1 donde f (xi) corresponde a la salida de la red para el i−ésimo ejemplo (considerando una unidad con una sola salida). La medida anterior considera el error mirando todos los ejemplos, por lo cual es apropiada para métodos de aprendizaje batch. Jorge Baier Aranda, PUC 38 La regla Delta de entrenamiento La regla delta de entrenamiento está basada en un análisis matemático de la función de salida de los perceptrones. Está basada en el método del gradiente. Una de sus ventajas es que funciona con cualquier función de activación diferenciable. Deduciremos uns regla de actualización de pesos para hacer aprender a un perceptrón sin umbral (ADALINE). Es decir, una unidad lineal con: o(x) = w · x Si D = {hx0, d0i, . . . , hxn, dni} es el conjunto de entrenamiento, consideremos la función de error como: n 1X E(w) = (dk − o(xk))2 2 k=1 Jorge Baier Aranda, PUC 39 El Gradiente ∂E ∂E ∂E , ,..., , ∂w0 ∂w1 ∂wm donde m es la dimensión de los ejemplos. ∇E(w) = Ahora: n ∂ 1X ∂E 2 = (dk − o(xk)) ∂wi ∂wi 2 k=1 n 1X ∂ 2 = (dk − o(xk)) 2 k=1 ∂wi n X ∂ = (dk − ok ) (dk − o(xk)) ∂w i k=1 n X ∂ = (dk − ok ) (dk − w · xk) ∂w i k=1 n X = (dk − ok )(−xk,i), k=1 Jorge Baier Aranda, PUC 40 donde xk,i es la i-ésima componente de xk. Como el gradiente da la dirección de mayor crecimiento, los pesos se pueden actualizar con la regla: w ← w − η∇E(w). o bien: wi ← wi + η n X (dk − ok )(−xk,i). k=1 Jorge Baier Aranda, PUC 41 Algoritmo de descenso por el gradiente Descenso-Gradiente(ejemplos,η). Cada ejemplo es un par hx, di y η es la tasa de aprendizaje. Inicializar los pesos wi en un valor pequeño aleatorio. Repita hasta que converja: • Inicialice ∆wi en cero. • Para cada hx, di en ejemplos: ◦ Calcule la salida o de la unidad. ◦ Para cada peso wi: ∆wi ← ∆wi + η(d − o)xi. • Para cada wi: wi ← wi + ∆wi. Jorge Baier Aranda, PUC 42 Unidad de Umbral Sigmoidal En redes más complejas, se utilizan con frecuencia unidades con funciones de activiación no lineales. Una de las más populares son las unidades sigmoidales. x0 = 1 x1 w1 w0 .. . σ (net) S xn wn Donde: net = w · x y Jorge Baier Aranda, PUC 1 o = σ(net) = 1 + e−net 43 Una caracterı́stica útil de la función logı́stica es que: dσ(x) = σ(x)(1 − σ(x)). dx Jorge Baier Aranda, PUC 44 Gradiente del error en Unidades Sigmoidales Consideremos la medida de error E definida previamente y calculemos: n ∂ 1X ∂E 2 = (dk − ok ) ∂wi ∂wi 2 k=1 n 1X ∂ 2 = (dk − ok ) 2 k=1 ∂wi n X ∂ = (dk − ok ) (dk − ok ) ∂w i k=1 n X ∂ok = (dk − ok ) − ∂wi k=1 Jorge Baier Aranda, PUC 45 Pero, ∂ok ∂σ(netk ) ∂σ(netk ) ∂netk = = ∂wi ∂wi ∂netk ∂wi = ok (1 − ok )xk,i donde xk,i es la i-ésima componente de xk. Finalmente: n X ∂E =− (dk − ok )ok (1 − ok )xk,i ∂wi k=1 Jorge Baier Aranda, PUC 46 Redes Multicapa Veremos cómo entrenar redes de dos capas y extenderemos el resultado al caso general. Una red de dos capas se ve de la siguiente manera: z0 = 1 x0 = 1 1 x1 .. . xi .. . zj (1) wji z1 j 1 y1 d1 yk dk yK dK (2) wkj k yk K yK xn zJ J Donde y1, . . . , yL son las salidas de la red y d1, . . . , dL son los datos usados para entrenar. Jorge Baier Aranda, PUC 47 Si consideramos el error cuadrático de todas las salidas, K 1X (dm − ym)2 E(x) = 2 m=1 obtenemos la regla de actualización para los pesos de la última capa: ∂E (2) ∆wkj = −η (2) ∂wkj = η(dk − yk )f 0(netk )zj , donde k = 1, . . . , K y j = 1, . . . , J y netk = de activación. PJ l=0 wkl zl y donde f es la función (1) Para obtener la regla de actualización de pesos de wji es necesario aplicar la regla de la cadena, obteniéndose lo siguiente: " (1) ∆wji = ρh K X # (2) (dk − yk )f 0(netk )wkj f 0(netj )xi k=1 Jorge Baier Aranda, PUC 48 Error Backpropagation Backpropagation(ejemplos, η , nin , nout , nhidden ) Caso particular de una red con una capa escondida, con conexiones completas hacia adelante y unidades sigmoidales. Inicializar todos los pesos en valores aleatorios pequeños. Repita hasta que haya convergencia: Para cada ejemplo: 1. Procese el ejemplo a través de la red y calcule la salida. 2. Para cada unidad k de salida: δk ← yk (1 − yk )(tk − yk ) 3. Para cada unidad escondida h δh ← yh(1 − yh) X wkhδk k∈salidas 4. Actualizar los pesos wj,i: wji ← wji + ηδj xj,i Jorge Baier Aranda, PUC 49 Comentarios al Algoritmo El ciclo principal del algoritmo se repite miles de veces. La condición de término puede cambiarse: Número fijo de iteraciones. Terminar cuando el error en los ejemplos caiga bajo un valor prefijado. Terminar cuando el error en un conjunto de validación obedezca un criterio, etc. Jorge Baier Aranda, PUC 50 ¿Qué podemos representar? Funciones booleanas: Cualquier función booleana es representable por una red con una capa escondida. El número de nodos en la capa escondida puede crecer exponencialmente en el número de entradas. Funciones continuas: Cualquier función continua acotada puede representarse con una red con una capa escondida de unidades sigmoidales y una capa de salida de unidades lineales (sin umbral). Funciones Arbitrarias: Cualquier función puede aproximarse con una red con dos capas escondidas de unidades sigmoidales y una capa de salida de unidades lineales (sin umbral). Jorge Baier Aranda, PUC 51