Backpropagation Through Time (BPTT)

BPTT er en algoritme til at beregne gradienter i tilbagevendende neurale netværk ved at udfolde netværket over tid og anvende almindelig backpropagation.

Kort fortalt

En metode til at træne neurale netværk med hukommelse, hvor gradienter beregnes baglæns gennem tidsstegene.

Kategori
træning
Niveau
øvet
Udtale
/ˈbækprɒpəɡeɪʃən θruː taɪm/

Betydninger

1
  1. 1

    Algoritme til gradientberegning i tilbagevendende neurale netværk, der udfolder netværket over tid og anvender kædereglen baglæns.

    • BPTT kræver, at hele sekvensen er kendt på forhånd, hvilket kan være hukommelseskrævende.
    • Trunkeret BPTT begrænser gradienspredningen til et fast antal tidssteg.

Hvornår bruges det

BPTT anvendes til træning af RNN'er, LSTM'er og GRU'er, især når sekvenslængden er kort nok til at undgå vanishing gradients. For længere sekvenser bruges ofte trunkeret BPTT eller mere avancerede metoder som gradient clipping.

Formel

ΔW = -η Σ_{t=1}^T ∂L/∂W^{(t)}

Kodeeksempel

import numpy as np
def bptt(x, targets, h0, Wx, Wh, b):
    T = len(x)
    h = [h0]; loss = 0
    for t in range(T):
        h_next = np.tanh(Wx @ x[t] + Wh @ h[-1] + b)
        h.append(h_next)
        loss += (h_next - targets[t])**2
    dWx = np.zeros_like(Wx); dWh = np.zeros_like(Wh); db = np.zeros_like(b)
    dh_next = np.zeros_like(h0)
    for t in reversed(range(T)):
        dh = 2*(h[t+1] - targets[t]) + Wh.T @ dh_next
        dtanh = (1 - h[t+1]**2) * dh
        dWx += np.outer(dtanh, x[t])
        dWh += np.outer(dtanh, h[t])
        db += dtanh
        dh_next = Wh.T @ dtanh
    return dWx, dWh, db

Simpel Python-implementering af BPTT for en RNE med tanh-aktivering. Tilbagekørslen akkumulerer gradienter over tid.

Oprindelse

Termen kombinerer 'backpropagation' med 'through time' og blev etableret i 1980'erne, især af Rumelhart, Hinton og Williams (1986) for RNN'er.

Afledte ord

1

Kilder

2
  • Backpropagation Through Time: What It Does and How to Do It (Werbos, 1990)
  • Deep Learning (Goodfellow, Bengio, Courville, 2016)