Устранение узких мест физического мира.

Это вторая часть серии сообщений. Вы можете найти здесь Введение и Часть 1, посвященные эволюционным алгоритмам. Вы можете найти код для описанных алгоритмов и экспериментов в этом репозитории GitHub .

В последние годы обучение с подкреплением вновь появилось. Различные прорывы и замечательные результаты привлекли внимание всего научного сообщества и даже поп-культуры: от AlphaGo до DQN применительно к Atari до совсем недавнего OpenAI DOTA 2 бот.

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

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

[…] Мы работали с основным упором на получение хороших результатов в очень короткие сроки.

Как объяснялось в моих предыдущих сообщениях, задача, которую мы с моим коллегой пытались решить, заключалась в том, чтобы найти способы заставить робот-манипулятор как можно точнее следовать заданной траектории, не зная его физических параметров. Мы решили внедрить алгоритмы интеллектуального управления, чтобы сравнить их с классическими контроллерами обратной связи, в первую очередь с обычным ФД. Все алгоритмы работают параллельно с контроллером обратной связи ЧР, пытаясь улучшить его производительность, создавая более интеллектуальный контроллер.

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

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

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

Все подробности реализации находятся в репозитории GitHub.

Q-Learning для динамической настройки частичных разрядов.

Перемещение робота-манипулятора подразумевает нахождение правильных крутящих моментов для ввода в суставы, которые имеют постоянные значения в определенном диапазоне. Q-Learning, с другой стороны, представляет собой алгоритм, который изучает значение Q дискретных действий в состоянии, Q (s, a),, чтобы выполнить действие, которое, как ожидается, принесет наибольшее вознаграждение. (точнее, наибольшая совокупная доходность после политики). Его общие версии не могут работать с большими пространствами действий, не говоря уже о пространствах непрерывных действий. Но нас заинтересовала идея динамической настройки коэффициентов усиления PD-контроллера по мере движения робота. Контроллер PD выдает входные крутящие моменты на основе ошибки между желаемым и фактическим положением и скоростью. Хотя этот простой линейный контроллер может давать замечательные результаты с фиксированными коэффициентами усиления P и D, которые обычно настраиваются методом проб и ошибок, идея заключалась в том, чтобы алгоритм настраивал их в реальном времени на основе движения робот, что в идеале делает контроллер более универсальным. Классический PD - широко используемый контроллер, учитывая его простоту, но также и его хорошие характеристики, но в любом случае это контроллер с линейной обратной связью, который не использует никакой информации о траектории или других данных, а использует только значения ошибок на последнем временном шаге. .

Основная архитектура была следующей: действия сводились просто к увеличению или уменьшению прибыли P и D независимо от фиксированной суммы. Интуиция заключалась в том, чтобы использовать в качестве состояния текущее состояние робота вместе с эволюцией ошибок на последних шагах. Чтобы аппроксимировать Q-функции, мы использовали нейронные сети: входными данными были значения состояния, как описано ранее, а выходными данными сетей были значения Q для различных действий. Общее вознаграждение рассчитывалось только за короткий промежуток времени из 10 шагов, поэтому основная цель алгоритма заключалась в получении наивысшего вознаграждения в этом диапазоне, выбирая обновление для прибыль. В качестве вознаграждения мы реализовали вместо отрицательной ошибки в положении и скорости (более высокая ошибка - ›меньшее вознаграждение) разница между предыдущей ошибкой в ​​диапазоне предыдущих шагов и текущей. Это было сделано для частичного декорреляции производительности на различных диапазонах шагов: если алгоритм плохо работает во время обучения в определенном диапазоне шагов, ошибка будет явно большой и на следующих шагах, поскольку робот движется постоянно, даже если на следующих этапах алгоритм выбрал правильное действие, за него можно будет наложить штраф без уважительной причины. Таким образом, если мы будем рассматривать только относительные улучшения между короткими последующими ситуациями, мы действительно сможем использовать хорошие действия.

Как я писал во введении, мы работали с основным упором на получение хороших результатов за очень короткое время, что-то около 100 эпизодов на полную траекторию. В противном случае алгоритм может стать недостижимым для физического мира и превзойти другие алгоритмы управления, такие как Модель Предиктивное Управление или Итеративное обучение. .

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

Актер-критик детерминистской политики обучения

Второй тип алгоритма, который мы реализовали, - это алгоритм-критик, чтобы изучить детерминированную политику действий (затем мы также экспериментировали со стохастической политикой). Идея проста: вдохновленные другими статьями, мы решили разработать архитектуру субъект-критик для каждого сустава независимо, чтобы изучить детерминированную политику, которая позволила бы роботу более точно следовать траектории, компенсируя слабые места контроллера PD. В недавней магистерской диссертации были показаны интересные результаты на роботе 6R, использующем аналогичную архитектуру, с лучшими общими характеристиками, чем у классических алгоритмов обучения в теории управления.

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

Общая архитектура была следующей: для извлечения функций из состояния робота мы разработали двумерный массив радиальных базисных функций Гаусса. Число гауссианов было выбрано эмпирически, а также средние значения и отклонения. Входом в этот массив для каждого сочленения была ошибка положения и скорости. Затем различные выходные значения RBF были отправлены в качестве входных данных на полностью связанный слой (то есть взвешенная сумма) для создания крутящего момента, используемого в соединении. Затем эти веса были настроены алгоритмом.

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

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

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

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

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

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

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

Вы можете найти код всех экспериментов в этом репозитории GitHub .