Вопросы о Q-Learning с использованием нейронных сетей

14

Я внедрил Q-Learning, как описано в

http://web.cs.swarthmore.edu/~meeden/cs81/s12/papers/MarkStevePaper.pdf

Для того, чтобы ок. Q (S, A) Я использую структуру нейронной сети, как показано ниже,

  • Активация сигмовидной кишки
  • Входы, количество входов + 1 для нейронов действия (все входы масштабируются 0-1)
  • Выходы, один выход. Значение Q-
  • N количество M скрытых слоев.
  • Метод исследования случайный 0 <rand () <propExplore

На каждой итерации обучения, используя следующую формулу,

введите описание изображения здесь

Я вычисляю значение Q-Target, а затем вычисляю ошибку, используя

error = QTarget - LastQValueReturnedFromNN

и обратно распространять ошибку через нейронную сеть.

Q1, я на правильном пути? Я видел несколько работ, в которых реализован NN с одним выходным нейроном для каждого действия.

Q2, Моя функция вознаграждения возвращает число от -1 до 1. Можно ли возвращать число от -1 до 1, когда функция активации имеет сигмовидную форму (0 1)

В3. Из моего понимания этого метода, учитывая достаточное количество обучающих примеров, следует поместить его в карантин, чтобы найти оптимальный политический курс? При обучении XOR иногда он изучает его после 2 000 итераций, иногда не учится даже после 40 000 итераций.

Хамза Ерликая
источник
Из любопытства, как вы объединили вход состояния с входом действия, чтобы подавать оба сигнала в сеть одновременно? У вас есть этот кусок кода в открытом доступе? Спасибо!
Педро Лопес

Ответы:

9

Q1. Вы определенно на правильном пути, но несколько изменений могут очень помочь. Некоторые люди используют одну выходную единицу для каждого действия, поэтому им нужно только запустить свою сеть один раз для выбора действия (вы должны запускать свою сеть один раз для каждого возможного действия). Но это не должно иметь никакого значения в отношении обучения , и его стоит реализовать, только если вы планируете значительно расширить свою модель.

Q2. Как правило, люди используют функцию линейной активации для последнего уровня своей нейронной сети, особенно для обучения с подкреплением. Для этого есть множество причин, но наиболее уместным является то, что функция линейной активации позволяет вам представлять весь диапазон действительных чисел в качестве выходных данных. Таким образом, даже если вы не знаете границ вознаграждений за свою задачу, вы все равно можете быть в состоянии представить этот диапазон.

Q3. К сожалению, теоретические гарантии объединения нейронных сетей (и нелинейного приближения функций в целом) с обучением с подкреплением практически отсутствуют. Есть несколько причудливых версий обучения с подкреплением (в основном из лаборатории Саттона), которые могут выдвигать упомянутые вами утверждения о сходимости, но я никогда не видел, чтобы эти алгоритмы применялись «в дикой природе». Причина этого заключается в том, что, хотя отличную производительность нельзя обещать, ее обычно получают на практике с должным вниманием к гиперпараметрам и начальным условиям.

И последнее замечание, которое стоит упомянуть для нейронных сетей в целом: не используйте функции активации сигмоидов для сетей с большим количеством скрытых слоев! Их проклинает проблема «исчезающих градиентов»; сигнал ошибки едва достигает более ранних уровней (глядя на производную функции, следует выяснить, почему это так). Вместо этого попробуйте использовать выпрямленные линейные единицы (RELU) или единицы «софт плюс», так как они обычно показывают гораздо лучшую производительность в глубоких сетях.

Смотрите эту статью для отличной реализации нейронных сетей, обученных с помощью обучения с подкреплением:

Мних, Владимир и др. «Игра Atari с глубоким обучением подкреплению». Препринт arXiv arXiv: 1312.5602 (2013).

zergylord
источник
0

Для функции активации maxout также работает хорошо. Использование правильного тренажера крайне важно для глубоких сетей, я пробовал разные тренажеры, но решил придерживаться RMSprop, и это выглядит великолепно!

nakosung
источник
1
Добро пожаловать на сайт, @ user3355911. Это, вероятно, слишком редко, чтобы быть ответом здесь. Можете ли вы расширить и уточнить это?
gung - Восстановить Монику