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

Back-Propagation: escalado de los valores de salida

Fernando P.    29/12/2017

Temas:  Fundamentos

En una serie de artículos anteriores se ha descrito el entrenamiento supervisado de perceptrones multicapa usando el algoritmo Back-Propagation. Por simplicidad en el desarrollo de las expresiones exactas, se usó una arquitectura de red con dos capas de neuronas y funciones de activación logísticas. Dichas funciones de activación tienen como recorrido el intervalo abierto  (0,1), lo que, aparentemente, limita el uso de una de estas redes a proporcionar valores en dicho intervalo.

En el presente artículo veremos que no se trata de un problema relevante desde el punto de vista práctico y que podemos proceder de dos formas distintas para construir y entrenar redes que funcionen bien como clasificadores aunque tengamos clases de salida definias por valores fuera de ese intervalo.

Función de activación Logística
La función de activación Logística es una función positiva, creciente, no lineal que tiene una forma de sigmoide muy apropiada para proporcionar el concepto de activación o disparo de una neurona, heredado de la Biología, de la misma forma que el concepto mismo de red neuronal.

La expresión de la función Logística, en su forma más sencilla es:

S(x) = 1 / (1 + e-x)

Verificándose que   S'(x)  =  S(x) ⋅ (1 - S(x))

Esta propiedad tan interesante de la derivada de la función Logística es la que nos interesa desde el punto de vista del algoritmo Back-Propagation, pues facilita mucho el cálculo de las expresiones exactas de la Regla Delta Generalizada.

Por otro lado, es fácil ver que el dominio de la función Logística es toda la recta real, pero su recorrido está limitado al intervalo abierto  (0,1). Esto significa que la salida de una neurona que use la función Logística como función de activación estará limitada a este intervalo.

Salida de la red neuronal artificial
En su día se propuso una arquitectura de red sencilla pero general para ilustrar el funcionamiento del algoritmo Back-Propagation que tenía 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

Funciones de activación logísticas en todas las neuronas de ambas capas

Dado un caso de entrada  x = (x1 … xn)  la red genera una salida  z = (z1 … zm)

Perceptrón Back-Propagation La arquitectura general del perceptrón se puede ver en la ilustración adjunta. Se trata de un caso bastante general de perceptrón con dos capas.

A la vista de lo anterior, resulta evidente que la salida  z  de la red siempre estará contenida en el hipercubo abierto  (0,1)m. Si queremos entrenar la red para que produzca salidas  z  con componentes fuera de  (0,1), esto no va a ser posible tal y como hemos diseñado nuestro modelo de red.

Para solucionar este problema de escala que se manifiesta en la disparidad de rangos de valores entre lo que puede proporcionar la red y lo que necesitamos, existen dos soluciones sencillas. La primera consiste en escalar nuestros datosy la otra en hacer una pequeña modificación a la red en forma de escalado de la función de activación.

Escalado de los valores en las clases de salida
La forma más sencilla de solucionar el problema de escala descrito consiste en modificar los datos que tenemos, de forma que todos los vectores de salida  y = (y1 … ym)  para entrenar la red caigan en el hipercubo abierto  (0,1)m.

Naturalmente, esto sólo se puede hacer si los datos que tenemos están acotados. Algo que podemos aceptar sin muchos problemas ya que siempre tendremos un conjunto finito de pares de entrenamiento (cualquier conjunto finito es necesariamente acotado).

Por otro lado, aunque nuestro conjunto de entrenamiento sea acotado, podríamos pensar en una red que, una vez entrenada, fuera capaz de proporcionar salidas en un conjunto no acotado. Pero esto no es práctico, una red neuronal no es una función general, es un clasificador y por el mismo concepto de clasificador debemos aceptar que el conjunto de clases de salida posibles está acotado o incluso que es finito.

Así que podemos aceptar que nuestros datos estarán necesariamente en algún hipercubo acotado. Por simplicidad, vamos a asumir que nuestros datos tienen coordenadas positivas siempre (si no es el caso basta con sumar una constante a todas las coordenadas para hacerlas positivas). Para escalar ese hipercubo al hipercubo abierto  (0,1)m  podemos hacer lo siguiente:

Sean  yi = (yi1 … yim)   i=1…s  todas las salidas del conjunto de entrenamiento

Sea  q = Maxi (Max (yi1 … yim)) ⋅ (1+δ),   δ>0

Calculamos  wi = (yi1/q + γ … yim/q + γ)   i=1…s,   γ>0

El nuevo conjunto de vectores de salida  wi  está contenido de forma cómoda en el hipercubo abierto  (0,1)m  y puede ser representado sin problemas por nuestro modelo de red neuronal.

Los valores  δ  y  γ  tienen como misión evitar que la salida de la red tenga que estar cerca de 0 o 1, porque hacen falta argumentos muy grandes en valor absoluto para que la función Logística se acerque a esos extremos. No es buena idea tener vectores de salida cerca de esos extremos en el conjunto de entrenamiento debido a que forzarán a algunos pesos a tomar valores muy grandes. Valores típicos de  δ  y  γ  pueden ser  δ=1/3  y  γ=1/8

Esta solución viene a ser una especie de cambio de unidades de medida. Realmente, los valores que asignamos para definir clases de salida de un clasificador no tienen porqué tener ningún significado real, no tienen porqué ser números de una magnitud dada. Por ejemplo, lo que se puede medir en metros también se puede medir en Kilómetros, o en Parsecs, siempre vamos a poder encontrar una medida de forma que la unidad en esa medida esté muy encima de lo que tenemos en nuestros datos.

A menudo, la salida de un clasificador es una distribución de probabilidad, y en este caso la propiedad de una de estas redes consistente en proporcionar valores entre 0 y 1 se adapta perfectamente a lo que se necesita de ellas.

En general, es necesario tener acotados los valores que puede proporcionar una red neuronal porque esto facilita la búsqueda de óptimos usando técnicas de optimización clásicas, como el descenso del gradiente que se usa en el algoritmo Back-Propagation. Así que esta solución debería ser la preferida a no ser que la función de error de la red sea tan compleja que tengamos problemas para representarla bien dentro del hipercubo abierto  (0,1)m  con la máxima precisión de que sea capaz nuestro computador.

Por último, la salida de un clasificador debe ser más cualitativa que cuantitativa, aunque nada impide que sea cuantitativa pura. Pero si nos decantamos por una salida cualitativa, la magnitud de los números que obtendremos como salida no tendrán ningún significado más allá del que queramos asignarle nosotros y nos vendrá bien acotarlos en el hipercubo abierto  (0,1)m.

Escalado de la función de activación Escalado de función de activación Logística
La otra solución que podemos adoptar consiste en modificar la función de activación introduciendo una constante en la función Logística.

De esta forma no vamos a necesitar modificar los datos de salida mientras sean positivos (el caso de sumar una constante para hacerlos positivos lo consideramos una modificación trivial).

Usando el valor  q  descrito en el punto anterior, podemos definir una nueva función de activación en las neuronas de la capa de salida de la red en la siguiente forma:

T(x) = qS(x)

Verificándose que   T'(x)  =  qS(x) ⋅ (1 - S(x))

Con esta nueva función de activación, la salida de la red cae en el hipercubo abierto  (0,q)m  y puede representar bien nuestros vectores de salida del conjunto de entrenamiento.

Queda ver cómo afecta esta modificación al algoritmo Back-Propagation. En general, el algoritmo no se ve afectado. La propiedad interesante sobre la derivada de la función de activación se mantiene salvo por el factor  q, así que en las expresiones exactas para la Regla Delta Generalizada con un perceptrón de dos capas aparece este factor de la forma siguiente (usando la misma notación que usamos en su día para calcular estas expresiones):

E / ∂cij = -(yj-zj) ⋅ q ⋅ zj ⋅ (1-zj) ⋅ bi

E / ∂aij = -qj ⋅ (1-qj) ⋅ xi ⋅ ∑h ((yh-zh) ⋅ q ⋅ oh ⋅ (1-oh) ⋅ cjh)

La función de activación de la primera capa de neuronas no tiene por qué modificarse y por eso sólo aparece el factor  q  una vez en cada expresión.

El principal inconveniente de esta solución radica en que resulta más costoso entrenar una red configurada así por existir operaciones adicionales, debido al factor  q, que se repiten muchas veces.

Por otro lado, el tener valores grandes en valor absoluto en las diferencias de cuadrados que forman la función de coste es otra fuente de complicaciones para encontrar mínimos locales, porque en computación numérica siempre es un problema el tener que trabajar con números que pueden variar en muchos órdenes de magnitud.



Es posible adaptar las funciones de activación de un perceptrón para que su salida se adapte a determinados datos. Pero es preferible adaptar los datos para que representen resultados cualitativos, que es la forma en la que un clasificador funciona mejor.



Para saber más:

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. El resto del libro está dedicado a modificaciones y casos particulares del algoritmo, como la situación que hemos analizado en el presente artículo.



 

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