En el aprendizaje automático , la retropropagación ( backprop , [1] BP ) es un algoritmo ampliamente utilizado para entrenar redes neuronales de retroalimentación . Existen generalizaciones de retropropagación para otras redes neuronales artificiales (ANN) y para funciones en general. Todas estas clases de algoritmos se denominan genéricamente "retropropagación". [2] Al ajustar una red neuronal , la propagación inversa calcula el gradiente de la función de pérdida con respecto a los pesos de la red para un solo ejemplo de entrada-salida, y lo haceeficientemente , a diferencia de un cálculo directo ingenuo del gradiente con respecto a cada peso individualmente. Esta eficiencia hace factible el uso de métodos de gradiente para entrenar redes multicapa, actualizando pesos para minimizar las pérdidas; descenso de gradiente , o variantes como el descenso de gradiente estocástico , se utilizan comúnmente. El algoritmo de retropropagación funciona calculando el gradiente de la función de pérdida con respecto a cada peso por la regla de la cadena , calculando el gradiente una capa a la vez, iterando hacia atrás desde la última capa para evitar cálculos redundantes de términos intermedios en la regla de la cadena; este es un ejemplo de programación dinámica . [3]
El término retropropagación se refiere estrictamente solo al algoritmo para calcular el gradiente, no a cómo se usa el gradiente; sin embargo, el término se usa a menudo de manera vaga para referirse a todo el algoritmo de aprendizaje, incluida la forma en que se usa el gradiente, como el descenso de gradiente estocástico. [4] La retropropagación generaliza el cálculo del gradiente en la regla delta , que es la versión de una sola capa de la retropropagación, y a su vez se generaliza por diferenciación automática , donde la retropropagación es un caso especial de acumulación inversa (o "modo inverso"). [5] El término retropropagación y su uso general en redes neuronales fue anunciado en Rumelhart, Hinton y Williams (1986a) , luego elaborado y popularizado en Rumelhart, Hinton y Williams (1986b) , pero la técnica fue redescubierta de forma independiente muchas veces y había muchos predecesores que datan de la década de 1960; ver § Historia . [6] En el libro de texto de aprendizaje profundo de Goodfellow, Bengio & Courville (2016) se ofrece una descripción general moderna . [7]
Descripción general
La retropropagación calcula el gradiente en el espacio de peso de una red neuronal de retroalimentación, con respecto a una función de pérdida . Denotar:
- : entrada (vector de características)
- : salida de destino
- : función de pérdida o "función de costo" [a]
- Para la clasificación, esto suele ser entropía cruzada (XC, pérdida logarítmica ), mientras que para la regresión suele ser la pérdida de error al cuadrado (SEL).
- : el número de capas
- : los pesos entre capa y , dónde es el peso entre el -th nodo en la capa y el -th nodo en la capa [B]
- : funciones de activación en la capa
- Para la clasificación, la última capa suele ser la función logística para la clasificación binaria y softmax (softargmax) para la clasificación de clases múltiples, mientras que para las capas ocultas esta era tradicionalmente una función sigmoidea (función logística u otras) en cada nodo (coordenada), pero hoy en día es más variado, siendo común el rectificador ( rampa , ReLU ).
En la derivación de la retropropagación, se utilizan otras cantidades intermedias; se introducen según sea necesario a continuación. Los términos de sesgo no se tratan especialmente, ya que corresponden a una ponderación con una entrada fija de 1. A efectos de retropropagación, la función de pérdida específica y las funciones de activación no importan, siempre que ellas y sus derivadas puedan evaluarse de manera eficiente.
La red general es una combinación de composición de funciones y multiplicación de matrices :
Para un conjunto de entrenamiento, habrá un conjunto de pares de entrada-salida, . Para cada par de entrada-salida en el conjunto de entrenamiento, la pérdida del modelo en ese par es el costo de la diferencia entre la salida prevista y la salida objetivo :
Tenga en cuenta la distinción: durante la evaluación del modelo, los pesos son fijos, mientras que las entradas varían (y la salida de destino puede ser desconocida) y la red termina con la capa de salida (no incluye la función de pérdida). Durante el entrenamiento del modelo, el par de entrada-salida es fijo, mientras que los pesos varían y la red termina con la función de pérdida.
La retropropagación calcula el gradiente para un par fijo de entrada y salida, donde los pesos puede variar. Cada componente individual del gradiente,se puede calcular mediante la regla de la cadena; sin embargo, hacer esto por separado para cada peso es ineficaz. La retropropagación calcula de manera eficiente el gradiente evitando cálculos duplicados y no calculando valores intermedios innecesarios, calculando el gradiente de cada capa, específicamente, el gradiente de la entrada ponderada de cada capa, denotado por - de atrás hacia adelante.
De manera informal, el punto clave es que, dado que la única forma afecta la pérdida es a través de su efecto en la siguiente capa, y lo hace linealmente , son los únicos datos que necesita para calcular los gradientes de los pesos en la capa , y luego puede calcular la capa anterior y repetir de forma recursiva. Esto evita la ineficiencia de dos formas. En primer lugar, evita la duplicación porque al calcular el gradiente en la capa, no es necesario volver a calcular todas las derivadas en capas posteriores cada vez. En segundo lugar, evita cálculos intermedios innecesarios porque en cada etapa calcula directamente el gradiente de los pesos con respecto al resultado final (la pérdida), en lugar de calcular innecesariamente las derivadas de los valores de las capas ocultas con respecto a los cambios en los pesos..
La propagación hacia atrás se puede expresar para redes simples de retroalimentación en términos de multiplicación de matrices , o más generalmente en términos del gráfico adjunto .
Multiplicación de matrices
Para el caso básico de una red de retroalimentación, donde los nodos en cada capa están conectados solo a los nodos en la siguiente capa inmediata (sin omitir ninguna capa), y hay una función de pérdida que calcula una pérdida escalar para la salida final, la propagación hacia atrás puede ser entendido simplemente por multiplicación de matrices. [c] Esencialmente, la retropropagación evalúa la expresión para la derivada de la función de costo como un producto de derivadas entre cada capa de izquierda a derecha - "hacia atrás" - con el gradiente de los pesos entre cada capa siendo una simple modificación de los productos parciales. (el "error propagado hacia atrás").
Dado un par de entrada-salida , la pérdida es:
Para calcular esto, uno comienza con la entrada y trabaja hacia adelante; denotar la entrada ponderada de cada capa como y la salida de la capa como la activación . Para retropropagación, la activación así como los derivados (evaluado en ) debe almacenarse en caché para su uso durante la pasada hacia atrás.
La derivada de la pérdida en términos de las entradas viene dada por la regla de la cadena; tenga en cuenta que cada término es una derivada total , evaluada al valor de la red (en cada nodo) en la entrada:
Estos términos son: la derivada de la función de pérdida; [d] las derivadas de las funciones de activación; [e] y las matrices de pesos: [f]
El gradiente es la transposición de la derivada de la salida en términos de la entrada, por lo que las matrices se transponen y el orden de multiplicación se invierte, pero las entradas son las mismas:
La retropropagación consiste entonces esencialmente en evaluar esta expresión de derecha a izquierda (de manera equivalente, multiplicando la expresión anterior por la derivada de izquierda a derecha), calculando el gradiente en cada capa en el camino; hay un paso adicional, porque el gradiente de los pesos no es solo una subexpresión: hay una multiplicación adicional.
Presentando la cantidad auxiliar para los productos parciales (multiplicando de derecha a izquierda), interpretado como el "error en el nivel "y definido como el gradiente de los valores de entrada en el nivel :
Tenga en cuenta que es un vector, de longitud igual al número de nodos en el nivel ; cada componente se interpreta como el "costo atribuible a (el valor de) ese nodo".
El gradiente de los pesos en la capa. es entonces:
El factor de es porque los pesos entre nivel y afectar el nivel proporcionalmente a las entradas (activaciones): las entradas son fijas, los pesos varían.
La se puede calcular fácilmente de forma recursiva como:
Por tanto, los gradientes de los pesos se pueden calcular utilizando unas pocas multiplicaciones de matrices para cada nivel; esto es propagación hacia atrás.
En comparación con la computación directa ingenuamente (usando el por ilustracion):
Hay dos diferencias clave con la retropropagación:
- Informática en términos de evita la obvia multiplicación duplicada de capas y más allá.
- Multiplicar a partir de - propagar el error hacia atrás - significa que cada paso simplemente multiplica un vector () por las matrices de pesos y derivados de activaciones . Por el contrario, multiplicar hacia adelante, a partir de los cambios en una capa anterior, significa que cada multiplicación multiplica una matriz por una matriz . Esto es mucho más caro y corresponde a rastrear todas las rutas posibles de un cambio en una capa. adelante a los cambios en la capa (para multiplicar por , con multiplicaciones adicionales para las derivadas de las activaciones), que calcula innecesariamente las cantidades intermedias de cómo los cambios de peso afectan los valores de los nodos ocultos.
Gráfico adjunto
Para gráficos más generales y otras variaciones avanzadas, la retropropagación se puede entender en términos de diferenciación automática , donde la retropropagación es un caso especial de acumulación inversa (o "modo inverso"). [5]
Intuición
Motivación
El objetivo de cualquier algoritmo de aprendizaje supervisado es encontrar una función que mapee mejor un conjunto de entradas a su salida correcta. La motivación para la propagación hacia atrás es entrenar una red neuronal de múltiples capas de manera que pueda aprender las representaciones internas apropiadas para permitirle aprender cualquier mapeo arbitrario de entrada a salida. [8]
El aprendizaje como problema de optimización
Para comprender la derivación matemática del algoritmo de retropropagación, es útil desarrollar primero algo de intuición sobre la relación entre la salida real de una neurona y la salida correcta para un ejemplo de entrenamiento en particular. Considere una red neuronal simple con dos unidades de entrada, una unidad de salida y sin unidades ocultas, y en la que cada neurona usa una salida lineal (a diferencia de la mayoría de los trabajos en redes neuronales, en las que el mapeo de entradas a salidas no es lineal) [g] esa es la suma ponderada de su entrada.
Inicialmente, antes del entrenamiento, los pesos se establecerán de forma aleatoria. Luego, la neurona aprende de los ejemplos de entrenamiento , que en este caso consisten en un conjunto de tuplas dónde y son las entradas a la red yt es la salida correcta (la salida que la red debería producir dadas esas entradas, cuando ha sido entrenada). La red inicial, dada y , calculará una salida y que probablemente difiera de t (dados pesos aleatorios). Una función de pérdida se utiliza para medir la discrepancia entre la salida objetivo ty la salida calculada y . Para análisis de regresión problemas el error cuadrático se puede utilizar como una función de pérdida, por clasificación de la crossentropy categórica se puede utilizar.
Como ejemplo, considere un problema de regresión usando el error cuadrado como pérdida:
donde E es la discrepancia o error.
Considere la red en un solo caso de capacitación: . Por lo tanto, la entrada y son 1 y 1 respectivamente y la salida correcta, t es 0. Ahora bien, si se traza la relación entre la salida de la red y en el eje horizontal y el error E en el eje vertical, el resultado es una parábola. El mínimo de la parábola corresponde a la salida y que minimiza el error E . Para un solo caso de entrenamiento, el mínimo también toca el eje horizontal, lo que significa que el error será cero y la red puede producir una salida y que coincida exactamente con la salida objetivo t . Por lo tanto, el problema de mapear entradas y salidas puede reducirse a un problema de optimización de encontrar una función que produzca el error mínimo.
Sin embargo, la salida de una neurona depende de la suma ponderada de todas sus entradas:
dónde y son los pesos en la conexión de las unidades de entrada a la unidad de salida. Por lo tanto, el error también depende de los pesos entrantes a la neurona, que es en última instancia lo que debe cambiarse en la red para permitir el aprendizaje.
En este ejemplo, al inyectar los datos de entrenamiento, la función de pérdida se convierte en
Entonces, la función de pérdida toma la forma de un cilindro parabólico con su base dirigida a lo largo . Dado que todos los conjuntos de pesos que satisfacenminimizar la función de pérdida, en este caso se requieren restricciones adicionales para converger en una solución única. Se podrían generar restricciones adicionales estableciendo condiciones específicas para los pesos o inyectando datos de entrenamiento adicionales.
Un algoritmo comúnmente utilizado para encontrar el conjunto de pesos que minimiza el error es el descenso de gradiente . Por retropropagación, se calcula la dirección de descenso más pronunciada de la función de pérdida frente a los pesos sinápticos actuales. Luego, los pesos se pueden modificar a lo largo de la dirección de descenso más empinada y el error se minimiza de manera eficiente.
Derivación
El método de descenso de gradiente implica calcular la derivada de la función de pérdida con respecto a los pesos de la red. Esto se hace normalmente mediante retropropagación. Suponiendo una neurona de salida, [h] la función de error al cuadrado es
dónde
- es la pérdida de la salida y valor objetivo ,
- es el resultado de destino para una muestra de entrenamiento, y
- es la salida real de la neurona de salida.
Para cada neurona , su salida Se define como
donde la función de activación es no lineal y diferenciable (incluso si el ReLU no está en un punto). Una función de activación utilizada históricamente es la función logística :
que tiene una derivada conveniente de:
La entrada a una neurona es la suma ponderada de salidas de neuronas anteriores. Si la neurona está en la primera capa después de la capa de entrada, la de la capa de entrada son simplemente las entradas a la red. El número de unidades de entrada a la neurona es. La variable denota el peso entre neuronas de la capa anterior y la neurona de la capa actual.
Encontrar la derivada del error
Calcular la derivada parcial del error con respecto a un pesose hace usando la regla de la cadena dos veces:
( Ecuación 1 )
En el último factor del lado derecho de lo anterior, solo un término en la suma depende de , así que eso
( Ecuación 2 )
Si la neurona está en la primera capa después de la capa de entrada, es solo .
La derivada de la salida de la neurona. con respecto a su entrada es simplemente la derivada parcial de la función de activación:
( Ecuación 3 )
que para el caso de la función de activación logística es:
Esta es la razón por la que la retropropagación requiere que la función de activación sea diferenciable . (Sin embargo, la función de activación de ReLU , que no es diferenciable en 0, se ha vuelto bastante popular, por ejemplo, en AlexNet )
El primer factor es sencillo de evaluar si la neurona está en la capa de salida, porque entonces y
( Ecuación 4 )
Si la mitad del error cuadrado se usa como función de pérdida, podemos reescribirlo como
Sin embargo, si está en una capa interna arbitraria de la red, encontrando la derivada con respecto a es menos obvio.
Considerando como una función con las entradas siendo todas las neuronas recibir información de la neurona ,
y tomando la derivada total con respecto a, se obtiene una expresión recursiva para la derivada:
( Ecuación 5 )
Por tanto, la derivada con respecto a se puede calcular si todas las derivadas con respecto a las salidas de la siguiente capa, las más cercanas a la neurona de salida, se conocen. [Tenga en cuenta que si alguna de las neuronas del conjunto no estaban conectados a la neurona , serían independientes de y la derivada parcial correspondiente bajo la suma se desvanecería en 0.]
Sustituyendo la ecuación. 2 , ec. 3 Ec. 4 y Eq. 5 en la ecuación. 1 obtenemos:
con
Si es la función logística, y el error es el error cuadrado:
Para actualizar el peso usando el descenso de gradiente, uno debe elegir una tasa de aprendizaje, . El cambio de peso debe reflejar el impacto en de un aumento o disminución en . Si, un aumento en aumenta ; a la inversa, si, un aumento en disminuye . El nuevo se suma al peso anterior, y el producto de la tasa de aprendizaje y el gradiente, multiplicado por garantiza que cambia de una manera que siempre disminuye . En otras palabras, en la ecuación inmediatamente debajo, siempre cambia de una manera que se reduce:
Función de pérdida
La función de pérdida es una función que asigna valores de una o más variables a un número real que representa intuitivamente algún "costo" asociado con esos valores. Para la propagación hacia atrás, la función de pérdida calcula la diferencia entre la salida de la red y su salida esperada, después de que un ejemplo de entrenamiento se haya propagado a través de la red.
Supuestos
La expresión matemática de la función de pérdida debe cumplir dos condiciones para que sea posible utilizarla en retropropagación. [9] La primera es que se puede escribir como un promedio sobre funciones de error , por ejemplos de entrenamiento individual, . La razón de esta suposición es que el algoritmo de retropropagación calcula el gradiente de la función de error para un solo ejemplo de entrenamiento, que debe generalizarse a la función de error general. El segundo supuesto es que se puede escribir en función de las salidas de la red neuronal.
Función de pérdida de ejemplo
Dejar ser vectores en .
Seleccionar una función de error medir la diferencia entre dos salidas. La elección estándar es el cuadrado de la distancia euclidiana entre los vectores. y :
Limitaciones
- No se garantiza que el descenso de gradiente con retropropagación encuentre el mínimo global de la función de error, sino solo un mínimo local; Además, tiene problemas para cruzar mesetas en el panorama de la función de error. Durante mucho tiempo se pensó que este problema, causado por la no convexidad de las funciones de error en las redes neuronales, era un gran inconveniente, pero Yann LeCun et al. argumentan que en muchos problemas prácticos, no lo es. [10]
- El aprendizaje de retropropagación no requiere la normalización de los vectores de entrada; sin embargo, la normalización podría mejorar el rendimiento. [11]
- La propagación inversa requiere que las derivadas de las funciones de activación se conozcan en el momento del diseño de la red.
Historia
El término retropropagación y su uso general en redes neuronales fue anunciado en Rumelhart, Hinton & Williams (1986a) , luego elaborado y popularizado en Rumelhart, Hinton & Williams (1986b) , pero la técnica fue redescubierta independientemente muchas veces y tuvo muchos predecesores datando a la década de 1960. [6] [12]
Los conceptos básicos de la retropropagación continua se derivaron en el contexto de la teoría del control por Henry J. Kelley en 1960, [13] y por Arthur E. Bryson en 1961. [14] [15] [16] [17] [18] Usaron principios de programación dinámica . En 1962, Stuart Dreyfus publicó una derivación más simple basada únicamente en la regla de la cadena . [19] Bryson y Ho lo describieron como un método de optimización de sistema dinámico de múltiples etapas en 1969. [20] [21] La retropropagación fue derivada por varios investigadores a principios de los 60 [17] y se implementó para ejecutarse en computadoras ya en 1970 por Seppo Linnainmaa . [22] [23] [24] Paul Werbos fue el primero en Estados Unidos en proponer que podría usarse para redes neuronales después de analizarlo en profundidad en su disertación de 1974. [25] Si bien no se aplicó a las redes neuronales, en 1970 Linnainmaa publicó el método general para la diferenciación automática (AD). [23] [24] Aunque es muy controvertido, algunos científicos creen que este fue en realidad el primer paso hacia el desarrollo de un algoritmo de retropropagación. [17] [18] [22] [26] En 1973, Dreyfus adapta los parámetros de los controladores en proporción a los gradientes de error. [27] En 1974 Werbos mencionó la posibilidad de aplicar este principio a redes neuronales artificiales, [25] y en 1982 aplicó el método AD de Linnainmaa a funciones no lineales. [18] [28]
Más tarde, el método Werbos fue redescubierto y descrito en 1985 por Parker, [29] [30] y en 1986 por Rumelhart , Hinton y Williams . [12] [30] [31] Rumelhart, Hinton y Williams demostraron experimentalmente que este método puede generar representaciones internas útiles de datos entrantes en capas ocultas de redes neuronales. [8] [32] [33] Yann LeCun , inventor de la arquitectura de red neuronal convolucional, propuso la forma moderna del algoritmo de aprendizaje de retropropagación para redes neuronales en su tesis doctoral en 1987. En 1993, Eric Wan ganó un patrón internacional concurso de reconocimiento mediante retropropagación. [17] [34]
Durante la década de 2000 cayó en desgracia, pero regresó en la década de 2010, beneficiándose de sistemas informáticos económicos y potentes basados en GPU . Esto ha sido especialmente así en la investigación del reconocimiento de voz , la visión artificial , el procesamiento del lenguaje natural y el aprendizaje de la estructura del lenguaje (en la que se ha utilizado para explicar una variedad de fenómenos relacionados con el aprendizaje de la primera y segunda lengua [35 ] ).
Se ha sugerido la propagación inversa de errores para explicar los componentes ERP del cerebro humano , como el N400 y el P600 . [37]
Ver también
- Red neuronal artificial
- Red neuronal biológica
- Interferencia catastrófica
- Aprendizaje conjunto
- AdaBoost
- Sobreajuste
- Propagación neural hacia atrás
- Retropropagación a través del tiempo
Notas
- ^ Utilice para que la función de pérdida permita a utilizar para el número de capas
- ^ Esto sigue a Nielsen (2015) , y significa (izquierda) multiplicación por la matriz corresponde a convertir los valores de salida de la capa para ingresar valores de capa : las columnas corresponden a las coordenadas de entrada, las filas corresponden a las coordenadas de salida.
- ^ Esta sección sigue y resume en gran medida a Nielsen (2015) .
- ^ La derivada de la función de pérdida es un covector , ya que la función de pérdida es una función de valor escalar de varias variables.
- ^ La función de activación se aplica a cada nodo por separado, por lo que la derivada es solo la matriz diagonal de la derivada en cada nodo. Esto a menudo se representa como el producto de Hadamard con el vector de derivadas, denotado por, que es matemáticamente idéntico pero coincide mejor con la representación interna de las derivadas como un vector, en lugar de una matriz diagonal.
- ^ Dado que la multiplicación de matrices es lineal, la derivada de multiplicar por una matriz es solo la matriz:.
- ^ Uno puede notar que las redes neuronales multicapa usan funciones de activación no lineales, por lo que un ejemplo con neuronas lineales parece oscuro. Sin embargo, aunque la superficie de error de las redes multicapa es mucho más complicada, localmente se pueden aproximar mediante un paraboloide. Por lo tanto, las neuronas lineales se utilizan para simplificar y facilitar la comprensión.
- ^ Puede haber múltiples neuronas de salida, en cuyo caso el error es la norma al cuadrado del vector diferencia.
Referencias
- ^ Goodfellow, Bengio y Courville 2016 , p. 200 , "Elalgoritmo de retropropagación (Rumelhart et al. , 1986a), a menudo llamado simplemente backprop , ..."
- ^ Goodfellow, Bengio y Courville 2016 , p. 200 , "Además, la propagación hacia atrás a menudo se malinterpreta como específica de las redes neuronales multicapa, pero en principio puede calcular derivadas de cualquier función".
- ^ Goodfellow, Bengio y Courville 2016 , p. 214 , "Esta estrategia de llenado de tablas a veces se denomina programación dinámica ".
- ^ Goodfellow, Bengio y Courville 2016 , p. 200 , "El término retropropagación a menudo se malinterpreta en el sentido de todo el algoritmo de aprendizaje para redes neuronales multicapa. La retropropagación se refiere solo al método para calcular el gradiente, mientras que otros algoritmos, como el descenso de gradiente estocástico, se utilizan para realizar el aprendizaje utilizando degradado."
- ^ Un b Goodfellow, Bengio y Courville (2016 , p. 217 -218), "El algoritmo de retropropagación descrito aquí es sólo un método de diferenciación automática. Se trata de un caso especial de una clase más amplia de técnicas llamadas acumulación modo inverso . "
- ^ a b Goodfellow, Bengio & Courville (2016 , p. 221 ), "Las aplicaciones eficientes de la regla de la cadena basada en la programación dinámica comenzaron a aparecer en las décadas de 1960 y 1970, principalmente para aplicaciones de control (Kelley, 1960; Bryson y Denham, 1961 ; Dreyfus, 1962; Bryson y Ho, 1969; Dreyfus, 1973) sino también para el análisis de sensibilidad (Linnainmaa, 1976) ... La idea finalmente se desarrolló en la práctica después de ser redescubierta independientemente de diferentes maneras (LeCun, 1985; Parker, 1985; Rumelhart et al. , 1986a). El libro Parallel Distributed Processing presentó los resultados de algunos de los primeros experimentos exitosos con retropropagación en un capítulo (Rumelhart et al. , 1986b) que contribuyó en gran medida a la popularización de la retropropagación e inició un período muy activo de investigación en redes neuronales multicapa ".
- ^ Goodfellow, Bengio & Courville (2016 , 6.5 Back-Propagation y otros algoritmos de diferenciación , págs. 200-220)
- ↑ a b Rumelhart, David E .; Hinton, Geoffrey E .; Williams, Ronald J. (1986a). "Aprendizaje de representaciones mediante retropropagación de errores". Naturaleza . 323 (6088): 533–536. Código Bibliográfico : 1986Natur.323..533R . doi : 10.1038 / 323533a0 . S2CID 205001834 .
- ^ Nielsen (2015) , "[¿Qué suposiciones debemos hacer sobre nuestra función de costo ... para que se pueda aplicar la retropropagación? La primera suposición que necesitamos es que la función de costo se puede escribir como un promedio ... . funciones de sobre costo ... para ejemplos de entrenamiento individuales ... La segunda suposición que hacemos sobre el costo es que se puede escribir como una función de las salidas de la red neuronal ... "
- ^ LeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (2015). "Aprendizaje profundo". Naturaleza . 521 (7553): 436–444. Código Bibliográfico : 2015Natur.521..436L . doi : 10.1038 / nature14539 . PMID 26017442 . S2CID 3074096 .
- ^ Buckland, Matt; Collins, Mark (2002). Técnicas de IA para la programación de juegos . Boston: Premier Press. ISBN 1-931841-08-X.
- ^ a b Rumelhart; Hinton; Williams (1986). "Aprendizaje de representaciones mediante retropropagación de errores" (PDF) . Naturaleza . 323 (6088): 533–536. Código Bibliográfico : 1986Natur.323..533R . doi : 10.1038 / 323533a0 . S2CID 205001834 .
- ^ Kelley, Henry J. (1960). "Teoría del gradiente de trayectorias óptimas de vuelo". Revista ARS . 30 (10): 947–954. doi : 10,2514 / 8,5282 .
- ^ Bryson, Arthur E. (1962). "Un método de gradiente para optimizar los procesos de asignación de múltiples etapas". Actas de la Universidad de Harvard. Simposio sobre computadoras digitales y sus aplicaciones, 3 a 6 de abril de 1961 . Cambridge: Prensa de la Universidad de Harvard. OCLC 498866871 .
- ^ Dreyfus, Stuart E. (1990). "Redes neuronales artificiales, propagación posterior y el procedimiento de gradiente de Kelley-Bryson". Revista de Orientación, Control y Dinámica . 13 (5): 926–928. Código bibliográfico : 1990JGCD ... 13..926D . doi : 10,2514 / 3,25422 .
- ^ Mizutani, Eiji; Dreyfus, Stuart; Nishio, Kenichi (julio de 2000). "Sobre la derivación de la retropropagación MLP de la fórmula de gradiente de control óptimo de Kelley-Bryson y su aplicación" (PDF) . Actas de la Conferencia conjunta internacional IEEE sobre redes neuronales.
- ^ a b c d Schmidhuber, Jürgen (2015). "Aprendizaje profundo en redes neuronales: una visión general". Redes neuronales . 61 : 85-117. arXiv : 1404,7828 . doi : 10.1016 / j.neunet.2014.09.003 . PMID 25462637 . S2CID 11715509 .
- ^ a b c Schmidhuber, Jürgen (2015). "Aprendizaje profundo" . Scholarpedia . 10 (11): 32832. Código bibliográfico : 2015SchpJ..1032832S . doi : 10.4249 / scholarpedia.32832 .
- ^ Dreyfus, Stuart (1962). "La solución numérica de problemas variacionales". Revista de Análisis y Aplicaciones Matemáticas . 5 (1): 30–45. doi : 10.1016 / 0022-247x (62) 90004-5 .
- ^ Russell, Stuart ; Norvig, Peter (1995). Inteligencia artificial: un enfoque moderno . Acantilados de Englewood: Prentice Hall. pag. 578. ISBN 0-13-103805-2.
El método más popular para aprender en redes multicapa se llama retropropagación. Fue inventado por primera vez en 1969 por Bryson y Ho, pero fue más o menos ignorado hasta mediados de la década de 1980.
- ^ Bryson, Arthur Earl; Ho, Yu-Chi (1969). Control óptimo aplicado: optimización, estimación y control . Waltham: Blaisdell. OCLC 3801 .
- ^ a b Griewank, Andreas (2012). "¿Quién inventó el modo inverso de diferenciación?". Historias de optimización . Documenta Matematica, ISMP de volumen extra. págs. 389–400. S2CID 15568746 .
- ↑ a b Seppo Linnainmaa (1970). La representación del error de redondeo acumulativo de un algoritmo como una expansión de Taylor de los errores de redondeo locales. Tesis de Maestría (en finlandés), Univ. Helsinki, 6–7.
- ^ a b Linnainmaa, Seppo (1976). "Expansión de Taylor del error de redondeo acumulado". BIT Matemáticas numéricas . 16 (2): 146–160. doi : 10.1007 / bf01931367 . S2CID 122357351 .
- ^ a b La tesis, y alguna información complementaria, se pueden encontrar en su libro, Werbos, Paul J. (1994). Las raíces de la retropropagación: de derivados ordenados a redes neuronales y pronósticos políticos . Nueva York: John Wiley & Sons. ISBN 0-471-59897-6.
- ^ Griewank, Andreas; Walther, Andrea (2008). Evaluación de derivadas: principios y técnicas de diferenciación algorítmica, segunda edición . SIAM. ISBN 978-0-89871-776-1.
- ^ Dreyfus, Stuart (1973). "La solución computacional de problemas de control óptimo con desfase temporal". Transacciones IEEE sobre control automático . 18 (4): 383–385. doi : 10.1109 / tac.1973.1100330 .
- ^ Werbos, Paul (1982). "Aplicaciones de los avances en el análisis de sensibilidad no lineal" (PDF) . Modelado y optimización de sistemas . Saltador. págs. 762–770.
- ^ Parker, DB (1985). "Aprendizaje de lógica". Centro de Investigación Computacional en Economía y Ciencias de la Gestión. Cambridge MA: Instituto de Tecnología de Massachusetts. Cite journal requiere
|journal=
( ayuda ) - ^ a b Hertz, John. (1991). Introducción a la teoría de la computación neuronal . Krogh, Anders., Palmer, Richard G. Redwood City, California: Addison-Wesley Pub. Co. p. 8. ISBN 0-201-50395-6. OCLC 21522159 .
- ^ Anderson, James Arthur, (1939- ...)., Ed. Rosenfeld, Edward, ed. (1988). Fundamentos de la investigación en neurocomputación . Prensa del MIT. ISBN 0-262-01097-6. OCLC 489622044 .CS1 maint: varios nombres: lista de autores ( enlace ) CS1 maint: texto adicional: lista de autores ( enlace )
- ^ Rumelhart, David E .; Hinton, Geoffrey E .; Williams, Ronald J. (1986b). "8. Aprendizaje de representaciones internas por propagación de errores" . En Rumelhart, David E .; McClelland, James L. (eds.). Procesamiento distribuido paralelo: exploraciones en la microestructura de la cognición . Volumen 1: Fundaciones. Cambridge: MIT Press. ISBN 0-262-18120-7.
|volume=
tiene texto extra ( ayuda ) - ^ Alpaydin, Ethem (2010). Introducción al aprendizaje automático . Prensa del MIT. ISBN 978-0-262-01243-0.
- ^ Wan, Eric A. (1994). "Predicción de series de tiempo mediante el uso de una red conexionista con líneas de retardo internas". En Weigend, Andreas S .; Gershenfeld, Neil A. (eds.). Predicción de series de tiempo: pronosticar el futuro y comprender el pasado . Actas del Taller de investigación avanzada de la OTAN sobre análisis comparativo de series temporales. Volumen 15. Lectura: Addison-Wesley. págs. 195-217. ISBN 0-201-62601-2. S2CID 12652643 .
|volume=
tiene texto extra ( ayuda ) - ^ Chang, Franklin; Dell, Gary S .; Bock, Kathryn (2006). "Convertirse en sintáctico". Revisión psicológica . 113 (2): 234–272. doi : 10.1037 / 0033-295x.113.2.234 . PMID 16637761 .
- ^ Janciauskas, Marius; Chang, Franklin (2018). "Entrada y variación dependiente de la edad en el aprendizaje de una segunda lengua: una cuenta conexionista" . Ciencia cognitiva . 42 : 519–554. doi : 10.1111 / cogs.12519 . PMC 6001481 . PMID 28744901 .
- ^ Fitz, Hartmut; Chang, Franklin (2019). "Los ERP de lenguaje reflejan el aprendizaje a través de la propagación de errores de predicción". Psicología cognitiva . 111 : 15–52. doi : 10.1016 / j.cogpsych.2019.03.002 . hdl : 21.11116 / 0000-0003-474D-8 . PMID 30921626 . S2CID 85501792 .
Otras lecturas
- Buen amigo, Ian ; Bengio, Yoshua ; Courville, Aaron (2016). "6.5 Back-Propagation y otros algoritmos de diferenciación" . Aprendizaje profundo . Prensa del MIT. págs. 200–220. ISBN 9780262035613.
- Nielsen, Michael A. (2015). "Cómo funciona el algoritmo de retropropagación" . Redes neuronales y aprendizaje profundo . Prensa de determinación.
- McCaffrey, James (octubre de 2012). "Back-Propagation de redes neuronales para programadores" . Revista MSDN .
- Rojas, Raúl (1996). "El algoritmo de retropropagación" (PDF) . Redes neuronales: una introducción sistemática . Berlín: Springer. ISBN 3-540-60505-3.
enlaces externos
- Tutorial de redes neuronales de retropropagación en Wikiversity
- Bernacki, Mariusz; Włodarczyk, Przemysław (2004). "Principios de entrenamiento de redes neuronales multicapa mediante retropropagación" .
- Karpathy, Andrej (2016). "Lección 4: Retropropagación, Redes neuronales 1" . CS231n . Universidad de Stanford, a través de YouTube .
- "¿Qué está haciendo realmente la retropropagación?" . 3Azul1Marrón . 3 de noviembre de 2017 - a través de YouTube .