Saat ini saya sedang menulis mesin untuk memainkan permainan kartu, karena belum ada mesin untuk permainan khusus ini.
Saya berharap dapat memperkenalkan jaring saraf untuk permainan setelahnya, dan memintanya belajar bermain game.
Saya menulis mesin sedemikian rupa sehingga bermanfaat untuk pemain AI. Ada titik pilihan, dan pada titik-titik itu, daftar opsi yang valid disajikan. Seleksi acak akan dapat memainkan game (meskipun tidak baik).
Saya telah belajar banyak tentang jaringan saraf (kebanyakan NEAT dan HyperNEAT) dan bahkan membangun implementasi saya sendiri. Saya masih tidak yakin bagaimana cara terbaik membangun AI yang dapat memperhitungkan semua variabel di salah satu jenis game ini. Apakah ada pendekatan bersama? Saya tahu bahwa Keldon menulis AI yang bagus untuk RftG yang memiliki jumlah kompleksitas yang layak, saya tidak yakin bagaimana dia berhasil membangun AI seperti itu.
Ada saran? Apakah itu layak? Apakah ada contoh bagus tentang ini? Bagaimana inputnya dipetakan?
EDIT: Saya telah melihat online dan belajar bagaimana jaringan saraf bekerja dan biasanya bagaimana mereka berkaitan dengan pengenalan gambar atau mengarahkan agen sederhana. Saya tidak yakin apakah atau bagaimana saya akan menerapkannya untuk membuat pilihan dengan kartu yang memiliki sinergi yang kompleks. Setiap arah menuju apa yang harus saya perhatikan akan sangat dihargai.
Tentang permainan: Permainan ini mirip dengan Magic: The Gathering. Ada seorang komandan yang memiliki kesehatan dan kemampuan. Pemain memiliki kumpulan energi yang mereka gunakan untuk meletakkan antek dan mantra di papan tulis. Minion memiliki kesehatan, nilai serangan, biaya, dll. Kartu juga memiliki kemampuan, ini tidak mudah disebutkan. Kartu dimainkan dari tangan, kartu baru diambil dari tumpukan kartu. Ini semua adalah aspek yang perlu dipertimbangkan oleh jaringan saraf.
sumber
Jawaban:
Saya pikir Anda mengajukan pertanyaan yang bagus, terutama WRT tentang bagaimana input & output NN dipetakan ke mekanisme permainan kartu seperti MtG di mana tindakan yang tersedia sangat bervariasi sesuai konteks.
Saya tidak memiliki jawaban yang benar-benar memuaskan untuk ditawarkan, tetapi saya telah memainkan Keldon Race for the Galaxy NN yang berbasis AI - setuju bahwa itu sangat bagus - dan telah melihat bagaimana mengatasi masalah ini.
Kode terbaru untuk AI Keldon sekarang dapat dicari dan dijelajahi di github .
Kode ai ada dalam satu file . Ini menggunakan 2 NN yang berbeda, satu untuk "mengevaluasi kartu tangan dan aktif" dan yang lain untuk "memprediksi pilihan peran".
Yang akan Anda perhatikan adalah bahwa ia menggunakan jumlah wajar pada kode non-NN untuk memodelkan mekanisme permainan. Sangat banyak solusi hybrid.
Pemetaan status permainan ke dalam evaluasi NN dilakukan di sini . Berbagai fitur yang relevan dikodekan dengan satu panas, misalnya jumlah barang yang dapat dijual pada gilirannya.
Studi kasus lain yang sangat baik dalam memetakan permainan kompleks menjadi NN adalah Lingkungan Belajar Starcraft II yang dibuat oleh Deepmind bekerja sama dengan Blizzard Entertainment. Makalah ini memberikan ikhtisar tentang bagaimana game Starcraft dipetakan ke serangkaian fitur yang dapat ditafsirkan oleh NN, dan bagaimana tindakan dapat dikeluarkan oleh agen NN untuk simulasi game.
sumber
Ini benar-benar layak, tetapi cara input dipetakan akan sangat tergantung pada jenis permainan kartu, dan bagaimana itu dimainkan.
Saya akan memperhitungkan beberapa kemungkinan:
Apakah Anda ingin Jaringan Saraf Tiruan belajar dari data yang Anda kumpulkan, atau belajar sendiri? Jika sendiri, bagaimana? Jika Anda mengumpulkan data diri Anda bermain game puluhan atau ratusan kali, memasukkannya ke Neural Net, dan membuatnya belajar dari Anda, maka Anda melakukan sesuatu yang disebut "Kloning Perilaku". Namun, jika Anda ingin NN belajar sendiri, Anda dapat melakukan 2 cara ini:
a) Penguatan Belajar - RL memungkinkan Neural Net untuk belajar dengan bermain melawan dirinya sendiri banyak kali.
b) NEAT / Genetic Algorithm - NEAT memungkinkan Neural Net untuk belajar dengan menggunakan algoritma genetika.
Namun, sekali lagi, untuk mendapatkan lebih spesifik tentang bagaimana input dan output Neural Net harus dikodekan, saya harus tahu lebih banyak tentang permainan kartu itu sendiri.
sumber
Anda pasti ingin jaringan Anda mengetahui informasi penting tentang permainan, seperti kartu apa yang dimiliki agen AI (nilai dan jenisnya), kolam mana, berapa banyak kartu di atas meja dan nilainya, jumlah belokan dan sebagainya. Hal-hal ini yang harus Anda pikirkan sendiri, pertanyaan yang harus Anda tanyakan kepada diri sendiri adalah "Jika saya menambahkan nilai ini untuk memasukkan bagaimana dan mengapa hal itu akan meningkatkan sistem saya". Tetapi hal pertama yang perlu dipahami adalah bahwa sebagian besar NN dirancang untuk memiliki ukuran input yang konstan, dan saya akan menganggap ini adalah masalah dalam permainan ini karena pemain dapat memiliki jumlah kartu yang berbeda di tangan mereka atau di atas meja. Misalnya, Anda ingin memberi tahu NN kartu apa yang dimilikinya, misalkan pemain dapat memiliki maksimal 5 kartu di tangannya dan setiap kartu dapat memiliki 3 nilai (mana, serangan dan kesehatan), sehingga Anda dapat menyandikan ini sebagai 5 * 3 vektor, di mana 3 nilai pertama mewakili kartu nomor satu dan seterusnya. Tetapi bagaimana jika pemain saat ini memiliki 3 kartu, pendekatan sederhana akan menetapkan nol untuk 6 input terakhir, tetapi ini dapat menyebabkan masalah karena beberapa kartu dapat memiliki 0 biaya mana atau 0 serangan. Jadi, Anda perlu mencari cara untuk menyelesaikan masalah ini. Anda dapat mencari model NN yang dapat menangani ukuran input variabel atau mencari cara untuk menyandikan input sebagai vektor ukuran konstan.
Kedua, output juga merupakan vektor ukuran konstan. Dalam hal jenis permainan ini, itu bisa menjadi vektor yang menyandikan tindakan yang bisa dilakukan agen. Jadi katakanlah kita memiliki 3 tindakan: letakkan kartu, lewati giliran dan kemasukan. Jadi itu bisa menjadi salah satu penyandi panas, misalnya jika Anda memiliki keluaran 1 0 0, ini berarti bahwa agen harus meletakkan beberapa kartu. Untuk mengetahui kartu apa yang harus diletakkan, Anda dapat menambahkan elemen lain ke output yang akan menghasilkan angka dalam kisaran 1 hingga 5 (5 adalah jumlah maksimal kartu di tangan).
Tetapi bagian terpenting dari pelatihan jaringan saraf adalah Anda harus menemukan fungsi kerugian yang sesuai untuk tugas Anda. Mungkin fungsi kerugian standar seperti Mean-squared loss atau L2 akan bagus, mungkin Anda harus mengubahnya agar sesuai dengan kebutuhan Anda. Ini adalah bagian di mana Anda perlu melakukan penelitian. Saya belum pernah bekerja dengan NEAT sebelumnya, tetapi seperti yang saya pahami dengan benar menggunakan beberapa algoritma genetika untuk membuat dan melatih NN, dan GA menggunakan beberapa fungsi kebugaran untuk memilih seorang individu. Jadi pada dasarnya Anda perlu tahu metrik apa yang akan Anda gunakan untuk mengevaluasi seberapa baik kinerja model Anda dan berdasarkan metrik ini Anda akan mengubah parameter model.
PS. Dimungkinkan untuk menyelesaikan masalah ini dengan jaringan saraf, namun, jaringan saraf bukan sihir dan bukan solusi universal untuk semua masalah. Jika tujuan Anda adalah untuk memecahkan masalah tertentu ini, saya juga akan merekomendasikan Anda untuk menggali teori permainan dan penerapannya dalam AI. Saya akan mengatakan, bahwa menyelesaikan masalah ini akan membutuhkan pengetahuan yang kompleks dari berbagai bidang AI.
Namun, jika tujuan Anda adalah belajar tentang jaringan saraf saya akan merekomendasikan mengambil tugas yang jauh lebih sederhana. Misalnya, Anda dapat menerapkan NN yang akan berfungsi pada dataset benchmark, misalnya, NN yang akan mengklasifikasikan digit dari dataset MNIST. Alasan untuk ini adalah bahwa banyak artikel ditulis tentang bagaimana melakukan klasifikasi pada dataset ini dan Anda akan belajar banyak dan Anda akan belajar lebih cepat dari menerapkan hal-hal sederhana.
sumber
Iya. Itu layak.
Gambaran Umum Pertanyaan
Tujuan desain sistem tampaknya mendapatkan keuntungan strategis yang unggul dengan menggunakan satu atau lebih jaringan buatan bersamaan dengan mesin permainan kartu.
Pertanyaan itu menunjukkan kesadaran umum tentang dasar-dasar permainan-permainan sebagaimana diuraikan dalam Morgenstern dan Teori Permainan von Neuman .
Fitur lain dari permainan-permainan mungkin atau mungkin tidak sejelas ini.
Petunjuk Pendekatan Umum
Ada pendekatan umum untuk memetakan input dan output, tetapi ada terlalu banyak untuk dijelaskan dalam jawaban Stack Exchange. Ini hanya beberapa prinsip dasar.
Pekerjaan pengenalan gambar hanya terkait jarak jauh, terlalu berbeda dari permainan kartu untuk digunakan secara langsung, kecuali jika Anda perlu mengenali kartu dari gambar visual, dalam hal ini LSTM mungkin diperlukan untuk melihat apa yang telah dipilih pemain lain untuk bergerak. Mempelajari strategi yang menang akan lebih diuntungkan dari desain MLP atau RNN, atau salah satu desain jaringan buatan turunannya.
Apa yang Jaringan Buatan Lakukan dan Contoh Pelatihan
Peran utama dari jaringan buatan dari jenis ini adalah untuk mempelajari suatu fungsi dari data contoh. Jika Anda memiliki urutan langkah dari game nyata, itu adalah aset yang bagus untuk dimiliki untuk proyek Anda. Sejumlah besar dari mereka akan sangat membantu untuk pelatihan.
Bagaimana Anda mengatur contoh dan apakah dan bagaimana Anda memberi label itu patut dipertimbangkan, namun tanpa aturan permainan kartu, sulit untuk memberikan arahan yang dapat diandalkan. Apakah ada mitra, apakah itu berdasarkan skor, apakah jumlah bergerak ke kemenangan, dan selusin faktor lain memberikan parameter skenario yang diperlukan untuk membuat keputusan tersebut.
Belajar
Saran utama yang dapat saya berikan adalah membaca, bukan artikel umum di web, tetapi membaca beberapa buku dan beberapa makalah yang dapat Anda pahami tentang topik-topik di atas. Kemudian temukan beberapa kode yang dapat Anda unduh dan coba setelah Anda memahami terminologi dengan cukup baik untuk mengetahui apa yang harus diunduh.
Ini berarti pencarian buku dan pencarian akademik jauh lebih mungkin untuk mengarahkan Anda ke arah yang benar daripada pencarian web umum. Ada ribuan masalah dalam ruang web umum, menjelaskan prinsip AI dengan sejumlah besar kesalahan. Penerbit buku dan artikel akademis lebih menuntut uji tuntas pada penulisnya.
sumber