Backpropagation/es: Difference between revisions

    From Marovi AI
    (Force re-parse after Math source-mode rollout (v1.2.0))
    Tags: ci-deploy Reverted
    ([deploy-bot] Deploy from CI (8c92aeb))
    Tags: ci-deploy Manual revert
     
    (One intermediate revision by the same user not shown)
    Line 103: Line 103:
    [[Category:Deep Learning]]
    [[Category:Deep Learning]]
    [[Category:Intermediate]]
    [[Category:Intermediate]]
    <!--v1.2.0 cache-bust-->

    Latest revision as of 07:09, 24 April 2026

    Languages: English | Español | 中文
    Article
    Topic area Deep Learning
    Difficulty Intermediate
    Prerequisites Gradient Descent, Neural Networks

    Backpropagation (abreviatura de propagacion hacia atras de errores) es un algoritmo para calcular de manera eficiente el gradiente de una funcion de perdida con respecto a cada peso en una red neuronal. Combinado con un metodo de optimizacion como el descenso de gradiente, constituye el procedimiento estandar de entrenamiento para los modelos modernos de aprendizaje profundo.

    La regla de la cadena

    Backpropagation es fundamentalmente una aplicacion de la regla de la cadena del calculo. Si una variable $ z $ depende de $ y $, que a su vez depende de $ x $, entonces:

    $ \frac{\partial z}{\partial x} = \frac{\partial z}{\partial y} \cdot \frac{\partial y}{\partial x} $

    En una red neuronal, la perdida $ L $ depende de la salida, que depende de las activaciones de la ultima capa oculta, que dependen de las activaciones de la capa anterior, y asi sucesivamente hasta la entrada. La regla de la cadena permite descomponer el gradiente en un producto de derivadas locales, una para cada capa.

    Pasada hacia adelante

    Durante la pasada hacia adelante, los datos de entrada se propagan a traves de la red capa por capa. Para una capa completamente conectada $ l $:

    $ \mathbf{z}^{(l)} = \mathbf{W}^{(l)} \mathbf{a}^{(l-1)} + \mathbf{b}^{(l)} $
    $ \mathbf{a}^{(l)} = g^{(l)}(\mathbf{z}^{(l)}) $

    donde $ \mathbf{a}^{(l-1)} $ es la activacion de la capa anterior (con $ \mathbf{a}^{(0)} = \mathbf{x} $), $ \mathbf{W}^{(l)} $ y $ \mathbf{b}^{(l)} $ son los pesos y sesgos, y $ g^{(l)} $ es la funcion de activacion. La pasada hacia adelante almacena todos los valores intermedios $ \mathbf{z}^{(l)} $ y $ \mathbf{a}^{(l)} $ porque se necesitan durante la pasada hacia atras.

    Pasada hacia atras

    La pasada hacia atras calcula los gradientes comenzando desde la perdida y avanzando hacia la entrada. Se define la senal de error en la capa $ l $ como:

    $ \boldsymbol{\delta}^{(l)} = \frac{\partial L}{\partial \mathbf{z}^{(l)}} $

    Para la capa de salida (capa $ L_{\text{out}} $):

    $ \boldsymbol{\delta}^{(L_{\text{out}})} = \frac{\partial L}{\partial \mathbf{a}^{(L_{\text{out}})}} \odot g'^{(L_{\text{out}})}(\mathbf{z}^{(L_{\text{out}})}) $

    Para cada capa anterior, el error se propaga hacia atras:

    $ \boldsymbol{\delta}^{(l)} = \bigl(\mathbf{W}^{(l+1)}\bigr)^\top \boldsymbol{\delta}^{(l+1)} \odot g'^{(l)}(\mathbf{z}^{(l)}) $

    donde $ \odot $ denota la multiplicacion elemento a elemento. Una vez conocida la senal de error, los gradientes de los parametros son:

    $ \frac{\partial L}{\partial \mathbf{W}^{(l)}} = \boldsymbol{\delta}^{(l)} \bigl(\mathbf{a}^{(l-1)}\bigr)^\top, \qquad \frac{\partial L}{\partial \mathbf{b}^{(l)}} = \boldsymbol{\delta}^{(l)} $

    Grafos computacionales

    Los frameworks modernos de aprendizaje profundo (PyTorch, TensorFlow, JAX) implementan backpropagation construyendo un grafo computacional — un grafo dirigido aciclico donde cada nodo representa una operacion y cada arista transporta un tensor. La pasada hacia adelante construye el grafo; la pasada hacia atras lo recorre en orden topologico inverso, aplicando la regla de la cadena en cada nodo.

    Esta abstraccion permite diferenciar composiciones arbitrarias de operaciones, no solo tipos de capas estandar. Existen dos estrategias de implementacion:

    • Grafos estaticos — el grafo se define una vez antes de la ejecucion (TensorFlow en sus versiones iniciales). Permite optimizaciones agresivas del compilador pero es menos flexible.
    • Grafos dinamicos — el grafo se reconstruye en cada pasada hacia adelante (PyTorch, modo Eager de TensorFlow). Mas intuitivo para la depuracion y para modelos con flujo de control dependiente de los datos.

    Diferenciacion automatica

    Backpropagation es un caso especial de la diferenciacion automatica en modo inverso (AD). A diferencia de la diferenciacion numerica (que es aproximada) o la diferenciacion simbolica (que puede producir expresiones inmanejables), la AD calcula derivadas exactas aplicando sistematicamente la regla de la cadena a las operaciones elementales.

    La AD en modo inverso calcula el gradiente de una salida escalar con respecto a todas las entradas en una unica pasada hacia atras, lo que la hace ideal para las redes neuronales, donde la perdida es escalar pero los parametros se cuentan por millones.

    El coste de la pasada hacia atras es tipicamente entre 2 y 3 veces el de la pasada hacia adelante, ya que debe evaluar los jacobianos locales y multiplicarlos con la senal de error entrante.

    Gradientes que se desvanecen y explotan

    Cuando una red tiene muchas capas, el gradiente es un producto de muchas derivadas locales. Si estos factores son consistentemente menores que 1, el gradiente se reduce exponencialmente hacia cero — el problema del gradiente que se desvanece. Si son consistentemente mayores que 1, el gradiente crece exponencialmente — el problema del gradiente que explota.

    Problema Sintoma Mitigaciones comunes
    Gradientes que se desvanecen Las capas iniciales aprenden extremadamente lento Activaciones ReLU, conexiones residuales, batch normalization, inicializacion cuidadosa
    Gradientes que explotan La perdida diverge o produce valores NaN Recorte de gradientes, regularizacion de pesos, tasa de aprendizaje mas baja

    Estos problemas fueron obstaculos importantes para el entrenamiento de redes profundas antes de la introduccion de las activaciones ReLU, las conexiones residuales (ResNets) y las tecnicas de normalizacion.

    Consideraciones practicas

    • Memoria — la pasada hacia adelante debe almacenar todas las activaciones intermedias para la pasada hacia atras. Para redes muy profundas esto puede ser prohibitivo; el gradient checkpointing intercambia calculo por memoria al recalcular las activaciones durante la pasada hacia atras en lugar de almacenarlas.
    • Estabilidad numerica — el uso de trucos como log-sum-exp e implementaciones fusionadas de softmax-cross-entropy evita el desbordamiento por exceso y por defecto.
    • Gradientes de orden superior — diferenciar a traves de la propia pasada hacia atras produce informacion de segundo orden (productos hessiana-vector), util para metodos como el descenso de gradiente natural y el meta-aprendizaje.
    • Precision mixta — realizar la pasada hacia adelante en media precision mientras se mantiene una copia maestra de los pesos en precision completa acelera el entrenamiento en GPUs modernas.

    Desarrollo historico

    Las ideas clave detras de backpropagation fueron desarrolladas de forma independiente por varios investigadores. Seppo Linnainmaa describio la diferenciacion automatica en modo inverso en 1970. Paul Werbos la aplico a las redes neuronales en su tesis doctoral de 1974. El algoritmo alcanzo una adopcion generalizada tras el influyente articulo de 1986 de Rumelhart, Hinton y Williams, que demostro su eficacia en redes multicapa.

    Vease tambien

    Referencias

    • Rumelhart, D. E., Hinton, G. E. and Williams, R. J. (1986). "Learning representations by back-propagating errors". Nature, 323, 533–536.
    • Linnainmaa, S. (1970). "The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors". Master's thesis, University of Helsinki.
    • Werbos, P. J. (1974). "Beyond Regression: New Tools for Prediction and Analysis in the Behavioral Sciences". PhD thesis, Harvard University.
    • Baydin, A. G. et al. (2018). "Automatic Differentiation in Machine Learning: a Survey". JMLR, 18(153), 1–43.
    • Goodfellow, I., Bengio, Y. and Courville, A. (2016). Deep Learning, Chapter 6. MIT Press.