Algoritma pembelajaran mesin untuk memainkan Connect Four

14

Saya saat ini membaca tentang pembelajaran mesin dan bertanya-tanya bagaimana cara menerapkannya untuk bermain Connect Four .

Upaya saya saat ini adalah classificator multiclass sederhana menggunakan model fungsi sigmoid dan metode satu-vs-semua.

Menurut pendapat saya, fitur input harus status (disk pemain 1, disk pemain 2, kosong) dari 7x6 = 42 bidang kisi.

Outputnya akan menjadi jumlah baris untuk memasukkan disk. Karena itu adalah angka diskrit antara 1 dan 7, saya kira ini dapat diperlakukan sebagai masalah klasifikasi multi-kelas.

Tetapi bagaimana saya menghasilkan contoh pelatihan yang dapat digunakan dalam pembelajaran yang diawasi?

Tujuan utamanya adalah untuk memenangkan permainan, tetapi hasilnya jelas tidak diketahui saat melakukan setiap kecuali giliran terakhir. Jika saya membiarkan dua pemain yang memutuskan secara acak apa yang harus dilakukan bermain melawan ribuan kali, apakah itu cukup untuk hanya mengambil semua belokan yang dibuat oleh pemenang setiap putaran permainan sebagai contoh pelatihan? Atau apakah saya harus melakukan ini dengan cara yang sama sekali berbeda?

Sunting: Seperti yang disarankan dalam komentar saya membaca sedikit tentang pembelajaran penguatan. Dari apa yang saya ketahui pahami, Q-Learning harus melakukan triknya, yaitu saya harus memperkirakan fungsi Q dari kondisi saat ini dan tindakan yang harus diambil untuk menjadi imbalan kumulatif maksimum yang dimulai di negara tersebut. Maka setiap langkah akan memilih tindakan yang menghasilkan nilai maksimum Q. Namun, game ini memiliki terlalu banyak negara untuk melakukan hal ini misalnya sebagai tabel pencarian. Jadi, apa cara efektif untuk memodelkan Fungsi-Q ini?

Tom
sumber
2
Google "Reinforcement Learning"
George
Oke, saya kira itu benar-benar berlaku untuk masalah ini. Sepertinya ada banyak bacaan di depan. Adakah petunjuk atau rekomendasi yang lebih spesifik?
Tom
1
Jika saya tahu lebih banyak saya akan mempostingnya sebagai jawaban :) Sayangnya saya tidak memiliki pengalaman dalam pembelajaran penguatan. Saya akan mulai dari buku "Machine Learning" karya Tom Mitchell. Ini adalah buku pengantar yang sangat bagus dan juga memiliki bab tentang Penguatan Pembelajaran.
George
1
Yang terakhir, saya hanya ingin tahu tentang pembelajaran mesin dan mencoba untuk mengetahuinya.
Tom
1
@ Tom, ada cara yang lebih baik untuk 'mengenal' teknik pembelajaran mesin. Saya akan mulai dengan teknik klasifikasi dan regresi yang lebih mendasar dan bergerak maju dari sana. Anda dapat mengambil kumpulan data dari repositori data pembelajaran mesin UCI, lihat catatan kursus pembelajaran mesin Andrew Ng (Stanford), dan dapatkan implementasi. Melompat langsung ke dalam mencoba menyelesaikan koneksi 4 menggunakan pembelajaran penguatan tampaknya cukup canggung dan terlalu rumit.
Nick

Jawaban:

8

Hanya untuk menawarkan alternatif yang lebih sederhana untuk pembelajaran penguatan, Anda dapat menggunakan algoritma minimax dasar untuk mencari gerakan yang baik, dan menggunakan pembelajaran mesin untuk mengevaluasi posisi dewan.

Untuk memperjelas, minimax membangun pohon permainan di mana setiap node diberi label dengan hasil dari daun (1 = pemain A menang, 0 = pemain B menang), dengan asumsi bahwa A memilih gerakan yang memaksimalkan angka ini, dan B memilih gerakan yang menguranginya.

Kecuali gimnya sangat sederhana, Anda tidak akan bisa membuat seluruh gim pohon hingga ke terminal. Alih-alih, Anda harus berhenti di posisi dewan yang belum selesai dan mengevaluasi daun dengan beberapa heuristik (pada dasarnya probabilitas bahwa pemain A akan menang dari posisi yang diberikan). Anda dapat membiarkan algoritma pembelajaran mesin seperti jaringan saraf mencoba mempelajari probabilitas ini dari menghubungkan empat posisi dengan hasil yang diketahui.

Untuk menghasilkan contoh pelatihan, Anda dapat membangun pemain minimax Anda dengan heuristik sederhana, biarkan ia bermain sendiri ribuan kali, gunakan game-game itu untuk melatih jaringan saraf pertama Anda, lalu biarkan itu membayar sendiri seribu game dan seterusnya. Dengan sedikit keberuntungan, sistem Anda akan meningkat dengan setiap generasi.

Peter
sumber
2

Saya menulis blogpost tentang menggunakan minimax untuk bermain connect empat waktu lalu. Anda dapat melihat kode beraksi di sini . Jika Anda perlu melatih model Anda, Anda mungkin dapat membiarkannya memainkan beberapa ribu game melawan implementasi minimax saya.

Lukas Vermeer
sumber
Silakan garpu kode saya di Github. github.com/lukasvermeer/minimax
Lukas Vermeer
Selamat datang di Stack Exchange. Ini adalah situs tanya jawab . Silakan baca faq kami , khususnya bagaimana menjawabnya . Secara khusus, kami tidak ingin posting yang hanya terdiri dari tautan ke jawaban. Terima kasih atas kontribusi Anda, tetapi bisakah Anda meringkas poin-poin utama dari posting blog Anda di posting Anda di sini?
Gilles 'SO- berhenti bersikap jahat'
Maaf, tetapi pertanyaan awal adalah "bagaimana cara menghasilkan contoh pelatihan yang dapat digunakan dalam pembelajaran yang diawasi?" Saya memberikan tautan ke kode kerja yang dapat digunakan untuk menghasilkan ini. Saya gagal melihat bagaimana menulis lebih banyak teks di atas akan membantu menjawab kebutuhan asli.
Lukas Vermeer
"Tautan ke solusi potensial selalu disambut baik, tetapi tolong tambahkan konteks di sekitar tautan sehingga sesama pengguna Anda akan mengetahui apa itu dan mengapa ada di sana. Selalu kutip bagian yang paling relevan dari tautan penting, jika situs target tidak dapat dijangkau atau offline secara permanen. " Saya pikir saya memang melakukan yang pertama. Yang terakhir akan tidak relevan. Pertanyaan aslinya membutuhkan contoh game, bukan penjelasan tentang bagaimana menerapkan solusi.
Lukas Vermeer