Оптимизатор обучения для лучших подкреплений - PullRequest
0 голосов
/ 21 января 2020

Я работаю с SA C подкрепляющим учеником для приложения робототехники с некоторыми довольно приличными результатами. Одна из причин, по которой я выбрал обучение с подкреплением, - это способность учиться в полевых условиях, например, чтобы приспособиться к механическим изменениям, таким как изношенные шины или колесо, немного смещенное.

Мой учащийся подкрепления восстанавливает последние сохраненные веса и буфер воспроизведения при запуске, поэтому нет необходимости переучивать каждый раз, когда я его включаю. Однако у меня есть одна проблема, касающаяся оптимизатора.

После ADAM оптимизаторы прошли большой путь, но все, что я читаю, и все примеры кода RL, которые я вижу, по-прежнему использует ADAM с фиксированной скоростью обучения. , Я хотел бы воспользоваться некоторыми достижениями в оптимизаторах, например, одним циклом AdamW. Тем не менее, оптимизатор с одним циклом кажется неподходящим для непрерывной реальной проблемы обучения с подкреплением: я думаю, что это довольно хорошо для начальной тренировки / калибровки, но я ожидаю, что низкая конечная скорость обучения будет реагировать слишком медленно на механические изменения.

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

Кто-нибудь экспериментировал с другими оптимизаторами, кроме ADAM, для обучения с подкреплением, или есть какие-либо предложения по решению проблемы такого рода?

Ответы [ 2 ]

1 голос
/ 23 января 2020

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

Мой вопрос: что не так с Адамом? Как правило, выбор оптимизатора является второстепенной деталью для глубокого обучения; другие факторы, такие как политика исследования, гиперпараметры алгоритма c или сетевая архитектура, как правило, оказывают гораздо большее влияние на производительность.

Тем не менее, если вы действительно хотите попробовать другие оптимизаторы, вы можете поэкспериментировать с RMSProp, Adadelta. или Нестеров Импульс. Тем не менее, я предполагаю, что вы увидите постепенные улучшения, если таковые имеются. Возможно, поиск лучших гиперпараметров для использования с Адамом был бы более эффективным использованием времени.


РЕДАКТИРОВАТЬ: В своем первоначальном ответе я утверждал, что выбор конкретного Оптимизатор не важен в первую очередь для ускорения обучения и не является обобщением. Я хочу добавить некоторые обсуждения, которые помогут проиллюстрировать эти моменты.

Рассмотрим, как работают самые глубокие методы градиента политики: они выбирают траекторию опыта из среды, оценивают отдачу, а затем проводят один или несколько шагов градиента для улучшения параметризованная политика ( например нейронная сеть). Этот процесс повторяется до сближения (с локальной оптимальной политикой).

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

Хороший способ визуализировать это - рассмотреть алгоритм MM . На каждой итерации суррогатная цель строится на основе данных, которые мы сейчас и затем максимизировали. Каждый раз мы приближаемся к истинному оптимуму, но скорость, с которой мы приближаемся к нему, определяется только количеством суррогатов, которые мы создаем - , а не конкретным c оптимизатором, который мы используем для максимизации каждый суррогат . Адам может максимизировать каждый суррогат за меньшее количество шагов градиента, чем, скажем, RMSProp, но это не влияет на скорость обучения агента (по отношению к образцам среды). Это просто уменьшает количество обновлений мини-пакетов, которые вам необходимо выполнить.

MM Algorithm

SA C немного сложнее, чем это, поскольку он изучает Q -значает вне политики и проводит обновления, используя повтор опыта, но общая идея верна. Наилучшая достижимая политика зависит от текущих данных в нашей памяти воспроизведения; независимо от того, какой оптимизатор мы используем, нам нужно будет собрать примерно одинаковый объем данных из среды, чтобы сходиться к оптимальной политике.

Итак, как сделать более быстрый (более эффективный для выборки) градиент политики метод? Вам необходимо коренным образом изменить сам алгоритм RL. Например, PPO почти всегда учится быстрее, чем TRPO , потому что Джон Шульман и соавторы нашли другой и эмпирически лучший способ создания шагов градиента политики.

Наконец Обратите внимание, что здесь нет понятия обобщения. У нас есть целевая функция, которую мы хотим оптимизировать, и, как только мы ее оптимизируем, мы решили задачу так хорошо, как можем. Вот почему я подозреваю, что проблема "Адам обобщает хуже чем SGD" на самом деле не имеет значения для RL.

0 голосов
/ 05 февраля 2020

Мое первоначальное тестирование предполагает детализацию оптимизатора и его гиперпараметров, по крайней мере, для техник, не связанных с политикой. У меня не было возможности много экспериментировать с PPO или политиками, поэтому, к сожалению, я не могу говорить об этом.

Немного поговорим с вдумчивым ответом @ Brett_Daley: оптимизатор, безусловно, является одной из менее важных характеристик. Средства исследования и использование буфера воспроизведения с хорошими приоритетами, безусловно, являются критическими факторами, особенно в отношении достижения хороших начальных результатов. Тем не менее, мое тестирование, похоже, показывает, что оптимизатор становится важным для тонкой настройки.

Методы вне политики, которые я использовал, были проблематичными c с мелкозернистой стабильностью. Другими словами, RL находит наиболее правильное решение, но никогда не оттачивает идеальное решение (или, если оно находит его кратко, оно исчезает). Я подозреваю, что оптимизатор, по крайней мере, частично виноват.

Я провел небольшое тестирование и обнаружил, что изменение скорости обучения ADAM имеет очевидный эффект. Слишком высоко, и актер, и критик c отскакивают от минимума и никогда не сходятся в оптимальной политике. В моем приложении для робототехники это выглядит так, как будто RL постоянно принимает неоптимальные решения, как будто есть случайное исследование с каждым действием, которое всегда немного проходит мимо отметки.

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

Я еще не проводил тесты расписания с одним циклом или AdamW для скорости обучения , но я сделал очень базовый c тест с двухэтапной регулировкой скорости обучения для Actor и Criti c (начиная с высокой скорости и снизив ее до низкой), и результаты оказались явно более точным решением, которое сходилось быстро во время высокой скорости обучения, а затем лучше оттачивать при низкой скорости обучения.

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

Основано на импе Я понял, что, вероятно, стоит попробовать методы с одним циклом и AdamW для актера и критиков c сетей для настройки результатов. У меня все еще есть некоторые опасения относительно того, как более низкая скорость обучения в конце цикла будет адаптироваться к изменениям в окружающей среде, но простое решение для этого может заключаться в том, чтобы отслеживать потери и делать перезапуск скорости обучения, если она слишком сильно дрейфует , В любом случае, дополнительное тестирование кажется оправданным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...