Redes Neuronales Artificiales
Mariano Rivera
Mayo 2017
Haremos una revisión rápida de los modelos
-
Perceptrón
-
Red de una capa: Neurona Lineal Adaptativa o ADAptive LInear NEuron (ADALINE)
-
La Multicapa
En cada caso revisaremos su algoritmo de entrenamiento
El Perceptrón
-
Basado en el modelo de la neurona de McCulloc-Pitts (MCP) (1943) [1].
-
Rosenblatt propone la regla de aprendizaje basada en modelo de neurona MCP [2]
-
El algoritmo propuesto por Rosenblatt (1957), puede automáticamente aprender los pesos (coeficientes) óptimos que multiplican a las variables de entrada y tomar la desición de si se activa o no una neurona.
[1] W. S. McCulloc and W.Pitts, A logical calculus o the ideas immanent in neuron activity, The Bulletin of the Mathematical Biophysics, 5(4) 115-133, 1943.
[2] F. Rosenblatt. “The Perceptron, a perceiving and recognizing automaton,” Cornell Aeronautical Lab, 1957
El modelo MCP de la neurona explica que:
-
Las señales se ingresan a la neuraona a través de la dendrita.
-
Se integran en el cuerpo (soma) de la neurona.
-
Si la señal acumulada sobrepasa un umbral, la neurona se activa y dispara una señal a través de al axón
-
A su vez, el axón se conecta a otras neuronas.
Considere la siguiente figura, en ella se muestra el modelo de la neurona MCP (Basada en la figura de neurona de Wikipeda)
Rosemblatt propone el concepto de la Regla de Aprendizaje del Perceptrón basada en el modelo de la neurona de MCP.
Sean x∈Rn representa los un dato en coordenadas homogéneas (le hemos añadido un 1 al frente) y w∈Rn el vector de coeficientes:
(1)
x=⎣⎢⎢⎢⎢⎢⎡1x1x2⋮xn−1⎦⎥⎥⎥⎥⎥⎤,w=⎣⎢⎢⎢⎢⎢⎡w0w1w2⋮wn−1⎦⎥⎥⎥⎥⎥⎤
Tal que xi∈Rn es el i-ésimo dato, para i=1,2,…,m con yi∈{−1,+1} la clase es el i-ésimo dato, para i=1,2,…,m.
Luego, denotamos el producto interior por
(2)
z=w⊤x
y la neurona se activará (preferirá la clase +1) si el producto es mayor que cero, en otro caso no se activará (predecirá la clase −1):
(3)
ϕ(z)=def{+1−1z≥0otro
Algoritmo del Perceptrón
Sean (xi,yi) pares de dato y su respectiva clase, para i=1,2,…,m. Luego
-
Inicialice los pesos w con valores aleatorios pequeños: ∣wj∣≈0 para j=1,2,…,n.
-
Iterar para i=1,2,…,m (para todas las muestras)
2.1 Calcular la salida
(4)
yi′=ϕ(w⊤xi)
2.1 Actualizar el vector de peso
(5)
w←w+α(yi−yi′)xi
donde α es conocida como la razón de aprendizaje.
La idea de la regla de aprendizaje del perceptrón es muy básica:
w⊤xi>0 si yi=+1
w⊤xi<0 si yi=−1
En la siguiente figura, se muestra un vector w que satisface la respuesta correcta para todos los puntos.
En la ilustración de la figura anterior, w⊤x es un plano que intersecta el plano de los datos en la línea punteada. Ajustar el valor de w0 corresponde gráficamente a modificar el origen del vector w.
Neurona Lineal Adaptable
ADALINE: ADAptive LInear NEuron
-
La variante ADALINE del perceptrón fué propoesto por Widrow & Hoff [3].
-
Es particularmente importante porque introcude el concepto clave de definir mi minimixaruna función de costo.
-
Conceptos claves de algoritmos avanzados de “Aprendizaje de Máquina”.
-
A diferencia del Perceptrón usa una función de activación lineal:
(6)
ϕWH(w⊤xi)=defw⊤xi
- Un cuantizador es utilizado después para de la etapa de entrenamiento para dar la respuesta binaria
[3] B. Widrow and T Hoff, An Adaptive “Adaline” Neuron using Chemical “Memistors”, Nu. Tech. Rep. 1553-2, Stanford Electron. Labs., Stanford CA, Oct, 1960.
Gráficamente, el concepto de la ADALINE se puede ver en la siguiente figura
Función de costo ADALINE
La función de costo de ADALINE como sigue:
(7)
w∗=wargminJ(w)=21i∑[yi−ϕ(w⊤xi)]2
Esto nos hace recordar de donde vienen la notación de la regresión logística, pero esa regresión fué mucho tiempo después.
Desceso de Gradiente
Para resolver (7) se popuso usar Desceso de gradiente simple, con la regla de actualización:
(8)
w←w−α∇J(w)
donde α es el tamaño de paso y
(9)
∇J(w)=⎣⎢⎢⎢⎡∂w0∂J(w)∂w1∂J(w)⋮∂wn−1∂J(w)⎦⎥⎥⎥⎤
con
(10)
∂wj∂J(w)=i∑[yi−ϕ(w⊤xi)]xij
donde
- wj es el peso j-ésimo peso
- xij es la entrada j-ésima del dato i-ésimo
En los 1950’s el interés por las redes neuronales empezó a decrecer a medida que se veia su limitación para resolver problemas complejos.
-
Se vió que ADALINE y variantes con función sigmoide de activación tipo sigmoide (“REGRESIÓN LOGÍSTICA”) eran separadores lineales.
-
Un separador lineal usará un hiperplano como frontera entre clases.
-
Los clasificadores lineales:
- No prodrán distinguir entre clases que no sean-linealmente separables
- No podrán aprender el patrón del “famoso” problema del XOR
- No podrán distinguir entre clases anidadas
La figura siguiente figura ilustra casos de clasese no linelamente separables y el patrón del XOR
El problema es
- Agregar mas capas lineales sigue manteniedo el clasificador lineal:
Considere la primera capa del diagrama de la red multicapa lineal:
Primera capa:
(11)
y1k′=w1k⊤xparak=1,2,3,K
En forma matricial
(12)
y1=W1x
Segunda capa:
(13)
y2=W2y1
y para la cuarta capa tendremos:
(14)
y4′=W4y3=W4W3W2W1x=Wx
donde
(15)
y4′=W4W3W2W1x=Wx
- No se sabia como entrenar clasificadores no-lineales:
(16)
y4′=Φ(W4Φ(W3(Φ(W2Φ(W1x)))))
Redes Multicapa y el algoritmo de Backpropagation
La 2a. Generación de las Redes Neuronales
Hasta el trabajo de Rumelhart, Hinton & Williams (1986) [4] donde proponen el algoritimo de Retropropagación (Backpropagation) para entrenar redes neuronales multicapa.
[4] Rumelhart, D. E., Hinton, G. E., and Williams, R. J. (1986) Learning representations by back-propagating errors. Nature, 323, 533–536.
Representaremos a una neurona con un nodo
Una red completa con una capa de entrada, capa oculta y capa de salida se muestra en la figura siguente
Propagación hacia adelante (Forward-propagation)
En la primera capa
(17)
z1=W1x
La matriz W es de dimensión n1×n, donde
- el número de renglones n1 es neuronas de la capa oculta y
- el número de comumnas n es el número de neuronas en la capa anterior.
Luego pasa a la función de activación:
(18)
y1=ϕ(z1)
donde ϕ es vectorial (se aplica elemento a elemento) y que se aplica a cada elemento del vector y1. Resultando en un vector de la misma dimensión (el número de neuronas de la capa oculta).
En la segunda capa
(19)
z2=W2y1
La matriz W es de dimensión n2×n1, donde
- el número de renglones n2 es neuronas de la capa de interés
- el número de comumnas n1 es el número de neuronas en la capa anterior.
Luego pasa a la función de activación:
(20)
y2=ϕ(z1)
Pasando de una Muestra a n Muestras
La propagacición hacea adelante que revisamod la hicimos para un dato x.
Ahora consideremos que propagamos hacia a adelante toda la muestra X.
Definamos
Y0=def(X)T
Note que los datos estan ordenados por columna.
- La integración a la capa i-ésima se calcula
(21)
Zi+1=Wi+1Yi
- Activación (elemento a elemento)
(22)
Yi+1=ϕ(Zi+1)
Entrenamiento de una Red Múlticapa
-
Asumamos que la capa de salida es la k.
-
Luego, el dato (vector) x se propaga a través de la red y resulta en el vector de salida yk. El cual en la etapa anterior
se obtuvo de aplicar la función de activación: ϕ(zk)
donde previamente zk se calculó con
zk=Wk⊤yk−1
donde Wk denota la matriz de pesos de la capa (de salida) k,
cuyo elemento [wpq]k es el peso de la salida de la neurona p en la capa k−1 a la neurona q en la capa k
Propagacion hacia adelante de un dato
Integración en la primera capa.
Activación de la primera capa.
Propagación de la segunda capa
Propagación de la tercera capa
Función de Costo
Similar a la REGRESIÓN LOGISTICA, consideremos el costo en la etapa de salida
(23)
J(W)=21i∑[yi′log([yk]i)+(1−yi′)log(1−[yk]i)]
donde y′ es el la salida deseada para el dato x; recodemos que estamo en etapa de entrenamiento y hemos usamos como función de activación la Función Logística:
(24)
ϕ(z)=1+e−z1
que tienen forma de “S”.
Esta función de costo se conoce como la “entropía cruzada” o “cross-entropía” y se obtienen de la log-verosimilitud al asumir residuales con distribución Bernulli.
Elementos del gradiente c.r.a. los pesos de la capa de de salida
Tomando el gradiente, obtenemos las parciales, que es exactamente igual a la derivada parcial (10):
(25)
∂[wk]pq∂J(W)=[yk′−ϕ(zk)][yk−1]pq
donde
- [yk−1]pq es la salida de la capa k−1, neurona p que va a la neurona q de la capa k
Notemos que (25) tienen la forma de la regla de la cadena:
(26)
∂[wk]pq∂J(W)=∂zk∂J(W)∂[wk]pq∂zk
con
(27)
δk=def∂zk∂J(W)=yk′−ϕ(zk)
(28)
∂[wk]pq∂zk=[yk−1]pq
Dada la forma de la primera derivada parcial (27), a δk se le denomina “error”.
En la siguiente figura se muestra el caso de k=3.
Neurona en la capa oculta anterior, que tiene como salida y22
Cálculo de los demás elementos del gradiente
Las ecuaciones (25)-(28) muestran como calcular las derivadas parciales de las fucniín de costo (elementos del gradiente) c.r.a. los pesos de la capa de salida.
Para poder entrenar la red, necesitamos calcular el gradiente también en los pesos de las capas ocultas. Es decir, calcular las parciales:
∂[wl]pq∂J(W) para l=1,2,…,k−1,∀(p,q)
Elementos del gradiente en la penúltima capa (última oculta)
Usando las forma de la regla de la cadena
(29)
∂[wk−1]pq∂J(W)=∂zk−1∂J(W)∂[wk−1]pq∂zk−1
con
(29)
δk−1=def∂zk−1∂J(W)
(31)
∂[wk−1]pq∂zk−1=[yk−2]pq
Ahora, para calcular δk−1 usamos de nuevo la regla de la cadena
(32)
δk−1=∂zk∂J(W)∂zk−1∂zk=δk⊤Wk−1ϕ′(zk−1)
Para obtener ∂zk−1∂zk usamos:
zk=⎣⎢⎢⎢⎡zk,1zk,2⋮zk,N⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡wk−1,1⊤yk−1wk−1,2⊤yk−1⋮wk−1,N⊤yk−1⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡wk−1,1⊤ϕ(zk−1)wk−1,2⊤ϕ(zk−1)⋮wk−1,N⊤ϕ(zk−1)⎦⎥⎥⎥⎤=Wk−1ϕ(zk−1)
entonces
(33)
∂zk−1∂zk=Wk−1ϕ′(zk−1)
Elementos del gradiente en la Ante-Penúltima capa
Usando las forma de la regla de la cadena
(34)
∂[wk−2]pq∂J(W)=∂zk−2∂J(W)∂[wk−2]pq∂zk−2
con
(35)
δk−2=def∂zk−2∂J(W)
(36)
∂[wk−2]pq∂zk−2=[yk−3]pq
Ahora, para calcular δk−1 usamos de nuevo la regla de la cadena
(37)
δk−2=∂zk−1∂J(W)∂zk−2∂zk−1=δk−1⊤Wk−2ϕ′(zk−2)
Una vez calculado ∇WJ(i) para el dato (xi,yi) se actualizan los pesos:
(38)
wt+1=wt−α∇WJ(i)