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
editarNeurona
editarUna 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
editarLa función de propagación calcula la entrada a la neurona a partir de las salidas y típicamente tiene la forma[1]
Sesgo
editarPuede agregarse un término de sesgo, con lo que la forma cambia como sigue:[2]
- donde es un sesgo.
Neural networks as functions
editarLos 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 .
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.
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
editarLos algoritmos de entrenamiento con retropropagación se agrupan en tres categorías:
- máxima pendiente (con tasa de aprendizaje y momento variables o retropropagación resiliente);
- quasi-Newton (Broyden–Fletcher–Goldfarb–Shanno, método secante de un paso);
- Levenberg–Marquardte y gradiente conjugado (Fletcher–Reeves update, Polak–Ribiére update, Powell–Beale restart, scaled conjugate gradient).[4]
Algoritmo
editarSea 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
editarPara 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
editarLa 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
editarPara 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
editarEl 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- ↑ 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.
- ↑ 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.
- ↑ «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.
- ↑ 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) - ↑ 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