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
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, dbSimpel 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
1Kilder
2- Backpropagation Through Time: What It Does and How to Do It (Werbos, 1990)
- Deep Learning (Goodfellow, Bengio, Courville, 2016)