Download Aprendizaje neuronal - Grupo de Inteligencia Artificial

Document related concepts

Perceptrón wikipedia , lookup

Perceptrón multicapa wikipedia , lookup

Propagación hacia atrás wikipedia , lookup

Red neuronal prealimentada wikipedia , lookup

Adaline wikipedia , lookup

Transcript
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)