Saya menulis permainan mainan sederhana dengan tujuan melatih jaringan saraf yang mendalam di atasnya. Aturan permainan kira-kira adalah sebagai berikut:
- Gim ini memiliki papan yang terdiri dari sel-sel heksagonal.
- Kedua pemain memiliki koleksi potongan yang sama yang dapat mereka pilih untuk diposisikan secara bebas di papan tulis.
- Menempatkan berbagai jenis poin poin penghargaan (atau mengurangi poin lawan) tergantung pada posisi dan konfigurasi mereka, satu sama lain.
- Siapa pun yang memiliki lebih banyak poin akan menang.
Ada aturan tambahan (tentang belokan, jumlah dan jenis potongan, dll ...) tetapi tidak penting dalam konteks pertanyaan ini. Saya ingin menyusun jaringan saraf yang dalam yang dapat dipelajari secara iteratif dengan bermain melawan dirinya sendiri. Pertanyaan saya adalah tentang representasi input dan output. Khususnya:
- Karena pola kepingan penting, saya berpikir untuk memiliki setidaknya beberapa lapisan konvolusional. Papan bisa dari berbagai ukuran tetapi pada prinsipnya sangat kecil (6x10 pada tes saya, akan diperluas oleh beberapa sel). Apakah masuk akal? Jenis pengumpulan apa yang bisa saya gunakan?
- Bagaimana cara mewakili kedua belah pihak? Dalam makalah ini tentang go, penulis menggunakan dua matriks input, satu untuk batu putih dan satu untuk batu hitam. Bisakah ini bekerja dalam kasus ini juga? Tapi ingat saya memiliki berbagai jenis potongan, katakanlah A, B, C dan D. Haruskah saya menggunakan matriks input 2x4? Tampaknya sangat jarang dan sedikit efisiensi bagi saya. Saya khawatir itu akan terlalu jarang untuk lapisan konvolusional untuk bekerja.
- Saya berpikir bahwa outputnya bisa berupa distribusi probabilitas di atas matriks yang mewakili posisi dewan, ditambah array probabilitas terpisah yang menunjukkan bagian mana yang harus dimainkan. Namun, saya juga perlu mewakili kemampuan untuk melewati belokan, yang sangat penting. Bagaimana saya bisa melakukannya tanpa mengurangi signifikansi di antara probabilitas lainnya?
- Dan yang paling penting , apakah saya hanya memaksakan langkah menang atau kalah juga? Menegakkan langkah-langkah kemenangan itu mudah karena saya hanya mengatur probabilitas yang diinginkan menjadi 1. Namun ketika kalah, apa yang bisa saya lakukan? Tetapkan probabilitas pemindahan ke 0 dan yang lainnya dengan nilai yang sama? Juga, apakah masuk akal untuk menegakkan langkah dengan selisih skor akhir, meskipun ini akan bertentangan dengan makna output, yang kira-kira merupakan probabilitas?
Juga, saya mengembangkan mesin game di node.js berpikir untuk menggunakan Synaptic sebagai kerangka kerja, tapi saya tidak yakin itu bisa bekerja dengan jaringan convolutional (saya ragu ada cara untuk memperbaiki bobot yang terkait dengan bidang persepsi lokal). Adakah saran tentang perpustakaan lain yang kompatibel dengan node?