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.
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 : ℜp→ℜp tal que
t1(u1…up) =
(S(u1)…S(up))
Una vez presentado el caso x a la red, obtenemos
Q = xt ⋅ A = (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 = B ⋅ C = (o1…om)
Sea también t2 : ℜm→ℜm 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
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 |
![]() ![]() |
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 |