Saya telah menerapkan Q-Learning seperti yang dijelaskan dalam,
http://web.cs.swarthmore.edu/~meeden/cs81/s12/papers/MarkStevePaper.pdf
Untuk sekitar. T (S, A) Saya menggunakan struktur jaringan saraf seperti berikut,
- Aktivasi sigmoid
- Input, jumlah input + 1 untuk neuron Aksi (Semua Input Ditskala 0-1)
- Keluaran, keluaran tunggal. Nilai-Q
- N jumlah M Lapisan Tersembunyi.
- Metode eksplorasi acak 0 <rand () <propExplore
Pada setiap iterasi pembelajaran menggunakan rumus berikut,
Saya menghitung nilai Target-Q lalu menghitung kesalahan menggunakan,
error = QTarget - LastQValueReturnedFromNN
dan kembali menyebarkan kesalahan melalui jaringan saraf.
Q1, Apakah saya di jalur yang benar? Saya telah melihat beberapa makalah yang menerapkan NN dengan satu neuron output untuk setiap tindakan.
T2, Fungsi hadiah saya mengembalikan angka antara -1 dan 1. Apakah boleh mengembalikan angka antara -1 dan 1 saat fungsi aktivasi sigmoid (0 1)
T3, Dari pemahaman saya tentang metode ini diberikan contoh pelatihan yang cukup itu harus dikarantina untuk menemukan bobot kebijakan yang optimal? Ketika pelatihan untuk XOR kadang-kadang ia mempelajarinya setelah iterasi 2k kadang-kadang tidak belajar bahkan setelah iterasi 40k 50k.
sumber
Jawaban:
Q1. Anda pasti berada di jalur yang benar, tetapi beberapa perubahan bisa sangat membantu. Beberapa orang menggunakan satu unit output per tindakan sehingga mereka hanya perlu menjalankan jaringan mereka sekali untuk pemilihan tindakan (Anda harus menjalankan jaring Anda sekali untuk setiap tindakan yang mungkin). Tapi ini seharusnya tidak membuat perbedaan dalam hal belajar , dan hanya layak diterapkan jika Anda berencana meningkatkan model Anda secara signifikan.
Q2. Secara umum, orang menggunakan fungsi aktivasi linier untuk lapisan terakhir dari jaringan saraf mereka, terutama untuk pembelajaran penguatan. Ada berbagai alasan untuk ini, tetapi yang paling penting adalah bahwa fungsi aktivasi linier memungkinkan Anda untuk mewakili seluruh bilangan real sebagai output Anda. Jadi, bahkan jika Anda tidak tahu batas pada hadiah untuk tugas Anda, Anda masih dijamin dapat mewakili kisaran itu.
Q3. Sayangnya, jaminan teoritis untuk menggabungkan jaringan saraf (dan perkiraan fungsi non-linear secara umum) dengan pembelajaran penguatan hampir tidak ada. Ada beberapa versi pembelajaran penguatan yang lebih bagus (terutama dari laboratorium Sutton) yang dapat membuat klaim konvergensi seperti yang Anda sebutkan, tetapi saya belum pernah benar-benar melihat algoritma yang diterapkan 'di alam liar'. Alasan untuk ini adalah bahwa meskipun kinerja yang hebat tidak dapat dijanjikan, ini biasanya diperoleh dalam praktiknya, dengan perhatian yang baik pada parameter-hiper dan kondisi awal.
Satu poin terakhir yang perlu disebutkan untuk jaringan saraf secara umum: jangan gunakan fungsi aktivasi sigmoid untuk jaringan dengan banyak lapisan tersembunyi! Mereka dikutuk dengan masalah 'menghilang gradien'; sinyal kesalahan hampir tidak mencapai lapisan sebelumnya (melihat turunan dari fungsi harus menjelaskan mengapa hal ini terjadi). Sebagai gantinya, coba gunakan unit linear yang diperbaiki (RELU) atau unit 'soft plus', karena mereka biasanya menunjukkan kinerja yang jauh lebih baik di jaringan yang dalam.
Lihat makalah ini untuk implementasi jaringan saraf yang terlatih dengan pembelajaran penguatan:
Mnih, Volodymyr, dkk. "Bermain Atari dengan pembelajaran penguatan yang dalam." arXiv preprint arXiv: 1312.5602 (2013).
sumber
Untuk fungsi aktivasi, maxout juga berfungsi dengan baik. Menggunakan pelatih yang tepat sangat penting untuk jaringan yang dalam, saya telah mencoba berbagai pelatih tetapi memutuskan untuk tetap menggunakan RMSprop dan itu terlihat hebat!
sumber