Q-learning dengan Neural Network sebagai perkiraan fungsi

11

Saya mencoba menggunakan Neural Network untuk memperkirakan nilai-Q di Q-learning seperti pada Pertanyaan tentang Q-Learning menggunakan Neural Networks . Seperti yang disarankan dalam jawaban pertama, saya menggunakan fungsi aktivasi linier untuk lapisan output, sementara saya masih menggunakan fungsi aktivasi sigmoid di lapisan tersembunyi (2, meskipun saya bisa mengubahnya nanti). Saya juga menggunakan NN tunggal yang mengembalikan output untuk setiap tindakan seperti yang disarankan.Q(Sebuah)

Namun, algoritma ini masih menyimpang untuk masalah balancing cart-pole sederhana. Jadi, saya khawatir pembaruan Q saya salah. Setelah inisialisasi, apa yang telah saya lakukan pada setiap langkah adalah sebagai berikut:

  • Hitung menggunakan propagasi maju NN untuk semua tindakan.Qt(st)
  • Pilih tindakan baru, , mendarat di negara baru .s tSebuahtst
  • Hitung menggunakan propagasi maju NN untuk semua tindakan.Qt(st+1)
  • Tetapkan nilai-Q target sebagai: hanya untuk tindakan saat ini, a_t , sementara pengaturan Q_ {t + 1} (s, a_t) = Q_ {t} (s, a_t) untuk negara bagian lainnya. Catatan, saya pikir ini masalahnya. a t Q t + 1 ( sQt+1(st,Sebuaht)=Qt(st,Sebuaht)+αt[rt+1+γmaksSebuahQ(st+1,Sebuah)-Qt(st,Sebuaht)]SebuahtQt+1(s,Sebuaht)=Qt(s,Sebuaht)
  • Atur vektor kesalahan ke e=QtSebuahrget-Qt=Qt+1-Qt
  • Backpropagate kesalahan melalui NN untuk memperbarui matriks berat.

Adakah yang bisa menunjukkan kepada saya di mana saya salah?

Selain itu, apakah menurut Anda saya harus memasukkan istilah bias juga dalam lapisan input dan lapisan tersembunyi pertama (yaitu untuk fungsi sigmoid)? Apakah itu akan membuat perbedaan?

Terima kasih banyak sebelumnya atas bantuan Anda. Saya dapat membantu mengklarifikasi pertanyaan atau membagikan kode jika diperlukan.

Enrico Anderlini
sumber

Jawaban:

9

Target Anda harus adil

rt+1+γmaksSebuahQ(st+1,Sebuah) .

Perhatikan bahwa istilah kesalahan Anda (yang benar) kemudian dapat ditulis ulang sebagai rt+1+γmaksSebuahQ(st+1,Sebuah)-Qt

yang merupakan istilah di dalam tanda kurung dalam rumus pembaruan. Ini akan dikalikan dengan tingkat pembelajaran NN Anda dan istilah backpropagation lainnya selama pembelajaran, dan kemudian ditambahkan ke bobot sebelumnya, seperti rumus pembaruanQ

rcpinto
sumber
Terima kasih atas tipnya! Dengan begitu saya dapat menghindari kesalahan numerik dalam nilai target: seperti yang Anda katakan, tidak ada gunanya untuk menambah dan kemudian mengurangi . Qt
Enrico Anderlini
Namun, pembelajaran NN + Q saya masih belum konvergen. Jadi, jika metodenya benar, saya kira saya hanya akan mencoba untuk bermain-main dengan laju pembelajaran, dan jumlah neuron di lapisan tersembunyi
Enrico Anderlini
1
Ya, Anda harus melakukan itu (coba gunakan fungsi transfer ReLU juga). Tetapi perhatikan bahwa Q-Learning tidak memiliki jaminan konvergensi dengan perkiraan fungsi. Jika percobaan Anda berikutnya tidak berhasil, Anda mungkin ingin mencoba Pembelajaran Keuntungan. Dan akhirnya, masalahnya mungkin karena data Anda tidak iid. Jadi, Anda harus menerapkan Experience Replay.
rcpinto
Saya memiliki ekstensi untuk pertanyaan itu. Saya memahami algoritme seperti yang disebutkan dalam pertanyaan tetapi bingung tentang istilah dan . Jika hadiah untuk permainan hanya diketahui di akhir pertandingan (pada kondisi menang atau kalah), bagaimana kita memberikan hadiah untuk langkah perantara? Qt+1rt+1
Kanishka Ganguly
1
Anda tidak, itu nol. Tapi itu akan perlahan-lahan diperbanyak dengan nilai Q ke negara-negara sebelumnya, karena nilai Q adalah perkiraan imbalan masa depan kumulatif .
rcpinto