Gradien log π terhadap logits
Untuk kebijakan kategorikal π=softmax(z), hitung gradien log-probabilitas aksi yang diambil terhadap logits:
∂z∂logπ(a)∈RKz = [0, 0], a = 0 → [0.5, -0.5]
Hasilnya harus stabil untuk logits besar.
Arah yang didorong policy gradient
logπ(a)=za−logj∑ezj⇒∂zk∂logπ(a)=1[k=a]−πkDikalikan advantage A, update REINFORCE/PPO pada logits adalah A(onehot(a)−π):
- Logit aksi yang diambil naik sebesar A(1−πa).
- Logit aksi lain turun sebanding peluangnya.
- Jika πa≈1, gradiennya hampir nol: tidak ada lagi yang perlu dipelajari dari aksi yang sudah pasti.
Bentuk “onehot − softmax” ini sama persis dengan gradien cross-entropy terhadap logits, tetapi dengan tanda terbalik. Policy gradient pada dasarnya adalah klasifikasi yang dibobot advantage.
Penjelasan
Yang diminta. Vektor (K,).
Langkah di kode: softmax stabil (kurangi max), buat one-hot untuk a, lalu kembalikan onehot - p.
Cek case 2. softmax([1,2,3])=[0.090,0.245,0.665]. Untuk a=2: [−0.090,−0.245,0.335]. Jumlah komponennya selalu 0, karena peluang total tetap 1: menaikkan satu aksi berarti menurunkan yang lain.
Case logits besar. [100, 0, 0] dengan a=0: π0≈1, jadi gradiennya ≈0. Tanpa pengurangan max, exp(100) sudah sangat besar dan rawan overflow.
Yang dikembalikan: array (K,).
Topik
Petunjuk 1
log π(a) = z_a − log Σ_j exp(z_j). Turunkan terhadap z_k untuk k = a dan k ≠ a.
Petunjuk 2
Hasilnya: 1 − π_a untuk k = a, dan −π_k untuk lainnya. Dengan kata lain onehot(a) − softmax(z).
Nilai ditulis sebagai JSON. Output yang diharapkan dihitung dari solusi referensi.