Está en la página 1de 10

Curso: Tpicos en Inteligencia Artificial

Semestre: 2016-II
Autor: Kevin Christian Rodrguez Siu
Programa Profesional de Ciencia de la Computacin
Universidad Catlica San Pablo

Red Neuronal Perceptrn Multicapa y Algoritmo BackPropagation utilizando Operaciones de Matrices

Una forma de hacer la programacin de una Red Neuronal Perceptrn Multicapa es realizarla utilizando una serie
de opereaciones de matrices. Esto proviene desde el hecho de que las multiplicaciones que se pueden realizar
para el paso de informacin a travs de las neuronas pueden separase en forma de matrices tambin. Por ejemplo,
dada la Red Neuronal:
H1 w7
w1 w8 O1
I1 w2
w3 w9
H2 w10
w4
w5 O2
I2
w6
w11 w12
H3

b2
b1
1
1

Y recordando que tanto la capa oculta (Hidden, H) como la capa de salida (Output, O) tienen dos partes: Un NET,
que se da por la sumatoria de las entradas con los pesos y un OUT, que se da por la aplicacin de la funcin de
activacin a la parte NET. Calculando en este ejemplo como seran todos los valores NET, tendramos:

NET es resultado del clculo


H1 1 1 + 2 4 + 1 1
H2 1 2 + 2 5 + 1 1
H3 1 3 + 2 6 + 1 1
O1 1 7 + 2 9 + 3 11 + 1 2
O2 1 8 + 2 10 + 3 12 + 1 2

Entonces, podramos tener el siguiente clculo de matrices para la capa H:


1 2 3
[1 2 3 ]13 = [1 2 1]13 [4 5 6]
1 1 1 33

Y para la capa O, el clculo de matrices sera:


7 8
[1 2 ]12 = [1 2 3 1]14 [ 9 10]
11 12
2 2 42

Entonces, con este sencillo mtodo, cualquier paso hacia adelante puede ser modelado como la multiplicacin de
matrices de estos elementos. Simplemente para obtener los valores OUT deberamos aplicar la funcin de
activacin a cada elemento de las matrices con los valores NET.

Ahora, presta atencin a las dimensiones de las matrices que contienen los datos que queremos entrenar al hacer
BackPropagation (las matrices del final con los valores w) Si te das cuenta, sus dimensiones tienen algo en
particular.
Curso: Tpicos en Inteligencia Artificial
Semestre: 2016-II
Autor: Kevin Christian Rodrguez Siu
Programa Profesional de Ciencia de la Computacin
Universidad Catlica San Pablo

Dimensiones Significado
3x3 2 Neuronas en la capa I + 1 por el bias = 3
3 Neuronas en la capa H = 3
4x2 3 Neuronas en la capa H + 1 por el bias = 4
2 Neuronas en la capa O = 2

Entonces no olvides aumentar en uno el orden de las filas de la matriz con la que trabajas para tener en cuenta el
bias.

Ahora veremos el proceso completo utilizando la Red Neuronal Perceptrn Multicapa vista arriba: 1 Capa de
Entrada, 1 Capa Oculta y 1 Capa de Salida.

Requerimientos Necesarios:
Inputs: Una lista de entradas para la Red Neuronal.
Targets: Una lista de salidas esperadas para cada entrada de la lista anterior.
I: Nmero de neuronas en la capa de Entrada (Input, I)
H: Nmero de neuronas en la capa Oculta (Hidden, H)
O: Nmero de neuronas en la capa de Salida (Output, O)
wIH: Matriz con los pesos que van desde la capa de entrada a la capa oculta, de orden: I+1 x H
wHO: Matriz con los pesos que van desde la capa oculta hasta la capa de salida, de orden: H+1 x O
b1, b2: Valores para el bias de cada paso de capas (De entrada a oculta y de oculta a salida)
alfa (): Coeficiente de aprendizaje del algoritmo de BackPropagation.
f_activacion() o f(): Funcin de activacin elegida. En este ejemplo, toda la red tendr la misma
funcin de activacin.
d_activacion() o d(): La derivada de la funcin de activacin elegida. Igualmente, toda la red tendr la
misma funcin de activacin.
Proceso de Entrenamiento de BackPropagation:

Durante cada poca de la Red Neuronal (es decir, para cada iteracin donde se ven TODAS las entradas presentes
en Inputs) se debera cumplir el siguiente proceso para cada entrada:

1. El Paso Hacia Adelante (Forward Pass):


a. Multiplicacin de Matrices: Para una entrada determinada input determinamos la siguiente
matriz I basada en sus componentes que, para este ejemplo, son 2:

= [ 1 2]

Y tambin una matriz T basada en su respectivo target y sus componentes que, para este ejemplo,
tambin son 2:

= [1 2]

Ahora efectuaremos el paso de la Capa de Entrada para la Capa Oculta. Para esto, debemos crear
una nueva matriz, IExt (I Extendida) para que incluya el valor necesario para el bias.

= [1 2 1]
Curso: Tpicos en Inteligencia Artificial
Semestre: 2016-II
Autor: Kevin Christian Rodrguez Siu
Programa Profesional de Ciencia de la Computacin
Universidad Catlica San Pablo

Una vez realizado esto, podemos hacer el siguiente clculo de la matriz NET para la Capa Oculta:

Que, como hemos visto anteriormente, se traducira en:

1 2 3
[1 2 3 ] = [1 2 1] [4 5 6]
1 1 1

Y una vez hecho este clculo, podemos calcular la matriz OUT para la capa oculta:

= _( )

Que debera traducirse entonces en:

[1 2 3 ] = [( 1 ) ( 2 ) ( 3 )]

Ahora, nos toca hacer el pase de la Capa Oculta a la Capa de Salida. Para esto, necesitamos una
matriz HExt (H Extendida), que se va a basar en el resultado de la multiplicacin anterior de la
matriz OUT para la Capa Oculta y adicionndole el valor para el segundo bias.
= [1 2 3 1]

Una vez realizado esto, podemos hacer el siguiente clculo de la matriz NET para la Capa de
Salida:

Que, como hemos visto anteriormente, se traducira en:


7 8
[1 2 ] = [1 2 3 1] [ 9 10 ]
11 12
2 2

Y una vez hecho este clculo, podemos calcular la matriz OUT para la capa oculta:

= _( )

Que debera traducirse entonces en:

[1 2 ] = [(1 ) (2 )]

La prediccin entonces para la entrada contenida en la matriz I segn nuestra red neuronal estara
contenida en la matriz OUT de la capa Oculta, o OUTO.
Curso: Tpicos en Inteligencia Artificial
Semestre: 2016-II
Autor: Kevin Christian Rodrguez Siu
Programa Profesional de Ciencia de la Computacin
Universidad Catlica San Pablo

b. Clculo del Error Total: Para calcular el Error Total que ha cometido nuestra Red Neuronal,
debemos utilizar la matriz OUTO y la matriz T. Nuestra matriz Error entonces sera calculada de
la siguiente forma:

1
= ( )2
2
1 1
[1 2 ] = [ ( 1 1 )2 ( 2 2 )2 ]
2 2

Y, finalmente, el ErrorTotal se dara por la sumatoria de todos los elementos presentes en la matriz
Error.

= ()

2. El Paso Hacia Atrs (Backward Pass)


a. Clculo de las Gradientes de la Capa de Salida: Como se podra ver por la frmula original,
cada derivada parcial que deberamos calcular se puede calcular por regla de la cadena. Para los
pesos de esta parte (w7,w8,w9,w10,w11 y w12), vamos a calcular cada parte en la siguiente tabla:




2
1
( 1 ) 1 1 (7)0 (1 1 )
2 1
7 +0 _(1 ) +0+0+0
_(1 )
= 1 1 = 1 1
0+ 2
1
( 2 ) 1 (8)0 (2 2 )
2 2
8 1 _(2 ) +0+0+0
_(2 )
= 2 2 = 1 1
2
1
( 1 ) 1 0 + 2 (1 1 )
2 1 (9)0 + 0 + 0
9 +0 _(1 ) _(1 )
= 1 1 = 2 2
0+ 2
1
( 2 ) 0 + 2 (2 2 )
2 2 (10)0 + 0 + 0
10 1 _(2 ) _(2 )
= 2 2 = 2 2
2
1
( 1 ) 1 0 + 0 + 3 (1 1 )
2 1 (11)0 + 0
11 +0 _(1 ) _(1 )
= 1 1 = 3 3
0+ 2
1
( 2 ) 0 + 0 + 3 (2 2 )
2 2 (12)0 + 0
12 1 _(2 ) _(2 )
= 2 2 = 3 3

Como volvemos a tener bastantes elementos comunes, podramos calcular la siguiente matriz,
UpdHO (Update from Hidden to Output), de la siguiente forma:


= ( ( ( ) _( )) ( ) )

La cual, segn la siguiente demostracin, debera tener la siguiente forma:


Curso: Tpicos en Inteligencia Artificial
Semestre: 2016-II
Autor: Kevin Christian Rodrguez Siu
Programa Profesional de Ciencia de la Computacin
Universidad Catlica San Pablo


7 8

= ( ( ([1 2 ] [1 2 ] ) [(1 ) (2 )]) [1 2 3 ] )
9 10

[ 11 12 ]

7 8

= ( ( [1 1 2 2 ] [(1 ) (2 )]) [1 2 3 ] )
9 10

[ 11 12 ]

7 8

= ( ( [(1 1 ) (1 ) (2 2 ) (2 )]) [1 2 3 ] )
9 10

[ 11 12 ]

7 8

(1 1 ) (1 )
=([ ] [1 2 3 ])
9 10 (2 2 ) (2 )

[ 11 12 ]

7 8
(1 1) (1) 1 (1 1) (1) 2 (1 1) (1) 3
=([ ])
9 10 (2 2) (2) 1 (2 2) (2) 2 (2 2) (2) 3

[ 11 12 ]


7 8
(1 1 ) (1 ) 1 (2 2 ) (2 ) 1

= [(1 1 ) (1 ) 2 (2 2 ) (2 ) 2 ]
9 10
(1 1 ) (1 ) 3 (2 2 ) (2 ) 3

[ 11 12 ]

Ahora, una vez que tenemos la matriz UpdHO, debemos crear una matriz UpdHOExt (UpdHO
Extendida) para poder tener en cuenta el efecto del bias que, como sabemos que no se actualiza,
es 0.


7 8

= 9 10

11 12
[ 0 0 ]

Y ahora pasamos a calcular la actualizacin de la capa oculta, porque la actualizacin de los


pesos debe hacerse solamente al finalizar todos nuestros clculos.

b. Clculo de las Gradientes de la Capa Oculta: Ahora debemos calcular las derivadas parciales
para el resto de nuestros pesos (w1,w2,w3,w4,w5 y w6). Lo interesante es que cada peso de la
capa oculta contribuye a la salida (y por tanto, al error) de varias neuronas en la capa de salida.
Por tanto, sus derivadas deben tomar en cuenta su efecto en todas las otras neuronas.
Curso: Tpicos en Inteligencia Artificial
Semestre: 2016-II
Autor: Kevin Christian Rodrguez Siu
Programa Profesional de Ciencia de la Computacin
Universidad Catlica San Pablo




ErrorTotal E1 E2
= +
OUTH1 OUTH1 OUTH1
E1 E1 OUTO1 NETO1
=
OUTH1 OUTO1 NETO1 OUTH1
E1
= (OUTO1 T1 ) (1 ) 7 ( (OUTO1 T1 )
OUTH1
E2 E2 OUTO2 NETO2 (1 ) 7
=
OUTH1 OUTO2 NETO2 OUTH1 1 (1)0 + 0
+ (OUTO2 T2 )
1 E2
= (OUTO2 T2 ) (2 ) 8 _(1 ) +0
(2 ) 8 )
OUTH1
= 1
_(1 )
= (OUTO1 T1 )
1
(1 ) 7
+ (OUTO2 T2 )
(2 ) 8
ErrorTotal E1 E2
= +
OUTH2 OUTH2 OUTH2
E1 E1 OUTO1 NETO1
=
OUTH2 OUTO1 NETO1 OUTH2
E1
= (OUTO1 T1 ) (1 ) 9
OUTH2
E2 E2 OUTO2 NETO2
( (OUTO1 T1 )
=
OUTH2 OUTO2 NETO2 OUTH2 (1 ) 9
E2 1 (2)0 + 0
= (OUTO2 T2 ) (2 ) 10 + (OUTO2 T2 )
2 OUTH2 _(2 ) +0
(2 ) 10 )
= 1
= (OUTO1 T1 ) _(2 )
(1 ) 9 1
+ (OUTO2 T2 )
(2 ) 10

ErrorTotal E1 E2
= +
OUTH3 OUTH3 OUTH3
E1 E1 OUTO1 NETO1
=
OUTH3 OUTO1 NETO1 OUTH3
E1
= (OUTO1 T1 ) (1 ) 11 ( (OUTO1 T1 )
OUTH3
E2 E2 OUTO2 NETO2 (1 ) 11
=
OUTH3 OUTO2 NETO2 OUTH3 1 (3)0 + 0
+ (OUTO2 T2 )
3 E2
= (OUTO2 T2 ) (2 ) 12 _(3 ) +0
(2 ) 12 )
OUTH3
= 1
_(3 )
= (OUTO1 T1 )
1
(1 ) 11
+ (OUTO2 T2 )
(2 ) 12
ErrorTotal E1 E2
= +
OUTH1 OUTH1 OUTH1
E1 E1 OUTO1 NETO1
=
OUTH1 OUTO1 NETO1 OUTH1
E1
= (OUTO1 T1 ) (1 ) 7 ( (OUTO1 T1 )
OUTH1
E2 E2 OUTO2 NETO2 (1 ) 7
=
OUTH1 OUTO2 NETO2 OUTH1 0 + 2 (4)0
+ (OUTO2 T2 )
4 E2
= (OUTO2 T2 ) (2 ) 8 _(1 ) +0
(2 ) 8 )
OUTH1
= 2
_(1 )
= (OUTO1 T1 )
2
(1 ) 7
+ (OUTO2 T2 )
(2 ) 8
ErrorTotal E1 E2
= +
OUTH2 OUTH2 OUTH2
E1 E1 OUTO1 NETO1
=
OUTH2 OUTO1 NETO1 OUTH2
E1
= (OUTO1 T1 ) (1 ) 9 ( (OUTO1 T1 )
OUTH2
E2
=
E2

OUTO2 NETO2
0
(1 ) 9
OUTH2 OUTO2 NETO2 OUTH2 0 + 2 (5)
+ (OUTO2 T2 )
5 E2
= (OUTO2 T2 ) (2 ) 10 _(2 ) +0
(2 ) 10 )
OUTH2
= 2
_(2 )
= (OUTO1 T1 )
2
(1 ) 9
+ (OUTO2 T2 )
(2 ) 10
Curso: Tpicos en Inteligencia Artificial
Semestre: 2016-II
Autor: Kevin Christian Rodrguez Siu
Programa Profesional de Ciencia de la Computacin
Universidad Catlica San Pablo

ErrorTotal E1 E2
= +
OUTH3 OUTH3 OUTH3
E1 E1 OUTO1 NETO1
=
OUTH3 OUTO1 NETO1 OUTH3
E1
= (OUTO1 T1 ) (1 ) 11 ( (OUTO1 T1 )
OUTH3
E2 E2 OUTO2 NETO2 (1 ) 11
=
OUTH3 OUTO2 NETO2 OUTH3 0 + 2 (6)0
+ (OUTO2 T2 )
6 E2
= (OUTO2 T2 ) (2 ) 12 _(3 ) +0
(2 ) 12 )
OUTH3
= 2
_(3 )
= (OUTO1 T1 )
2
(1 ) 11
+ (OUTO2 T2 )
(2 ) 12

Como podemos ver, tenemos un gran nmero de elementos comunes y de clculos que podemos
reusar del paso anterior. Podramos calcular la siguiente matriz, UpdIH (Update from Input to
Hidden), de la siguiente forma:

= ((((( ) _( )) ( )(32) )

_( )) )

Veamos cmo sera entonces el proceso de este clculo para ver la forma que toma la matriz.


1 2 3

[ 4 5 6 ]

7 8
= (([1 2 ] [1 2 ]) [(1 ) (2 )]) (([ 9 10 ]) )
11 12
2 2 (32)
((( )

[(1 ) (2 ) (3 )] [1 2 ]

) )


1 2 3

[ 4 5 6 ]

7 9 11 2
= (((([1 1 2 2 ] [(1 ) (2 )]) ([ ]) )
8 10 12 2 (32)

[(1 ) (2 ) (3 )]) [1 2 ])


1 2 3

[ 4 5 6 ]
7 9 11
= ((([(1 1 ) (1 ) (2 2 ) (2 )] [ ])
8 10 12

[(1 ) (2 ) (3 )]) [1 2 ])
Curso: Tpicos en Inteligencia Artificial
Semestre: 2016-II
Autor: Kevin Christian Rodrguez Siu
Programa Profesional de Ciencia de la Computacin
Universidad Catlica San Pablo


1 2 3

[ 4 5 6 ]

(1 1 ) (1 ) 7 + (2 2 ) (2 ) 8
= (([ (1 1 ) (1 ) 9 + (2 2 ) (2 ) 10 ] [(1 ) (2 ) (3 )]) [1 2 ])
(1 1 ) (1 ) 11 + (2 2 ) (2 ) 12


{(1 1 ) (1 ) 7 + (2 2 ) (2 ) 8} (1 )
1 2 3
= (([ {(1 1 ) (1 ) 9 + (2 2 ) (2 ) 10} (2 ) ]) [1 2 ])

{(1 1 ) (1 ) 11 + (2 2 ) (2 ) 12} (3 )
[ 4 5 6 ]


1 2 3

[ 4 5 6 ]

{(1 1 ) (1 ) 7 + (2 2 ) (2 ) 8} (1 ) 1 {(1 1 ) (1 ) 7 + (2 2 ) (2 ) 8} (1 ) 2
= ([ {(1 1 ) (1 ) 9 + (2 2 ) (2 ) 10} (2 ) 1 {(1 1 ) (1 ) 9 + (2 2 ) (2 ) 10} (2 ) 2 ])
{(1 1 ) (1 ) 11 + (2 2 ) (2 ) 12} (3 ) 1 {(1 1 ) (1 ) 11 + (2 2 ) (2 ) 12} (3 ) 2


1 2 3

[ 4 5 6 ]
{(1 1) (1) 7 + (2 2) (2) 8} (1) 1 {(1 1) (1) 9 + (2 2) (2) 10} (2) 1 {(1 1) (1) 11 + (2 2) (2) 12} (3) 1
= [ ]
{(1 1) (1) 7 + (2 2) (2) 8} (1) 2 {(1 1) (1) 9 + (2 2) (2) 10} (2) 2 {(1 1) (1) 11 + (2 2) (2 ) 12} (3) 2
Curso: Tpicos en Inteligencia Artificial
Semestre: 2016-II
Autor: Kevin Christian Rodrguez Siu
Programa Profesional de Ciencia de la Computacin
Universidad Catlica San Pablo

Ahora, una vez que tenemos la matriz UpdIH, debemos crear una matriz UpdIHExt (UpdIH
Extendida) para poder tener en cuenta el efecto del bias que, como sabemos que no se actualiza,
es 0.


1 2 3
=
4 5 6
[ 0 0 0 ]

3. Actualizacin de los Pesos:

Primero debemos actualizar la matriz wHO, para lo cual usamos la siguiente frmula:

Que se traducira en:


7 8
7 8 7 8

[ 9 10] = [ 9 10]
9 10
11 12 11 12

2 2 2 2
11 12
[ 0 0 ]


7 8
7 8 7 8

[ 9 10] = [ 9 10]
9 10
11 12 11 12

2 2 2 2
11 12
[ 0 0 ]

7 8
7 8
7 8
[ 9 10 ]= 9 10
9 10
11 12

2 2 11
11 12 12
[ 2 0 2 0 ]

Y ahora, debemos actualizar la matriz wIH, para lo cual usamos la siguiente frmula:

= +

Que se traducira en:


Curso: Tpicos en Inteligencia Artificial
Semestre: 2016-II
Autor: Kevin Christian Rodrguez Siu
Programa Profesional de Ciencia de la Computacin
Universidad Catlica San Pablo


1 2 3 1 2 3 1 2 3
[4 5 6] = [4 5 6]
1 1 1 1 1 1 4 5 6
[ 0 0 0 ]



1 2 3 1 2 3 1 2 3
[4 5 6] = [4 5 6]
1 1 1 1 1 1
4 5 6
[ 0 0 0 ]


1 2 3
1 2 3 1 2 3
[4 5 6] =
1 1 1 4 5 6
4 5 6
[ 1 0 1 0 1 0 ]

Y listo! Ahora tienes una Red Neuronal Perceptrn Multicapa y su respectivo entrenamiento usando el algoritmo
BackPropagation usando slo operaciones con matrices.
Para su consideracin:
Cmo sera este proceso si es que tuviramos una Red Neuronal Perceptrn de 4 capas (1 Entrada, 2
Ocultas y 1 de Salida? Cmo seran las dimensiones de las matrices con las que tendras que trabajar?
Qu cambiara en el proceso?
Qu deberas tener en cuenta si decidieras usar dos funciones de activacin distintas (una para el OUT
de la capa oculta y otra para el OUT de la capa de salida)? Qu cambiara en el proceso presentado aqu?
Cmo crees que debera ser el proceso si, en lugar de hacer el clculo del error y la actualizacin de
neuronas por cada entrada, el aprendizaje fuera en batch o con un error general dado por todos los errores
calculados? Este proceso sera ms rpido o ms lento? Qu ventajas o desventajas crees que pueda
tener?

También podría gustarte