Generalized advantage estimation (GAE)
Hitung advantage dengan GAE untuk satu rollout:
δt=rt+γV(st+1)(1−dt)−V(st),At=δt+γλ(1−dt)At+1V(sT) untuk langkah setelah rollout adalah last_value. Jika dones[t], tidak ada bootstrap dan rantainya terputus.
rewards=[1,1], values=[0,0], tidak ada done, last_value=0, γ=1:
λ = 1 → [2, 1] (Monte-Carlo) λ = 0 → [1, 1] (TD satu langkah)
Advantage
Advantage A(s,a) menjawab: “seberapa lebih baik aksi ini dibanding yang biasanya terjadi di state ini?”. Positif berarti naikkan peluangnya, negatif berarti turunkan.
λ: tombol bias–varians
- λ=0: At=δt. Hanya satu langkah reward nyata, sisanya perkiraan V. Varians kecil, tetapi bias jika V masih salah.
- λ=1: At=Gt−V(st). Seluruh return nyata. Tidak bias, tetapi sangat berisik.
- λ≈0.95 (default PPO): kompromi yang bekerja baik hampir di mana-mana.
Fungsi gae di minirl/agents.py adalah versi vektor dari soal ini: sama persis, hanya untuk banyak env sekaligus.
Penjelasan
Yang diminta. Array advantage (T,).
Langkah di kode (dari belakang, next_value = last_value, next_adv = 0):
not_done = 1 - dones[t].delta = r[t] + gamma * next_value * not_done - values[t]: TD error satu langkah.next_adv = delta + gamma * lam * not_done * next_adv: tambahkan advantage langkah berikutnya, didiskon γλ, kecuali episode berakhir.- Simpan, lalu
next_value = values[t].
Case 1: episode berakhir. last_value = 9 diabaikan karena done, jadi A=1−0.5=0.5.
Case 2 vs 3. Dengan λ=1 hasilnya [2,1], yaitu return penuh dikurangi V. Dengan λ=0 hasilnya [1,1]: setiap langkah hanya melihat reward-nya sendiri ditambah V berikutnya (yang di sini 0).
Yang dikembalikan: array (T,).
Topik
Petunjuk 1
Hitung TD error δ_t = r_t + γ V(s_{t+1}) (1 − done_t) − V(s_t). Untuk langkah terakhir, V(s_{t+1}) = last_value.
Petunjuk 2
A_t = δ_t + γλ (1 − done_t) A_{t+1}, dihitung dari belakang.
Nilai ditulis sebagai JSON. Output yang diharapkan dihitung dari solusi referensi.