Cara Mempelajari AI Untuk Bermain Game: Pembelajaran Penguatan Dalam

Magnet Info – Jika Anda tertarik dengan Pembelajaran Mesin dan Anda tertarik dengan cara penerapannya pada Permainan atau Pengoptimalan, artikel ini cocok untuk Anda. Kita akan melihat dasar-dasar Reinforcement Learning dan Deep Reinforcement Learning (Neural Networks + Q-Learning) yang diterapkan pada game Snake. Mari selami!
Artificial Intelijen dan Gaming, bertentangan dengan poP keyakinan ular, tidak rukun bersama-sama. Apakah ini pendapat yang kontroversial? Ya, itu, tapi saya akan menjelaskannya. Ada perbedaan antara Kecerdasan Buatan dan perilaku Buatan. Kami tidak ingin agen dalam permainan kami mengakali pemain. Kami ingin mereka menjadi secerdas yang diperlukan untuk memberikan kesenangan dan keterlibatan. Kami tidak ingin mendorong batas bot ML kami, seperti yang biasanya kami lakukan di Industri yang berbeda. Lawan harus tidak sempurna, meniru perilaku seperti manusia.

Permainan tidak hanya hiburan, meskipun. Melatih agen virtual untuk mengungguli pemain manusia dapat mengajari kita cara mengoptimalkan berbagai proses di berbagai subbidang yang berbeda dan menarik. Inilah yang dilakukan Google DeepMind dengan AlphaGo-nya yang populer, yang mengalahkan pemain Go terkuat dalam sejarah dan mencetak gol yang dianggap mustahil pada saat itu . Pada artikel ini, kami akan mengembangkan agen AI yang dapat mempelajari cara memainkan game populer Snake dari awal.

Untuk melakukannya, kami menerapkan algoritma Deep Reinforcement Learning menggunakan Keras di atas Tensorflow dan PyTorch (kedua versi tersedia, Anda dapat memilih yang Anda inginkan) .Pendekatan ini terdiri dari interaksi antara dua komponen: lingkungan (permainan itu sendiri) dan agen (Ular). Agen mengumpulkan informasi tentang statusnya saat ini (kita akan lihat nanti apa artinya ini) dan melakukan tindakan yang sesuai. Lingkungan memberi penghargaan atau menghukum agen berdasarkan tindakan yang dilakukan. Seiring waktu, agen mempelajari tindakan apa yang memaksimalkan hadiah (dalam kasus kami, tindakan apa yang menyebabkan memakan apel dan menghindari tembok).

Tidak ada aturan tentang permainan yang diberikan. Awalnya, Snake tidak tahu apa yang harus dilakukan dan melakukan tindakan acak. Tujuannya adalah untuk menguraikan strategi (secara teknis disebut “kebijakan”) untuk memaksimalkan skor — atau hadiahnya.

Kita akan melihat bagaimana Deep Q-Learningalgoritma belajar bermain Snake, mencetak hingga 50 poin dan menunjukkan strategi yang solid hanya dalam 5 menit pelatihan. Opsional, kode menunjukkan cara mengoptimalkan Jaringan Syaraf Tiruan menggunakan Bayesian Optimization . Prosedur ini tidak perlu, tetapi saya ingin menyebutkannya untuk pembaca tingkat lanjut.
Untuk kode lengkapnya , silakan merujuk ke repositori GitHub . Di bawah ini saya akan menunjukkan implementasi modul pembelajaran.

Permainan

Gim ini dikodekan dalam python dengan Pygame, pustaka yang memungkinkan pengembangan gim yang cukup sederhana. Di sebelah kiri, agen tersebut tidak terlatih dan tidak memiliki petunjuk tentang apa yang harus dilakukan. Permainan di sebelah kanan mengacu pada agen setelah pelatihan (sekitar 5 menit).
Bagaimana cara kerjanya?

Pembelajaran Penguatan adalah keluarga algoritma dan teknik yang digunakan untuk Kontrol (misalnya Robotika, Mengemudi otonom, dll.) dan Pengambilan keputusan. Pendekatan-pendekatan ini memecahkan masalah yang perlu diekspresikan sebagai Markov Decision Process (MDP). Apa artinya ini? Ini berarti bahwa kita perlu menggambarkan permainan kita dengan serangkaian status S (misalnya, indeks berdasarkan posisi Ular), serangkaian tindakan A (misalnya, Atas, Bawah, Kanan, Kiri), fungsi hadiah R ( misalnya, +10 saat Ular makan apel, -10 saat Ular menabrak dinding) dan opsional fungsi transisi T yang menjelaskan transisi antar keadaan. Untuk menggunakan Reinforcement Learning, kita perlu memformalkan masalah kita menggunakan 4 komponen ini. Jika ini membingungkan, jangan takut , semuanya akan menjadi jelas dalam beberapa menit.

Dalam implementasi saya, saya menggunakanDeep Q-Learning alih – alih pendekatan Machine Learning tradisional yang diawasi. Apa bedanya? Algoritme ML tradisional perlu dilatih dengan input dan “jawaban yang benar” yang disebut target. Sistem kemudian akan mencoba mempelajari cara memprediksi target berdasarkan input yang tidak terlihat. Dalam contoh ini, kita tidak tahu tindakan terbaik yang harus diambil pada setiap keadaan permainan (ini sebenarnya yang coba kita pelajari!), jadi pendekatan tradisional tidak akan efektif.

Dalam Pembelajaran Penguatan, kami memiliki dua komponen utama: lingkungan (permainan kami) dan agen (Ular kami.. atau lebih tepatnya, Jaringan Saraf Dalam yang mendorong tindakan Ular kami). Setiap kali agen melakukan suatu tindakan, lingkungan memberikan hadiahkepada agen, yang bisa positif atau negatif tergantung pada seberapa baik tindakan itu dari keadaan tertentu . Tujuan agen adalah untuk mempelajari tindakan apa yang memaksimalkan ganjaran, mengingat setiap keadaan yang mungkin. S tates yang pengamatan bahwa agen menerima pada setiap iterasi dari lingkungan. Suatu keadaan dapat berupa posisinya, kecepatannya, atau susunan variabel apa pun yang menggambarkan lingkungan.

Agar lebih teliti dan menggunakan notasi Reinforcement Learning, strategi yang digunakan oleh agen untuk membuat keputusan disebut kebijakan.. Pada tingkat teoretis, kebijakan adalah pemetaan dari state space (ruang dari semua kemungkinan observasi yang dapat diterima agen) ke dalam ruang aksi (ruang dari semua tindakan yang dapat dilakukan agen, misalnya ATAS, BAWAH, KIRI dan KANAN). Agen optimal dapat menggeneralisasi seluruh ruang keadaan untuk selalu memprediksi tindakan terbaik yang mungkin.. bahkan untuk situasi yang belum pernah dilihat agen sebelumnya! Jika ini tidak jelas, contoh berikut akan memperjelas keraguan Anda.

Untuk memahami bagaimana agen mengambil keputusan, kita perlu mengetahui apa itu Q-Table. Q-tabel adalah matriks yang mengkorelasikan keadaanagen dengan kemungkinan tindakan yang dapat diadopsi oleh agen. Nilai dalam tabel adalah probabilitas keberhasilan tindakan (secara teknis, ukuran imbalan kumulatif yang diharapkan), yang diperbarui berdasarkan imbalan yang diterima agen selama pelatihan. Contoh kebijakan serakah adalah kebijakan di mana agen mencari tabel dan memilih tindakan yang mengarah ke skor tertinggi.

Representasi dari Q-Table
Dalam contoh, kita mungkin ingin memilih KANAN jika kita berada di Negara 2, dan kita mungkin ingin NAIK jika kita berada di Negara 4. Nilai-nilai dalam Tabel-Q mewakili imbalan kumulatif yang diharapkan dari mengambil tindakan a dari keadaan S. Dengan kata lain, nilai-nilai ini memberi kita indikasi imbalan rata-rata yang diperoleh agen jika mengambil tindakan a dari keadaan s itu .

Tabel ini adalah kebijakan dari agen yang kami sebutkan sebelumnya:itu menentukan tindakan apa yang harus diambil dari setiap negara bagian untuk memaksimalkan imbalan yang diharapkan. Apa masalahnya dengan ini? Kebijakan adalah tabel, maka hanya dapat menangani ruang negara yang terbatas. Dengan kata lain, kita tidak dapat memiliki tabel besar tak terhingga dengan status tak terhingga. Ini mungkin menjadi masalah untuk situasi di mana kita memiliki jumlah kemungkinan status yang sangat besar.

Deep Q-Learning meningkatkan potensi Q-Learning dengan mengubah tabel menjadi Deep Neural Network — yang merupakan representasi kuat dari fungsi parametrized. Nilai-Q diperbarui menurut persamaan Bellman:

Pada tingkat umum, algoritma bekerja sebagai berikut:

  • Permainan dimulai, dan nilai Q diinisialisasi secara acak.
  • Agen mengumpulkan status saat ini s (pengamatan).
  • Agen menjalankan tindakan berdasarkan keadaan yang dikumpulkan . Tindakannya bisa acak atau dikembalikan oleh jaringan sarafnya. Selama fase pertama pelatihan, sistem sering memilih tindakan acak untuk memaksimalkan eksplorasi. Kemudian, sistem semakin bergantung pada jaringan sarafnya.
  • Ketika AI memilih dan melakukan tindakan, lingkungan memberikan hadiah kepada agen. Kemudian, agen mencapai keadaan state baru’ dan memperbarui nilai Q-nya sesuai dengan persamaan Bellman seperti yang disebutkan di atas. Juga, untuk setiap gerakan, ia menyimpan status asli, tindakan, status yang dicapai setelah melakukan tindakan itu, hadiah yang diperoleh, dan apakah permainan berakhir atau tidak. Data ini kemudian diambil sampelnya untuk melatih jaringan saraf. Operasi ini disebut Memori Putar Ulang .
  • Dua operasi terakhir ini diulang sampai kondisi tertentu terpenuhi (contoh: permainan berakhir).

Negara
Sebuah negara adalah representasi dari situasi di mana agen menemukan dirinya sendiri. Negara juga mewakili input dari jaringan Neural.
Dalam kasus kami, status adalah array yang berisi 11 variabel boolean. Ini memperhitungkan:
– jika ada bahaya langsung di dekat ular (kanan, kiri dan lurus).
– jika Ular bergerak ke atas, bawah, kiri atau kanan.
– jika makanan di atas, di bawah, di kiri atau di kanan.
Kehilangan
Jaringan saraf dalam mengoptimalkan output (tindakan) ke input tertentu (keadaan) mencoba memaksimalkan hadiah yang diharapkan. Nilai yang menyatakan seberapa baik prediksi dibandingkan dengan kebenaran diberikan oleh fungsi Loss. Tugas jaringan saraf adalah meminimalkan kerugian, mengurangi perbedaan antara target nyata dan yang diprediksi. Dalam kasus kami, kerugian dinyatakan sebagai:

Hadiah
Seperti yang dikatakan, AI mencoba memaksimalkan hadiah yang diharapkan. Dalam kasus kami, hadiah positif hanya diberikan kepada agen ketika memakan target makanan (+10). Jika ular menabrak dinding atau menabrak dirinya sendiri, hadiahnya negatif (-10). Selain itu, kami dapat memberikan hadiah positif untuk setiap langkah yang dilakukan Ular tanpa mati. Dalam hal ini, Ular mungkin memanfaatkan situasi dengan berlari dalam lingkaran alih-alih mencapai makanan, karena itu akan mendapatkan hadiah positif untuk setiap langkah sambil menghindari risiko tabrakan dengan dinding. Terkadang, agen Pembelajaran Penguatan mengakali kami, menghadirkan kelemahan dalam strategi kami yang tidak kami antisipasi.

Jaringan Saraf Dalam
Otak dari agen Artificial Intelligence menggunakan Deep learning . Dalam kasus kami, ini terdiri dari 3 lapisan tersembunyi dari 120 neuron. Kecepatan belajar tidak tetap, dimulai pada 0,0005 dan menurun menjadi 0,000005. Arsitektur yang berbeda dan hyper-parameter yang berbeda berkontribusi pada konvergensi yang lebih cepat ke nilai optimal, serta kemungkinan tertinggi.
Jaringan menerima sebagai input status, dan mengembalikan sebagai output tiga nilai yang terkait dengan tiga tindakan: bergerak ke kiri, bergerak ke kanan, bergerak lurus. Lapisan terakhir menggunakan fungsi Softmax.

Implementasi modul Pembelajaran
Bagian terpenting dari program ini adalah iterasi Deep-Q Learning. Di bagian sebelumnya, langkah-langkah tingkat tinggi dijelaskan. Di sini Anda dapat melihat bagaimana penerapannya (untuk melihat keseluruhan kode, kunjungi repositori GitHub . EDIT: karena saya sedang mengerjakan perluasan proyek ini, implementasi sebenarnya di repo Github mungkin sedikit berbeda. Konsepnya sama sebagai implementasi di bawah).
saat bukan game.crash:
#agent.epsilon diatur untuk memberikan tindakan acak
agent.epsilon = 80 – counter_games

#get state_old state
= agent.get_state(game, player1, food1)

#melakukan tindakan acak berdasarkan agent.epsilon, atau pilih tindakan
jika randint(0, 1) < agent.epsilon:
final_move = to_categorical(randint(0, 2), num_classes=3)
else:
# prediksi tindakan berdasarkan
prediksi status lama = agent.model.predict(state_old .reshape((1,11)))
final_move = to_categorical(np.argmax(prediksi[0]), num_classes=3)[0]

#lakukan langkah baru dan dapatkan status baru
player1.do_move(final_move, player1.x, player1.y, game, food1, agent)
state_new = agent.get_state(game, player1, food1)

#set treward untuk status baru
reward = agen .set_reward(player1, game.crash)

#train short memory base pada action baru dan state
agent.train_short_memory(state_old, final_move, reward, state_new, game.crash)

# simpan data baru ke dalam memori jangka panjang
agent.remember( state_old, final_move, reward, state_new, game.crash)
record = get_record(game.score, record)

Hasil akhir
Di akhir implementasi, AI mencetak rata-rata 40 poin di papan permainan 20×20 (setiap buah yang dimakan memberi hadiah satu poin). Rekornya adalah 83 poin.
Untuk memvisualisasikan proses pembelajaran dan seberapa efektif pendekatan Deep Reinforcement Learning, saya memplot skor beserta # permainan yang dimainkan. Seperti yang bisa kita lihat di plot di bawah, selama 50 pertandingan pertama skor AI buruk: rata-rata kurang dari 10 poin. Hal ini diharapkan: dalam fase ini, agen sering mengambil tindakan acak untuk menjelajahi papan dan menyimpan dalam memorinya banyak status, tindakan, dan penghargaan yang berbeda. Selama 50 pertandingan terakhir, agen tidak lagi melakukan tindakan acak, tetapi hanya memilih apa yang harus dilakukan berdasarkan jaringan sarafnya (kebijakannya).
Hanya dalam 150 pertandingan — kurang dari 5 menit — agen mempelajari strategi yang solid dan mencetak 45 poin!

Kesimpulan
Contoh ini menunjukkan bagaimana agen sederhana dapat mempelajari mekanisme suatu proses, dalam hal ini permainan Ular, dalam beberapa menit dan dengan beberapa baris kode. Saya sangat menyarankan untuk menyelami kode dan mencoba meningkatkan hasilnya. Sebuah upgrade yang menarik mungkin diperoleh lewat screenshot dari game saat ini untuk setiap iterasi. Dalam hal ini, status dapat berupa informasi RGB untuk setiap piksel. Model Deep Q-Learning dapat diganti dengan algoritma Double Deep Q-learning, untuk konvergensi yang lebih presisi.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *