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

Несколько недель назад я решал Задачу тележки в Обучение с подкреплением и обнаружил кое-что очень интересное. На самом деле это еще не сказать. Меня действительно поразило, что алгоритм ИИ нашел решение, которое я собираюсь описать, прежде чем я подумал о нем (я старший инженер по машинному обучению в Lore AI, а также теоретик струн с опытом в квантовой информации и черных дырах, поэтому я не Я не знаю, является ли это похвалой ИИ или я просто начинаю ржаветь. Читатель может судить сам.)

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

ПОСТАНОВКА ПРОБЛЕМЫ: Как показано выше, на поверхности без трения находится блок с прикрепленным к нему стержнем, который вращается на шарнире без трения. Таким образом, «окружающая среда» характеризуется четырьмя числами: горизонтальное положение и скорость центра масс, а также угловое положение и скорость стержня. «Действие», предпринимаемое агентом, может быть только нажатием влево или вправо. Цель обучающей задачи - поддерживать работу системы на протяжении 200 шагов (есть награда +1 за каждый временной шаг, который система продолжает выполнять). Сам бег определяется как центр масс, оставшийся в пределах (-2,4,2,4), а угол между (-12,12) градусами.

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

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

Решения с инерциальной рамой

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

а также графики импульсов, положения и углового положения

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

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

Такие решения также могут быть найдены с помощью алгоритма AI, но не в этом суть этой статьи.

Безинерциальное рамное решение

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

Учебник по физике - неинерциальные системы отсчета, псевдосила и принцип эквивалентности Эйнштейна

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

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

Псевдосилу можно использовать для объяснения того, почему маятник качается назад, когда автомобиль, с потолка которого он свисает, ускоряется вперед. На маятник в обратном направлении действует псевдосила. Тогда общая «сила», действующая на маятник, представляет собой сумму силы тяжести, направленной вниз, и псевдосилы, действующей в обратном направлении под углом theta = arctan (a / g).

Можно даже сказать, что в указанном выше направлении действует «эффективная гравитация» с величиной Sqrt (a² + g²).

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

Подкрепление узнало решение псевдо-силы

Итак, какое отношение все это имеет к обучению с подкреплением и нашей проблеме с тележкой? Что ж, я увидел, что ИИ узнал решение в неинерциальной системе отсчета! То есть он изучил решение, при котором стержень остается наклоненным под углом, а агент продолжает толкать систему в этом направлении, чтобы поддерживать постоянное ускорение, чтобы стержень не упал дальше.

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

Ускорение может быть немного сложно увидеть в приведенном выше видео, но мы можем видеть, что положение центра масс очень точно следует траектории постоянного ускорения (1/2 at², где a соответствует траектории с использованием MSE).

Технические детали

Вышесказанное не так просто получить, используя стандартную среду тренажерного зала для задачи Cartpole. Когда я впервые увидел вышеупомянутое решение, я был поражен тем, что система искусственного интеллекта научилась этому, но это было не так чисто, потому что стандартная проблема требует, чтобы вешка оставалась в пределах наклона 12 градусов и на расстоянии 2,4 единицы от центра, что несовместимо с постоянным ускорением для 200 шагов. Поэтому я обернул стандартную среду своим собственным кодом, и мне также пришлось изменить функцию рендеринга, чтобы тележка оставалась в видимой области в течение 200 шагов. Код для всего этого доступен в моем репозитории на github.