Di AlphaZero, apakah kita perlu menyimpan data status terminal?

Dec 16 2020

Saya memiliki pertanyaan tentang data pelatihan yang digunakan selama langkah pembaruan / propagasi balik jaringan saraf di AlphaZero.

Dari kertas:

Data untuk setiap langkah waktu $t$ disimpan sebagai ($s_t, \pi_t, z_t$) di mana $z_t = \pm r_T$ adalah pemenang game dari perspektif pemain saat ini di langkah $t$. Secara paralel (Gambar 1b), parameter jaringan baru$\Theta_i$ dilatih dari data ($s,\pi, z$) diambil sampelnya secara seragam di antara semua langkah waktu dari iterasi terakhir pemutaran mandiri

Mengenai kebijakan pada saat itu $t$ ($\pi_t$), Saya memahami ini sebagai distribusi probabilitas untuk mengambil beberapa tindakan yang sebanding dengan jumlah kunjungan ke setiap simpul anak, yaitu selama MCTS, diberikan beberapa simpul induk (status) pada waktunya $t$, jika beberapa simpul anak (keadaan selanjutnya) $a$ dikunjungi $N_a$ kali dan semua node turunan dikunjungi $\sum_b N_b$ kali, lalu probabilitas $a$ (dan langkah yang sesuai) yang dijadikan sampel adalah $\frac{N_a}{\sum_b N_b}$, dan ini mengukur distribusi $\pi_t$. Apakah ini benar? Jika ini kasusnya, maka untuk beberapa status terminal$T$, kita tidak dapat membuat parameter distribusi karena kita tidak memiliki node turunan (status) untuk dikunjungi. Apakah itu berarti kita tidak menambahkan ($s_T, \pi_T, z_T$) ke data pelatihan?

Juga, pertanyaan lanjutan tentang fungsi kerugian:

$l = (z-v)^2 - \pi^T log\textbf{p} + c||\Theta||^2$

Saya bingung tentang ini $\pi^T$notasi. Tebakan terbaik saya adalah bahwa ini adalah vektor tindakan yang diambil sampelnya dari semua kebijakan di$N$ X $(s_t, \pi_t, z_t)$minibatch, tapi saya tidak yakin. (PS$T$ Digunakan dalam $\pi^T$ berbeda dari $T$digunakan untuk menunjukkan keadaan terminal jika Anda melihat kertas. Maaf atas kebingungannya, saya tidak tahu cara menulis dua huruf T yang berbeda)

Jawaban

DennisSoemers Dec 16 2020 at 23:21

Saya tidak 100% yakin apakah mereka menambahkan data apa pun untuk status game terminal atau tidak, tetapi sangat masuk akal untuk memang membuat pilihan untuk tidak menyertakan data untuk status game terminal. Seperti yang Anda tunjukkan dengan tepat, kami tidak memiliki target yang berarti untuk memperbarui kepala kebijakan dalam kasus tersebut, dan ini sebenarnya bukan masalah karena kami juga tidak akan pernah benar-benar menggunakan keluaran kebijakan dalam status permainan terminal. Untuk value head, kami dapat memberikan target yang berarti untuk diupdate, tetapi sekali lagi kami tidak akan pernah benar-benar menggunakan output seperti itu; jika kita menemukan keadaan permainan terminal dalam pencarian pohon, kita hanya mencadangkan nilai sebenarnya dari keadaan permainan terminal itu alih-alih membuat panggilan ke jaringan untuk mendapatkan perkiraan fungsi nilai.

Secara teori, saya bisa membayangkan beberapa kasus di mana melatih kepala nilai pada status permainan terminal mungkin sedikit bermanfaat meskipun tidak sepenuhnya diperlukan; itu bisa memungkinkan generalisasi ke keadaan permainan serupa yang bukan terminal (tapi dekat dengan terminal), dan mempercepat pembelajaran untuk itu. Misalnya, jika Anda memiliki permainan yang tujuannya adalah menyelesaikan satu baris$5$ potongan, melatih kepala nilai pada status terminal di mana Anda sebenarnya memiliki baris $5$ potongan-potongan dan telah sepenuhnya memenangkan permainan mungkin menggeneralisasi dan mempercepat pembelajaran untuk keadaan permainan serupa di mana Anda mungkin belum memilikinya $5$potongan-potongan dalam satu baris, tetapi sangat dekat dengan tujuan itu. Yang mengatakan, secara intuitif saya benar-benar tidak merasa ini akan memberikan manfaat besar (jika ada), dan kami mungkin juga dapat menemukan kasus-kasus di mana itu akan berbahaya.


Dalam $\pi^{\text{T}}$ notasi, $\pi$ adalah vektor (untuk sembarang langkah waktu, langkah waktu tidak ditentukan di sini) yang berisi distribusi probabilitas diskrit atas tindakan (jumlah kunjungan MCTS, dinormalisasi menjadi distribusi probabilitas), dan $\text{T}$hanya menunjukkan bahwa kita mengambil transpos dari vektor itu. Secara pribadi saya tidak suka notasinya, saya lebih suka sesuatu seperti$\pi^{\top}$ yang lebih jelas berbeda dari surat $T$ atau $\text{T}$.

Bagaimanapun, setelah Anda memahami bahwa untuk menunjukkan transpos, Anda akan melihatnya $\pi^{\top}\log(\mathbf{p})$ adalah perkalian titik antara dua vektor, yang kemudian menjadi skalar tunggal.