Revolución IA

La Inteligencia Artificial está llamada a protagonizar la próxima Revolución tecnológica

Inicio Sobre Revolucionia Temas Para saber más Contacto

Algoritmo Back-Propagation (II)

Fernando P.    24/11/2017

Temas:  Fundamentos

Segundo artículo de la serie dedicada a describir el algoritmo Back-Propagation usado para entrenar de forma supervisada perceptrones multicapa o, en general, redes neuronales artificiales orientadas hacia adelante.

En este caso, vamos a calcular las expresiones exactas para la Regla Delta Generalizada que se obtienen en el caso de un perceptrón con dos capas y funciones de activación logísticas.

Un perceptrón de dos capas
En la entrega anterior de esta serie de artículos, se describió el esquema general del algoritmo Back-Propagation. Pero no se dieron expresiones exactas para calcular la actualización de los pesos entre conexiones de neuronas (usando la Regla Delta Generalizada) dentro de cada iteración del algoritmo.

Esto es así porque cada topología de red resulta en unas expresiones diferentes. Cuanto más compleja es la red más complejas son las expresiones y es fácil que no merezca la pena calcular expresiones exactas para el gradiente de la función de coste de la red y sea necesario aproximarlo numéricamente.

Pero sí que es relativamente sencillo calcular estas expresiones para el caso de un perceptrón con dos capas.
Capa 2 en perceptrón Back-Propagation
En teoría, un perceptrón de dos capas es capaz de representar la mayor parte de clasificadores que deseemos construir, aunque en la práctica el asunto es más complejo.

En cualquier caso, desde un punto de vista estríctamente teórico, calculando las expresiones exactas correspondientes a la Regla Delta Generalizada para una de estas redes podemos decir que tenemos completamente descrito el algoritmo Back-Propagation.

De forma que vamos a calcular las expresiones exactas para la Regla Delta Generalizada en un perceptrón de dos capas con las siguientes características:

Perceptrón con casos de entrada en  n  y clases de salida en  m

Primera capa de neuronas con  p  neuronas, toma caso de entrada en  n

Segunda capa de neuronas con  m  neuronas, proporciona clase de salida en  m

La arquitectura general del perceptrón que vamos a usar se puede ver en la ilustración adjunta. Se trata de un caso bastante general de perceptrón con dos capas.

Función de activación
Un elemento clave del diseño de un perceptrón multicapa es la función de activación. En general, si tenemos libertad para elegir una función de activación en cada neurona de la red, se verifica que un perceptrón de sólo dos capas puede representar cualquier clasificador.

En la práctica esto no es tan fácil. El cálculo de las expresiones exactas para la Regla Delta Generalizada depende de la función de activación elegida y es fácil que aparezcan problemas si hemos elegido una función de activación que no sea la función Logística.

De forma que vamos a imponer la función Logística con parámetro  c = 1  para nuestro perceptrón. La función Logística tiene una propiedad muy valiosa que nos va a permitir calcular fácilmente las expresiones exactas para la Regla Delta Generalizada:

La expresión de la función Logística es   S(x) = 1 / (1 + e-x)

Se verifica que   S'(x)  =  S(x) ⋅ (1 - S(x))

Es decir, la derivada de la función Logística se puede escribir fácilmente como función de la propia función Logística.

Ciertamente, al imponer la función Logística como función de activación en nuestro perceptrón estamos perdiendo generalidad. Pero la función Logística es una buena elección para la mayor parte de clasificadores y, en todo caso, lo importante es ver cómo se procede para calcular las expresiones exactas de la Regla Delta Generalizada usando una función de activación concreta (que nos beneficia en ste caso). Nada impide recalcular estas expresiones para otra función de activación más específica.

Pares de entrenamiento
Vamos a calcular las expresiones exactas de la Regla Delta Generalizada en el caso más sencillo que consiste en optimizar la función de coste del perceptrón con un par de entrenamiento cada vez.

En principio, no es la aproximación que nos asegura convergencia para el algoritmo. Pero calcular expresiones exactas para la función de coste completa (con todos los pares de entrenamiento) puede ser realmente complejo. De nuevo, lo fundamental es ver cómo se ha de proceder para calcular las expresiones en un caso concreto sencillo y quizá sea posible calcularlas también usando más de un par de entrenamiento en la función de coste en problemas concretos.

Como vamos a optimizar la función de coste con un par de entrenamiento cada vez, sólo necesitamos uno de estos pares para realizar el cálculo. Así que, disponemos de un caso de entrada  x = (x1 … xn)  al que corresponde una clase de salida  y = (y1 … ym)

Elementos de la red
A continuación, vamos a introducir la notación que usaremos para describir los elementos de nuestro perceptrón de dos capas tal y como se encuentran en una iteración genérica  t  del algoritmo Back-Propagation:

Sea  A = (aij)   i=1…n   j=1…p  matriz que define los pesos de las conexiones entre la entrada y las neuronas de la primera capa. Cada columna de  A  representa los pesos de una de las  p  neuronas que hay en la primera capa

Sea  t1 : pp  tal que  t1(u1…up) = (S(u1)…S(up))

Una vez presentado el caso  x  a la red, obtenemos  Q  =  xtA  =  (q1…qp)

Y aplicando la función de activación obtenemos  B  =  t1(Q)  =  (b1…bp) = (S(q1)…S(qp))

Por otro lado, sea  C = (cij)   i=1…p   j=1…m  matriz que define los pesos de las conexiones entre la primera capa y la segunda capa de neuronas. Cada columna de  C  representa los pesos de una de las  m  neuronas que hay en la segunda capa

Sea  O  =  BC  =  (o1…om)

Sea también  t2 : mm  tal que  t2(v1…vm) = (S(v1)…S(vm))

Propagando la salida de la primera capa de neuronas por la segunda obtenemos la salida de la red, que será  z  =  t2(O)  =  (z1…zm)  =  (S(o1)…S(om))

Función de coste de red
Como función de coste para nuestro perceptrón vamos a usar el criterio de mínimos cuadrados que ya vimos al tratar específicamente este tema.

La forma exacta de la función de coste, para la iteración  t, que vamos a usar es la siguiente:

E  =  1/2 ⋅ ∑i (yi-zi)2

El factor  1/2  se introduce por conveniencia para el cálculo posterior, pero no altera la naturaleza de la función de coste.

Cálculo de la expresión exacta de la Regla Delta Generalizada Algoritmo Back-Propagation
En la primera parte del artículo, habíamos visto que la Regla Delta Generalizada establecía un mecanismo para actualizar los pesos de la red en cada iteración del algoritmo de la siguiente forma:

Sea  wθ  uno de los pesos de la red

En la iteración  t + 1, este peso  w  deberá ser modificado en la forma

Δw  =  -η ⋅ ∂Eθ(t) / ∂w

Ciertamente, necesitamos calcular la derivada parcial de la función de coste respecto a cada peso de conexiones entre neuronas para tener la expresión exacta de la Regla Delta Generalizada.

En esta entrega vamos a calcularlo para los pesos en las conexiones entre la primera y la segunda capa, que es la parte más sencilla.

Sea  cij  el peso que hay entre la neurona  i  de la primera capa y la neurona  j  de la segunda capa. La derivada de la función de coste respecto a este peso se calcula de la siguiente forma:

E / ∂cij  =  -(yj-zj) ⋅ ∂zj / ∂cij

... debido a que el peso  cij  sólo afecta al término  j  del sumatorio en la función de coste

Ahora, usando la regla de la cadena, tenemos que   ∂zj / ∂cij  =   ∂zj / ∂oj ⋅ ∂oj / ∂cij

El primer término es la derivada de la función de activación, que usando la propiedad mencionada de la función Logistica resulta   ∂zj / ∂oj = zj ⋅ (1-zj)

Para el segundo término se verifica que   ∂oj / ∂cij = bi

Es decir, resulta   E / ∂cij  =  -(yj-zj) ⋅ zj ⋅ (1-zj) ⋅ bi

En estas condiciones, la Regla Delta Generalizada para calcular el valor del peso  cij  en la iteración  t+1  quedaría de la siguiente forma:

Δcij  =  η ⋅ (yj-zj) ⋅ zj ⋅ (1-zj) ⋅ bi

Cálculo para los pesos en conexiones que llegan a la primera capa
Para dar por completado el cálculo de las expresiones exactas de la Regla Delta Generalizada, nos resta por calcular las derivadas parciales de la función de coste respecto a los pesos en las conexiones que llegan a la primera capa de neuronas.

Se trata de un proceso similar al visto aquí para la segunda capa, pero más largo. Este cálculo queda para la siguiente entrega de la serie de artículos sobre el algoritmo Back-Propagation.



Con ciertas simplificaciones, es posible calcular las expresiones exactas para la Regla Delta Generalizada en el caso de un perceptrón con dos capas. En el caso de los pesos sobre conexiones entre la primera y segunda capa el cálculo es bastante sencillo.



Para saber más:

Libro de Philip D. Wasserman sobre redes neuronales artificiales orientadas hacia adelante. Es un libro sencillo pero suficientemente riguroso. El capítulo 3 trata sobre el algoritmo Back-Propagation.

Libro de Russell Reed y Robert J Marks dedicado a redes neuronales artificiales orientadas hacia adelante. El capítulo 5 introduce el algoritmo Back-Propagation y el resto del libro está dedicado a estudiar variaciones y refinamientos del algoritmo.



 

Inicio Powered by NetBSD
 
HTML5
 
En general, todo el contenido de este sitio web es original, salvo referencias o enlaces a otros sitios web y citas o reproducciones expresamente presentadas como tales.

No está permitida la reproducción ni la copia del contenido de este sitio web sin el permiso expreso de la propiedad del mismo.

Este sitio web no utiliza cookies ni ningún otro mecanismo para almacenar información en los navegadores de los visitantes ni para realizar seguimiento de los mismos.

2017,2018 Revolucionia.net
Sobre Revolucionia
Temas
Para saber más
Contacto