Perkiraan nilai bandit secara inkremental
Agen bandit menyimpan perkiraan Q(a) = rata-rata reward aksi a sejauh ini. Hitung Q untuk semua k aksi setelah urutan tarikan pulls, tanpa menyimpan semua reward: gunakan rumus inkremental
Aksi yang belum pernah ditarik bernilai 0.
k = 2, pulls = [[0, 1], [0, 3]] → [2.0, 0.0]
Pola “perkiraan += langkah × galat”
perkiraan baru=perkiraan lama+ukuran langkah×(target−perkiraan lama)Dengan ukuran langkah 1/n, hasilnya persis rata-rata biasa, tetapi hanya butuh memori O(1) per aksi. Pola yang sama muncul di mana-mana di RL: TD(0), Q-learning, dan bahkan gradient descent (galat dikali learning rate).
Jika ukuran langkahnya konstanta α (bukan 1/n), hasilnya adalah rata-rata bergerak eksponensial: reward terbaru lebih berbobot. Ini berguna jika lingkungan berubah dari waktu ke waktu.
Penjelasan
Yang diminta. List k perkiraan.
Langkah di kode: Q = [0.0]*k, N = [0]*k. Untuk setiap [a, r]: naikkan N[a], lalu Q[a] += (r - Q[a]) / N[a].
Cek case 1. Tarikan pertama aksi 0 dengan reward 1: Q=0+(1−0)/1=1. Kedua dengan reward 3: Q=1+(3−1)/2=2, yaitu rata-rata dari 1 dan 3.
Yang dikembalikan: list float panjang k.
Topik
Petunjuk 1
Simpan N[a] (berapa kali aksi a ditarik) di samping Q[a].
Petunjuk 2
Q[a] += (r − Q[a]) / N[a]: geser perkiraan ke arah reward baru sebesar 1/N.
Nilai ditulis sebagai JSON. Output yang diharapkan dihitung dari solusi referensi.