Setelah bermain Angry Birds terlalu banyak, saya mulai mengamati strategi saya sendiri. Ternyata saya mengembangkan pendekatan yang sangat spesifik untuk mendapatkan 3 bintang di setiap level.
Itu membuat saya bertanya-tanya tentang tantangan mengembangkan sistem pembelajaran mesin yang akan mampu memainkan Angry Birds. Berinteraksi dengan permainan dan meluncurkan burung-burung itu sepele. Tetapi satu pertanyaan yang saya miliki adalah tentang "blok bangunan" dari sistem.
Sistem pembelajaran mesin tampaknya bekerja dengan konsep atau pemahaman sederhana tentang masalah tersebut. Ini sering dikodekan sebagai fitur sebagai input. Jadi tampaknya sistem perlu memiliki kemampuan untuk memahami beberapa konsep tingkat tinggi untuk menghasilkan strategi.
Apakah ini benar? Juga, apa tantangan atau bagian sulit dari pengembangan sistem seperti itu?
EDIT # 1:
Ini beberapa klarifikasi. Mendapatkan 3 bintang adalah masalah yang sulit karena Anda harus memaksimalkan poin. Ini dapat dilakukan dengan dua cara non-eksklusif: 1) Meminimalkan jumlah burung yang digunakan (Anda mendapatkan 10.000 poin untuk setiap burung yang tidak digunakan). 2) Memaksimalkan kehancuran kaca, kayu, dan benda-benda lainnya. Setiap objek yang hancur memberi Anda poin. Dimungkinkan untuk menghancurkan objek bernilai lebih dari 10.000 poin dengan satu burung.
Berikut sedikit penjelasan tentang "konsep tingkat tinggi". Untuk memaksimalkan poin yang dijelaskan di atas, Anda perlu menggunakan kekuatan khusus masing-masing burung. Jadi, itu berarti meluncurkan burung yang berbeda dengan lintasan yang berbeda, tergantung pada tata letak peta. Dan, saat bermain saya mengembangkan strategi yang menghancurkan area tertentu dengan burung tertentu dalam urutan tertentu.
Tampaknya tanpa pemahaman tentang bagaimana menggunakan setiap burung untuk menghancurkan area tertentu, sistem tidak dapat belajar untuk mendapatkan 3 bintang. Jadi, bagaimana Anda mengelola dan menyandikan sesuatu seperti itu? Bagaimana Anda memastikan bahwa sistem dapat mempelajari konsep-konsep tingkat tinggi ini?
Pertanyaan keren!
Sepertinya pertanyaan ini adalah tentang teknik alami untuk jenis masalah ini. Saya pikir teknik alami untuk jenis masalah ini adalah reinforcement learning (RL). RL adalah tentang bagaimana seorang agen harus mengambil tindakan dalam suatu lingkungan untuk memaksimalkan beberapa gagasan tentang imbalan kumulatif. Mungkin algoritma yang paling terkenal untuk RL adalah Q-learning . Saya pikir ini adalah pertanyaan pertama di situs ini tentang pembelajaran penguatan.
Saya pikir apa yang Anda tanyakan adalah benar jika Anda mencoba untuk mendekati ini sebagai klasifikasi / regresi, tetapi itu sepertinya bukan alat yang tepat untuk masalah ini. Ini tentu saja merupakan masalah RL di mana urutan tindakan dan hasil perlu diperhitungkan.
sumber
Periksa di sini bagaimana orang lain melakukannya atau berpartisipasi sendiri: Angry Birds AI Challenge http://ai2012.web.cse.unsw.edu.au/abc.html
sumber
hanya menyebutkan ini dalam meta. ada perintis penggunaan algoritma genetika oleh Koza untuk menyelesaikan video game Pacman. ia membangun primitif algoritmik yang bisa merasakan dan bertindak. seingat saya ini digabungkan dalam pohon seperti Lisp untuk membuat algoritma yang lebih besar. crossover dengan pohon Lisp melibatkan penggantian atau pertukaran subtree yang mewakili ekspresi algoritma. fungsi kesuksesan adalah sesuatu seperti "titik dimakan" atau "titik plus hantu dimakan" atau "waktu tetap hidup". masih ada beberapa pekerjaan di daerah ini. ada koza ref di makalah ini sebagai berikut. waktu pelatihan mungkin sangat lama dan "konvergensi" sangat bertahap untuk jenis masalah ini.
Belajar Bermain Pac-Man: Pendekatan Evolusioner, Berbasis Aturan oleh Gallagher dan Ryan
sumber