UPDATE 2018-07-26: Itu saja! Kami sekarang mendekati titik di mana permainan semacam ini akan dapat diselesaikan! Menggunakan OpenAI dan berbasis game DotA 2, sebuah tim bisa membuat AI yang mampu mengalahkan gamer semi profesional dalam game 5v5 . Jika Anda tahu DotA 2, Anda tahu game ini sangat mirip dengan game mirip Diablo dalam hal mekanik, tetapi orang dapat berargumen bahwa itu bahkan lebih rumit karena permainan tim.
Seperti yang diharapkan, ini tercapai berkat kemajuan terbaru dalam pembelajaran penguatan dengan pembelajaran mendalam, dan menggunakan kerangka kerja game terbuka seperti OpenAI yang memudahkan pengembangan AI karena Anda mendapatkan API yang rapi dan juga karena Anda dapat mempercepat permainan (AI yang dimainkan setara dengan 180 tahun gameplay melawan dirinya sendiri setiap hari!).
Pada tanggal 5 Agustus 2018 (dalam 10 hari!) , AI ini direncanakan untuk mengadu pemain top DotA 2. Jika ini berhasil, nantikan revolusi besar, mungkin tidak semediasi penyelesaian game Go, tetapi tetap akan menjadi tonggak penting untuk game AI!
UPDATE 2017-01: Lapangan bergerak sangat cepat sejak kesuksesan AlphaGo, dan ada kerangka kerja baru untuk memfasilitasi pengembangan algoritme pembelajaran mesin di game hampir setiap bulan. Berikut adalah daftar yang terbaru yang saya temukan:
- OpenAI's Universe : platform untuk memainkan hampir semua game menggunakan pembelajaran mesin . API menggunakan Python, dan menjalankan game di belakang lingkungan desktop jarak jauh VNC, sehingga dapat menangkap gambar game apa pun! Anda mungkin dapat menggunakan Universe untuk memainkan Diablo II melalui algoritma pembelajaran mesin!
- OpenAI's Gym : Mirip dengan Universe tetapi menargetkan algoritma pembelajaran penguatan secara khusus (jadi ini semacam generalisasi kerangka kerja yang digunakan oleh AlphaGo tetapi untuk lebih banyak game). Ada kursus di Udemy yang membahas penerapan pembelajaran mesin untuk game seperti breakout atau Doom menggunakan OpenAI Gym.
- TorchCraft : jembatan antara Torch (framework pembelajaran mesin) dan StarCraft: Brood War.
- pyGTA5 : sebuah proyek untuk membangun mobil self-driving di GTA5 hanya menggunakan tangkapan layar (dengan banyak video online ).
Saat-saat yang sangat menyenangkan!
PEMBARUAN PENTING (2016-06): Seperti dicatat oleh OP, masalah pelatihan jaringan buatan untuk bermain game hanya menggunakan input visual sekarang sedang ditangani oleh beberapa institusi yang serius, dengan hasil yang cukup menjanjikan, seperti DeepMind Deep-Qlearning-Network (DQN ) .
Dan sekarang, jika Anda ingin mengambil tantangan level berikutnya, Anda dapat menggunakan salah satu dari berbagai platform pengembangan game AI vision seperti ViZDoom , platform yang sangat dioptimalkan (7000 fps) untuk melatih jaringan untuk memainkan Doom hanya dengan menggunakan input visual. :
ViZDoom memungkinkan pengembangan bot AI yang memainkan Doom hanya dengan menggunakan informasi visual (buffer layar). Ini terutama ditujukan untuk penelitian dalam pembelajaran visual mesin, dan pembelajaran penguatan mendalam, pada khususnya. ViZDoom didasarkan pada ZDoom untuk menyediakan mekanisme permainan.
Dan hasilnya cukup luar biasa, lihat video di halaman web mereka dan tutorial yang bagus (dengan Python) di sini!
Ada juga proyek serupa untuk Quake 3 Arena, yang disebut Quagents , yang juga menyediakan akses API yang mudah ke data game yang mendasarinya, tetapi Anda dapat menghapusnya dan hanya menggunakan tangkapan layar dan API hanya untuk mengontrol agen Anda.
Mengapa platform seperti itu berguna jika kita hanya menggunakan tangkapan layar? Meskipun Anda tidak mengakses data game yang mendasarinya, platform seperti itu menyediakan:
- kinerja tinggiimplementasi game (Anda dapat menghasilkan lebih banyak data / permainan / generasi pembelajaran dengan lebih sedikit waktu sehingga algoritme pembelajaran Anda dapat berkumpul lebih cepat!).
- API sederhana dan responsif untuk mengontrol agen Anda (misalnya, jika Anda mencoba menggunakan input manusia untuk mengontrol game, beberapa perintah Anda mungkin hilang, jadi Anda juga akan menangani output yang tidak dapat diandalkan ...).
- pengaturan skenario kustom yang mudah .
- rendering yang dapat disesuaikan (dapat berguna untuk "menyederhanakan" gambar yang Anda dapatkan untuk memudahkan pemrosesan)
- permainan tersinkronisasi ("turn-by-turn") (jadi Anda tidak memerlukan algoritme Anda untuk bekerja secara realtime pada awalnya, itu adalah pengurangan kompleksitas yang sangat besar).
- fitur kenyamanan tambahan seperti kompatibilitas lintas platform, kompatibilitas ulang (Anda tidak berisiko bot Anda tidak berfungsi lagi saat ada pembaruan game baru), dll.
Untuk meringkas, hal hebat tentang platform ini adalah mereka meringankan banyak masalah teknis sebelumnya yang harus Anda tangani (cara memanipulasi input game, cara menyiapkan skenario, dll.) Sehingga Anda hanya perlu berurusan dengan algoritme pembelajaran diri.
Jadi sekarang, mulailah bekerja dan jadikan kami bot visual AI terbaik yang pernah ada;)
Posting lama yang menjelaskan masalah teknis dalam mengembangkan AI hanya mengandalkan input visual:
Bertentangan dengan beberapa rekan saya di atas, menurut saya masalah ini tidak terlalu membandel. Tapi itu pasti sangat sulit!
Masalah pertama seperti yang ditunjukkan di atas adalah representasi dari keadaan permainan : Anda tidak dapat mewakili keadaan penuh hanya dengan satu gambar, Anda perlu mempertahankan beberapa jenis hafalan(kesehatan tetapi juga objek yang dilengkapi dan item yang tersedia untuk digunakan, misi dan tujuan, dll.). Untuk mendapatkan informasi seperti itu, Anda memiliki dua cara: dengan mengakses langsung data game, yang paling andal dan mudah; atau Anda dapat membuat representasi abstrak dari informasi ini dengan menerapkan beberapa prosedur sederhana (membuka inventaris, mengambil tangkapan layar, mengekstrak data). Tentu saja, mengekstrak data dari tangkapan layar akan membuat Anda menerapkan beberapa prosedur yang diawasi (yang Anda tentukan sepenuhnya) atau tidak diawasi (melalui algoritma pembelajaran mesin, tetapi kemudian itu akan meningkatkan banyak kerumitan ...). Untuk pembelajaran mesin tanpa pengawasan, Anda perlu menggunakan jenis algoritme yang cukup baru yang disebut algoritme pembelajaran struktural (yang mempelajari struktur data daripada cara mengklasifikasikan atau memprediksi nilai).http://techtalks.tv/talks/54422/
Lalu, masalah lainnya adalah bahkan ketika Anda telah mengambil semua data yang Anda butuhkan, permainan hanya dapat diamati sebagian . Dengan demikian Anda perlu memasukkan model dunia abstrak dan memberinya makan dengan informasi yang diproses dari game, misalnya lokasi avatar Anda, tetapi juga lokasi item pencarian, tujuan, dan musuh di luar layar. Anda mungkin melihat ke dalam Filter Partikel Campuran oleh Vermaak 2003 untuk ini.
Selain itu, Anda harus memiliki agen otonom , dengan sasaran yang dibuat secara dinamis. Arsitektur terkenal yang dapat Anda coba adalah agen BDI, tetapi Anda mungkin harus menyesuaikannya agar arsitektur ini berfungsi dalam kasus praktis Anda. Sebagai alternatif, ada juga Jaring Petri Rekursif, yang mungkin dapat Anda gabungkan dengan semua jenis variasi jaring petri untuk mencapai apa yang Anda inginkan karena kerangka kerja yang dipelajari dengan sangat baik dan fleksibel, dengan formalisasi dan prosedur pembuktian yang bagus.
Dan akhirnya, bahkan jika Anda melakukan semua hal di atas, Anda perlu menemukan cara untuk meniru gim dalam kecepatan yang dipercepat (menggunakan video mungkin bagus, tetapi masalahnya adalah algoritme Anda hanya akan menonton tanpa kendali, dan mampu mencoba sendiri sangat penting untuk belajar). Memang, diketahui bahwa algoritma mutakhir saat ini membutuhkan lebih banyak waktu untuk mempelajari hal yang sama yang dapat dipelajari manusia (terlebih lagi dengan pembelajaran penguatan), jadi jika tidak dapat mempercepat proses ( yaitu, jika Anda tidak dapat mempercepat waktu permainan), algoritme Anda bahkan tidak akan bertemu dalam satu masa hidup ...
Untuk menyimpulkan, apa yang ingin Anda capai di sini berada pada batas (dan mungkin sedikit di luar) algoritme canggih saat ini . Saya pikir itu mungkin saja, tetapi bahkan jika ya, Anda akan menghabiskan banyak waktu , karena ini bukan masalah teoretis tetapi masalah praktis yang Anda hadapi di sini, dan karenanya Anda perlu banyak menerapkan dan menggabungkan pendekatan AI yang berbeda untuk menyelesaikannya.
Beberapa dekade penelitian dengan seluruh tim yang mengerjakannya mungkin tidak cukup, jadi jika Anda sendirian dan mengerjakannya secara paruh waktu (karena Anda mungkin memiliki pekerjaan untuk mencari nafkah), Anda dapat menghabiskan seumur hidup tanpa menjangkau di dekat Anda. solusi yang berhasil.
Jadi saran saya yang paling penting di sini adalah Anda menurunkan ekspektasi Anda, dan mencoba mengurangi kerumitannyamasalah Anda dengan menggunakan semua informasi yang Anda bisa, dan hindari sebanyak mungkin mengandalkan tangkapan layar (yaitu, coba kaitkan langsung ke dalam game, cari injeksi DLL), dan sederhanakan beberapa masalah dengan menerapkan prosedur yang diawasi, jangan biarkan Anda Algoritme mempelajari segalanya (mis., jatuhkan pemrosesan gambar untuk saat ini sebanyak mungkin dan andalkan informasi game internal, nanti jika algoritme Anda berfungsi dengan baik, Anda dapat mengganti beberapa bagian program AI Anda dengan pemrosesan gambar, sehingga secara bertahap mencapai tujuan penuh Anda, misalnya jika Anda bisa mendapatkan sesuatu untuk bekerja dengan cukup baik, Anda dapat mencoba untuk memperumit masalah Anda dan mengganti prosedur yang diawasi dan data permainan memori dengan algoritma pembelajaran mesin tanpa pengawasan pada tangkapan layar).
Semoga berhasil, dan jika berhasil, pastikan untuk menerbitkan artikel, Anda pasti bisa terkenal karena memecahkan masalah praktis yang sulit!