[Перевод] Обучение с подкреплением никогда не работало

TL; DR: Обучение с подкреплением (RL) всегда было сложным. Не волнуйтесь, если стандартные техники глубинного обучения не срабатывают.

В статье Алекса Ирпана хорошо изложены многие современные проблемы глубинного RL. Но большинство из них не новые — они существовали всегда. На самом деле это фундаментальные проблемы, лежащие в основе RL с момента его создания.

В этой статье я надеюсь довести до вас две мысли:

  1. Большинство недостатков, описанных Алексом, сводятся к двум основным проблемам RL.
  2. Нейросети помогают решить только малую часть проблем, одновременно создавая новые.


Примечание: статья ни в коем случае не опровергает претензии Алекса. Наоборот, я поддерживаю большинство его выводов и считаю, что исследователи должны более чётко объяснять существующие ограничения RL.


Две основные проблемы RL
На самом высшем уровне обучение с подкреплением — это максимизация некоторой формы долгосрочной отдачи от действий в данной среде. При решении задач RL есть две фундаментальные трудности: баланс разведки и эксплуатации (exploration-vs-exploitation), а также долгосрочное присвоение заслуги (long term credit assignment).

Как отмечалось на первой странице первой главы книги Саттона и Барто по обучению с подкреплением, это уникальные проблемы обучения с подкреплением.

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

-pa-cshiwdhvocwjzkn8btokb0w.gif
Постоянное состояние исследователя в области RL. [Надпись: «Это нормально»]

С другой стороны, обучение с учителем занимается проблемой обобщения. Обобщение — это присвоение меток невидимым данным с учётом того, что у нас уже есть куча видимых данных с метками. Некоторые части фундаментальных проблем RL можно решить путём хорошего обобщения. Если вы хорошо обобщаете модель на невидимые состояния, то не потребуется такая обширная разведка. Вот где обычно подходит глубинное обучение.

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

Что действительно странно — так это удивление нынешними ограничениями RL. Неспособность DQN работать в долгосрочной перспективе или миллион шагов при обучении в среде — здесь нет ничего нового, это не какая-то таинственная особенность глубинного обучения с подкреплением. Всё это объясняется самой природы проблемы — и так было всегда.

Давайте подробно рассмотрим эти две фундаментальные проблемы, и тогда станет ясно: в том, что обучение с подкреплением пока «не работает», нет ничего удивительного.

Разведка против эксплуатации
Неэффективность выборки, воспроизводимость и выход из локальных оптимумов

Каждый агент должен с самого начала научиться отвечать на вопрос: продолжать ли следовать этой стратегии, которая даёт хорошие результаты, или предпринять некоторые относительно неоптимальные действия, которые могут увеличить выигрыш в будущем? Этот вопрос настолько сложен потому что на него нет одного правильного ответа — здесь всегда присутствует компромисс.

Хорошее начало


Уравнения Беллмана гарантируют сходимость к оптимальному значению функции
только если каждое состояние проверено бесконечное число раз, а каждое действие бесконечное число раз испытано на нём. Так что с самого начала нам нужно бесконечное количество образцов для обучения, и они нужны везде!

Вы можете спросить: «Зачем так зацикливаться на оптимальности?»

Справедливо. В большинстве случаев если успешная стратегия вырабатывается относительно быстро и не портит слишком много вещей, то этого достаточно. Иногда на практике мы рады, что хорошую политику можно выучить за конечное число шагов (20 миллионов — это гораздо меньше бесконечности). Но трудно определить эти субъективные понятия без чисел для максимизации/минимизации какого-то параметра. Еще труднее что-то гарантировать. Об этом позже.

Итак, сойдёмся на том, что мы будем рады приблизительно оптимальному решению (что бы это ни значило). Количество образцов для получения одной и той же аппроксимации экспоненциально растёт с пространством действий и состояний.

Но погодите, становится хуже


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

Более того, независимые от модели (model-free) алгоритмы обучения с подкреплением обычно пытаются решить проблему в самом общем виде. У нас мало предположений о форме распределённости, динамике перехода среды или оптимальных стратегиях (например, см. эту работу).

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

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

Но погодите, реально становится ещё хуже


Поговорим о непрерывных состояниях и действиях.

Мир нашего размера кажется в основном непрерывным. Но для RL это проблема. Как принять бесконечное количество состояний бесконечное число раз и выполнить бесконечное количество действий бесконечное число раз? Если только обобщить некоторые усвоенные знания на невидимые состояния и действия. Обучение с учителем!

Позвольте немного объяснить.

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

Не так быстро


Даже это не делается элементарно в RL.

Для начала, не будем забывать, что у нейросетей собственная непомерная неэффективность выборки из-за медленного темпа градиентного спуска.

Но погодите, ситуация на самом деле даже хуже


В RL данные для обучения сети должны поступать «на лету» во время взаимодействия со средой. По мере разведки и сбора данных изменяется оценка функции полезности Q.

В отличие от обучения с учителем, здесь метки истинности (ground truth) не фиксированы! Представьте, что в начале обучения ImageNet вы помечаете изображение как кота, но позже меняете своё восприятие и видите в нём собаку, автомобиль, трактор и т.д. Единственный способ приблизиться к истинной оценке целевой функции — продолжить разведку.

На самом деле даже в наборе для обучения вы никогда не получите образцов истинной целевой функции, которая является оптимальным значением функции или политики. Тем не менее вы по-прежнему способны учиться! Вот в чём причина такой популярности обучения с подкреплением.

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

Разведка в нестабильной динамике также объясняет, почему RL более чувствительно к гиперпараметрам и случайных начальным значениям, чем обучение с учителем. Нет фиксированных наборов данных, на которых обучаются нейросети. Данные обучения напрямую зависят от выдачи нейросети, используемого механизма разведки и случайности среды. Таким образом, с тем же алгоритмом на той же среде в разных прогонах вы можете получить абсолютно разные наборы для обучения, что приведёт к сильной разнице производительности. Опять же, основная проблема в контролируемой разведке, чтобы увидеть похожие распределения состояний —, а самые общие алгоритмы не делают никаких предположений на этот счёт.

Но погодите! Ситуация становится даже…


Для пространств непрерывного действия наиболее популярны методы on-policy. Эти методы могут использовать только образцы, которые соответствуют уже выполняемым правилам (policy). Это также означает, что как только вы обновите текущие правила, то весь усвоенный в прошлом опыт сразу станет непригодным для использования. Большинство алгоритмов, которые упоминаются в связи со странными жёлтыми людьми и животными в виде пачки трубочек (Mujoco), относятся к разряду on-policy.

g3tedkofex9uzzrkl5ow0l-dtf4.gif
Гепард

n_gomqvcz4uzoi-yuinej3pzwfk.gif
Модель из трубок

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

Но погодите!


Нет, на самом деле уже всё. Впрочем, хуже всё-таки будет, но в следующей главе.

be25cd36c9af4278a6966108664cbc1d.jpg
Это начинает выглядеть простым

Подводя итог, эти вопросы возникают из-за основной проблемы обучения с подкреплением, а в более широком смысле всех систем ИИ: из-за разведки.

RainbowDQN требуется обучение в течение 83 часов, потому что у неё нет предварительных знаний о том, что такое видеоигра, что враги стреляют в вас пулями, что пули — это плохо, что кучка пикселей на экране, которые всё время передвигаются вместе — это пули, что пули существуют в том же мире, что и объекты, что мир устроен по каким-то принципам, это не просто максимальное распределение энтропии. Все эти приоры (предварительные установки) помогают нам, людям, резко ограничить разведку небольшим набором высококачественных состояний. DQN должен усвоить всё это путём случайной разведки. То, что он после обучения способен обыграть настоящих мастеров и превзойти многовековую мудрость игры, как в случае с AlphaZero, до сих пор кажется удивительным.

Долгосрочное присвоение заслуги
Функции вознаграждения, их проектирование и присвоение

Знаете, как некоторые люди царапают лотерейные билеты только счастливой монеткой, потому что однажды они сделали так — и выиграли много денег? Агенты RL по сути играют в лотерею на каждом шагу — пытаются выяснить, что именно сделали, чтобы сорвать джекпот. Они максимизируют один показатель, ставший результатом действий на протяжении многочисленных шагов, смешанных с высокой долей случайности среды. Выяснить, какие конкретно действия на самом деле принесли высокое вознаграждение — это задача присвоения заслуги (credit assignment).

Вы хотите легко определять вознаграждение. Обучение с подкреплением обещает, что вы сообщаете роботу о правильных действиях — и со временем он надёжно усвоит правильное поведение. Вам самому в реальности не нужно знать правильное поведение и не нужно обеспечивать надзор на каждом шагу.

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

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

e55c4d0acea7d3bf8d102cb2c381be58.jpg

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

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

Есть ли лучший способ определять цели? В имитационном обучении вы можете хитро обойти всю проблему RL, запросив метки непосредственно из целевого распределения, т.е. оптимальной политики. Есть другие способы обучения без прямого вознаграждения, есть возможность давать агентам вознаграждения в виде изображений (не пропустите семинар IMCL по спецификациям целей в RL!)

Ещё один перспективный способ справиться с долгосрочной перспективой (сильно отсроченным вознаграждением) — иерархическое обучение с подкреплением. Меня удивило, что Алекс не упомянул его в своей статье, потому что это наиболее интуитивно подходящее решение проблемы (хотя я могу быть предвзят в этом отношении!)

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

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

5192e3e3252210f384d3564982a2eb97.jpg


Законный запрос в исследовании RL

Хотя и немного упрощённый, но это убедительный пример в старомодном духе 1990-х. Единое скалярное вознаграждение за попадание в нужный города можно распространить через цепь Маркова на разные уровни иерархии.

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

Вывод
Мой вывод в целом такой же, как у Алекса.

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

7e1a597f9c429bcb35801b7876b15fcd.jpg


Без паники!

Хочу добавить только одно: не отчаивайтесь, если стандартные методы глубинного обучения не убивают монстров обучения с подкреплением. У обучения с подкреплением есть две фундаментальные трудности, отсутствующие в обучении с учителем — разведка и долгосрочное присвоение заслуг. Они всегда здесь были, и для их решения потребуется нечто больше, чем действительно хороший аппроксиматор функций. Следует найти гораздо лучшие способы разведки, использования образцов из прошлых разведок, переноса опыта между задачами, обучения у других агентов (в том числе людей), действий в разных масштабах времени и решения трудных проблем со скалярными наградами.

Несмотря на чрезвычайно сложные проблемы в RL, я всё ещё считаю, что на сегодняшний день это лучший фреймворк для разработки сильного искусственного интеллекта. Иначе я бы этим не занимался. Когда DQN играл в Atari по визуальным данным, а AlphaGo победил чемпиона мира по го — в эти моменты мы реально наблюдали небольшие шажочки на пути к сильному ИИ.

Меня восхищает будущее обучения с подкреплением и искусственного интеллекта.

© Habrahabr.ru