Return berdiskon
Agen menerima reward r0,r1,…,rT−1 dalam satu episode. Untuk setiap langkah t, hitung return berdiskon, yaitu jumlah reward dari t sampai akhir, dengan reward yang lebih jauh dikalikan γ berulang kali:
Gt=rt+γrt+1+γ2rt+2+…rewards = [1, 1, 1], γ = 0.9 → [2.71, 1.9, 1.0]
Kenapa didiskon
Agen RL memaksimalkan return, bukan reward sesaat. Faktor diskon γ∈[0,1] menentukan seberapa jauh ke depan agen peduli:
- γ=0: hanya reward langkah ini (rabun jauh).
- γ=0.99: reward 100 langkah lagi masih bernilai 0.99100≈0.37.
- γ=1: semua reward sama penting; hanya aman untuk episode yang pasti berakhir.
Patokan kasar: agen “melihat” sekitar 1/(1−γ) langkah ke depan. Untuk cart-pole dengan γ=0.99, sekitar 100 langkah (2 detik).
Rekursi
Gt=rt+γGt+1. Rumus sederhana ini adalah benih dari semua metode RL: TD-learning, Q-learning, dan GAE semuanya memakai versi “perkiraan” dari Gt+1.
Penjelasan
Yang diminta. List yang sepanjang rewards, berisi Gt untuk setiap posisi.
Kenapa dari belakang. Menghitung tiap Gt langsung dengan pangkat butuh O(T2). Karena Gt=rt+γGt+1, cukup mulai dari ujung: GT−1=rT−1, lalu mundur satu per satu dalam O(T).
Langkah di kode: g = 0. Untuk t dari T-1 turun ke 0: g = rewards[t] + gamma * g, simpan ke out[t].
Cek case 1. G2=1, G1=1+0.9⋅1=1.9, G0=1+0.9⋅1.9=2.71.
Yang dikembalikan: list float sepanjang rewards (kosong jika episode kosong).
Topik
Petunjuk 1
Hitung dari belakang. G untuk langkah terakhir adalah reward terakhir itu sendiri.
Petunjuk 2
G_t = r_t + γ · G_{t+1}. Satu loop mundur cukup, tanpa pangkat.
Nilai ditulis sebagai JSON. Output yang diharapkan dihitung dari solusi referensi.