Обучение с подкреплением (Reinforcement Learning) делится на два больших класса: Model-Free и Model-Based. В первом случае действия оптимизируются напрямую по сигналу награды, а во втором нейросеть является только моделью реальности, а оптимальные действия выбираются с помощью внешнего планировщика. У каждого подхода есть свои достоинства и недостатки.


Разработчики из Berkeley и Google Brain представили Model-Based алгоритм PDDM с улучшенным планировщиком, позволяющий эффективно обучаться сложным движениям с большим числом степеней свободы на небольшом числе примеров. Чтобы научиться вращать мячи в роботизированной руке с реалистичными суставами пальцев с 24 степенями свободы, потребовалось всего 4 часа практики на реальном физическом роботе.


Обучение с подкреплением (Reinforcement Learning) — это обучение роботов по сигналу награды. Это похоже на то, как учатся живые существа. Но проблема осложняется тем, что неизвестно как нужно изменять веса нейросети, чтобы предлагаемые ею действия вели к увеличению награды. Поэтому в Reinforcement Learning обычные методы обучения нейросетей не подходят. Ведь неизвестно, что именно она должна выдавать на своем выходе, а значит невозможно найти ошибку между ее предсказанием и реальным положением вещей. Чтобы пропустить эту разницу обратно по слоям нейросети и изменить веса между нейронами, чтобы минимизировать эту ошибку. Это классический алгоритм обратного распространения ошибки, которым обучают нейросети.


Поэтому учеными было изобретено несколько способов, как решить эту задачу.


Model-Free


Одним из самых эффективных подходов оказалась модель actor-critic (актер-критик). Пусть одна нейросеть (actor) на своем входе получает состояние окружающей среды state, а на выходе выдает действия actions, которые должны вести к увеличению награды reward. Пока эти действия случайные и просто зависят от прохождения сигнала внутри сети, так как нейросеть еще не обучена. А вторая нейросеть (critic) пусть на вход получает тоже состояние окружающей среды state, но еще и действия actions с выхода первой сети. А на выходе пусть предсказывает только награду reward, которая будет получена, если применить эти действия.


А теперь следите за руками: какие должны быть на выходе первой сети оптимальные действия actions, ведущие к увеличению награды, мы не знаем. Поэтому с помощью алгоритма обратного распространения ошибки обучить ее не можем. А вот вторая нейросеть очень даже может предсказывать точное значение награды reward (а точнее, обычно ее изменение), которую она получит, если сейчас применить действия actions. Так давайте возьмем градиент изменения ошибки из второй сети, и применим его к первой! Так можно обучать первую нейросеть классическим методом обратного распространения ошибки. Просто ошибку берем не из выходов первой сети, а из выходов второй.


В итоге первая нейросеть обучится выдавать оптимальные действия, ведущие к увеличению награды. Потому что если критик critic ошибся и предсказал меньшую награду, чем оказалась в реальности, то градиент этой разницы будет двигать действия актера actor в направлении, чтобы критик точнее предсказывал награду. А значит в сторону более оптимальных действий (ведь именно они приведут к тому, что критик точно предскажет более высокую награду). Аналогичный прицип работает и в обратную сторону: если критик завысил ожидаемую награду, разница между ожиданием и реальностью будет понижать выходы actions у первой нейросети, которые привели к этому завышенному показанию reward у второй сети.


Как видите, в этом случае действия оптимизируются напрямую по сигналу награды. Это общая суть всех Model-Free алгоритмов в Reinforcement Learning. Именно они являются state-of-the-art на данный момент.


Их преимуществом является то, что оптимальные действия ищутся градиентным спуском, поэтому в итоге находятся самые оптимальные. А значит показывающие лучший результат. Другим преимуществом является возможность использовать маленькие (а значит быстрее обучаемые) нейросети. Если из всего многообразия факторов окружающей среды ключевыми для решения задачи являются какие-то конкретные, то градиентный спуск вполне способен их выявить. И использовать для решения задачи. Эти два преимущества обеспечили успех прямым Model-Free методам.


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


Model-Based


Model-Based методы в Reinforcement Learning в корне отличаются от описанного выше подхода. В Model-Based нейросеть только предсказывает что будет дальше. Не предлагая никаких действий. То есть, является просто моделью реальности (отсюда "Model"-Based в названии). А вовсе не системой принятия решений.


На вход Model-Based нейросети подают текущее состояние окружающей среды state и какие хотим совершить действия actions. А нейросеть предсказывает как изменится в будущем state после применения этих действий. Она может также предсказывать какая будет награда reward в результате этих действий. Но это не обязательно, так как награду обычно можно вычислить из известного state. Далее этот выходной state можно подать обратно на вход нейросети (вместе с новыми предполагаемыми actions), и так рекурсивно предсказывать изменение внешней окружающей среды на много шагов вперед.


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


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


Другим большим преимуществом, помимо обучения на меньшем на порядки числе примеров, является то, что будучи универсальной моделью мира, единственную Model-Based нейросеть можно использовать для решения любого числа задач в этом мире.


Главная проблема в Model-Based подходе — а какие, собственно, действия actions подавать нейросети на вход? Ведь нейросеть сама не предлагает никаких оптимальных действий.


Самый простой способ — это прогонять через такую нейросеть десятки тысяч случайных действий и выбрать те, для которых нейросеть предскажет наибольшую награду. Это классический Model-Based Reinforcement Learning. Однако при больших размерностях и длинных временных цепочках, число возможных действий получается слишком велико чтобы их все перебрать (или даже угадать хотя бы немного оптимальные).


По этой причине Model-Based методы обычно уступают Model-Free, которые градиентным спуском напрямую сходятся к самым оптимальным действиям.


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


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


PDDM


Такое длинное вступление понадобилось для того, чтобы объяснить что происходит в новом предложенном PDDM Model-Based алгоритме обучения с подкреплением. Прочитав статью в Berkeley AI блоге (или расширенную версию), и даже оригинальную статью arxiv.org/abs/1909.11652, это могло быть не очевидно.


PDDM метод повторяет идею CEM при выборе случайных действий actions, которые надо прогнать через Model-Based нейросеть, чтобы выбрать действия с максимальной предсказываемой наградой. Только вместо подбора параметров случайного распределения, как это делается в CEM, PDDM использует временную корреляцию между actions и более мягкое (soft) правило обновления случайного распределения. Формула приведена в оригинальной статье. Это позволяет проверить большее число подходящих actions на длинных временных дистанциях, особенно если движения требуют точной координации. Дополнительно авторы алгоритма фильтруют кандидатов в actions, получая тем самым более плавную траекторию движений.


Проще говоря, разботчики просто предложили более удачную формулу для выбора случайных actions для проверки в классическом Model-Based Reinforcement Learning.


Но результат получился очень хорошим.


Всего за 4 часа тренировки на реальном роботе, роборука с 24 степенями свободы научилась удерживать два шара и вращать их в ладони, не роняя. Недостижимый результат для любых современных Model-Free методов на таком малом числе примеров.


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



В итоге уже через 1-2 часа роборука могла уверенно удерживать шары и передвигать их в ладони, а 4 часов оказалось достаточно для полного обучения.



Обратите внимание на дерганные движения пальцев. Это характерная особенность Model-Based подходов. Так как предполагаемые actions выбираются случайно, то не всегда совпадают с оптимальными. Model-Free алгоритм потенциально мог бы сойтись на действительно оптимальных плавных движениях.


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



Также можно заставить роборуку рисовать карандашом произвольные траектории, обучение чему для Model-Free методов очень сложная задача.



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

Комментарии (9)


  1. JayS
    05.10.2019 16:09

    и даже не является ИИ алгоритмом в полном смысле этого слова
    А какие алгоритмы являются ИИ алгоритмами в полном понимании?


    1. DesertFlow Автор
      05.10.2019 16:12

      Которые выглядят как утка и крякают как утка ). Можно подумать, есть другие определения. Этот алгоритм заточен под моторику роботов, в других областях вряд ли будет толк. Физическая модель + удачный фильтр для плавности движений. Вряд ли это можно назвать ИИ.


  1. sdfleod
    05.10.2019 16:09

    В последние время, меня очень заинтересовала тема, о том как работают наши мозги и как это можно запрограммировать.

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

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

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

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


    1. DesertFlow Автор
      05.10.2019 16:22

      Согласен, так и есть. Это большой и больной вопрос в Model-Based обучении — как ранжировать actions. Пока ничего лучше перебора случайных вариантов не придумали… Эта работа в статье более эффективно отбрасывает действия с заведомо низкой вероятностью (основываясь на фильтрации, адаптивно и согласно награде). Но это ещё далеко до того, как это работает в мозге. А то что в мозге есть Model-Based подсистема это очевидно. И даже подобие перебора случайных вариантов. Это когда разные кластеры нейронов боятся за лидерство, но сигнал ещё слишком слабый для активации действия. Этот процесс, происходящий во времени с переменным успехом, мы воспринимаем как проигрывание в воображении разных вариантов, как бы случайный поиск. Хотя на самом деле это конечно просто выбор более сильного сигнала от конкурирующих групп нейронов.


      1. sdfleod
        05.10.2019 16:56

        Когда, я учился в школе, мне больше всего нравились Олимпиадные задачки на динамическое программирование.

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

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

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


        1. DesertFlow Автор
          05.10.2019 19:35

          Дело в том, что в текущем виде в model-based подходе нейросети тренируются как простые физические движки. Да, где-то это выгодно, так как можно обучить на данных сложной системы, которую вручную моделировать сложно. Но по сути это остаётся физическим движком, не более. Системы принятия решений в них нет — вместо этого делается случайный поиск, с рядом оптимизаций, чтобы отбросить варианты с низкой вероятностью. А ведь именно система принятия решений главный компонент ИИ.


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


          Самая большая проблема — а как определить какая из прошлых ситуаций похожа на текущую? Мозг эту похожесть определяет своей структурой и принципом работы (связи между соседними нейронами укрепляются при прохождении сигнала и т.д.). Искусственные нейросети, в принципе, тоже это делают. Можно находить расстояние между двумя примерами в пространстве эмбеддингов, например. Это и будет их степень похожести. Но по каким критериям тренировать эти эмбеддинги — большой вопрос. Они ведь формируются в зависимости от целевой функции обучения. Да и по каким осям считать расстояния между точками в пространстве эмбеддингов тоже совсем нетривиальный вопрос. По-хорошему, это должно быть привязано к текущей цели (получению награды). И все надо организовать так, чтобы оно само обучалось на примерах. Прямые методы проще — есть цель (награда), есть градиентный спуск, все. А model-based сейчас больше инженерный подход, чем про обучение.


    1. JayS
      05.10.2019 20:22

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


  1. Kilorad
    07.10.2019 12:58

    «The output is aspatial softmax for the 2D location and depth of the center of each sphere in camera frame. Standardpinhole camera equations convert 2D and depth into 3D points in the camera frame, and an additional calibration finally converts it into to the ShadowHand’s coordinates system. Training of the model is done in sim, with fine-tuning on real-world data. Our semi-automated process of composing static scenes with the spheres, moving the strero rig, and using VSLAM algorithms to label the images using relative poses of the camera views substantially decreased the amount of hand-labelling that was requiring. » — это из arxiv.
    Насколько я понял, сам RL принимал на вход координаты шаров. А вычислялись эти координаты нейронной сетью, которая обучена обычным supervised learning. Таким образом. этот model-based принимает на вход порядка 30 чисел (24 степени свободы + 2 шара по 3 координаты у каждого) и прогнозирует тоже что-то типа 30 чисел.
    Круто в сравнении с другими RL. На универсальность, как и пишет автор, пока не тянет — даже в силу устройства предобработчика данных.


  1. Suppie
    08.10.2019 02:56

    Радует, что Reinforcement Learning таки используется на практике. Когда я защищал магистерскую работу по этой теме, обычно в тех же работах от Беркли использовали генетический алгоритм для выработки линии поведения агента, видимо современные реалии всё-таки склонили RL к использованию нейросеток с более быстрой сходимостью к определённому результату