Tebakan terbaik saya adalah ini dilakukan untuk mengurangi waktu perhitungan, jika tidak kita harus mencari tahu nilai q untuk setiap tindakan dan kemudian memilih yang terbaik.
Ini tidak memiliki dampak nyata pada waktu komputasi, selain sedikit peningkatan (karena memori tambahan yang digunakan oleh dua jaringan). Anda bisa men - cache hasil dari jaringan target saya kira, tetapi mungkin tidak akan sepadan untuk sebagian besar lingkungan, dan saya belum melihat implementasi yang melakukan itu.
Apakah saya melewatkan sesuatu?
Ini berkaitan dengan stabilitas algoritma Q-learning saat menggunakan perkiraan fungsi (yaitu jaringan saraf). Menggunakan jaringan target yang terpisah, diperbarui setiap begitu banyak langkah dengan salinan dari parameter yang dipelajari terakhir, membantu menjaga bias lari dari bootstrap dari mendominasi sistem secara numerik, menyebabkan estimasi nilai Q berbeda.
Bayangkan salah satu titik data (pada S, A, R, S'
) menyebabkan perkiraan yang Q(S', A')
terlalu buruk untuk menjadi lebih buruk. Mungkin S', A'
bahkan belum dikunjungi, atau nilai yang R
dilihat sejauh ini lebih tinggi dari rata-rata, hanya secara kebetulan. Jika sampel yang (S,A)
dipotong berulang kali dalam replay pengalaman, itu akan menjadi lebih buruk lagi setiap kali, karena pembaruan Q(S,A)
didasarkan pada R + max_a Q(S',a)
. Memperbaiki jaringan target membatasi kerusakan yang dapat dilakukan oleh perkiraan yang berlebihan tersebut, sehingga memberi waktu belajar jaringan untuk menyatu dan kehilangan lebih banyak bias awalnya.
Dalam hal ini, menggunakan jaringan target yang terpisah memiliki tujuan yang sangat mirip untuk mengalami replay. Ini menstabilkan suatu algoritma yang dinyatakan memiliki masalah konvergen.
Dimungkinkan juga untuk memiliki DQN dengan "pembelajaran ganda" untuk mengatasi masalah terpisah: Bias maksimisasi. Dalam hal ini Anda dapat melihat implementasi DQN dengan 4 jaringan saraf.