Download A lg o ritm o s g e n é tic o s y re d e s n e u ro n a le s Alg o ritm

Document related concepts

Red neuronal prealimentada wikipedia , lookup

Perceptrón multicapa wikipedia , lookup

Perceptrón wikipedia , lookup

Propagación hacia atrás wikipedia , lookup

Promoter Based Genetic Algorithm wikipedia , lookup

Transcript
UPM
Algoritmos genéticos y redes neuronales
Algoritmos genéticos
El Perceptrón
Descenso por gradiente y «regla delta»
Redes multicapa
Aprendizaje: Algoritmos genéticos y redes neuronales
Retropropagación
c 2010 DIT-ETSIT-UPM
• Algoritmos genéticos:
individuos = cadenas de bits
• Programación genética:
individuos = árboles sintácticos de los
programas
«Computación evolucionista:»
transp. 1
Actualmente, énfasis en otros mecanismos
genéticos, p. ej., entrecruzamiento de genes
(crossover)
Primeras ideas: Generación de mutaciones al
azar sobre el código binario de programas
(Frieldberg, 1958)
La evolución como modelo
población de individuos
competición por recursos
selección
combinación de adaptados
reproducción
mutaciones
c 2010 DIT-ETSIT-UPM
Aprendizaje: Algoritmos genéticos y redes neuronales
transp. 2
«Al fin y al cabo, no hay tantas técnicas informáticas que hayan demostrado su
valor a lo largo de 3.000 millones de años de pruebas de campo»
(Forsyth, 1986)
UPM
UPM
UPM
Optimización con algoritmos genéticos
Problema: encontrar el máximo/mínimo de f (x1 , . . . xn)
Población: valores de (x1 , . . . xn) en binario (genomas)
(miles de individuos)
Operadores genéticos:
• Mutación (cambio de un bit con probabilidad pequeña)
• Selección de las parejas reproductoras (probabilidad proporcional al
valor de la función)
• Entrecruzamiento de cromosomas en cada pareja
transp. 3
Nueva generacion: los hijos sustituyen a los individuos menos adaptados
Convergencia: cuando hay muchos valores iguales
Aprendizaje: Algoritmos genéticos y redes neuronales
La mutación sirve para resolver el problema de los
máximos/mínimos locales
c 2010 DIT-ETSIT-UPM
Inducción de reglas con algoritmos genéticos
Problema: encontrar las mejores reglas para una base de conocimentos
Población: la BC, con una medida de la bondad de cada regla
⇒ si A y D entones C
Operadores genéticos: sobre la codificación binaria de las reglas, o bien en
el nivel simbólico:
• Mutación:
si A y B entones C
• Entrecruzamiento (crossover):
⇒ si G y F entones H
transp. 4
si A y B y C entones D ⇒ si A y G entones H
si F y G entones H
⇒ si F y B y C entones D
• Inversión:
si F y G entones H
La medida de «bondad» o «fuerza» depende de la aplicación:
Aprendizaje: Algoritmos genéticos y redes neuronales
Clasificación: fallo o acierto
Predicción: cercanía al valor
Control: resultado de la acción de control
c 2010 DIT-ETSIT-UPM
Aplicación:
máscara:
00011110
Aprendizaje: Algoritmos genéticos y redes neuronales
transp. 5
01000101
11110110
Ejemplo de entrecruzamiento en binario
01010111
11100100
Reglas padres:
[A1=valor11][A2=valor12] → [R=R1]
[A1=valor21][A2=valor22] → [R=R2]
Codificación:
A1 A2 R
111 001 00
010 101 11
c 2010 DIT-ETSIT-UPM
Reglas hijas:
[A1=valor11][A2=valor22] → [R=R3]
[A1=valor21][A2=valor12] → [R=R4]
UPM
Sistema GABIL (DeJong et al., 1993)
Población: {reglas de orden 0+}
Evaluación de reglas:
f (r) = porcentaje de ejemplos
correctamente clasificados por r
En cada generación, p reglas (constante)
• a una fracción t se le aplica entrecruzamiento
y se sustituyen por los hijos
Aprendizaje: Algoritmos genéticos y redes neuronales
transp. 6
• a una fracción m (muy pequeña) se le aplica mutación
c 2010 DIT-ETSIT-UPM
ID3, AQ, C4.5. . . : 91,2 % – 96,6 %
GABIL: 92,1 %
Resultados: sobre 12 problemas sintéticos,
UPM
UPM
UPM
Operadores genéticos en GABIL
Selección aleatoria de (1 − t) · p reglas de la población actual
para añadir a la siguiente, con probabilidad:
f (ri)
P(ri) = p
∑ j=1 f (r j )
Entrecruzamiento entre t · p/2 pares de reglas de la población
actual (seleccionadas con la misma función), añadiendo el
resultado a la siguiente
Aprendizaje: Algoritmos genéticos y redes neuronales
transp. 8
transp. 7
Mutación de m · p reglas (con probabilidad uniforme) de la
población resultante
c 2010 DIT-ETSIT-UPM
GABIL: algoritmo
Inicio: P = {p reglas al azar}
Calcular f (ri), i = 1 . . . p
Mientras (máx f (ri) < umbral)
PS = 0/
PS = selecc(P,t)
PS = PS ∪ entrecruzamiento(P,t)
PS = mutac(PS , m)
P = PS
calcular f (ri)
Aprendizaje: Algoritmos genéticos y redes neuronales
Devolver r tal que f (r) es máxima
c 2010 DIT-ETSIT-UPM
UPM
1
x
1
x
2
x
3
3
e
1
m
1
e
n
i
i
U
2
1
x ·x ·x
1 2 3
x ·x ·x
1 2 3
e, i, s binarias
U (umbral) entero
x
1
x
2
x3
x
1
x
2
x
1
x
2
1
1
1
x ·x +x ·x
1 2 1 2
x +x +x
1 2 3
transp. 9
s=1 si ( ∑ ej ≥ U) y ( ∑ i k = 0)
Neurona formal (McCulloch y Pitts, 1943)
El modelo simula:
Sinapsis excitadoras e inhibidoras
Umbral de excitación
Aprendizaje: Algoritmos genéticos y redes neuronales
Sumación espacial
x ·x ·x
1 2 3
x
1
x
2
x3
x1
x
2
x3
1
Neuronas formales y lógica de proposiciones
c 2010 DIT-ETSIT-UPM
x
1
x
2
x3
1
x ·x ·x
1 2 3
c 2010 DIT-ETSIT-UPM
Aprendizaje: Algoritmos genéticos y redes neuronales
transp. 10
McCulloch, W. and Pitts, W. (1943): A logical calculus of the ideas immanent in nervous activity.
Bulletin of Mathematical Biophysics, 7:115 - 133.
UPM
1
wn
w1
x =−1
0
w
0
y=
w ·x
i i
s = 1 si y > 0
s = −1 si y <= 0
El Perceptron (Rosenblatt, 1958: 1943 + 15)
x
xn
Conjunto de entrenamiento: E = {hx1, x2, . . . xn, ri}
xi ∈ [−1, 1]; wi ∈ [0, 1]; r ∈ {−1, 1}
c 2010 DIT-ETSIT-UPM
x
1
xn
}
c 2010 DIT-ETSIT-UPM
w1
wn
Aprendizaje: Algoritmos genéticos y redes neuronales
w ·x
i i
s = 1 si y > 0
s = −1 si y <= 0
Algoritmo del Perceptron
x0 =−1
w0
y=
transp. 11
transp. 12
∆wie = K · (re − se) · xie
Aprendizaje: Algoritmos genéticos y redes neuronales
while (!ond_term) {
for (e=0; e<nEj; e++)
for (i=0; i<=n; i++) {
dw[i℄ = k*(r[e℄-s[e℄)*x[i℄[e℄;
w[i℄ = w[i℄ + dw[i℄;
}
Si s = 1 y r = −1 reducir los wi correspondientes a xi > 0 y
aumentar los correspondientes a xi < 0
Si s = −1 y r = 1 aumentar los wi correspondientes a xi > 0 y
reducir los correspondientes a xi < 0
Regla de entrenamiento basada en «castigo» de los wi
«culpables»:
UPM
UPM
algoritmo de
aprendizaje
Convergencia del Perceptron
1
2
x
x
x
n
extraccion de caracteristicas (features)
Aprendizaje: Algoritmos genéticos y redes neuronales
Condición de convergencia:
separabilidad lineal en el espacio (x1, x2, . . . xn)
c 2010 DIT-ETSIT-UPM
Minsky y Papert (1969)
UPM
transp. 13
w
1
E=
1
(re − w1 · x1e − w2 · x2e)2
2∑
e
Aprendizaje: Algoritmos genéticos y redes neuronales
transp. 14
: dirección de máximo crecimiento de E
i
E
Descenso (o ascenso) por gradiente: principio
«Neurona» lineal: s(~x) = y(~x) = ~
w ·~x
Error de una hipótesis, ~
w:
1
E(~w) =
(re − se)2; re, se ∈ [0, 1]
2∑
e
(e: índice de ejemplos)
h
∂E
∂E
.
.
.
∂w0
∂wn
Idea: acercarse al mínimo mediante
incrementos de ~
w proporcionales al
gradiente de −E
∇E =
∆~w = −K · ∇E
c 2010 DIT-ETSIT-UPM
w
2
Método clásico para optimización: hill climbing
UPM
∇E =
h
∂E
∂E
∂w0 . . . ∂wn
i
;
transp. 15
∆~w = −K · ∇E
Descenso por gradiente: adaptación de pesos
1
(re − se)2;
E(~w) =
2∑
e
Como se = ~
w ·~xe,
∂
∂E 1
=
(re − se)2 = − (re − se) · xie
∑
∂wi 2 ∑
e ∂wi
e
∆wi = K · ∑(re − se) · xie
e
Aprendizaje: Algoritmos genéticos y redes neuronales
Descenso por gradiente: algoritmo
x[i℄[e℄ es xie: valor de la entrada i para el ejemplo e
Aprendizaje: Algoritmos genéticos y redes neuronales
Comparar con el algoritmo del Perceptron
c 2010 DIT-ETSIT-UPM
transp. 16
while (!ond_term) {
for (i=0; i<=n; i++) dw[i℄ = 0;
for (e=0; e<nEj; e++)
for (i=0; i<=n; i++)
dw[i℄ = dw[i℄ + k*(r[e℄-s[e℄)*x[i℄[e℄;
for (i=0; i<=n; i++)
w[i℄ = w[i℄ + dw[i℄;
}
c 2010 DIT-ETSIT-UPM
Comparar con el Perceptrón: ∆wie = K · (re − se) · xie
UPM
UPM
Descenso incremental o «regla delta»
Variante del algoritmo del gradiente
(Widrow y Hoff, 1960: «adalines»):
No función error global, sino por ejemplo: Ee(~
w) = 21 (re − se)2
Iteración sobre los ejemplos, modificando wi para cada uno
}
c 2010 DIT-ETSIT-UPM
c 2010 DIT-ETSIT-UPM
Aprendizaje: Algoritmos genéticos y redes neuronales
transp. 17
transp. 18
Gradiente/Delta convergen asintóticamente a una hipótesis de
mínimo error aunque los ejemplos no sean linealmente
separables
Perceptron converge tras un número finito de iteraciones a una
hipótesis (~
w) que clasifica perfectamente los ejemplos siempre
que éstos sean linealmente separables
Perceptron usa el error (discreto) a la salida del umbral;
Gradiente/Delta, el error (continuo) de la combinación lineal de
entradas
Delta aproxima Gradiente para K suficientemente pequeño, y
requiere menos computación
Diferencias entre Perceptron, Gradiente y Regla Delta
Aprendizaje: Algoritmos genéticos y redes neuronales
while (!ond_term) {
for (e=0; e<nEj; e++)
for (i=0; i<=n; i++)
w[i℄ = w[i℄ + k*(r[e℄-s[e℄)*x[i℄[e℄;
Algoritmo (igual al del Perceptron, pero re, se ∈ [0, 1]):
UPM
UPM
UPM
UPM
c 2010 DIT-ETSIT-UPM
Redes multicapa: MLP
Aprendizaje: Algoritmos genéticos y redes neuronales
transp. 19
La separabilidad en las redes multicapa según Minsky
Perceptron y otras funciones de activación con una sola capa:
limitación por la condición de separabilidad lineal
¿Se pueden conseguir superficies no lineales con una red de
varias capas? Para funciones lógicas, sí (ejemplo típico: ORX)
Pero no con el algoritmo del gradiente ni la regla delta: la red
seguiría siendo lineal
¿Con funciones de activación no lineales?
(como el Perceptron)
Aprendizaje: Algoritmos genéticos y redes neuronales
transp. 20
«Nuestra opinión personal es que la extensión es estéril»
(Minsky y Papert, 1969: 1958 + 11)
c 2010 DIT-ETSIT-UPM
UPM
UPM
Aprendizaje: Algoritmos genéticos y redes neuronales
Separabilidad en las redes multicapa
c 2010 DIT-ETSIT-UPM
El entrenamiento de redes multicapa
transp. 21
transp. 22
Problema para el diseño de una estrategia de aprendizaje:
asignación de mérito (credit assignment)
ij
Mérito (o culpa, o responsabilidad) de un peso (wi j ):
∂E
medida de su contribución al error global ( ∂w
)
Dificultad con el Perceptron:
la función de activación no es diferenciable
Se necesita una neurona con función de activación
Aprendizaje: Algoritmos genéticos y redes neuronales
• no lineal, para conseguir superficies no lineales
∂E
• diferenciable, para poder calcular ∆wi j = −K · ∂w
ij
c 2010 DIT-ETSIT-UPM
x
x
1j
nj
x =-1
0j
w
0j
y=
j
w ·x
ij
("net ")
j
ij
1
-y
1+e
j
= s(y) · (1 − s(y))
s(y j) =
Neurona no lineal y diferenciable
w
1j
wnj
ds
dy
j
∂E
∂E
= ∂y
·
=
· xi j (contribución de wi j al error global)
∂y j
j ∂wi j
∂y
Con esta función sigmoidal (o «logística»),
∂E
∂wi j
transp. 23
Si se conoce r para un ejemplo e,
j
∂s
= ∂y∂ j ( 21 (r j − s j)2) = −(r j − s j) ∂y jj = −(r j − s j ) · s j · (1 − s j )
∂Ee
∂y j
∆wi j = K · δ j · xi j , con δ j = (r j − s j ) · s j · (1 − s j )
Aprendizaje: Algoritmos genéticos y redes neuronales
Notación para redes multicapa
1
Gradiente: E(~
w) =
∑(rle − sle)2
2∑
e l
Aprendizaje: Algoritmos genéticos y redes neuronales
1
(rle − sle)2
Regla delta: Ee(~
w) =
2∑
l
c 2010 DIT-ETSIT-UPM
transp. 24
Con varias neuronas de salida, error de una hipótesis ~
w:
wi j : peso de la conexión de la neurona i a la j
δ j : factor de error de la neurona j
e: índice sobre los ejemplos
l : índice sobre las neuronas de salida
h, r: índices sobre neuronas ocultas
xi j : entrada a la neurona j procedente de la i
(para la capa de entrada, entradas a la red)
c 2010 DIT-ETSIT-UPM
Pero r j sólo se conoce en la capa de salida
UPM
UPM
Ajuste de pesos en redes multicapa
ij
∂Ee
Considerando Regla Delta, ∆wi j = −K · ∂w
= K · δ j · xi j , con
e
δ j = − ∂E
∂y j
(whr · δr )
En neuronas de la capa c, igual:
r: capa c+1
δh = sh · (1 − sh) · ∑
Aprendizaje: Algoritmos genéticos y redes neuronales
algoritmo de retropropagación, 1985 (1969 + 16)
c 2010 DIT-ETSIT-UPM
transp. 25
En neuronas de la capa anterior a la de salida,
como no se conoce rh se estima el mérito en función de la
contribución de las siguientes: δh = sh · (1 − sh) · ∑l (whl · δl )
En neuronas de salida: δl = sl · (1 − sl ) · (rl − sl )
Para la función de activación sigmoidal resulta:
UPM
Algoritmo de retropropagación: adelante
c 2010 DIT-ETSIT-UPM
Aprendizaje: Algoritmos genéticos y redes neuronales
transp. 26
/* Se iniia w[℄[i℄[j℄ on números aleatorios pequeños */
iniiar(w);
while (!ond_term) {
for (ie=0; ie<nEj; ie++) { /* nEj: número de ejemplos */
for (j=0; j<nn[0℄; j++) { /* nn[℄: num. neuronas en apa */
for (i=0; i<nEnt; i++) /* nEnt: num. entradas a la red */
x[0℄[i℄[j℄ = e[ie℄[i℄;
s[0℄[j℄ = f(x[0℄[i℄[j℄, w[0℄[i℄[j℄); /*sigm(∑(w*x)):
bule en i*/
}
/* Se propaga haia adelante la entrada */
for (=1; <n; ++) {
/* n: número de apas */
for (j=0; j<nn[℄; j++) {
for (i=0; i<nn[-1℄; i++) /* nn[-1℄ = num.ent. apa */
x[℄[i℄[j℄ = s[-1℄[i℄;
s[℄[j℄ = f(x[℄[i℄[j℄, w[℄[i℄[j℄); /* bule en i */
}
} /* ya tenemos las salidas para el ejemplo ie */
UPM
Algoritmo de retropropagación: errores de salida
c 2010 DIT-ETSIT-UPM
Aprendizaje: Algoritmos genéticos y redes neuronales
transp. 27
En el caso de varias capas falta lo más interesante: propagar hacia atrás
los errores, modificando los pesos convenientemente
En el caso de una sola capa, hemos terminado
(falta cerrar el bucle de ejemplos y la condición de terminación)
/* Errores en la apa de salida (n-1) */
for (l=0; l<nn[n-1℄; l++) {
d[n-1℄[l℄ = s[n-1℄[l℄*(1 - s[n-1℄[l℄)*(r[ie℄ - s[n-1℄[l℄);
/* Ajuste de pesos de la apa de salida */
for (i=0; i<nn[n-2℄; i++) /* Si n = 1, nn[n-2℄ = nEnt */
w[n-1℄[i℄[l℄ = w[n-1℄[i℄[l℄ + K*d[n-1℄[l℄*x[n-1℄[i℄[l℄;
}
UPM
Algoritmo de retropropagación: atrás
Aprendizaje: Algoritmos genéticos y redes neuronales
transp. 28
/* Se propagan haia atrás los errores (si n > 1)*/
for (=n-2; >=0; --) {
for (h=0; h<nn[℄; h++) {
suma = 0;
for (r=0; r<nn[+1℄; r++)
suma = suma + w[℄[h℄[r℄*d[+1℄[r℄;
d[℄[h℄ = s[℄[h℄*(1 - s[℄[h℄)*suma;
/* y se van ajustando los pesos */
for (i=0; i<nn[-1℄; i++) /* Si =0, nn[-1℄ = nEntr */
w[℄[i℄[h℄ = w[℄[i℄[h℄ + K*d[℄[h℄*x[℄[i℄[h℄;
}
}
} /* ierra el bule de ejemplos */
} /* ierra la ondiión de terminaión */
c 2010 DIT-ETSIT-UPM
Atribuido generalmente a Rumelhart, Hinton y Williams (1985)
Idea original de Werbos (1974) redescubierta por Parker (1982)
(Widrow, Proc. IEEE, Sep. 1990)
UPM
F
2
1
F
UPM
UPM
Aplicaciones de retropropagación: ejemplo
Una capa oculta: superficies convexas
Dos capas ocultas: superficies arbitrarias
head
hid
who’d
hood
4000
2000
1000
500
heed
who’d
hid
head
F1 (Hz)
hawed
heard
hood
500
Aprendizaje: Algoritmos genéticos y redes neuronales
0
hud
had
hod
1000
transp. 29
1400
Ejemplo: reconocimiento de 10 sonidos vocales en el contexto
«h_d» (Huang y Lippmann, 1988)
c 2010 DIT-ETSIT-UPM
http://www-ra.informatik.uni-tuebingen.de/SNNS/
JavaNNS
Sucesor de SNNS, multiplataforma
http://www-ra.informatik.uni-tuebingen.de/
software/JavaNNS/welome_e.html
JOONE (Java Object Oriented Neural Engine)
http://www.joone.org/
Aprendizaje: Algoritmos genéticos y redes neuronales
Herramientas para minería de datos
c 2010 DIT-ETSIT-UPM
transp. 30
SNNS (Stuttgart Neural Network Simulator)
Simulador y GUI para Unix (portado tambén a Windows)
Incluye muchos algoritmos, además de retropropagación: conterprop,
quickprop, Rprop...
Software para redes neuronales
F2 (Hz)