Articulo de referencia

Retropropagación

En el aprendizaje automático , la retropropagación es un método de cálculo de gradiente que se utiliza comúnmente para entrenar una red neuronal en el cálculo de actualizaciones...

En el aprendizaje automático , la retropropagación es un método de cálculo de gradiente que se utiliza comúnmente para entrenar una red neuronal en el cálculo de actualizaciones de parámetros.

Se trata de una aplicación eficiente de la regla de la cadena a las redes neuronales. La retropropagación calcula de forma eficiente el gradiente de la función de pérdida con respecto a los pesos de la red para un único ejemplo de entrada-salida. Para ello, propaga las derivadas hacia atrás, capa por capa, desde la capa de salida hasta la de entrada, evitando así cálculos redundantes de la regla de la cadena.

En rigor, el término retropropagación se refiere únicamente a un algoritmo para calcular eficientemente el gradiente, no a cómo se utiliza dicho gradiente; sin embargo, a menudo se emplea de forma imprecisa para referirse a todo el algoritmo de aprendizaje. Esto incluye modificar los parámetros del modelo en la dirección negativa del gradiente, como en el descenso de gradiente estocástico , o como paso intermedio en un optimizador más complejo, como la Estimación Adaptativa de Momentos . [ 1 ]

La retropropagación tuvo múltiples descubrimientos y descubrimientos parciales, con una historia y terminología complejas (véase §  Historia ). Otros nombres para la técnica incluyen "modo inverso de diferenciación automática " o " acumulación inversa ". [ 2 ]

Descripción general

La retropropagación calcula el gradiente en el espacio de pesos de una red neuronal de alimentación directa, con respecto a una función de pérdida . Denotemos:

  • incógnita{\displaystyle x}: entrada (vector de características)
  • y{\displaystyle y}: salida objetivo
    Para la clasificación, la salida será un vector de probabilidades de clase (por ejemplo,(0.1,0,7,0,2){\displaystyle (0.1,0.7,0.2)}y la salida objetivo es una clase específica, codificada por la variable one-hot / dummy (por ejemplo,(0,1,0){\displaystyle (0,1,0)}).
  • do{\displaystyle C}: función de pérdida o "función de coste" [ a ]
    Para la clasificación, se suele utilizar la entropía cruzada (XC, pérdida logarítmica ), mientras que para la regresión se suele utilizar la pérdida de error cuadrático (SEL).
  • L{\displaystyle L}: el número de capas
  • Wl=(wjkl){\displaystyle W^{l}=(w_{jk}^{l})}: los pesos entre capasl1{\displaystyle l-1}yl{\displaystyle l}, dóndewjkl{\displaystyle w_{jk}^{l}}es el peso entre elk{\displaystyle k}-ésimo nodo en la capal1{\displaystyle l-1}y elj{\displaystyle j}-ésimo nodo en la capal{\displaystyle l}[ b ]
  • Fl{\displaystyle f^{l}}: funciones de activación en la capal{\displaystyle l}
    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 multiclase, mientras que para las capas ocultas tradicionalmente se utilizaba una función sigmoide (función logística u otras) en cada nodo (coordenada), pero hoy en día es más variada, siendo comunes las funciones rectificadoras ( rampa , ReLU ).
  • ajl{\displaystyle a_{j}^{l}}: activación de laj{\displaystyle j}-ésimo nodo en la capal{\displaystyle l}.

En la derivación de la retropropagación, se utilizan otras cantidades intermedias introduciéndolas según sea necesario más adelante. Los términos de sesgo no se tratan de forma especial, ya que corresponden a un peso con una entrada fija de 1. Para la retropropagación, la función de pérdida y las funciones de activación específicas no importan siempre que estas y sus derivadas puedan evaluarse de manera eficiente. Las funciones de activación tradicionales incluyen sigmoide , tanh , ReLU , Swish , [ 3 ] Mish , [ 4 ] y muchas otras.

La red en su conjunto es una combinación de composición de funciones y multiplicación de matrices :

gramo(incógnita):=FL(WLFL1(WL1F1(W1incógnita))){\displaystyle g(x):=f^{L}(W^{L}f^{L-1}(W^{L-1}\cdots f^{1}(W^{1}x)\cdots ))}

Para un conjunto de entrenamiento habrá un conjunto de pares de entrada-salida,{(incógnitai,yi)}{\displaystyle \left\{(x_{i},y_{i})\right\}}Para cada par entrada-salida(incógnitai,yi){\displaystyle (x_{i},y_{i})}En el conjunto de entrenamiento, la pérdida del modelo en ese par es el costo de la diferencia entre la salida predicha.gramo(incógnitai){\displaystyle g(x_{i})}y el resultado objetivoyi{\displaystyle y_{i}}:

do(yi,gramo(incógnitai)){\displaystyle C(y_{i},g(x_{i}))}

Nótese la diferencia: durante la evaluación del modelo, los pesos son fijos mientras que las entradas varían (y la salida objetivo puede ser desconocida), y la red finaliza con la capa de salida (no incluye la función de pérdida). Durante el entrenamiento del modelo, el par entrada-salida es fijo mientras que los pesos varían, y la red finaliza con la función de pérdida.

La retropropagación calcula el gradiente para un par fijo de entrada-salida.(incógnitai,yi){\displaystyle (x_{i},y_{i})}donde los pesoswjkl{\displaystyle w_{jk}^{l}}puede variar. Cada componente individual del gradiente,do/wjkl,{\displaystyle \partial C/\partial w_{jk}^{l},}se puede calcular mediante la regla de la cadena; pero hacerlo por separado para cada peso es ineficiente. La retropropagación calcula eficientemente 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δl{\displaystyle \delta ^{l}}– de atrás hacia adelante.

De manera informal, el punto clave es que dado que la única forma en que un peso enWl{\displaystyle W^{l}}La pérdida afecta a través de su efecto en la siguiente capa, y lo hace de forma lineal .δl{\displaystyle \delta ^{l}}son los únicos datos que necesitas para calcular los gradientes de los pesos en la capal{\displaystyle l}y luego se pueden calcular los gradientes de los pesos de la capa anterior medianteδl1{\displaystyle \delta ^{l-1}}y se repite recursivamente. Esto evita la ineficiencia de dos maneras. Primero, evita la duplicación porque al calcular el gradiente en la capal{\displaystyle l}No es necesario recalcular todas las derivadas en capas posteriores.l+1,l+2,{\displaystyle l+1,l+2,\ldots }En segundo lugar, evita cálculos intermedios innecesarios, ya que en cada etapa calcula directamente el gradiente de los pesos con respecto a la salida 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.ajl/wjkl{\displaystyle \partial a_{j'}^{l'}/\partial w_{jk}^{l}}.

La retropropagación se puede expresar para redes simples de alimentación directa en términos de multiplicación de matrices , o más generalmente en términos del grafo adjunto .

multiplicación de matrices

Para el caso básico de una red de alimentación directa, donde los nodos de cada capa están conectados solo a los nodos de la siguiente capa inmediata (sin saltarse ninguna capa), y hay una función de pérdida que calcula una pérdida escalar para la salida final, la retropropagación se puede entender simplemente como una 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 derecha a izquierda —"hacia atrás"—, siendo el gradiente de los pesos entre cada capa una simple modificación de los productos parciales (el "error propagado hacia atrás").

Dado un par de entrada-salida(incógnita,y){\displaystyle (x,y)}La pérdida es:

do(y,FL(WLFL1(WL1F2(W2F1(W1incógnita))))){\displaystyle C(y,f^{L}(W^{L}f^{L-1}(W^{L-1}\cdots f^{2}(W^{2}f^{1}(W^{1}x))\cdots )))}

Para calcular esto, se comienza con la entradaincógnita{\displaystyle x}y avanza; denotemos la entrada ponderada de cada capa oculta comozl{\displaystyle z^{l}}y la salida de la capa ocultal{\displaystyle l}como la activaciónal{\displaystyle a^{l}}. Para la retropropagación, la activaciónal{\displaystyle a^{l}}así como los derivados(Fl){\displaystyle (f^{l})'}(evaluado enzl{\displaystyle z^{l}}) 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 en el valor de la red (en cada nodo) en la entrada.incógnita{\displaystyle x}:

ddodaLdaLdzLdzLdaL1daL1dzL1dzL1daL2da1dz1z1incógnita,{\displaystyle {\frac {dC}{da^{L}}}\cdot {\frac {da^{L}}{dz^{L}}}\cdot {\frac {dz^{L}}{da^{L-1}}}\cdot {\frac {da^{L-1}}{dz^{L-1}}}\cdot {\frac {dz^{L-1}}{da^{L-2}}}\cdot \ldots \cdot {\frac {da^{1}}{dz^{1}}}\cdot {\frac {\partial z^{1}}{\partial x}},}

dóndedaLdzL{\displaystyle {\frac {da^{L}}{dz^{L}}}}es una matriz diagonal .

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 ]

ddodaL(FL)WL(FL1)WL1(F1)W1.{\displaystyle {\frac {dC}{da^{L}}}\circ (f^{L})'\cdot W^{L}\circ (f^{L-1})'\cdot W^{L-1}\circ \cdots \circ (f^{1})'\cdot W^{1}.}

El gradiente{\displaystyle \nabla }es la transpuesta de la derivada de la salida en términos de la entrada, por lo que las matrices se transponen y el orden de la multiplicación se invierte, pero las entradas son las mismas:

incógnitado=(W1)T(F1)(WL1)T(FL1)(WL)T(FL)aLdo.{\displaystyle \nabla _{x}C=(W^{1})^{T}\cdot (f^{1})'\circ \ldots \circ (W^{L-1})^{T}\cdot (f^{L-1})'\circ (W^{L})^{T}\cdot (f^{L})'\circ \nabla _{a^{L}}C.}

La retropropagación consiste esencialmente en evaluar esta expresión de derecha a izquierda (o, equivalentemente, multiplicar la expresión anterior por la derivada de izquierda a derecha), calculando el gradiente en cada capa del proceso; hay un paso adicional, porque el gradiente de los pesos no es solo una subexpresión: hay una multiplicación extra.

Introduciendo la cantidad auxiliarδl{\displaystyle \delta ^{l}}para los productos parciales (multiplicando de derecha a izquierda), interpretado como el "error en el nivell{\displaystyle l}" y definido como el gradiente de los valores de entrada en el nivell{\displaystyle l}:

δl:=(Fl)(Wl+1)T(Fl+1)(WL1)T(FL1)(WL)T(FL)aLdo.{\displaystyle \delta ^{l}:=(f^{l})'\circ (W^{l+1})^{T}\cdot (f^{l+1})'\circ \cdots \circ (W^{L-1})^{T}\cdot (f^{L-1})'\circ (W^{L})^{T}\cdot (f^{L})'\circ \nabla _{a^{L}}C.}

Tenga en cuenta queδl{\displaystyle \delta ^{l}}es un vector, de longitud igual al número de nodos en el nivell{\displaystyle l}; cada componente se interpreta como el "costo atribuible a (el valor de) ese nodo".

El gradiente de los pesos en la capal{\displaystyle l}es entonces:

Wldo=δl(al1)T.{\displaystyle \nabla _{W^{l}}C=\delta ^{l}(a^{l-1})^{T}.}

El factor deal1{\displaystyle a^{l-1}}es porque los pesosWl{\displaystyle W^{l}}entre nivell1{\displaystyle l-1}yl{\displaystyle l}nivel de afectaciónl{\displaystyle l}proporcionalmente a las entradas (activaciones): las entradas son fijas, los pesos varían.

Elδl{\displaystyle \delta ^{l}}se puede calcular fácilmente de forma recursiva, yendo de derecha a izquierda, como:

δl1:=(Fl1)(Wl)Tδl.{\displaystyle \delta ^{l-1}:=(f^{l-1})'\circ (W^{l})^{T}\cdot \delta ^{l}.}

De este modo, los gradientes de los pesos se pueden calcular utilizando unas pocas multiplicaciones de matrices para cada nivel; esto es la retropropagación.

En comparación con el cálculo ingenuo hacia adelante (utilizando elδl{\displaystyle \delta ^{l}}(a modo de ejemplo):

δ1=(F1)(W2)T(F2)(WL1)T(FL1)(WL)T(FL)aLdoδ2=(F2)(WL1)T(FL1)(WL)T(FL)aLdoδL1=(FL1)(WL)T(FL)aLdoδL=(FL)aLdo,{\displaystyle {\begin{aligned}\delta ^{1}&=(f^{1})'\circ (W^{2})^{T}\cdot (f^{2})'\circ \cdots \circ (W^{L-1})^{T}\cdot (f^{L-1})'\circ (W^{L})^{T}\cdot (f^{L})'\circ \nabla _{a^{L}}C\\\delta ^{2}&=(f^{2})'\circ \cdots \circ (W^{L-1})^{T}\cdot (f^{L-1})'\circ (W^{L})^{T}\cdot (f^{L})'\circ \nabla _{a^{L}}C\\&\vdots \\\delta ^{L-1}&=(f^{L-1})'\circ (W^{L})^{T}\cdot (f^{L})'\circ \nabla _{a^{L}}C\\\delta ^{L}&=(f^{L})'\circ \nabla _{a^{L}}C,\end{aligned}}}

Existen dos diferencias clave con la retropropagación:

  1. Computaciónδl1{\displaystyle \delta ^{l-1}}en términos deδl{\displaystyle \delta ^{l}}evita la obvia duplicación de capasl{\displaystyle l}y más allá.
  2. Multiplicando a partir deaLdo{\displaystyle \nabla _{a^{L}}C}– propagar el error hacia atrás – significa que cada paso simplemente multiplica un vector (δl{\displaystyle \delta ^{l}}) por las matrices de pesos(Wl)T{\displaystyle (W^{l})^{T}}y derivados de activaciones(Fl1){\displaystyle (f^{l-1})'}Por el contrario, multiplicar hacia adelante, comenzando desde los cambios en una capa anterior, significa que cada multiplicación multiplica una matriz por una matriz . Esto es mucho más costoso y corresponde a rastrear cada posible ruta de un cambio en una capa.l{\displaystyle l}adelante a los cambios en la capal+2{\displaystyle l+2}(para multiplicarWl+1{\displaystyle W^{l+1}}porWl+2{\displaystyle W^{l+2}}, con multiplicaciones adicionales para las derivadas de las activaciones), lo que calcula innecesariamente las cantidades intermedias de cómo los cambios de peso afectan los valores de los nodos ocultos.

Grafo adjunto

Para gráficos más generales y otras variaciones avanzadas, la retropropagación puede entenderse en términos de diferenciación automática , donde la retropropagación es un caso especial de acumulación inversa (o "modo inverso"). [ 2 ]

Intuición

Motivación

El objetivo de cualquier algoritmo de aprendizaje supervisado es encontrar una función que mapee de la mejor manera un conjunto de entradas a su salida correcta. La motivación para la retropropagación es entrenar una red neuronal multicapa de tal manera que pueda aprender las representaciones internas apropiadas que le permitan aprender cualquier mapeo arbitrario de entrada a salida. [ 5 ]

El aprendizaje como problema de optimización

Para comprender la derivación matemática del algoritmo de retropropagación, es útil desarrollar primero cierta intuición sobre la relación entre la salida real de una neurona y la salida correcta para un ejemplo de entrenamiento particular. Consideremos una red neuronal simple con dos unidades de entrada, una unidad de salida y ninguna unidad oculta, y en la que cada neurona utiliza una salida lineal (a diferencia de la mayoría de los trabajos sobre redes neuronales, en los que el mapeo de entradas a salidas no es lineal) [ g ] que es la suma ponderada de su entrada.

Una red neuronal simple con dos unidades de entrada (cada una con una sola entrada) y una unidad de salida (con dos entradas).

Inicialmente, antes del entrenamiento, los pesos se establecerán aleatoriamente. Luego, la neurona aprende de los ejemplos de entrenamiento , que en este caso consisten en un conjunto de tuplas.(incógnita1,incógnita2,t){\displaystyle (x_{1},x_{2},t)}dóndeincógnita1{\displaystyle x_{1}}yincógnita2{\displaystyle x_{2}}son las entradas a la red y t es la salida correcta (la salida que la red debería producir dadas esas entradas, una vez entrenada). La red inicial, dadaincógnita1{\displaystyle x_{1}}yincógnita2{\displaystyle x_{2}}, calculará una salida y que probablemente difiera de t (dados pesos aleatorios). Una función de pérdidaL(t,y){\displaystyle L(t,y)}Se utiliza para medir la discrepancia entre la salida objetivo t y la salida calculada y . Para problemas de análisis de regresión, el error cuadrático puede utilizarse como función de pérdida; para clasificación , se puede utilizar la entropía cruzada categórica .

Como ejemplo, consideremos un problema de regresión que utiliza el error cuadrático como función de pérdida:

L(t,y)=(ty)2=mi,{\displaystyle L(t,y)=(t-y)^{2}=E,}

donde E es la discrepancia o error.

Consideremos la red en un único caso de entrenamiento:(1,1,0){\displaystyle (1,1,0)}. Por lo tanto, la entradaincógnita1{\displaystyle x_{1}}yincógnita2{\displaystyle x_{2}}son 1 y 1 respectivamente y la salida correcta, t es 0. Ahora, si se grafica 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 coincide exactamente con la salida objetivo t . Por lo tanto, el problema de mapear entradas a salidas se puede reducir a un problema de optimización de encontrar una función que produzca el error mínimo.

Superficie de error de una neurona lineal para un único caso de entrenamiento.

Sin embargo, la salida de una neurona depende de la suma ponderada de todas sus entradas:

y=incógnita1w1+incógnita2w2,{\displaystyle y=x_{1}w_{1}+x_{2}w_{2},}

dóndew1{\displaystyle w_{1}}yw2{\displaystyle w_{2}}son los pesos en la conexión desde las unidades de entrada a la unidad de salida. Por lo tanto, el error también depende de los pesos que llegan a la neurona, que es, en última instancia, lo que debe modificarse en la red para permitir el aprendizaje.

En este ejemplo, al inyectar los datos de entrenamiento(1,1,0){\displaystyle (1,1,0)}, la función de pérdida se convierte en

mi=(ty)2=y2=(incógnita1w1+incógnita2w2)2=(w1+w2)2.{\displaystyle E=(t-y)^{2}=y^{2}=(x_{1}w_{1}+x_{2}w_{2})^{2}=(w_{1}+w_{2})^{2}.}

Luego, la función de pérdidami{\displaystyle E}toma la forma de un cilindro parabólico con su base dirigida a lo largow1=w2{\displaystyle w_{1}=-w_{2}}. Dado que todos los conjuntos de pesos que satisfacenw1=w2{\displaystyle w_{1}=-w_{2}}Minimizar la función de pérdida; en este caso, se requieren restricciones adicionales para converger a una solución única. Dichas restricciones adicionales podrían generarse estableciendo condiciones específicas para los pesos o inyectando datos de entrenamiento adicionales.

One commonly used algorithm to find the set of weights that minimizes the error is gradient descent. By backpropagation, the steepest descent direction is calculated of the loss function versus the present synaptic weights. Then, the weights can be modified along the steepest descent direction, and the error is minimized in an efficient way.

Derivation

The gradient descent method involves calculating the derivative of the loss function with respect to the weights of the network. This is normally done using backpropagation. Assuming one output neuron,[h] the squared error function is

E=L(t,y){\displaystyle E=L(t,y)}

where

L{\displaystyle L} is the loss for the output y{\displaystyle y} and target value t{\displaystyle t},
t{\displaystyle t} is the target output for a training sample, and
y{\displaystyle y} is the actual output of the output neuron.

In this section, the order of the weight indexes are reversed relative to the prior section: wij{\displaystyle w_{ij}} is weight from the i{\displaystyle i}th to the j{\displaystyle j}th unit. [i] For each neuron j{\displaystyle j}, its output oj{\displaystyle o_{j}} is defined as

oj=φ(netj)=φ(k=1nwkjxk),{\displaystyle o_{j}=\varphi ({\text{net}}_{j})=\varphi \left(\sum _{k=1}^{n}w_{kj}x_{k}\right),}

where the activation functionφ{\displaystyle \varphi } is non-linear and differentiable over the activation region (the ReLU is not differentiable at one point). A historically used activation function is the logistic function:

φ(z)=11+ez{\displaystyle \varphi (z)={\frac {1}{1+e^{-z}}}}

which has a convenient derivative of:

dφdz=φ(z)(1φ(z)){\displaystyle {\frac {d\varphi }{dz}}=\varphi (z)(1-\varphi (z))}

The input netj{\displaystyle {\text{net}}_{j}} to a neuron is the weighted sum of outputs ok{\displaystyle o_{k}} of previous neurons. If the neuron is in the first layer after the input layer, the ok{\displaystyle o_{k}} of the input layer are simply the inputs xk{\displaystyle x_{k}} to the network. The number of input units to the neuron is n{\displaystyle n}. The variable wkj{\displaystyle w_{kj}} denotes the weight between neuron k{\displaystyle k} of the previous layer and neuron j{\displaystyle j} of the current layer.

Finding the derivative of the error

Diagram of an artificial neural network to illustrate the notation used here

Calculating the partial derivative of the error with respect to a weight wij{\displaystyle w_{ij}} is done using the chain rule twice:

In the last factor of the right-hand side of the above, only one term in the sum netj{\displaystyle {\text{net}}_{j}} depends on wij{\displaystyle w_{ij}}, so that

If the neuron is in the first layer after the input layer, oi{\displaystyle o_{i}} is just xi{\displaystyle x_{i}}.

The derivative of the output of neuron j{\displaystyle j} with respect to its input is simply the partial derivative of the activation function:

which for the logistic activation function

ojnetj=netjφ(netj)=φ(netj)(1φ(netj))=oj(1oj){\displaystyle {\frac {\partial o_{j}}{\partial {\text{net}}_{j}}}={\frac {\partial }{\partial {\text{net}}_{j}}}\varphi ({\text{net}}_{j})=\varphi ({\text{net}}_{j})(1-\varphi ({\text{net}}_{j}))=o_{j}(1-o_{j})}

This is the reason why backpropagation requires that the activation function be differentiable. (Nevertheless, the ReLU activation function, which is non-differentiable at 0, has become quite popular, e.g. in AlexNet)

The first factor is straightforward to evaluate if the neuron is in the output layer, because then oj=y{\displaystyle o_{j}=y} and

If half of the square error is used as loss function we can rewrite it as

Eoj=Ey=y12(ty)2=yt{\displaystyle {\frac {\partial E}{\partial o_{j}}}={\frac {\partial E}{\partial y}}={\frac {\partial }{\partial y}}{\frac {1}{2}}(t-y)^{2}=y-t}

However, if j{\displaystyle j}se encuentra en una capa interna arbitraria de la red, encontrando la derivadami{\displaystyle E}con respecto aoj{\displaystyle o_{j}}es menos obvio.

En vista demi{\displaystyle E}como una función cuyas entradas son todas neuronasL={,v,,w}{\displaystyle L=\{u,v,\dots ,w\}}recibiendo información de la neuronaj{\displaystyle j},

mi(oj)oj=mi(nortemit,netov,,nortemitw)oj{\displaystyle {\frac {\partial E(o_{j})}{\partial o_{j}}}={\frac {\partial E(\mathrm {net} _{u},{\text{net}}_{v},\dots ,\mathrm {net} _{w})}{\partial o_{j}}}}

y tomando la derivada total con respecto aoj{\displaystyle o_{j}}Se obtiene una expresión recursiva para la derivada:

Por lo tanto, la derivada con respecto aoj{\displaystyle o_{j}}se puede calcular si todas las derivadas con respecto a las salidaso{\displaystyle o_{\ell }}de la siguiente capa – las más cercanas a la neurona de salida – son conocidas. [Nota: si alguna de las neuronas en el conjuntoL{\displaystyle L}no estaban conectados a la neuronaj{\displaystyle j}, serían independientes dewij{\displaystyle w_{ij}}y la derivada parcial correspondiente bajo la suma se anularía a 0.]

Sustituyendo las ecuaciones 2 , 3, 4 y 5 en la ecuación 1 obtenemos:

miwij=miojojnetojnetojwij=miojojnetojoi{\displaystyle {\frac {\partial E}{\partial w_{ij}}}={\frac {\partial E}{\partial o_{j}}}{\frac {\partial o_{j}}{\partial {\text{net}}_{j}}}{\frac {\partial {\text{net}}_{j}}{\partial w_{ij}}}={\frac {\partial E}{\partial o_{j}}}{\frac {\partial o_{j}}{\partial {\text{net}}_{j}}}o_{i}}
miwij=oiδj{\displaystyle {\frac {\partial E}{\partial w_{ij}}}=o_{i}\delta _{j}}

con

δj=miojojnetoj={L(t,oj)ojdφ(netoj)dnetojsi j es una neurona de salida,(Lwjδ)dφ(netoj)dnetojsi j es una neurona interna.{\displaystyle \delta _{j}={\frac {\partial E}{\partial o_{j}}}{\frac {\partial o_{j}}{\partial {\text{net}}_{j}}}={\begin{cases}{\frac {\partial L(t,o_{j})}{\partial o_{j}}}{\frac {d\varphi ({\text{net}}_{j})}{d{\text{net}}_{j}}}&{\text{if }}j{\text{ is an output neuron,}}\\(\sum _{\ell \in L}w_{j\ell }\delta _{\ell }){\frac {d\varphi ({\text{net}}_{j})}{d{\text{net}}_{j}}}&{\text{if }}j{\text{ is an inner neuron.}}\end{cases}}}

siφ{\displaystyle \varphi }es la función logística y el error es el error cuadrático:

δj=miojojnetoj={(ojtj)oj(1oj)si j es una neurona de salida,(Lwjδ)oj(1oj)si j es una neurona interna.{\displaystyle \delta _{j}={\frac {\partial E}{\partial o_{j}}}{\frac {\partial o_{j}}{\partial {\text{net}}_{j}}}={\begin{cases}(o_{j}-t_{j})o_{j}(1-o_{j})&{\text{if }}j{\text{ is an output neuron,}}\\(\sum _{\ell \in L}w_{j\ell }\delta _{\ell })o_{j}(1-o_{j})&{\text{if }}j{\text{ is an inner neuron.}}\end{cases}}}

Para actualizar el pesowij{\displaystyle w_{ij}}Al usar el descenso de gradiente, uno debe elegir una tasa de aprendizaje ,η>0{\displaystyle \eta >0}. El cambio de peso debe reflejar el impacto enmi{\displaystyle E}de un aumento o disminución enwij{\displaystyle w_{ij}}. Simiwij>0{\displaystyle {\frac {\partial E}{\partial w_{ij}}}>0}, un aumento enwij{\displaystyle w_{ij}}aumentosmi{\displaystyle E}; por el contrario, simiwij<0{\displaystyle {\frac {\partial E}{\partial w_{ij}}}<0}, un aumento enwij{\displaystyle w_{ij}}disminuyemi{\displaystyle E}. El nuevoΔwij{\displaystyle \Delta w_{ij}}se suma al peso anterior, y el producto de la tasa de aprendizaje y el gradiente, multiplicado por1{\displaystyle -1}garantiza quewij{\displaystyle w_{ij}}cambia de una manera que siempre disminuyemi{\displaystyle E}En otras palabras, en la ecuación inmediatamente inferior,ηmiwij{\displaystyle -\eta {\frac {\partial E}{\partial w_{ij}}}}siempre cambiawij{\displaystyle w_{ij}}de tal manera quemi{\displaystyle E}se ha reducido:

Δwij=ηmiwij=ηoiδj{\displaystyle \Delta w_{ij}=-\eta {\frac {\partial E}{\partial w_{ij}}}=-\eta o_{i}\delta _{j}}

Descenso de gradiente de segundo orden

Utilizando una matriz hessiana de derivadas de segundo orden de la función de error, el algoritmo de Levenberg-Marquardt suele converger más rápido que el descenso de gradiente de primer orden, especialmente cuando la topología de la función de error es compleja. [ 6 ] [ 7 ] También puede encontrar soluciones con un número menor de nodos para los que otros métodos podrían no converger. [ 7 ] La matriz hessiana puede aproximarse mediante la matriz de información de Fisher . [ 8 ]

Como ejemplo, consideremos una red de alimentación directa simple. En ell{\displaystyle l}-ésima capa, tenemosincógnitai(l),ai(l)=F(incógnitai(l)),incógnitai(l+1)=jWijaj(l){\displaystyle x_{i}^{(l)},\quad a_{i}^{(l)}=f(x_{i}^{(l)}),\quad x_{i}^{(l+1)}=\sum _{j}W_{ij}a_{j}^{(l)}}dóndeincógnita{\displaystyle x}son las preactivaciones,a{\displaystyle a}son las activaciones, yW{\displaystyle W}es la matriz de pesos. Dada una función de pérdidaL{\displaystyle L}, la retropropagación de primer orden establece queLaj(l)=jWijLincógnitai(l+1),Lincógnitaj(l)=F(incógnitaj(l))Laj(l){\displaystyle {\frac {\partial L}{\partial a_{j}^{(l)}}}=\sum _{j}W_{ij}{\frac {\partial L}{\partial x_{i}^{(l+1)}}},\quad {\frac {\partial L}{\partial x_{j}^{(l)}}}=f'(x_{j}^{(l)}){\frac {\partial L}{\partial a_{j}^{(l)}}}}y la retropropagación de segundo orden establece que2Laj1(l)aj2(l)=j1j2Wi1j1Wi2j22Lincógnitai1(l+1)incógnitai2(l+1),2Lincógnitaj1(l)incógnitaj2(l)=F(incógnitaj1(l))F(incógnitaj2(l))2Laj1(l)aj2(l)+δj1j2F(incógnitaj1(l))Laj1(l){\displaystyle {\frac {\partial ^{2}L}{\partial a_{j_{1}}^{(l)}\partial a_{j_{2}}^{(l)}}}=\sum _{j_{1}j_{2}}W_{i_{1}j_{1}}W_{i_{2}j_{2}}{\frac {\partial ^{2}L}{\partial x_{i_{1}}^{(l+1)}\partial x_{i_{2}}^{(l+1)}}},\quad {\frac {\partial ^{2}L}{\partial x_{j_{1}}^{(l)}\partial x_{j_{2}}^{(l)}}}=f'(x_{j_{1}}^{(l)})f'(x_{j_{2}}^{(l)}){\frac {\partial ^{2}L}{\partial a_{j_{1}}^{(l)}\partial a_{j_{2}}^{(l)}}}+\delta _{j_{1}j_{2}}f''(x_{j_{1}}^{(l)}){\frac {\partial L}{\partial a_{j_{1}}^{(l)}}}}dóndeδ{\displaystyle \delta }es el símbolo delta de Dirac .

Las derivadas de orden arbitrario en grafos computacionales arbitrarios se pueden calcular mediante retropropagación, pero con expresiones más complejas para órdenes superiores.

Función de pérdida

La función de pérdida asigna valores a una o más variables, convirtiéndolos en un número real que representa intuitivamente un "costo" asociado a dichos valores. En la retropropagación, la función de pérdida calcula la diferencia entre la salida de la red y su salida esperada, una vez que un ejemplo de entrenamiento se ha 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 pueda utilizarse en la retropropagación. [ 9 ] La primera es que se puede escribir como un promediomi=1norteincógnitamiincógnita{\textstyle E={\frac {1}{n}}\sum _{x}E_{x}}sobre funciones de errormiincógnita{\textstyle E_{x}}, paranorte{\textstyle n}ejemplos de capacitación individual,incógnita{\textstyle x}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 único ejemplo de entrenamiento, el cual debe generalizarse a la función de error global. La segunda suposición es que puede expresarse como una función de las salidas de la red neuronal.

Ejemplo de función de pérdida

Dejary,y{\displaystyle y,y'}ser vectores enRnorte{\displaystyle \mathbb {R} ^{n}}.

Seleccione una función de errormi(y,y){\displaystyle E(y,y')}medir la diferencia entre dos salidas. La opción estándar es el cuadrado de la distancia euclidiana entre los vectores.y{\displaystyle y}yy{\displaystyle y'}:mi(y,y)=12yy2{\displaystyle E(y,y')={\tfrac {1}{2}}\lVert y-y'\rVert ^{2}}La función de error sobrenorte{\textstyle n}Los ejemplos de entrenamiento se pueden escribir entonces como un promedio de las pérdidas en los ejemplos individuales:mi=12norteincógnita(y(incógnita)y(incógnita))2{\displaystyle E={\frac {1}{2n}}\sum _{x}\lVert (y(x)-y'(x))\rVert ^{2}}

Limitaciones

El método de descenso de gradiente puede encontrar un mínimo local en lugar del mínimo global.
  • El descenso de gradiente con retropropagación no garantiza encontrar el mínimo global de la función de error, sino solo un mínimo local; además, tiene dificultades para superar las mesetas en el paisaje de la función de error. Este problema, causado por la no convexidad de las funciones de error en las redes neuronales, se consideró durante mucho tiempo una desventaja importante, pero Yann LeCun et al. argumentan que, en muchos problemas prácticos, no lo es. [ 10 ]
  • El aprendizaje por retropropagación no requiere la normalización de los vectores de entrada; sin embargo, la normalización podría mejorar el rendimiento. [ 11 ]
  • La retropropagación requiere que se conozcan las derivadas de las funciones de activación en el momento del diseño de la red.

Historia

Precursores

La retropropagación se ha derivado repetidamente, ya que es esencialmente una aplicación eficiente de la regla de la cadena (escrita por primera vez por Gottfried Wilhelm Leibniz en 1676) [ 12 ] [ 13 ] a las redes neuronales.

La terminología "corrección de errores por retropropagación" fue introducida en 1962 por Frank Rosenblatt , pero él no sabía cómo implementarla. [ 14 ] En cualquier caso, solo estudió neuronas cuyas salidas eran niveles discretos, que solo tenían derivadas cero, lo que hacía imposible la retropropagación.

Los precursores de la retropropagación aparecieron en la teoría de control óptimo desde la década de 1950. Yann LeCun et al. atribuyen el trabajo de Pontryagin y otros en la década de 1950 en la teoría de control óptimo, especialmente el método del estado adjunto , por ser una versión de tiempo continuo de la retropropagación . [ 15 ] Hecht-Nielsen [ 16 ] atribuye el algoritmo de Robbins-Monro (1951) [ 17 ] y el Control Óptimo Aplicado (1969) de Arthur Bryson y Yu-Chi Ho como presagios de la retropropagación. Otros precursores fueron Henry J. Kelley 1960, [ 18 ] y Arthur E. Bryson (1961). [ 19 ] En 1962, Stuart Dreyfus publicó una derivación más simple basada solo en la regla de la cadena . [ 20 ] [ 21 ] [ 22 ] En 1973, adaptó los parámetros de los controladores en proporción a los gradientes de error. [ 23 ] A diferencia de la retropropagación moderna, estos precursores utilizaban cálculos estándar de la matriz jacobiana de una etapa a la anterior, sin abordar los enlaces directos entre varias etapas ni las posibles ganancias adicionales de eficiencia debidas a la escasez de la red. [ 24 ]

El algoritmo de aprendizaje ADALINE (1960) era un descenso de gradiente con una función de pérdida de error cuadrático para una sola capa. El primer perceptrón multicapa (MLP) con más de una capa entrenado mediante descenso de gradiente estocástico [ 17 ] fue publicado en 1967 por Shun'ichi Amari . [ 25 ] El MLP tenía 5 capas, con 2 capas entrenables, y aprendió a clasificar patrones no linealmente separables. [ 24 ]

retropropagación moderna

La retropropagación moderna fue publicada por primera vez por Seppo Linnainmaa como "modo inverso de diferenciación automática " (1970) [ 26 ] para redes discretas conectadas de funciones diferenciables anidadas . [ 27 ] [ 28 ] [ 29 ]

En 1982, Paul Werbos aplicó la retropropagación a las MLP de la forma que se ha convertido en estándar. [ 30 ] [ 31 ] Werbos describió cómo desarrolló la retropropagación en una entrevista. En 1971, durante su trabajo de doctorado, desarrolló la retropropagación para matematizar el "flujo de energía psíquica" de Freud . Enfrentó repetidas dificultades para publicar el trabajo, lográndolo finalmente en 1981. [ 32 ] También afirmó que "la primera aplicación práctica de la retropropagación fue para estimar un modelo dinámico para predecir el nacionalismo y las comunicaciones sociales en 1974" por él. [ 33 ]

Alrededor de 1982, [ 32 ] : 376 David E. Rumelhart desarrolló de forma independiente [ 34 ] : 252 la retropropagación y enseñó el algoritmo a otros en su círculo de investigación. No citó trabajos previos porque los desconocía. Publicó el algoritmo primero en un artículo de 1985, luego en un artículo de Nature de 1986 un análisis experimental de la técnica. [ 35 ] Estos artículos fueron muy citados, contribuyeron a la popularización de la retropropagación y coincidieron con el resurgimiento del interés de investigación en redes neuronales durante la década de 1980. [ 5 ] [ 36 ] [ 37 ]

En 1985, David Parker también describió el método. [ 38 ] [ 39 ] Yann LeCun propuso una forma alternativa de retropropagación para redes neuronales en su tesis doctoral en 1987. [ 40 ]

El descenso de gradiente tardó bastante tiempo en ser aceptado. Algunas objeciones iniciales fueron: no había garantías de que el descenso de gradiente pudiera alcanzar un mínimo global, solo un mínimo local; los fisiólogos sabían que las neuronas producían señales discretas (0/1), no continuas, y con señales discretas, no hay gradiente que tomar. Véase la entrevista con Geoffrey Hinton , [ 32 ] quien recibió el Premio Nobel de Física de 2024 por sus contribuciones al campo. [ 41 ]

Primeros éxitos

Diversas aplicaciones en el entrenamiento de redes neuronales mediante retropropagación contribuyeron a su aceptación, alcanzando en ocasiones popularidad fuera de los círculos de investigación.

En 1987, NETtalk aprendió a convertir texto en inglés en pronunciación. Sejnowski intentó entrenarlo con retropropagación y máquina de Boltzmann, pero encontró que la retropropagación era significativamente más rápida, por lo que la utilizó para la versión final de NETtalk. [ 32 ] : 324 El programa NETtalk se convirtió en un éxito popular, apareciendo en el programa Today . [ 42 ]

En 1989, Dean A. Pomerleau publicó ALVINN, una red neuronal entrenada para conducir de forma autónoma utilizando retropropagación. [ 43 ]

LeNet se publicó en 1989 para reconocer códigos postales escritos a mano.

En 1992, TD-Gammon logró un nivel de juego humano superior en backgammon. Era un agente de aprendizaje por refuerzo con una red neuronal de dos capas, entrenada mediante retropropagación. [ 44 ]

En 1993, Eric Wan ganó un concurso internacional de reconocimiento de patrones mediante retropropagación. [ 45 ] [ 46 ]

Después de la retropropagación

Durante la década de 2000 cayó en desuso , pero resurgió en la década de 2010, beneficiándose de sistemas informáticos potentes y económicos basados ​​en GPU . Esto se ha manifestado especialmente en el reconocimiento de voz , la visión artificial , el procesamiento del lenguaje natural y la investigación sobre el aprendizaje de la estructura del lenguaje (en la que se ha utilizado para explicar diversos fenómenos relacionados con el aprendizaje de la primera [ 47 ] y la segunda lengua [ 48 ] ) [ 49 ] .

Se ha sugerido que la retropropagación de errores explica los componentes del potencial evocado relacionado con eventos (ERP) del cerebro humano, como el N400 y el P600 . [ 50 ]

En 2023, un equipo de la Universidad de Stanford implementó un algoritmo de retropropagación en un procesador fotónico . [ 51 ]

Véase también

Notas

  1. Usardo{\displaystyle C}para que la función de pérdida permitaL{\displaystyle L}que se utilizará para el número de capas
  2. Esto sigue a Nielsen (2015) y significa (izquierda) multiplicación por la matrizWl{\displaystyle W^{l}}corresponde a convertir los valores de salida de la capal1{\displaystyle l-1}valores de entrada de la capal{\displaystyle l}Las columnas corresponden a las coordenadas de entrada y las filas a las coordenadas de salida.
  3. Esta sección sigue y resume en gran medida a Nielsen (2015) .
  4. The derivative of the loss function is a covector, since the loss function is a scalar-valued function of several variables.
  5. The activation function is applied to each node separately, so the derivative is just the diagonal matrix of the derivative on each node. This is often represented as the Hadamard product with the vector of derivatives, denoted by (fl){\displaystyle (f^{l})'\odot }, which is mathematically identical but better matches the internal representation of the derivatives as a vector, rather than a diagonal matrix.
  6. Since matrix multiplication is linear, the derivative of multiplying by a matrix is just the matrix: (Wx)=W{\displaystyle (Wx)'=W}.
  7. One may notice that multi-layer neural networks use non-linear activation functions, so an example with linear neurons seems obscure. However, even though the error surface of multi-layer networks are much more complicated, locally they can be approximated by a paraboloid. Therefore, linear neurons are used for simplicity and easier understanding.
  8. There can be multiple output neurons, in which case the error is the squared norm of the difference vector.
  9. This order follows (Rumelhart, Hinton & Williams, 1986a):[5] "Δwij{\displaystyle \Delta w_{i}j} is the change to be made to the weight from the i{\displaystyle i}th to the j{\displaystyle j}th unit"

References

  1. Goodfellow, Bengio & Courville 2016, p. 200, "The term back-propagation is often misunderstood as meaning the whole learning algorithm for multi layer neural networks. Actually, back-propagation refers only to the method for computing the gradient, while another algorithm, such as stochastic gradient descent, is used to perform learning using this gradient."
  2. 12Goodfellow, Bengio & Courville (2016, p. 217–218), "The back-propagation algorithm described here is only one approach to automatic differentiation. It is a special case of a broader class of techniques called reverse mode accumulation."
  3. Ramachandran, Prajit; Zoph, Barret; Le, Quoc V. (2017-10-27). "Searching for Activation Functions". arXiv:1710.05941 [cs.NE].
  4. Misra, Diganta (2019-08-23). "Mish: A Self Regularized Non-Monotonic Activation Function". arXiv:1908.08681 [cs.LG].
  5. 1 2 3 Rumelhart, David E. ; Hinton, Geoffrey E. ; Williams, Ronald J. (1986a). "Aprendizaje de representaciones mediante la retropropagación de errores". Nature . 323 (6088): 533– 536. Bibcode : 1986Natur.323..533R . doi : 10.1038/323533a0 . S2CID 205001834 . 
  6. Tan, Hong Hui; Lim, King Han (2019). "Revisión de técnicas de optimización de segundo orden en retropropagación de redes neuronales artificiales" . IOP Conference Series: Materials Science and Engineering . 495 (1) 012003. Bibcode : 2019MS & E..495a2003T . doi : 10.1088/1757-899X/495/1/012003 . S2CID 208124487 . 
  7. 1 2 Wiliamowski, Bogdan; Yu, Hao (junio de 2010). "Improved Computation for Levenberg–Marquardt Training" (PDF) . IEEE Transactions on Neural Networks and Learning Systems . 21 (6): 930. Bibcode : 2010ITNN...21..930W . doi : 10.1109/TNN.2010.2045657 .
  8. Martens, James (agosto de 2020). "Nuevas perspectivas y conocimientos sobre el método del gradiente natural". Journal of Machine Learning Research (21). arXiv : 1412.1193 .
  9. Nielsen (2015) , "¿Qué supuestos debemos hacer sobre nuestra función de coste... para poder aplicar la retropropagación? El primer supuesto que necesitamos es que la función de coste se puede escribir como un promedio... sobre las funciones de coste... para ejemplos de entrenamiento individuales... El segundo supuesto que hacemos sobre el coste es que se puede escribir como una función de las salidas de la red neuronal..."
  10. LeCun, Yann ; Bengio, Yoshua; Hinton, Geoffrey (2015). " Aprendizaje profundo" (PDF) . Nature . 521 (7553): 436– 444. Bibcode : 2015Natur.521..436L . doi : 10.1038/nature14539 . PMID 26017442. S2CID 3074096 .  
  11. Buckland, Matt; Collins, Mark (2002). Técnicas de IA para la programación de videojuegos . Boston: Premier Press. ISBN 1-931841-08-X.
  12. Leibniz, Gottfried Wilhelm Freiherr von (1920). Los primeros manuscritos matemáticos de Leibniz: traducidos de los textos latinos publicados por Carl Immanuel Gerhardt con notas críticas e históricas (Leibniz publicó la regla de la cadena en unas memorias de 1676) . Open Court Publishing Company. ISBN 978-0-598-81846-1.{{cite book}}: Incompatibilidad de ISBN/Fecha ( ayuda )
  13. Rodríguez, Omar Hernández; López Fernández, Jorge M. (2010). «Una reflexión semiótica sobre la didáctica de la regla de la cadena» . El entusiasta de las matemáticas . 7 (2): 321– 332. doi : 10.54870/1551-3440.1191 . S2CID 29739148 . Consultado el 4 de agosto de 2019 . 
  14. Rosenblatt, Frank (1962). Principios de neurodinámica . Spartan, Nueva York. págs. 287–298 . 
  15. LeCun, Yann, et al. "Un marco teórico para la retropropagación". Actas de la escuela de verano de modelos conexionistas de 1988. Vol. 1. 1988.
  16. Hecht-Nielsen, Robert (1990). Neurocomputing . Internet Archive. Reading, Mass.: Addison-Wesley Pub. Co. pp. 124–125 . ISBN   978-0-201-09355-1.
  17. 1 2 Robbins, H. ; Monro, S. (1951). "Un método de aproximación estocástica" . The Annals of Mathematical Statistics . 22 (3): 400. doi : 10.1214/aoms/1177729586 .
  18. Kelley, Henry J. (1960). "Teoría del gradiente de las trayectorias de vuelo óptimas". ARS Journal . 30 (10): 947– 954. doi : 10.2514/8.5282 .
  19. Bryson, Arthur E. (1962). "Un método de gradiente para optimizar procesos de asignación multietapa". Actas del Simposio de la Universidad de Harvard sobre computadoras digitales y sus aplicaciones, 3-6 de abril de 1961. Cambridge: Harvard University Press. OCLC 498866871 . 
  20. Dreyfus, Stuart (1962). "La solución numérica de problemas variacionales" . Journal of Mathematical Analysis and Applications . 5 (1): 30– 45. doi : 10.1016/0022-247x(62)90004-5 .
  21. Dreyfus, Stuart E. (1990). "Redes neuronales artificiales, retropropagación y el procedimiento de gradiente de Kelley-Bryson". Journal of Guidance, Control, and Dynamics . 13 (5): 926– 928. Bibcode : 1990JGCD...13..926D . doi : 10.2514/3.25422 .
  22. Mizutani, Eiji; Dreyfus, Stuart; Nishio, Kenichi (julio de 2000). "Sobre la derivación de la retropropagación de MLP a partir de la fórmula del gradiente de control óptimo de Kelley-Bryson y su aplicación" (PDF) . Actas de la Conferencia Conjunta Internacional IEEE sobre Redes Neuronales.
  23. Dreyfus, Stuart (1973). "La solución computacional de problemas de control óptimo con retardo de tiempo". IEEE Transactions on Automatic Control . 18 (4): 383– 385. doi : 10.1109/tac.1973.1100330 .
  24. 1 2 Schmidhuber, Jürgen (2022). "Historia anotada de la IA moderna y el aprendizaje profundo". arXiv : 2212.11279 [ cs.NE ].
  25. Amari, Shun'ichi (1967). "Una teoría del clasificador de patrones adaptativo". IEEE Transactions . EC (16): 279– 307.
  26. Linnainmaa, Seppo (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 finés). Universidad de Helsinki. págs. 6–7 . 
  27. Linnainmaa, Seppo (1976). "Expansión de Taylor del error de redondeo acumulado". BIT Numerical Mathematics . 16 (2): 146– 160. doi : 10.1007/bf01931367 . S2CID 122357351 . 
  28. Griewank, Andreas (2012). "¿Quién inventó el modo inverso de diferenciación?". Optimization Stories . Documenta Mathematica, Volumen extra ISMP. pp. 389–400 . S2CID 15568746 .  
  29. 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.
  30. Werbos, Paul (1982). "Aplicaciones de los avances en el análisis de sensibilidad no lineal" (PDF) . Modelado y optimización de sistemas . Springer. págs. 762–770 . Archivado (PDF) del original el 14 de abril de 2016. Recuperado el 2 de julio de 2017 . 
  31. Werbos, Paul J. (1994). The Roots of Backpropagation: From Ordered Derivatives to Neural Networks and Political Forecasting . Nueva York: John Wiley & Sons. ISBN 0-471-59897-6.
  32. 1 2 3 4 Anderson, James A.; Rosenfeld, Edward, eds. (2000). Talking Nets: An Oral History of Neural Networks . The MIT Press. doi : 10.7551/mitpress/6626.003.0016 . ISBN 978-0-262-26715-1.
  33. PJ Werbos, "Retropropagación a través del tiempo: qué hace y cómo hacerlo", en Actas del IEEE, vol. 78, n.º 10, págs. 1550–1560, octubre de 1990, doi : 10.1109/5.58337
  34. Olazaran Rodriguez, Jose Miguel. Una sociología histórica de la investigación en redes neuronales . Tesis doctoral. Universidad de Edimburgo, 1991.
  35. Rumelhart; Hinton; Williams (1986). "Aprendizaje de representaciones mediante la retropropagación de errores" (PDF) . Nature . 323 (6088): 533– 536. Bibcode : 1986Natur.323..533R . doi : 10.1038/323533a0 . S2CID 205001834 . 
  36. Rumelhart, David E.; Hinton , Geoffrey E .; Williams, Ronald J. (1986b). "8. Aprendizaje de representaciones internas mediante propagación de errores" . En Rumelhart, David E.; McClelland , James L. (eds.). Procesamiento distribuido en paralelo: exploraciones en la microestructura de la cognición . Vol. 1 : Fundamentos. Cambridge: MIT Press. ISBN   0-262-18120-7.
  37. Alpaydin, Ethem (2010). Introducción al aprendizaje automático . MIT Press. ISBN 978-0-262-01243-0.
  38. Parker, DB (1985). Aprendizaje de la lógica: Recreación de la corteza cerebral humana en silicio. Centro de Investigación Computacional en Economía y Ciencias de la Gestión (Informe). Cambridge, MA: Instituto Tecnológico de Massachusetts. Informe técnico TR-47.
  39. Hertz, John (1991). Introducción a la teoría de la computación neuronal . Krogh, Anders., Palmer, Richard G. Redwood City, California: Addison-Wesley. pág. 8. ISBN  0-201-50395-6OCLC 21522159 
  40. ^ Le Cun, Yann (1987). Modèles connexionnistes de l'apprentissage (Tesis de doctorado de Estado). París, Francia: Université Pierre et Marie Curie.
  41. "El Premio Nobel de Física 2024" . NobelPrize.org . Consultado el 13 de octubre de 2024 .
  42. Sejnowski, Terrence J. (2018). La revolución del aprendizaje profundo . Cambridge, Massachusetts Londres, Inglaterra: The MIT Press. ISBN 978-0-262-03803-4.
  43. Pomerleau, Dean A. (1988). "ALVINN: Un vehículo terrestre autónomo en una red neuronal" . Avances en sistemas de procesamiento de información neuronal . 1. Morgan-Kaufmann.
  44. Sutton, Richard S.; Barto, Andrew G. (2018). "11.1 TD-Gammon" . Aprendizaje por refuerzo: una introducción (2.ª ed.). Cambridge, MA: MIT Press. 
  45. 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 .  
  46. Wan, Eric A. (1994). «Predicción de series temporales mediante una red conexionista con líneas de retardo internas». En Weigend, Andreas S.; Gershenfeld , Neil A. (eds.). Predicción de series temporales: Pronosticando el futuro y comprendiendo el pasado . Actas del Taller de Investigación Avanzada de la OTAN sobre Análisis Comparativo de Series Temporales. Vol. 15. Reading: Addison-Wesley. pp. 195–217 . ISBN   0-201-62601-2. S2CID 12652643 . 
  47. Chang, Franklin; Dell, Gary S.; Bock, Kathryn (2006). "Becoming syntactic". Psychological Review . 113 (2): 234– 272. doi : 10.1037/0033-295x.113.2.234 . PMID 16637761 . 
  48. Janciauskas, Marius; Chang, Franklin (2018). "Input and Age-Dependent Variation in Second Language Learning: A Connectionist Account". Cognitive Science. 42 (Suppl Suppl 2): 519–554. doi:10.1111/cogs.12519. PMC 6001481. PMID 28744901.
  49. "Decoding the Power of Backpropagation: A Deep Dive into Advanced Neural Network Techniques". janbasktraining.com. 30 January 2024.
  50. Fitz, Hartmut; Chang, Franklin (2019). "Language ERPs reflect learning through prediction error propagation". Cognitive Psychology. 111: 15–52. doi:10.1016/j.cogpsych.2019.03.002. hdl:21.11116/0000-0003-474D-8. PMID 30921626. S2CID 85501792.
  51. "Photonic Chips Curb AI Training's Energy Appetite - IEEE Spectrum". IEEE. Retrieved 2023-05-25.

Further reading

  • Goodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016). "6.5 Back-Propagation and Other Differentiation Algorithms". Deep Learning. MIT Press. pp. 200–220. ISBN 978-0-262-03561-3.
  • Nielsen, Michael A. (2015). "How the backpropagation algorithm works". Neural Networks and Deep Learning. Determination Press.
  • McCaffrey, James (October 2012). "Neural Network Back-Propagation for Programmers". MSDN Magazine.
  • Rojas, Raúl (1996). "The Backpropagation Algorithm"(PDF). Neural Networks: A Systematic Introduction. Berlin: Springer. ISBN 3-540-60505-3.
  • Backpropagation neural network tutorial at the Wikiversity
  • Bernacki, Mariusz; Włodarczyk, Przemysław (2004). "Principles of training multi-layer neural network using backpropagation".
  • Karpathy, Andrej (2016). "Lecture 4: Backpropagation, Neural Networks 1". CS231n. Stanford University. Archived from the original on 2021-12-12 via YouTube.
  • "¿Qué hace realmente la retropropagación?" . 3Blue1Brown . 3 de noviembre de 2017. Archivado del original el 12 de diciembre de 2021 vía YouTube .
  • Putta, Sudeep Raja (2022). "Otra derivación más de la retropropagación en forma matricial" .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Backpropagation&oldid=1362127161 "