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

  1. Предыстория
  2. Уточнение плана
  3. Цель достигнута

Я помню время, когда я наконец узнал об обучении с подкреплением после пары лет, полностью посвященных обучению с учителем / без учителя. На самом деле он никогда не привлекал мое внимание, главным образом потому, что большинство материалов, статей, курсов и т. Д. Вы найдете о машинном обучении, почти не затрагивая тему или даже вообще пропустив ее, поэтому они не вызывают особого интереса у вас. Затем, пока я изучал инженера по машинному обучению из Udacity, и я должен здесь указать, старый добрый и старый Nanodegree - новый оставляет желать лучшего - был целый раздел с множеством уроков, подробно описывающих (Deep) Обучение с подкреплением, от основ, динамического программирования, методов Монте-Карло и обучения временной разнице до методов, основанных на ценностях, политиках и критике действующих лиц. С тех пор я не переставал копаться в этой теме, став одним из моих любимых хобби. Я считаю RL более удовлетворительным и полноценным во многих отношениях, чем две другие ветви.

Эта проблема

Я помню лекции о Гипотезе вознаграждения, Цели и Награды, где объяснялось, как Google DeepMind удалось научить гуманоида ходить. На изображении ниже представлена ​​основная идея и элементы, задействованные в системе обучения с подкреплением, где агент с разными датчиками пытается научиться ходить, прикладывая разные силы к своим суставам:

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

Не сверхсложный и интуитивно понятный после объяснения каждого компонента, но с этого момента я понял, что с RL что-то действительно не так: необходимость в этом созданном вручную и подверженном всевозможным проблемам функциям вознаграждения для того, чтобы агент для достижения конкретной цели. Посмотрев лекцию, я попытался подумать о задачах, для которых разработать такую ​​награду было бы практически невозможно из-за ее сложности… Кому нравится гладить? Я лично ненавижу это. Как здорово было бы иметь дома робота, который гладит, не так ли? Вопрос в том, как будет выглядеть функция вознаграждения, чтобы робот мог научиться гладить вещи? думаю об этом. Речь идет не только о захвате, положении и скорости суставов при использовании утюга, но и о множестве компонентов состояния, связанных с предметом одежды, который он пытается гладить, без складок !! Я имею в виду, что это может закончиться сумасшедшей функцией вознаграждения.

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

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

Человеческая природа: учиться на ошибках

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

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

Он толкает его, и шайба оказывается не в том месте ...

Он не смог достичь своей первоначальной цели, но он все же достиг другой - назовите это воображаемой или виртуальной - целью.

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

Многоцелевой RL и мощность нейронных сетей

Нейронные сети - это универсальные аппроксиматоры функций с мощным свойством, ответственным за успех глубокого обучения: обобщение. Это способность применять полученные знания к данным, которых раньше никогда не было во время обучения. Это означает, что в нашем контексте роботизированная рука не только научилась достигать этой виртуальной цели, но и теперь имеет неплохое представление о том, как достичь окружающей среды. Насколько это круто? Вы можете представить, как можно было бы научиться достигать реальной цели, и это было бы все ближе и ближе к ней. Однако здесь все еще есть недостающий элемент, и это многоцелевое обучение. Нам нужно сказать агенту, чтобы он достиг состояния, назовем его G. Агент по ошибке достигает другого, виртуального, назовем его V. Затем мы просим агента узнать, что произошло при попытке связаться с G:

извините, но здесь вы не справились ⇒ -1

Но мы также просим агента узнать, что произошло при попытке связаться с V:

отличная работа! вы достигли цели ⇒ +1

Мы продолжаем делать это на протяжении всего обучения, поэтому у агента всегда будет сигнал узнать что-то полезное. Если бы мы не просили агента извлечь уроки из этой ошибки, он всегда получал бы -1 вознаграждение, и агент был бы очень сбит с толку. Эта скудная награда ничего не говорит о ценности действия, все они дают -1… и поверьте мне, шансы, что агент достигает цели «случайно», чрезвычайно низки, учитывая непрерывное состояние и пространство действия. Я имею в виду, каковы шансы, что роботу, беспорядочно перемещая все свои соединения, удастся погладить рубашку? На самом деле каковы шансы, что он даже подберет железную машину?, Близкие к нулю.

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

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

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

Надеюсь увидеть тебя там.