Inteligencia Artificial “Aprendizaje neuronal” Ing. Sup. en Informática, 4º Curso académico: 2011/2012 Profesores: Ramón Hermoso y Matteo Vasirani Aprendizaje Resumen: 3. Aprendizaje automático 3.1 Introducción al aprendizaje automático 3.2 Árboles de decisión 3.3 Redes neuronales 3.4 Algoritmos genéticos 3.5 Aprendizaje por refuerzo Cerebro humano • Célula nerviosa o neurona: – – – – cada célula contiene un cuerpo (soma), varias fibras (dentridas) y una fibra larga (axón) cada neurona se conecta con otras (entre 10 y 100.000) (conexión: sinapsis) neuronas propagan señales mediante reacciones electroquímicas las señales: • controlan la actividad del cerebro (pensamiento) • permiten establecer cambios de posición y conectividad de las neuronas (aprendizaje) Sinapsis Axon Soma Sinapsis Dendritas Axon Soma Dendritas Sinapsis Cerebro humano • Funcionamiento de una neurona: – las dentridas reciben las señales de (muchas) otras neuronas (entradas) – la influencia colectiva de todas sus entradas pueden activar una neurona – una neurona activada transporta una señal a las neuronas con las que está conectada (salida) • En este procedimiento: – la neurona sólo se activa si la influencia colectiva de todas sus entradas supera un nivel mínimo de potencial eléctrico – las sinapsis influyen de forma distinta en la activación de la neurona • algunas refuerzan la activación (con diferentes grados) • otras inhiben la activación (con diferentes grados) – la salida de una neurona es, a su vez, la entrada para muchas otras neuronas • Variabilidad de las sinapsis – el grado de influencia de una sinapsis puede cambiar con el tiempo – incluso, se crean nuevas sinapsis • Se cree que esta variabilidad es la base del aprendizaje humano. Neuronas artificiales Señales Entrada Pesos Señales de salida x1 Y w1 x2 w2 Neurona Y Y g wn xn • • • • x1,…,xn – entradas w1,…,wn – pesos Y – salida g función de activación: g(x1,…,xn)=Y Y Funciones más comunes de activación x1 w1 w2 x2 n en = ∑ wi ⋅ xi g i =1 xn wn Función Umbral Y 1 Función Signo Función Sigmoide Y 1 0 U -1 Y en 1, si en > U Y = 0, en caso contrario Y 1 0 U -1 1, si en > U Y = − 1, en caso contrario Y 1 0 -1 en Y= Función Lineal 1 1 + e −en 0 -1 en Y = en en Red neuronal biológico y artificial Red Biológica Red Artificial Soma Neurona Dendrita Entrada Axon Salida Sinapsis Peso Reacción electroquímica en la célula Función de activación Soma Sinapsis Dendrites Axon Soma Dendrites Input Signals Axon Out put Signals Sinapsis Sinapsis Middle Layer Input Layer Output Layer Neurona más simple: el perceptrón • Neurona artificial con una función de activación umbral n 1, si ∑ wi xi > U Y = i =1 0, en caso contrario x1 w1 U w2 x2 • Entradas y salidas binarias • El perceptrón para clasificación: – puede representar una función booleana de sus entradas – Ejemplos: x1 1 1,5 x2 Y x1 0,5 x2 1 AND 1 1 OR Y Y Red Perceptrón • Varias perceptrones componen una red neuronal simple (de una capa) x1 Salida: - codificación de las clases x2 x3 x4 Pesos Entradas: - codificación binaria de los casos Perceptrones: - determinan las salidad • Ejemplo: reconocimiento de números: – cada pixel representa una entrada xi – o bien 4 neuronas (salidas: 0000, 0001, 0010, 0011,…) – o 9 neuronas (salidas: 000000000, 000000001, 0000000010, …) 2 Aprendizaje de perceptrónes • Suponemos un perceptrón de n entradas (x1,x2,…,xn) y una salida y • xi e y son binarios • Suponiendo un conjunto de ejemplos de entrenamiento: { (X1,y1), (X2,y2), …} con Xi=(xi1,xi2,…,xin) • Objetivo: – aprender un perceptrón que concuerde con los ejemplos, es decir, que implementa la función booleana: f (x1,x2,…,xn)=Y x1 … xn w1 U Y wn – Para ello hay que aprender los pesos w1,…,wn y el umbral U – En el caso de una red, se considera cada perceptrón por separado Aprendizaje de perceptrónes • Idea: – Se presenta los ejemplos de entrenamiento de forma iterativa al perceptrón – Para cada ejemplo, se compara el resultado de la clasificación del perceptron con el resultado deseado – Si hay diferencias, se realizan pequeños ajustes en los pesos de las entradas para reducir estas diferencia – Se repite este procedimiento hasta que los resultados convergen (el perceptrón haya aprendido) x1 … xn w1 U wn Y Aprendizaje de perceptrónes • Pasos en la iteración i con ejemplo de entrenamiento ((xi1,xi2,…,xin),yi) 1. Clasificar el ejemplo (xi1,xi2,…,xin) con el perceptrón: • se obtiene el valor de clasificación actual yiactual 2. Compara el valor actual con el valor deseado: • Calcular el Error: e(i)= yi- yiactual 3. Calcular la corrección de pesos con la regla delta: • ∆wj=α ⋅ xij ⋅ e(i) , para j=1,…n (α es una constante de aprendizaje) 4. Actualizar los pesos (w1,…,wn): • wj(i+1) = wj(i) + ∆wj , para j=1,…n Ejemplo i ((xi1,…,xin),yi) : xi1 x1 … … xin xn w1(i+1)=w1(i)+∆w1 w1 U wn Y yiactual wn(i+1)=wn(i)+∆wn ∆w1=α ⋅ xi1 ⋅ e(i) e(i)= yi- yiactual ∆wn=α ⋅ xin ⋅ e(i) Aprendizaje de perceptrónes Análisis de situaciones: • Caso 1: yi = yiactual (ambos tienen o valor 0 o valor 1) – e(i)= yi- yiactual=0 – ∆wj=α ⋅ xij ⋅ e(i)=α ⋅ xij ⋅ 0 = 0 – no se modifican los pesos wj(i+1) = wj(i) Ejemplo: (Xi,yi)= ((0,1,1),0) x1=0 √ 1 0,5 x2=1 0,2 x3=1 0,2 n 1 , si wi xi > U ∑ Y = =0 i =1 0, en caso contrario Aprendizaje de perceptrónes Análisis de situaciones: • Caso 2: yi = 1 e yiactual=0 (clasificado como negativo cuando debe ser positivo) – – – – e(i)= yi- yiactual=1 ∆wj=α ⋅ xij ⋅ e(i)=α ⋅ xij se aumentan los pesos de entradas activas: si xij=1 entonces wj(i+1) = wj(i)+ α aumentando los pesos de las entradas positivas se aumenta la posibilidad de que la salida sea positiva – no se modifican los pesos de entradas negativas (si xij=0 entonces wj(i+1) = wj(i)) Ejemplo: (Xi,yi)= ((0,1,1),1) con α=0,1 x1=0 1 0,5 x2=1 0,2 x3=1 0,2 y=0 × x1=0 y=1 1 0,5 x2=1 0,3 x3=1 0,3 √ Aprendizaje de perceptrónes Análisis de situaciones: • Caso 3: yi = 0 e yiactual=1 (clasificado como positivo cuando debe ser negativo) – – – – – e(i)= yi- yiactual=-1 ∆wj=α ⋅ xij ⋅ e(i)=-α ⋅ xij se disminuyen los pesos de entradas activas: si xij=1 entonces wj(i+1) = wj(i)- α no se modifican los pesos de entradas negativas (si xij=0 entonces wj(i+1) = wj(i)) disminuyendo los pesos de las entradas positivas se aumenta la posibilidad de que la salida sea negativa Ejemplo: (Xi,yi)= ((0,1,1),0) con α=0,1 x1=0 1 0,5 x2=1 0,4 x3=1 0,4 y=1 × x1=0 y=1 1 0,5 x2=1 0,3 x3=1 0,3 × Aprendizaje de perceptrónes Algoritmo de aprendizaje: 1. Inizializacion: Fijar los pesos iniciales w1,…, wn y el umbral U aleatoriamente en el rango [−0.5, 0.5]. 2. Dado el ejemplo de entrenamiento ((xi1,xi2,…,xin),yi) realiza los pasos: 1. 2. 3. 4. Clasificar el ejemplo (xi1,xi2,…,xin) Calcular el error e(i)= yi-yiactual Calcular la corrección de pesos con la regla delta ∆wj=α ⋅ xij ⋅ e(i) Actualizar los pesos wj(i+1) = wj(i) + ∆wj 3. Repite el paso 2 con el siguiente ejemplo hasta que el algoritmo converge Un criterio de convergencia habitual: • el número de errores entre los últimos n ejemplos es menor que un determinado umbral Ejercicio Aprendizaje de un perceptrón: Realiza el aprendizaje de un perceptrón con tres entradas y una salida (vea el dibujo) y con los siguientes ejemplos de entrenamiento: {((0,1,0),1),((1,0,0),0), ((1,1,0),1),((0,0,1),0)} Supón que los pesos y el umbral están inicializados a 0,2 y que el parámetro α tiene el valor 0,3. x1 0,2 0,2 x2 0,2 x3 0,2 y Análisis perceptrón • El objetivo del perceptron es clasificar entradas, (x1, . . ., xn), en dos clases, por ejemplo A1 y A2. • La clasificación se realiza según la siguiente regla de decisión: n Si ∑ xi wi − U > 0 entonces devuelve A1. i =1 • En realidad, el perceptrón divide el espacio n-dimensional de entradas en dos regiones. • La división viene dada por el hiperplano definido por: n ∑w x j =1 j j −U = 0 Análisis perceptrón • En dos dimensiones: En tres dimensiones: x1 x1 Región A1 x3 1 1 Región A2 0 Región A2 1 x2 Región A1 1 0 1 x2 hiperplano hiperplano • • • El hiperplano es un separador lineal Hay clases que no se pueden separar con separadores lineales Ejemplo: XOR (inténtelo en un ejercicio) x1 ?? 1 0 1 x2 Redes perceptones de una capa: comentarios • Buenos para problemas sencillos • Como red neuronal, bueno cuando las entradas y salidas son subsimbolicas – – – – – entradas y salidas binarias no existen atributos claramente diferenciados y identificados Ejemplos: reconocimiento de patrones Es capaz de tratar ruido Apto para aprender funciones aparentemente independientes de los valores concretos de los atributos (p.e.: función mayoría) • Problemas: – No puede representar cualquier función lógica (XOR) – No funciona con atributos de “alto nivel” (requiere la traducción de los casos a valores binarios) Redes neuronales para clases no linealmente separables Redes multicapa: x1 x2 … x3 Capa de salida x4 Entradas una o varias capas ocultas Pesos • el funcionamiento de cada neurona es igual que en el caso de la red de una capa Representabilidad de funciones con redes multicapa • Ejemplo: XOR a1 x1 -1 -0,5 1 -1 -1,5 y -1 x2 -0,5 1 a2 -1 x1 x2 a1 a2 y 0 0 1 1 0 0 1 0 1 1 1 0 1 0 1 1 1 1 1 0 • Teorema: Con una única capa oculta (suficientemente grande) es posible representar cualquier función continua de las entradas con una precisión arbitraria. Aprendizaje en redes multicapa • Idea: – Igual que en el caso del perceptrón simple: ajustar pesos para minimizar el error (diferencias entre salidas actuales y deseadas) • Pero: – Hay varias salidas posibles – Se saben los errores de la capa de salida, pero no los errores de las capas ocultas (no sabemos que valor han de tomar los nodos ocultos) x1 … xn w1,1,1 w1,1,k w1,n,1 O1 …w2,k,1 Ok w1,n,k w2,1,1 S1 y1 … w2,1,j Sj w2,k,j – Solución: propagación hacia atrás del error yj Aprendizaje en redes multicapa • Pasos (con una capa oculta): – Para la capa de salida (w2,r,s): • Calcular el error para cada salida: e2,s=ys – ys_actual • Actualizar los pesos: w2,r,s ←w2,r,s+ α ⋅ Or ⋅ e2,s (Or es la salida de la neurona oculta Or) – Para la capa oculta (w1,r,s): • Propagar el error hacia atrás: e = 1, s • Actualizar los pesos: w1,r,s x1 … xn w1,1,1 w1,1,k w1,n,1 O1 w1,n,k ∑w j =1 e 2,s , j 2, j ←w1,r,s+ α ⋅ xr ⋅ e1,s w2,1,1 …w2,k,1 Ok n S1 … w2,1,j Sj w2,k,j y1 yj Cada nodo oculto es “responsable” de una fracción de los errores cometidos por los nodos de salida. Redes multi-capa: resumen • Teorema: Con una única capa oculta (suficientemente grande) es posible representar cualquier función continua de las entradas con una precisión arbitraria. • Problema: – no se sabe la estructura (de la red) óptima para cada problema – Idea: aprender la estructura y los pesos • Sólo hemos visto redes muy simples. – Existen otros enfoques para: • la propagación de los errores • el ajuste de los pesos • En general son útiles para tareas donde no se dispone de atributos claramente identificados (p.e. reconocimiento escritura)