Anda telah menghadapi isu biasa dalam pelaksanaan Q-Learning: nilai tindakan keadaan berkembang terlalu tinggi. Mari terokai masalah ini dan berikan penyelesaian.
Memahami Isu
Ejen anda cuba memaksimumkan jumlah ganjaran yang dijangkakan. Walau bagaimanapun, fungsi ganjaran anda mengembalikan ganjaran positif untuk kesinambungan permainan (0.5). Ini memberi insentif kepada ejen untuk memanjangkan permainan selama-lamanya, menghasilkan jumlah ganjaran yang dijangkakan tanpa had dan nilai Q yang terlalu tinggi.
Penyelesaian: Melaraskan Fungsi Ganjaran
Untuk menyelesaikan isu ini , laraskan fungsi ganjaran anda untuk memberikan ganjaran negatif bagi setiap langkah masa. Ini akan menghukum ejen kerana memanjangkan permainan dan menggalakkannya untuk mencari strategi kemenangan. Sebagai contoh, anda boleh menggunakan skim ganjaran berikut:
Pertimbangan Pelaksanaan
Dalam kod anda, anda menggunakan agent.prevScore sebagai ganjaran untuk tindakan keadaan sebelumnya. Walau bagaimanapun, ini sepatutnya ganjaran sebenar yang diterima, bukan nilai Q. Buat pelarasan ini dalam kod anda:
<code class="go">agent.values[mState] = oldVal + (agent.LearningRate * (reward - agent.prevScore))</code>
Gelagat Jangkaan
Selepas melaksanakan perubahan ini, anda harus memerhatikan tingkah laku berikut:
Perlu diingat bahawa algoritma pembelajaran pengukuhan kadangkala mempamerkan tingkah laku tidak intuitif dan memahami prinsip asas adalah penting untuk membangunkan penyelesaian yang berkesan.
Atas ialah kandungan terperinci Mengapakah Nilai Q-Learning saya Sangat Tinggi? Penyelesaian kepada Ganjaran Jangkaan Tidak Terhad.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!