Está en la página 1de 12

Redes neuronales (y algoritmos genéticos)

1. El Perceptron
2. Descenso por gradiente
3. Regla Delta
4. Redes multicapa
5. Funciones de activación
6. Retropropagación
7. Computación evolucionista

c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 1

Neurona formal (1943)

e
1

e
s=1 si ( e U) y ( i = 0)
n i j
i
1 U
i
m

El modelo simula:
Sinapsis excitadoras e inhibidoras
Umbral de excitación
Sumación espacial

c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 2


Neuronas formales y lógica de orden 0

McCulloch y Pitts (1943)

x x x
1 1 1
x 3 x ·x ·x x 2 x ·x ·x x 1 x +x +x
2 1 2 3 2 1 2 3 2 1 2 3
x x x
3 3 3

x
1 1
1
x x
x 1 2
1 1 x ·x ·x x ·x ·x 1 x ·x +x ·x
1 1 2 3 1 2 1 2
1 2 3 x x
x 2 1
2 1 1
x x
x 3 2
3

c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 3

El Perceptron (Rosenblatt, 1958)

x0=-1
x w
1 w 0
1
y= w ·x s = 1 si y > 0
i i
s = -1 si y <= 0
w
n

x
n

Conjunto de entrenamiento:
 
E x1  x2  xn  r  r
1  1 
Regla de entrenamiento (refuerzo):

Si s 1 y r 1 aumentar los w i correspondientes a xi  0y
reducir los correspondientes a xi 0

Si s 1 y r 1 reducir los wi correspondientes a xi  0y

aumentar los correspondientes a xi 0
c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 4
Algoritmo del Perceptron

x0=-1
x w
1 w 0
1
y= w ·x s = 1 si y > 0
i i
s = -1 si y <= 0
w
n

x
n

while (!cond_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];
}
}
x[i][e] = xi para el ejemplo e
c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 5

Convergencia del Perceptron

x
1

x
2

x
n
algoritmo de
refuerzo

Condición de convergencia:
separabilidad lineal en el espacio x1  x2  xn 

Minsky y Papert (1969)


c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 6
Descenso por gradiente: principio

Elemento lineal: y x 
s x 
w x
E
Error de una hipótesis w :


E w r e se

1
2
Σ 
2

(e: índice de ejemplos) w


w 1
Idea: acercarse al mínimo mediante 2

incrementos de w proporcionales al

gradiente de E

∂E ∂E
∇E ∂w0  ∂wn  : dirección de máximo crecimiento de E

∆w K  ∇E

c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 7

Descenso por gradiente: adaptación de pesos


∂E ∂E

2Σ ∇E ∆w K  ∇E
1 2
E w 
re se ;


∂w0  ∂wn  ;

Como se w  xe ,
∂E 1 ∂

2 Σ ∂wi Σ re se  xie
2
∂wi re se  


∆wi K  Σ re se  xie


c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 8


Descenso por gradiente: algoritmo

while (!cond_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];
}
x[i][e] es xie: valor de la entrada i para el ejemplo e

c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 9

Descenso incremental o «regla delta»

Variante del algoritmo del gradiente


(Widrow y Hoff, 1960: «adalines»):
1
2
No función error global, sino por ejemplo: Ee w 

2 re se 

Iteración sobre los ejemplos, modificando wi para cada uno


Algoritmo (igual al del Perceptron, pero re  se
0  1 ):


while (!cond_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];
}

c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 10


Diferencias entre Perceptron, Gradiente y Regla Delta

Delta aproxima Gradiente para K suficientemente pequeño, y requiere


menos computación
Si hay varios mínimos (funciones de activación no lineales), Delta mejor
que Gradiente para evitar mínimos locales

Perceptrón usa el error (discreto) a la salida del umbral; Gradiente/Delta, el


error (continuo) de la combinación lineal de entradas
Perceptrón converge tras un número finito de iteraciones a una hipótesis
(w) que clasifica perfectamente los ejemplos siempre que éstos sean
linealmente separables
Gradiente/Delta convergen asintóticamente a una hipótesis de mínimo error
(local) aunque los ejemplos no sean linealmente separables
(Demostraciones en Hertz et al., 1991)

c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 11

Redes multicapa

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)
«Nuestra opinión personal es que la extensión es estéril»
(Minsky y Papert, 1969)

c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 12


El entrenamiento de redes multicapa

Problema del entrenamiento: asignación de mérito


(credit assignment)
Mérito (o responsabilidad) de un peso (wi j : 

∂E
medida de su contribución al error global ( ∂w )
ij

Dificultad con el Perceptron:


la función de activación no es diferenciable
Se necesita una neurona con función de activación
no lineal, para conseguir superficies no lineales
∂E
diferenciable, para poder calcular ∆wi j K ∂wi j

c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 13

Neurona no lineal y diferenciable


x0j=-1
x w w
1j 1j 0j
y= w ·x 1
j ij ij s(y j) =
-y
wnj ("net ") 1+e j
j

x nj

ds 

Con esta función sigmoidal (o logística), dy sy 
1 sy  

∂E ∂E  ∂y j ∂E 
∂wi j ∂y j ∂wi j ∂y j xi j
Si se conoce r j (neurona de salida) para un ejemplo e,
∂Ee ∂ 1
∂s j
∂y j ∂y j 2
rj sj 
2

rj sj 

∂y j
rj sj  sj  1 
sj 


∆wi j K δ j xi j , con δ j
  rj sj sj 1

  sj 

c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 14


Notación para redes multicapa

xi j : entrada a la neurona j procedente de la i


(para la capa de entrada, entradas a la red)
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
Para varias neuronas de salida el error global de una hi-
pótesis w es:

Gradiente: E w 1
ΣΣ
2 e l
rle sle 2

 

Regla delta: Ee w 
1
Σ
2 l
rle sle 
2

c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 15

Ajuste de pesos en redes multicapa

∂Ee
Considerando regla Delta, ∆wi j K ∂wi j K  δ j  xi j , con
∂Ee
δj ∂y j

Para la función de activación sigmoidal resulta:



Neuronas de salida: δl sl  1 sl 
 rl sl 

Neuronas de la capa anterior a la de salida:



δh sh  1 sh  Σl whl  δl
 

Neuronas de
la capa c:
δh sh  1 sh  Σ

r: capa c+1 whr  δr 

c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 16


Algoritmo de retropropagación: adelante

/* Se inicia w[c][i][j] con números aleatorios pequeños */


iniciar(w);
while (!cond_term) {
for (ie=0; ie<nEj; ie++) { /* nEj: número de ejemplos */
for (j=0; j<nn[0]; j++) { /* nn[c]: num. neuronas en capa c */
for (i=0; i<nEnt; i++) /* nEnt: num. entradas a la red */
x[0][i][j] = e[ie][i][j];
s[0][j] = f(x[0][i][j], w[0][i][j]); /*sigm(Σ(w*x)):
bucle en i*/
}
/* Se propaga hacia adelante la entrada */
for (c=1; c<nc; c++) { /* nc: número de capas */
for (j=0; j<nn[c]; j++) {
for (i=0; i<nn[c-1]; i++) /* nn[c-1] = num.ent. capa c */
x[c][i][j] = s[c-1][i];
s[c][j] = f(x[c][i][j], w[c][i][j]); /* bucle en i */
}
} /* ya tenemos las salidas para el ejemplo ie */
c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 17

Algoritmo de retropropagación: errores de salida

/* Errores en la capa de salida (nc-1) */


for (l=0; l<nn[nc-1]; l++) {
d[nc-1][l] = s[nc-1][l]*(1 - s[nc-1][l])*(r[ie] - s[nc-1][l]);
/* Ajuste de pesos de la capa de salida */
for (i=0; i<nn[nc-2]; i++) /* Si nc = 1, nn[nc-2] = nEnt */
w[nc-1][i][l] = w[nc-1][i][l] + K*d[nc-1][l]*x[nc-1][i][l];
}

En el caso de una sola capa, hemos terminado


(falta cerrar el bucle de ejemplos y la condición de terminación)
En el caso de varias capas falta lo más interesante: propagar hacia atrás
los errores, modificando los pesos convenientemente

c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 18


Algoritmo de retropropagación: atrás

/* Se propagan hacia atrás los errores (si nc > 1)*/


for (c=nc-2; c>=0; c--) {
for (h=0; h<nn[c]; h++) {
suma = 0;
for (r=0; r<nn[c+1]; r++)
suma = suma + w[c][h][r]*d[c+1][r];
d[c][h] = s[c][h]*(1 - s[c][h])*suma;
/* y se van ajustando los pesos */
for (i=0; i<nn[c-1]; i++) /* Si c=0, nn[c-1] = nEntr */
w[c][i][h] = w[c][i][h] + K*d[c][h]*x[c][i][h];
}
}
} /* cierra el bucle de ejemplos */
} /* cierra la condición de terminación */
Atribuido generalmente a Rumelhart, Hinton y Williams (1985)
Idea original de Werbos (1974) redescubierta por Parker (1982)
(Widrow, Proc. IEEE, Sep. 1990)

c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 19

Redes multicapa: ejemplo

Una capa oculta: superficies convexas


Dos capas ocultas: superficies arbitrarias
Ejemplo: reconocimiento de 10 sonidos vocales en el contexto
«h_d» (Huang y Lippmann, 1988)
4000

head

heed had
hid 2000
head
F2 (Hz)

hid
F
1
hud
heard
1000

F who’d hod
2
hood
hawed
500
who’d
0 500 1000 1400
F1 (Hz)
hood

c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 20


Modelos basados en la naturaleza («biónicos»)

Ontogénesis
Modelos neurocibernéticos
Filogénesis
Modelos evolucionistas
«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)

c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 21

La evolución como modelo


Primeras ideas: Generación de
mutaciones al azar sobre el
población de individuos
código binario de programas
(Frieldberg, 1958)
competición por recursos
Actualmente, énfasis en otros
selección mecanismos genéticos, p. ej.,
trueque de genes (crossover)
combinación de adaptados «Computación evolucionista:»
Algoritmos genéticos:
reproducción
individuos = cadenas de bits
Programación genética:
mutaciones
individuos = árboles sintácticos
de los programas

c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 22


Algoritmos genéticos para optimización

Problema: encontrar el máximo de f x1   xn 

Población: valores del dominio x1   xn en binario 

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 los genomas de cada pareja
Nueva generacion: los hijos sustituyen a los individuos menos
adaptados
Convergencia: cuando hay muchos valores iguales
La mutación sirve para resolver el problema de los
máximos locales
c 2002 DIT-ETSIT-UPM Aprendizaje: redes neuronales (y algoritmos genéticos) transp. 23

También podría gustarte