Как реализовать Deep Q-Learning градиентный спуск

Поэтому я пытаюсь реализовать алгоритм Deep Q-learning, созданный Google DeepMind, и думаю, что теперь у меня есть довольно хорошие навыки. И все же есть одна (довольно важная) вещь, которую я не очень понимаю, и я надеюсь, что вы могли бы помочь.

Не приводит ли yj к двойному (Java), а последняя - к матрице, содержащей Q-значения для каждого действия в текущем состоянии в следующей строке (4-ая последняя строка в алгоритме):


1


Так как я могу вычесть их друг от друга.

Должен ли я сделать YJ матрицу, содержащую все данные отсюда 2 за исключением замены текущего выбранного действия на

Это не похоже на правильный ответ, и я немного потерян здесь, как вы можете видеть.


1 ответ

Решение

На самом деле нашел это сам. (Понял с самого начала:D)

  1. Выполните прямую передачу для текущего состояния s, чтобы получить прогнозируемые значения Q для всех действий.
  2. Выполните передачу с прямой связью для следующего состояния s 'и рассчитайте максимальный общий выход сети max a' Q(s ', a').
  3. Установите целевое значение Q для действия r + γmax a 'Q(s', a ') (используйте максимум, рассчитанный на шаге 2). Для всех других действий установите целевое значение Q на то же, что первоначально возвращалось с шага 1, с ошибкой 0 для этих выходов.
  4. Обновите веса, используя обратное распространение.
Другие вопросы по тегам