Redes Neuronales Artificiales

Mariano Rivera

Mayo 2017

Haremos una revisión rápida de los modelos

  1. Perceptrón

  2. Red de una capa: Neurona Lineal Adaptativa o ADAptive LInear NEuron (ADALINE)

  3. La Multicapa

En cada caso revisaremos su algoritmo de entrenamiento

El Perceptrón

[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:

  1. Las señales se ingresan a la neuraona a través de la dendrita.

  2. Se integran en el cuerpo (soma) de la neurona.

  3. Si la señal acumulada sobrepasa un umbral, la neurona se activa y dispara una señal a través de al axón

  4. 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)

alt text

Rosemblatt propone el concepto de la Regla de Aprendizaje del Perceptrón basada en el modelo de la neurona de MCP.

Sean xRn\mathbf{x} \in \mathbb{R}^n representa los un dato en coordenadas homogéneas (le hemos añadido un 1 al frente) y wRn\mathbf{w} \in \mathbb{R}^n el vector de coeficientes:

(1)
x=[1x1x2xn1],                w=[w0w1w2wn1] \mathbf{x} = \begin{bmatrix} 1 \\ x_1 \\ x_2 \\ \vdots \\ x_{n-1} \end{bmatrix}, \;\;\;\; \;\;\;\; \mathbf{w} = \begin{bmatrix} w_0 \\ w_1 \\ w_2 \\ \vdots \\ w_{n-1} \end{bmatrix}

Tal que xiRn\mathbf{x}_i \in \mathbb{R}^n es el ii-ésimo dato, para i=1,2,,mi= 1,2,\ldots,m con yi{1,+1}{y}_i \in \{-1,+1 \} la clase es el ii-ésimo dato, para i=1,2,,mi= 1,2,\ldots,m.

Luego, denotamos el producto interior por

(2)
z=wx \mathbf{z} = \mathbf{w}^\top \mathbf{x}
y la neurona se activará (preferirá la clase +1+1) si el producto es mayor que cero, en otro caso no se activará (predecirá la clase 1-1):

(3)
ϕ(z)=def{+1z01otro \phi(\mathbf{z}) \overset{def}{=} \left\{ \begin{matrix} +1 & z \ge 0 \\ -1 & \text{otro} \end{matrix} \right.


Algoritmo del Perceptrón

Sean (xi,yi)\mathbf{x}_i, y_i) pares de dato y su respectiva clase, para i=1,2,,mi= 1,2,\ldots,m. Luego

  1. Inicialice los pesos ww con valores aleatorios pequeños: wj0|w_j| \approx 0 para j=1,2,,nj=1,2,\ldots,n.

  2. Iterar para i=1,2,,mi=1,2,\ldots, m (para todas las muestras)

                \;\;\;\;\;\;\;\; 2.1 Calcular la salida

(4)
yi=ϕ(wxi) y'_i = \phi(\mathbf{w}^\top \mathbf{x}_i)
                \;\;\;\;\;\;\;\; 2.1 Actualizar el vector de peso

(5)
ww+α (yiyi) xi \mathbf{ w} \leftarrow \mathbf{ w} + \alpha \, ( y_i - y'_i )\,\mathbf{x}_i
                        \;\;\;\;\;\;\;\;\;\;\;\; donde α\alpha es conocida como la razón de aprendizaje.


La idea de la regla de aprendizaje del perceptrón es muy básica:

                wxi>0\;\;\;\;\;\;\;\; \mathbf{w}^\top \mathbf{x}_i >0 si yi=+1y_i =+1

                wxi<0\;\;\;\;\;\;\;\; \mathbf{w}^\top \mathbf{x}_i <0 si yi=1y_i =-1

En la siguiente figura, se muestra un vector w\mathbf{w} que satisface la respuesta correcta para todos los puntos.

alt text

En la ilustración de la figura anterior, wx{\bf w}^\top x es un plano que intersecta el plano de los datos en la línea punteada. Ajustar el valor de w0w_0 corresponde gráficamente a modificar el origen del vector w\mathbf{w}.

Neurona Lineal Adaptable

ADALINE: ADAptive LInear NEuron

(6)
ϕWH(wxi)=defwxi \phi_{WH}(\mathbf{w}^\top \mathbf{x}_i) \overset{def}{=} \mathbf{w}^\top \mathbf{x}_i

[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
alt text

Función de costo ADALINE

La función de costo de ADALINE como sigue:

(7)
w=argminw  J(w)=12i[yiϕ(wxi)]2 \mathbf{w}^* = \underset{\mathbf{w}}{\arg \min} \; J(\mathbf{w}) = \frac{1}{2} \sum_i \left[ y_i - \phi(\mathbf{w}^\top \mathbf{x}_i) \right]^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)
wwαJ(w) \mathbf{w} \leftarrow \mathbf{w} - \alpha \nabla J(\mathbf{w})

donde α\alpha es el tamaño de paso y

(9)
J(w)=[w0J(w)w1J(w)wn1J(w)] \nabla J(\mathbf{w}) = \begin{bmatrix} \frac{\partial }{\partial {w_0} } J(\mathbf{w}) \\ \frac{\partial }{\partial {w}_1} J(\mathbf{w}) \\ \vdots \\ \frac{\partial }{\partial {w}_{n-1}} J(\mathbf{w}) \end{bmatrix}
con
(10)
wjJ(w)=i[yiϕ(wxi)]xij \frac{\partial }{\partial w_j} J(\mathbf{w}) = \sum_i \left[ y_i - \phi(\mathbf{w}^\top \mathbf{x}_i) \right] x_{ij}

donde

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.

        \;\;\;\;- 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
alt text

El problema es

Considere la primera capa del diagrama de la red multicapa lineal:
alt text

Primera capa:

(11)
y1k=w1kx      para    k=1,2,3,K y'_{1k} = \mathbf{w}_{1k}^\top x \;\;\;\text{para}\;\; k = 1,2,3, K \\
En forma matricial

(12)
y1=W1x \mathbf{y}_1 = W_1 x
Segunda capa:

(13)
y2=W2y1 \mathbf{y}_2 = W_2 \mathbf{y}_1
y para la cuarta capa tendremos:

(14)
y4=W4y3=W4W3W2W1x=Wx \mathbf{y}'_4 = W_4 \mathbf{y}_3 = W_4 W_3 W_2 W_1 \mathbf{x} = W \mathbf{x}

donde

(15)
y4=W4W3W2W1x=Wx \mathbf{y}'_4 = W_4 W_3 W_2 W_1 \mathbf{x} = W \mathbf{x}

(16)
y4=Φ(W4Φ(W3(Φ(W2Φ(W1x))))) \mathbf{y}'_4 = \Phi\left(W_4 \Phi\left(W_3 \left( \Phi \left(W_2 \Phi(W_1 \mathbf{x} ) \right) \right) \right) \right)

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
alt text

Una red completa con una capa de entrada, capa oculta y capa de salida se muestra en la figura siguente
alt text

Propagación hacia adelante (Forward-propagation)

En la primera capa

(17)
z1=W1x \mathbf{z}_1 = W_1 \mathbf{x}
La matriz WW es de dimensión n1×nn_1 \times n, donde

Luego pasa a la función de activación:

(18)
y1=ϕ(z1) \mathbf{y}_1 = \phi ( \mathbf{z}_1 )
donde ϕ\phi es vectorial (se aplica elemento a elemento) y que se aplica a cada elemento del vector y1\mathbf{y}_1. 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 \mathbf{z}_2 = W_2 \mathbf{y}_1
La matriz WW es de dimensión n2×n1n_2 \times n_1, donde

Luego pasa a la función de activación:

(20)
y2=ϕ(z1) \mathbf{y}_2 = \phi ( \mathbf{z}_1 )

Pasando de una Muestra a n Muestras

La propagacición hacea adelante que revisamod la hicimos para un dato x\mathbf{x}.

Ahora consideremos que propagamos hacia a adelante toda la muestra X\mathbf{X}.

Definamos
Y0=def(X)T \mathbf{Y}_0 \overset{def}{=} (\mathbf{X})^T
Note que los datos estan ordenados por columna.

(21)
Zi+1=Wi+1Yi \mathbf{Z}_{i+1} = W_{i+1} \mathbf{Y}_i

(22)
Yi+1=ϕ(Zi+1) \mathbf{Y}_{i+1} = \phi(\mathbf{Z}_{i+1})

Entrenamiento de una Red Múlticapa

se obtuvo de aplicar la función de activación: ϕ(zk)\phi(\mathbf{z}_k)

donde previamente zk\mathbf{z}_k se calculó con
zk=Wkyk1 \mathbf{z}_k = \mathbf{W}_k^\top \mathbf{y}_{k-1}

donde Wk\mathbf{W}_k denota la matriz de pesos de la capa (de salida) kk,

cuyo elemento [wpq]k[\mathbf{w}_{pq}]_k es el peso de la salida de la neurona pp en la capa k1k-1 a la neurona qq en la capa kk

Propagacion hacia adelante de un dato

Integración en la primera capa.
alt text

Activación de la primera capa.
alt text

Propagación de la segunda capa
alt text

Propagación de la tercera capa
alt text

Función de Costo

Similar a la REGRESIÓN LOGISTICA, consideremos el costo en la etapa de salida

(23)
J(W)=12i[yi log([yk]i)+(1yi) log(1[yk]i)] J(\mathbf{W}) = \frac{1}{2} \sum_i \left[ \mathbf{y}'_i \,\log ([\mathbf{y}_k]_i) + (1-\mathbf{y}'_i) \, \log (1-[\mathbf{y}_k]_i) \right]

donde y\mathbf{y}' es el la salida deseada para el dato x\mathbf{x}; recodemos que estamo en etapa de entrenamiento y hemos usamos como función de activación la Función Logística:

(24)
ϕ(z)=11+ez \phi(z) = \frac{1}{1+ e^{-z}}
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)
J(W)[wk]pq=[ykϕ(zk)][yk1]pq \frac{\partial J(\mathbf{W})}{\partial [\mathbf{w}_{k}]_{pq}} = \left[ \mathbf{y}'_k - \phi(\mathbf{z}_k) \right] [\mathbf{y}_{k-1}]_{pq}
donde


Notemos que (25) tienen la forma de la regla de la cadena:

(26)
J(W)[wk]pq=J(W)zk  zk[wk]pq \frac{\partial J(\mathbf{W})}{\partial [\mathbf{w}_{k}]_{pq}} = \frac{\partial J(\mathbf{W})}{\partial \mathbf{z}_{k}} \; \frac{\partial \mathbf{z}_{k}}{\partial [\mathbf{w}_{k}]_{pq}}
con

(27)
δk=defJ(W)zk=ykϕ(zk) \delta_k \overset{def}{=} \frac{\partial J(\mathbf{W})}{\partial \mathbf{z}_{k}} = \mathbf{y}'_k - \phi(\mathbf{z}_k)

(28)
zk[wk]pq=[yk1]pq \frac{\partial \mathbf{z}_{k}}{\partial [\mathbf{w}_{k}]_{pq}} = [\mathbf{y}_{k-1}]_{pq}
Dada la forma de la primera derivada parcial (27), a δk\delta_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 y22y_{22}
alt text

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:
J(W)[wl]pq         para         l=1,2,,k1,(p,q) \frac{\partial J(\mathbf{W})}{\partial [\mathbf{w}_{l}]_{pq}} \;\;\;\;\text{ para }\;\;\;\; l=1,2,\ldots,k-1, \forall (p,q)

Elementos del gradiente en la penúltima capa (última oculta)

Usando las forma de la regla de la cadena

(29)
J(W)[wk1]pq=J(W)zk1 zk1[wk1]pq \frac{\partial J(\mathbf{W})}{\partial [\mathbf{w}_{k-1}]_{pq}} = \frac{\partial J(\mathbf{W})}{\partial \mathbf{z}_{k-1}} \, %\frac{\partial \mathbf{z}_{k}}{\partial [\mathbf{z}_{k-1}]_{pq}} \, \frac{\partial \mathbf{z}_{k-1}}{\partial [\mathbf{w}_{k-1}]_{pq}}

con

(29)
δk1=defJ(W)zk1 \delta_{k-1} \overset{def}{=} \frac{\partial J(\mathbf{W})}{\partial \mathbf{z}_{k-1}}

(31)
zk1[wk1]pq=[yk2]pq \frac{\partial \mathbf{z}_{k-1}}{\partial [\mathbf{w}_{k-1}]_{pq}} = [\mathbf{y}_{k-2}]_{pq}
Ahora, para calcular δk1\delta_{k-1} usamos de nuevo la regla de la cadena

(32)
δk1=J(W)zk zkzk1= δk Wk1 ϕ(zk1) \delta_{k-1} = \frac{\partial J(\mathbf{W})}{\partial \mathbf{z}_{k}} \, \frac{\partial \mathbf{z}_{k}}{\partial \mathbf{z}_{k-1}} = \, \delta_k^\top \, \mathbf{W}_{k-1} \, \phi' ( \mathbf{z}_{k-1} )

Para obtener zkzk1\frac{\partial \mathbf{z}_{k}}{\partial \mathbf{z}_{k-1}} usamos:

zk=[zk,1zk,2zk,N]=[wk1,1yk1wk1,2yk1wk1,Nyk1]=[wk1,1ϕ(zk1)wk1,2ϕ(zk1)wk1,Nϕ(zk1)]=Wk1ϕ(zk1) {\bf z}_{k} = \begin{bmatrix} {z}_{k,1} \\ {z}_{k,2} \\ \vdots \\ {z}_{k,N} \end{bmatrix} = \begin{bmatrix} {\bf w}_{k-1,1}^\top {\bf y}_{k-1} \\ {\bf w}_{k-1,2}^\top {\bf y}_{k-1} \\ \vdots \\ {\bf w}_{k-1,N}^\top {\bf y}_{k-1} \end{bmatrix} = \begin{bmatrix} {\bf w}_{k-1,1}^\top \phi ( {\bf z}_{k-1} ) \\ {\bf w}_{k-1,2}^\top \phi ( {\bf z}_{k-1} ) \\ \vdots \\ {\bf w}_{k-1,N}^\top \phi ({\bf z}_{k-1} ) \end{bmatrix} = {\bf W}_{k-1} \phi ( {\bf z}_{k-1} )

entonces

(33)
zkzk1=Wk1 ϕ(zk1) \frac{\partial \mathbf{z}_{k}}{\partial \mathbf{z}_{k-1}} = \mathbf{W}_{k-1} \, \phi' ( \mathbf{z}_{k-1} )

Elementos del gradiente en la Ante-Penúltima capa

Usando las forma de la regla de la cadena

(34)
J(W)[wk2]pq=J(W)zk2 zk2[wk2]pq \frac{\partial J(\mathbf{W})}{\partial [\mathbf{w}_{k-2}]_{pq}} = \frac{\partial J(\mathbf{W})}{\partial \mathbf{z}_{k-2}} \, \frac{\partial \mathbf{z}_{k-2}}{\partial [\mathbf{w}_{k-2}]_{pq}}
con

(35)
δk2=defJ(W)zk2 \delta_{k-2} \overset{def}{=} \frac{\partial J(\mathbf{W})}{\partial \mathbf{z}_{k-2}}

(36)
zk2[wk2]pq=[yk3]pq \frac{\partial \mathbf{z}_{k-2}}{\partial [\mathbf{w}_{k-2}]_{pq}} = [\mathbf{y}_{k-3}]_{pq}

Ahora, para calcular δk1\delta_{k-1} usamos de nuevo la regla de la cadena

(37)
δk2=J(W)zk1 zk1zk2= δk1 Wk2 ϕ(zk2) \delta_{k-2} = \frac{\partial J(\mathbf{W})}{\partial \mathbf{z}_{k-1}} \, \frac{\partial \mathbf{z}_{k-1}}{\partial \mathbf{z}_{k-2}} = \, \delta_{k-1}^\top \, \mathbf{W}_{k-2} \, \phi' ( \mathbf{z}_{k-2} )

Una vez calculado WJ(i)\nabla_{\bf W} J^{(i)} para el dato (xi,yi)(x_i, y_i) se actualizan los pesos:

(38)
wt+1=wtαWJ(i) w^{t+1} = w^t - \alpha \nabla_{\mathbf{W} }J^{(i)}