Usuario:Rapel/Taller/Matemática de las redes neuronales artificiales

Una red neuronal artificial (RNA) combina principios biológicos con estadística avanzada para resolver problemas en áreas tales como el reconocimiento de patrones o los juegos. Las RNA adoptan el modelo básico de neuronas análogas conectadas entre sí de diversas maneras.

Estructura

editar

Neurona

editar

Una neurona rotulada   que recibe una entrada   de sus neuronas predecesoras consiste en las siguientes componentes:[1]

  • una activación  , el estado de la neurona, que depende de un parámetro discreto de tiempo,
  • un umbral opcional  , que permanece fijo, a no ser que cambie por efecto de aprendizaje,
  • una función de activación   que calcula el nuevo estado de activación para un instante dado   a partir de  ,   y la entrada neta   dando origen a la relación
 
  • así como una función de salida   que calcula la salida a partir de la activación
 

En muchos casos, la función de salida es simplemente la función identidad.

Una neurona de entrada no tiene neurona predecesora, pero sirve de interfaz de entrada para toda la red. Del mismo modo, una neurona de salida no tiene neurona sucesora y sirve de interfaz de salida para toda la red.

Función de propagación

editar

La función de propagación calcula la entrada   a la neurona   a partir de las salidas   y típicamente tiene la forma[1]

 

Puede agregarse un término de sesgo, con lo que la forma cambia como sigue:[2]

  donde   es un sesgo.

Neural networks as functions

editar

Los modelos de redes neuronales pueden considerarse como definición de una función que toma una entrada (observación) y produce una salida (decisión)   o bien una distribución en   o ambas   e  . A veces los modelos se asocian íntimamente con una regla particular de aprendizaje. Un uso común de la expresión "modelo de RNA" realmente se refiere a la definición de una clase de tales funciones (donde los miembros de la clase se obtienen a trtavés de diversos parámetros, ponderaciones de conexión o rasgos específicos de la arquitectura, tales como el número de neuronas, el número de capas o sus conexiones).

En términos matemáticos, la función de red de una neurona   se define como composición de otras funciones  , que pueden descomponerse a su vez en otras funciones. Esto puede representarse convenientemente como estructura de red, con flechas que representan las dependencias entre funciones. Un tipo ampliamente usado de composición es la suma nolineal ponderada, con  , donde   (comúnmente denominada función de activación[3]​) es alguna función predefinida, como por ejemplo la tangente hiperbólica, la función sigmoide, la función SoftMax, o la función ReLU. La característica importante de la función de activación es que provee una transición suave a medida de que los valores de entrada van cambiando, es decir, un cambio pequeño en la entrada produce un cambio pequeño en la salida. En lo que sigue nos referiremos a una colección de funciones   como vector  .

 
Grafo de dependen- cias de una RNA

Esta figura muestra una descomposición de este tipo para  , con las dependencias entre las variables indicadas por medio de flechas. Estas pueden interpretarse de dos maneras.

El primer punto de vista es el funcional: la entrada   se transforma en un vector tridimensional  , el que luego es transformado en un vector bidimensional  , el que a su vez finalmente se transforma en  . Este enfoque es el que más comúnmente se encuentra en el contexto de la optimización.

El segundo punto de vista es el probabilístico: la variable aleatoria   depende de la variable aleatoria  , la que a su vez depende de  , la que depende de la variable aleatoria  . Este enfoque es el que más comúnmente se encuentra en el contexto de los modelos en grafos.

Estos dos puntos de vista son equivalentes en gran medida. En cada caso, para esta arquitectura en particular, las componentes de las capas individuales son independientes unas de otras (p.ej., las componentes de   son independientes una de otra dado su entrada  ). Esto, de manera natural, habilita algún grado de paralelismo en su implementación.

 
Dos representaciones separadas del grafo de dependencias de la RNA recurrente

Las redes similares a la anterior comúnmente se denominan prealimentadas, porque su grafo es un grafo acíclico dirigido. Las redes con ciclos comúnmente se denominan recurrentes. Estas redes suelen representarse como se muestra en la parte superior de la figura, donde   se reconoce como dependiente de sí misma. Sin embargo no se muestra una dependencia temporal implícita.

Retropropagación

editar

Los algoritmos de entrenamiento con retropropagación se agrupan en tres categorías:

Algoritmo

editar

Sea   una red con   conexiones,   entradas y   salidas.

En lo que sigue,   denota vectores en  ,   vectores en   y   vectores en  . Estos vectores se denominan entradas, salidas y pesos, respectivamente.

La red corresponde a una función  , la que, dadoun peso  , transforma una entrada   en una salida  .

En aprendizaje supervisado, una secuencia de ejemplos de entrenamiento   produce una secuencia de pesos   partiendo de algún peso inicial  , el que usualmente se elije en forma aleatoria.

Estos pesos se calculan por turnos: primero se calcula   usando sólo   para  . La salida del algoritmo resulta ser  , dando una nueva función  . El cálculo se repite en cada paso, por lo que sólo se describe el caso con  .

  se calcula a partir de   considerando un peso variable   y aplicando gradiente descendiente a la función   para hallar un mínimo local, partiendo con  .

Esto hace que   sea el peso minimizante determinado por gradiente descendiente.

Pseudocódigo de aprendizaje

editar

Para implementar el algoritmo anterior se requieren fórmulas explícitas para el gradiente de la función   donde la función es  .

El algoritmo de aprendizaje puede dividirse en dos fases: propagación y actualización de pesos.

Propagación

editar

La propagación abarca los siguientes pasos:

  • Propagación hacia adelante a través de la red para generar los valores de salida
  • Cálculo del costo (error)
  • Propagación hacia atrás de las activaciones de salida a través de la red usando el objetivo del patrón de entrenamiento para generar los deltas (las diferencias entre the objetivo y los valores de salida obtenidos) para todas las neuronas de salida y ocultas.

Actualización de pesos

editar

Para cada peso:

  • Multiplicar el delta de salida por la activación de entrada correspondientes para hallar el gradiente del peso.
  • Substraer una parte (un porcentaje) del gradiente del peso del peso mismo.

La tasa de aprendizaje es la razón (el porcentaje) que influye en la velocidad y la calidad del aprendizaje. Mientras mayor es esta razón, más rápido se entrena la neurona, pero mientras más pequeña es, más preciso resulta el entrenamiento. El signo del gradiente de un peso indica si acaso el error varía en forma directa o inversa del peso. Por tanto, el peso debe ajustarse en dirección opuesta, "descendiendo" por el gradiente.

El entrenamiento se repite (con nuevos grupos de ejemplos) hasta que la red se desempeña de manera adecuada.

Pseudocódigo

editar

El pseudocódigo para un algoritmo de descenso de gradiente estocástico destinado a entrenar una red de tres capas (una capa oculta) sería:

inicializar los pesos de la red (muchas veces con valores aleatorios pequeños)
do
    for each ejemplo de entrenamiento denominado ej do
        predicción = salida-de-la-red-neuronal(red, ej)  // paso hacia adelante
        verdadero = salida-del-entrenador(ej)
        calcular error (predicción - verdadero) en unidades de salida
        calcular   para todos los pesos de la capa oculta hacia la de salida  // paso hacia atrás
        calcular   para todos los pesos de la capa de entrada hacia la oculta // paso hacia atrás, cont.
        actualizar los pesos de la red // la capa de entrada no se modifica por la estimación de error
until la tasa de error se hace suficientemente pequeña
return red

Las líneas rotuladas como "paso hacia atrás" se pueden implementar usando el algoritmo de retropropagación, el cual calcula el gradiente del error de la red respecto de los pesos modificables de la red.[5]

Referencias

editar
  1. a b Zell, Andreas (2003). «chapter 5.2». Simulation neuronaler Netze [Simulation of Neural Networks] (en german) (1st edición). Addison-Wesley. ISBN 978-3-89319-554-1. OCLC 249017987. 
  2. DAWSON, CHRISTIAN W (1998). «An artificial neural network approach to rainfall-runoff modelling». Hydrological Sciences Journal 43 (1): 47-66. Bibcode:1998HydSJ..43...47D. doi:10.1080/02626669809492102. 
  3. «The Machine Learning Dictionary». www.cse.unsw.edu.au. Archivado desde el original el 26 de agosto de 2018. Consultado el 18 de agosto de 2019. 
  4. M. Forouzanfar; H. R. Dajani; V. Z. Groza; M. Bolic; S. Rajan (July 2010). Comparison of Feed-Forward Neural Network Training Algorithms for Oscillometric Blood Pressure Estimation. 4th Int. Workshop Soft Computing Applications. Arad, Romania: IEEE.  Parámetro desconocido |name-list-style= ignorado (ayuda)
  5. Werbos, Paul J. (1994). The Roots of Backpropagation. From Ordered Derivatives to Neural Networks and Political Forecasting. New York, NY: John Wiley & Sons, Inc.

Categoría:Algoritmos de clasificación Categoría:Neurociencia computacional