Back to IF3270 Pembelajaran Mesin

Backpropagation Through Time and Cross Entropy Loss

Questions/Cues

  • Apa itu BPTT dan bagaimana hubungannya dengan unfolded network?
  • Bagaimana total loss dihitung sepanjang seluruh timestep?
  • Bagaimana menghitung cross entropy loss untuk satu instance?
  • Bagaimana cross entropy diperluas untuk output sekuens?
  • Apa langkah-langkah algoritma BPTT?

Reference Points

  • IF3270 Pembelajaran Mesin - LSTM (Pages 22-31)

Backpropagation Through Time (BPTT)

BPTT (Backpropagation Through Time) adalah ekstensi dari backpropagation standar yang melakukan gradient descent pada unfolded network (jaringan rekuren yang “dibentangkan” menjadi rangkaian timestep). Ide dasarnya: total loss L adalah jumlah seluruh fungsi loss pada tiap timestep dari t=1 hingga t=T.

L = Σ (t=1 sampai T) L(t)

Notasi bobot yang dipakai pada slide RNN:

  • U = Wxh (bobot input ke hidden)
  • W = Whh (bobot hidden ke hidden, rekuren)
  • V = Why (bobot hidden ke output)

Karena ketiga bobot ini sama di semua timestep (shared weights), gradien dari tiap timestep nantinya harus digabungkan.

Cross Entropy Loss untuk Satu Instance

Dengan target y dalam bentuk one-hot encoded (yi,true=1, lainnya 0), cross entropy loss dihitung sebagai L = -Σ yi·ln(ŷi). Beberapa contoh:

y=[1,0,0]; ŷ=[1,0,0]
L = -1·ln(1) - 0 - 0 = 0           (prediksi sempurna)

y=[1,0,0]; ŷ=[0.7,0.2,0.1]
L = -1·ln(0.7) - 0·ln(0.2) - 0·ln(0.1) = 0.357

y=[0,1,0]; ŷ=[1,0,0]
L = -0·ln(1) - 1·ln(0) - 0 = -1·(-inf) = inf   (prediksi nol pada kelas benar)

Kasus terakhir menunjukkan: jika model memprediksi probabilitas nol pada kelas yang sebenarnya benar, loss menjadi tak hingga (∞), karena ln(0) = -∞. Inilah mengapa cross entropy menghukum keras keyakinan salah yang ekstrem.

Cross Entropy Loss untuk Multiclass

Untuk klasifikasi multiclass, prinsipnya sama: hanya komponen kelas benar (yi,true=1) yang berkontribusi karena komponen lain dikalikan 0. Loss total beberapa instance adalah penjumlahan negative log-likelihood tiap instance, contohnya:

L = -ln(0.71) - ln(0.98) - ln(0.49)

Selalu gunakan logaritma natural (ln).

Cross Entropy Loss untuk Output Sekuens

Pada RNN/LSTM dengan output di setiap timestep, cross entropy dijumlahkan sepanjang seluruh timestep. Target tiap timestep tetap one-hot (ytrue=1, lainnya 0). Contoh sekuens 4 timestep:

L = -ln(0.253) - ln(0.26) - ln(0.299) - ln(0.240)
  = 1.374 + 1.347 + 1.207 + 1.427
  = 5.356

Total loss sekuens inilah yang diminimalkan oleh BPTT.

Langkah-Langkah Algoritma BPTT

1. Forward pass: dapatkan output sekuens saat ini menggunakan h(t)=fh(Wxh·x(t)+Whh·h(t-1)+bh) dan o(t)=fy(Who·h(t)+bho).

2. Backward pass:

  • (a) Hitung cross entropy error (negative log-likelihood dari y) menggunakan output sekuens saat ini (ŷ=ŷ1..ŷn) dan output aktual (y=y1..yn).
  • (b) Untuk unrolled network, gradien dihitung pada tiap timestep terhadap parameter bobot.

3. Gabungkan gradien: karena bobot sama untuk semua timestep, gradien dari seluruh timestep digabungkan, lalu bobot diperbarui untuk neuron rekuren maupun lapisan dense.

Backward Pass pada RNN

Pada slide RNN, net(t)=Why·h(t)+bhy dan ŷ(t)=fy(Who·h(t)+bho), sedangkan h(t)=fh(Wxh·x(t)+Whh·h(t-1)+bh). Backward pass memakai aturan rantai dari loss → output → hidden state → kembali menembus timestep sebelumnya melalui Whh. Karena ketergantungan h(t) pada h(t-1) pada h(t-2) dan seterusnya, gradien terhadap Whh mengakumulasi kontribusi dari semua timestep di belakangnya.

Summary

BPTT (Backpropagation Through Time) adalah ekstensi backpropagation yang melakukan gradient descent pada unfolded network, dengan total loss L sebagai jumlah loss tiap timestep (t=1..T) dan notasi U=Wxh, W=Whh, V=Why. Fungsi loss yang dipakai adalah cross entropy dengan target one-hot: untuk satu instance contohnya y=[1,0,0], ŷ=[0.7,0.2,0.1] menghasilkan L=0.357, sedangkan prediksi nol pada kelas benar menghasilkan L=∞. Untuk output sekuens, cross entropy dijumlahkan seluruh timestep, contohnya L=-ln(0.253)-ln(0.26)-ln(0.299)-ln(0.240)=5.356. Langkah BPTT: forward passbackward pass (hitung CE error, lalu gradien tiap timestep) → gabungkan gradien karena bobot sama di semua timestep, baru perbarui bobot rekuren dan dense.