Почему мои Deep Q Net и Double Deep Q Net нестабильны? - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь реализовать DQN и DDQN (оба с опытом ответа) для решения OpenAI AI-Gym Cartpole Environment.Оба подхода способны иногда изучать и решать эту проблему, но не всегда.

Моя сеть - это просто сеть с прямой связью (я пробовал использовать 1 и 2 скрытых слоя).В DDQN я создал одну сеть в DQN и две сети в DDQN, целевую сеть для оценки значения Q и первичную сеть, чтобы выбрать лучшее действие, обучить первичную сеть и скопировать ее в целевую сеть после некоторых эпизодов.

Проблема в DQN:

  • Иногда он может достичь идеального 200 балла в течение 100 эпизодов, но иногда он застревает и достигает только 10 баллов, независимо от того, как долго он тренируется.
  • Кроме того, в случае успешного обучения скорость обучения различается.

Проблема в DDQN:

  • Он может научиться набирать 200 баллов., но потом, кажется, забывает, что изучено, и счет резко падает.

Я пробовал настраивать размер пакета, скорость обучения, количество нейронов в скрытом слое, количество скрытых слоев, исследованиеСкорость, но нестабильность сохраняется.

Есть ли эмпирическое правило относительно размера сети и размера пакета?Я думаю, что значительно большая сеть и больший размер пакета увеличат стабильность.

Можно ли сделать обучение стабильным?Любые комментарии или ссылки приветствуются!

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Подобные проблемы случаются довольно часто, и вы не должны сдаваться.Во-первых, конечно, вы должны сделать еще одну или две проверки, если код в порядке - попробуйте сравнить ваш код с другими реализациями, посмотреть, как ведет себя функция потерь и т. Д. Если вы уверены, что ваш код все в порядке - и,поскольку вы говорите, что модель может изучать задачу время от времени, она, вероятно, такова - вы должны начать экспериментировать с гиперпараметрами.

Кажется, что ваши проблемы связаны с гиперпараметрами, такими как метод исследования, скорость обученияспособ обновления целевых сетей и памяти воспроизведения опыта.Я не стал бы играть со скрытыми размерами слоев - найти значения, для которых модель выучила один раз, и сохранить их фиксированными.

  • Техника исследования: Я предполагаю, что вы используете эпсилон-жадную стратегию.Мой совет: начинать с высокого значения epsilon (обычно я начинаю с 1.0) и уменьшать его после каждого шага или эпизода, но также определите epsilon_min.Начинать с низкого значения эпсилона может быть проблема разных скоростей обучения и успешности - если вы идете в случайном порядке, вы всегда заполняете свою память подобными переходами в начале.С более низкой скоростью эпсилон в начале, у вашей модели больше шансов не исследовать достаточно, прежде чем начнется фаза эксплуатации.
  • Коэффициент обучения: Убедитесь, что он не слишком большой.Меньшая скорость может снизить скорость обучения, но помогает изученной модели не уйти от глобальных минимумов к некоторым локальным, худшим.Также вам могут помочь адаптивные показатели обучения, рассчитанные с помощью Адам .Конечно, размер пакета также оказывает влияние, но я бы оставил его фиксированным и беспокоился об этом, только если другие изменения гиперпараметров не будут работать.
  • Целевое обновление сети (скорость и значение): Это также важно.Вы должны немного поэкспериментировать - не только как часто вы выполняете обновление, но и сколько первичных значений вы копируете в целевые.Люди часто делают жесткое обновление каждого эпизода или около того, но вместо этого попробуйте выполнить мягкие обновления, если первый метод не работает.
  • Повтор опыта : Используете ли вы это?Вам следует.Насколько велик размер вашей памяти?Это очень важный фактор, и размер памяти может влиять на стабильность и частоту успешных попыток ( A Deeper Look at Replay ).По сути, если вы заметили нестабильность вашего алгоритма, попробуйте больший объем памяти, а если он сильно влияет на вашу кривую обучения, попробуйте технику, предложенную в упомянутой статье.
0 голосов
/ 16 октября 2018

Может быть, это может помочь вам с вашей проблемой в этой среде.

Проблема Cartpole с алгоритмом DQN из Udacity

...