Saya ingin membuat AI yang bisa memainkan lima-dalam-baris / gomoku. Seperti yang saya sebutkan dalam judul, saya ingin menggunakan pembelajaran penguatan untuk ini.
Saya menggunakan metode gradien kebijakan , yaitu REINFORCE, dengan baseline. Untuk perkiraan nilai dan fungsi kebijakan, saya menggunakan jaringan saraf . Ini memiliki lapisan convolutional dan sepenuhnya terhubung. Semua layer, kecuali untuk output, dibagikan. Lapisan output kebijakan memiliki (ukuran papan) unit output dan softmax pada mereka. Jadi stochastic. Tetapi bagaimana jika jaringan menghasilkan probabilitas yang sangat tinggi untuk perpindahan yang tidak valid? Langkah tidak valid adalah ketika agen ingin memeriksa kotak yang memiliki satu "X" atau "O" di dalamnya. Saya pikir itu bisa macet dalam keadaan permainan itu.
Bisakah Anda merekomendasikan solusi untuk masalah ini?
Dugaan saya adalah menggunakan metode aktor-kritik . Untuk langkah yang tidak valid, kita harus memberikan hadiah negatif dan memberikan giliran kepada lawan.
sumber
Biasanya metode softmax dalam metode gradien kebijakan menggunakan pendekatan fungsi linier menggunakan rumus berikut untuk menghitung probabilitas memilih tindakana . Di sini, bobot yang θ , dan fitur ϕ adalah fungsi dari keadaan saat ini s dan tindakan dari serangkaian tindakan A .
Untuk menghilangkan gerakan ilegal, seseorang akan membatasi serangkaian tindakan hanya pada tindakan yang legal, karenanyaLegal(A) .
Dalam pseudocode rumusnya mungkin terlihat seperti ini:
Baik menggunakan aproksimasi fungsi linear atau non-linear (jaringan saraf Anda), idenya adalah hanya menggunakan gerakan legal saat menghitung softmax Anda. Metode ini berarti bahwa hanya gerakan yang valid yang akan diberikan oleh agen, yang bagus jika Anda ingin mengubah permainan Anda nanti, dan bahwa perbedaan nilai antara pilihan tindakan terbatas akan lebih mudah untuk dibedakan oleh agen. Ini juga akan lebih cepat karena jumlah tindakan yang mungkin berkurang.
sumber
IMHO gagasan gerakan tidak valid itu sendiri tidak valid. Bayangkan menempatkan "X" pada koordinat
(9, 9)
. Anda dapat menganggapnya sebagai langkah yang tidak valid dan memberinya hadiah negatif. Konyol? Tentu!Tetapi sebenarnya gerakan Anda yang tidak valid hanyalah peninggalan dari representasi (yang itu sendiri mudah dan baik-baik saja). Perlakuan terbaik dari mereka adalah dengan mengeluarkan mereka sepenuhnya dari perhitungan apa pun.
Ini semakin nyata dalam catur:
Dalam representasi posisi, Anda dapat mempertimbangkan gerakan
a1-a8
, yang hanya termasuk dalam permainan jika ada Benteng atau Ratu dia1
(dan beberapa kondisi lainnya berlaku).Dalam representasi yang berbeda, Anda dapat mempertimbangkan langkah tersebut
Qb2
. Sekali lagi, ini mungkin atau bukan milik game. Ketika pemain saat ini tidak memiliki Queen, maka pastinya tidak.Karena gerakan yang tidak valid lebih terkait dengan representasi daripada permainan, mereka tidak boleh dianggap sama sekali.
sumber
Saya menghadapi masalah serupa baru-baru ini dengan Minesweeper.
Cara saya menyelesaikannya adalah dengan mengabaikan sepenuhnya gerakan ilegal / tidak valid.
Semoga ini membantu.
sumber