Sinir Ağları kullanarak Q-Öğrenme ile ilgili Sorular bölümünde olduğu gibi Q-öğrenimindeki Q değerini yaklaşık olarak belirlemek için bir Sinir Ağı kullanmaya çalışıyorum . İlk cevapta önerildiği gibi, çıktı katmanı için doğrusal bir etkinleştirme işlevi kullanıyorum, yine de gizli katmanlarda sigmoid etkinleştirme işlevini kullanıyorum (2, ancak bunu daha sonra değiştirebilirim). Ayrıca tavsiye edildiği gibi her eylem için bir çıktı döndüren tek bir NN kullanıyorum .
Bununla birlikte, algoritma basit araba direği dengeleme problemi için hala ayrışmaktadır. Bu yüzden Q güncellememin yanlış olduğundan korkuyorum. Başlatma işleminden sonra, her adımda yaptığım şey şudur:
- Tüm eylemler için ileri yayılmasını kullanarak hesaplayın .
- Yeni bir eylem seçin, , yeni bir duruma .
- Tüm eylemler için ileriye doğru yayılmasını kullanarak hesaplayın .
- Hedef Q değerini şu şekilde ayarlayın: yalnızca geçerli eylem için, a_t , diğer durumlar için Q_ {t + 1} (s, a_t) = Q_ {t} (s, a_t) ayarı . Not, bence sorun bu.
- Hata vektörünü
- Ağırlık matrislerini güncellemek için hatayı NN üzerinden geri çoğaltın.
Birisi bana yanlış gittiğimi söyleyebilir mi?
Ayrıca, giriş katmanına ve ilk gizli katmana (yani sigmoid işlevler için) bir önyargı terimi eklemem gerektiğini düşünüyor musunuz? Bir fark yaratacak mı?
Yardımınız için şimdiden çok teşekkür ederim. Gerekirse soruyu netleştirmeye veya kodu paylaşmaya yardımcı olabilirim.