menerapkan perbedaan temporal dalam catur

10

Saya telah mengembangkan program catur yang memanfaatkan algoritma pemangkasan alpha-beta dan fungsi evaluasi yang mengevaluasi posisi menggunakan fitur-fitur berikut yaitu bahan, keamanan, mobilitas, struktur gadai dan potongan terperangkap dll ..... Fungsi evaluasi saya adalah berasal dari

f(hal)=w1bahan+w2keamanan raja+w3mobilitas+w4gadai-struktur+w5potongan terperangkap

di mana adalah bobot yang ditetapkan untuk setiap fitur. Pada titik ini saya ingin menyesuaikan bobot fungsi evaluasi saya menggunakan perbedaan temporal, di mana agen bermain melawan dirinya sendiri dan dalam proses mengumpulkan data pelatihan dari lingkungannya (yang merupakan bentuk pembelajaran penguatan). Saya telah membaca beberapa buku dan artikel untuk memiliki wawasan tentang bagaimana menerapkan ini di Jawa tetapi tampaknya lebih bersifat teori daripada praktis. Saya membutuhkan penjelasan terperinci dan kode pseudo tentang cara mengatur bobot bobot fungsi evaluasi saya secara otomatis berdasarkan permainan sebelumnya.w

pengguna2890137
sumber

Jawaban:

4

Saya merekomendasikan siapa pun yang tertarik dengan topik ini untuk melihat makalah yang menggabungkan TDL dan pembelajaran mendalam.

Secara kasar, Anda harus membuat mesin bermain game satu sama lain. Catat evaluasi mini-max untuk setiap posisi. Di akhir permainan, Anda akan mendapatkan hadiah, yaitu {0,1, -1} untuk catur. Maka Anda perlu menyesuaikan parameter Anda dengan:

masukkan deskripsi gambar di sini

Persamaan ini memberi tahu kita bahwa kita harus menyesuaikan bobot dengan perbedaan temporal, tertimbang sejauh mana Anda harus melakukannya. Jika Anda memiliki evaluasi yang sempurna, perbedaan temporal Anda akan selalu nol, sehingga Anda tidak perlu melakukan penyesuaian apa pun.

Selanjutnya, Anda perlu menggunakan parameter baru untuk memainkan game baru. Ulangi sampai sebanyak game yang Anda mampu atau ketika Anda pikir itu konvergen.

Beberapa komentar:

  1. Makalah yang saya kutip menerapkan faktor diskon. Ini dilakukan untuk algoritma backproportion untuk jaringan saraf. Anda tidak membutuhkannya.
  2. Anda harus bereksperimen dengan tingkat pembelajaran yang optimal (alfa dalam persamaan). Terlalu besar akan membuat belajar Anda tidak stabil, terlalu sedikit akan membutuhkan waktu lebih lama untuk bertemu. Saya telah melihat orang menggunakan 0,70. Makalah yang saya kutip menggunakan 1.0.
Halo Dunia
sumber
Hai, saya suka jawaban Anda, tetapi bisakah Anda memperbaiki tautannya ke koran?
padura
@padura Tetap. Silakan baca. Itu bacaan yang bagus untuk ilmu data.
HelloWorld
(+1) Jawaban bagus. Juga menyukai kertas :)
Dawny33
Itu artikel yang bagus, memalukan bahwa saya tidak tahu ini pada saat saya sedang mengerjakan mesin catur saya sendiri;) Saya ingin tahu apakah kita dapat meningkatkan dengan menggabungkan dengan teknik ini: bjmc.lu.lv/fileadmin/user_upload/lu_portal/ projekti / bjmc /…
padura
2

Komentar pertama, Anda harus menonton 'Wargames' untuk mengetahui apa yang Anda hadapi.

Yang Anda inginkan adalah f (p) sedemikian rupa sehingga f (p) sedekat mungkin dengan kekuatan posisi.

Solusi yang sangat sederhana menggunakan algo genetik adalah menyiapkan 10.000 pemain dengan bobot berbeda dan melihat mana yang menang. Kemudian pertahankan bobot 1000 pemenang teratas, salin 10 kali, ubah sedikit untuk menjelajahi ruang bobot, dan jalankan simulasi lagi. Itu standar GA, diberi bentuk fungsional, apa koefisien terbaik untuk itu.

Solusi lain adalah mengekstraksi posisi, sehingga Anda memiliki tabel '(bahan, keselamatan raja, mobilitas, struktur gadai, barang terperangkap) -> kebaikan posisi' di mana kebaikan posisi adalah beberapa faktor objektif (hasil menang / kalah dihitung dengan menggunakan simulasi di atas) atau kecocokan yang diketahui, kedalaman pohon yang tersedia, jumlah gerakan di bawah pohon di mana salah satu dari 5 faktor menjadi lebih baik. Anda kemudian dapat mencoba berbagai bentuk fungsional untuk f (p), regresi, svm Anda.

pengguna3053
sumber
Ini tidak masuk akal.
HelloWorld