Bagaimana AlphaZero belajar untuk mengevaluasi posisi yang belum pernah dilihatnya?


12

Tindak lanjut dari jawaban untuk:

Memahami AlphaZero

Pertanyaan saya adalah bagaimana jaringan saraf "belajar" apa yang harus dilakukan dalam posisi yang belum dijumpainya. Mengatakan AZ aktual mengeksekusi MCTS menggunakan bias + bobot dari jaring saraf terlatih hanya mendorongnya kembali ke langkah bagaimana jaring saraf menghitung nilai-nilai ini. Jika itu melalui permainan mandiri secara acak, tanpa pengetahuan manusia, lalu bagaimana ia memutuskan bagaimana menentukan posisi yang belum pernah dilihatnya?

Jawaban:


6

Fungsi evaluasi mesin catur, baik yang dipakai sebagai jaring saraf atau kode eksplisit, selalu dapat memberikan nilai pada posisi dewan mana pun. Jika Anda memberikannya posisi dewan, bahkan yang absurd yang tidak akan pernah terjadi dalam permainan, itu akan dapat memuntahkan angka yang menunjukkan betapa menguntungkannya bagi satu pemain atau yang lain. Karena jumlah posisi dewan dalam catur sangat besar, pelatihan hanya dapat terjadi pada sampel pohon permainan yang sangat kecil. Mesin tidak hanya mengingat nilai posisi papan yang dihitung sebelumnya, tetapi melakukan perhitungan berdasarkan susunan potongan. Untuk contoh non-neural-net, bagian dari evaluasi mesin catur mungkin untuk menambah nilai setiap bagian di sisinya dan mengurangi nilai total dari potongan lawan. Kemudian,

Ketika mesin tidak terlatih, nilai yang ditetapkan untuk suatu posisi mungkin juga acak karena parameter fungsi evaluasi dimulai dengan (biasanya) nilai acak. Tujuan dari fase pelatihan adalah untuk menyesuaikan parameter mesin sehingga memberikan skor tinggi ke posisi papan yang kemungkinan negara pemenang untuk pemain.

Dari kertas di AlphaZero (halaman 3):

Parameter jaringan saraf dalam di AlphaZero dilatih oleh pembelajaran penguatan diri, dimulai dari parameter yang diinisialisasi secara acak. Game dimainkan dengan memilih gerakan untuk kedua pemain oleh MCTS. Pada akhir pertandingan, posisi terminal diberi skor sesuai dengan aturan permainan untuk menghitung hasil pertandingan: −1 untuk kekalahan, 0 untuk imbang, dan +1 untuk menang. Parameter jaringan saraf diperbarui untuk meminimalkan kesalahan antara hasil yang diprediksi dan hasil permainan, dan untuk memaksimalkan kemiripan vektor kebijakan dengan probabilitas pencarian.

[simbol matematika dihapus dari kutipan]

Singkatnya, selama pelatihan, AlphaZero memainkan pertandingan melawan dirinya sendiri. Ketika permainan selesai, hasil dari permainan dan keakuratan prediksi dalam bagaimana permainan akan dilanjutkan digunakan untuk menyesuaikan jaring saraf sehingga akan lebih akurat selama pertandingan berikutnya. AlphaZero tidak menyimpan catatan dari setiap posisi yang dilihatnya, tetapi menyesuaikan diri sehingga dapat lebih akurat mengevaluasi setiap papan yang dilihatnya di masa depan.


Saya benar-benar memahami penjelasan Anda di tingkat algoritmik, tetapi saya masih heran bahwa itu berhasil. Saya akan berpikir bahwa permainan awal akan sangat acak sehingga mereka tidak akan memiliki nilai pembelajaran. Tampaknya tidak mungkin untuk mengevaluasi hasil dari langkah pada tahap itu kecuali dengan bermain keluar untuk skakmat, karena itu adalah satu-satunya hal yang telah Anda ketahui. Tapi skakmat itu hanya akan terjadi setelah sejumlah besar hal-hal lain pada dasarnya acak telah berlangsung. Perasaan saya adalah bahwa tidak ada data yang cukup berarti untuk menarik kesimpulan. Kenapa saya salah?
Philip Roe

@PhilipRoe Anda benar, setiap permainan hanya menyediakan sedikit informasi. Saya sebenarnya telah menulis mesin catur saya sendiri yang belajar dengan algoritma evolusi. Salinan mesin yang dimodifikasi secara acak saling bermain; yang kalah dihapus dan pemenang menghasilkan lebih banyak salinan yang dimodifikasi. Biasanya dibutuhkan antara 10.000 hingga 20.000 game untuk mengetahui urutan nilai potong yang tepat (ratu, benteng, uskup / ksatria, gadai). Butuh AlphaZero 44 juta game untuk mencapai keterampilannya (tabel pada halaman 15 dari makalah terkait).
Markus H

Terima kasih telah merespons! Tapi aku masih tercengang. Ada ruang besar posisi yang memungkinkan untuk mengevaluasi. Tetapi ada juga ruang besar kemungkinan pertanyaan untuk diajukan. Secara antropomorfis saya membayangkan diri saya dengan nol pengetahuan sebelumnya kecuali aturan, dan database besar permainan yang dimainkan pada tingkat ketidakmampuan yang hampir tak terbayangkan (walaupun saya kira semua tidak diingat) Pada titik apa hal itu terjadi pada saya "Hei, mungkin saya harus menghitung potongan "Lalu berapa lama sebelum menghitung potongan tampaknya ide yang bagus?
Philip Roe

1
Saya merasa sangat sulit untuk membayangkan, bahkan jika beberapa petunjuk kuat diberikan tentang "Apa yang merupakan pertanyaan yang bagus?" Tetapi tanpa itu pun, saya terkesan bahwa pusaka kepingan dapat dibuat dalam 20.000 game. Jadi saya merasa sangat sulit untuk menerima bahwa tabula itu benar-benar terasa. Beberapa instruksi minimal tentang proses menghasilkan dan merevisi aturan Anda (berapa banyak, seberapa sering?) Masih tampak penting.
Philip Roe

1
@ PhilipRoe Dalam program saya, saya memberi tahu mesin untuk menghitung bagian, tetapi tidak berapa banyak nilai setiap bagian. Jadi, saya memberi tahu mesin apa yang harus dilihat, tetapi tidak bagaimana untuk menimbang apa yang dilihatnya. AlphaZero jauh lebih tabula rasa. Jika Anda penasaran: github.com/MarkZH/Genetic_Chess
Mark H
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.