Я пытаюсь использовать нейронную сеть, чтобы приблизить Q-значение в Q-Learning, как в вопросах о Q-Learning с использованием нейронных сетей . Как было предложено в первом ответе, я использую линейную функцию активации для выходного слоя, в то время как я все еще использую функцию активации сигмоида в скрытых слоях (2, хотя я могу изменить это позже). Я также использую один NN, который возвращает вывод для каждого действия как рекомендовано.
Однако алгоритм все еще расходится для простой задачи балансировки полюсов тележки. Итак, я боюсь, что мое Q-обновление неверно. После инициализации на каждом шаге я делаю следующее:
- Рассчитайте используя прямое распространение NN для всех действий.
- Выберите новое действие, , приземлитесь в новом состоянии .с т
- Рассчитайте используя прямое распространение NN для всех действий.
- Установите целевое значение Q как: только для текущего действия, a_t , а настройка Q_ {t + 1} (s, a_t) = Q_ {t} (s, a_t) для других состояний. Обратите внимание, я думаю, что это проблема.
- Установите вектор ошибок
- Обратно распространяйте ошибку через NN, чтобы обновить матрицы весов.
Может ли кто-нибудь указать мне, где я ошибся?
Кроме того, считаете ли вы, что я должен включить термин смещения также во входном слое и первом скрытом слое (т.е. для сигмоидальных функций)? Будет ли это иметь значение?
Заранее большое спасибо за вашу помощь. Я могу помочь уточнить вопрос или поделиться кодом, если требуется.
источник