Практические уроки

Практический курс обучения подкреплению: часть 1

От нуля до героя, шаг за шагом.

Добро пожаловать на мой курс обучения с подкреплением! ❤️

Давайте вместе пройдем этот прекрасный путь от основ к передовому обучению с подкреплением (RL), шаг за шагом, с примерами кодирования и учебными пособиями на Python!

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

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

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

Часть 1

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

Содержание

  1. Что такое проблема обучения с подкреплением? 🤔
  2. Политики 👮🏽 и функции ценности.
  3. Как генерировать обучающие данные? 📊
  4. Шаблонный код Python.🐍
  5. Резюме ✨
  6. Домашнее задание 📚
  7. Что дальше? ❤️

Давайте начнем!

1. Что такое проблема обучения с подкреплением? 🤔

Обучение с подкреплением (RL) — это область машинного обучения (ML), связанная с проблемами обучения, где

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

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

Что такое агент? А окружение? Какие именно действия может предпринять агент? А награда? Почему вы говорите накопительное вознаграждение?

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

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

Давайте рассмотрим несколько проблем обучения и посмотрим на них через призму обучения с подкреплением 🔍.

Пример 1: учимся ходить 🚶🏽‍♀️🚶🏿🚶‍♀️

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

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

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

  • Агент — мой сын Кай. И он хочет встать и пойти. На данный момент его мускулы достаточно сильны, чтобы иметь шанс на это. Проблема обучения для него заключается в следующем: как последовательно регулировать положение своего тела, включая несколько углов на ногах, талии, спине и руках, чтобы сбалансировать свое тело и не упасть.
  • Окружающая среда — это окружающий его физический мир, включая законы физики. Важнейшая из которых — гравитация. Без гравитации проблема обучения ходьбе резко изменилась бы и даже стала бы неактуальной: зачем вам ходить в мире, где вы можете просто летать? Другим важным законом в этой проблеме обучения является третий закон Ньютона, который простыми словами говорит, что если вы упадете на пол, пол ударит вас в ответ с такой же силой. Ой!
  • Действия — это все обновления углов тела, которые определяют положение и скорость его тела, когда он начинает гоняться за предметами вокруг. Конечно, он может одновременно делать и другие вещи, например, имитировать крики коровы, но это, вероятно, не помогает ему достичь своей цели. Мы игнорируем эти действия в нашей структуре. Добавление ненужных действий не меняет шаг модерирования, но усложняет решение проблемы в дальнейшем.
  • Награда, которую он получает, — это стимул, исходящий из мозга, который делает его счастливым или заставляет чувствовать боль. Существует негативное вознаграждение, которое он испытывает, когда падает на пол, а именно физическая боль, за которой может следовать разочарование. С другой стороны, есть несколько вещей, которые положительно влияют на его счастье, например, радость от того, что добирается быстрее 👶🚀, или внешний стимул, исходящий от моей жены Ягоды и меня, когда мы говорим: « Хорошая работа!» или «Браво!» за каждую попытку и незначительное улучшение, которое он демонстрирует.

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

Еще немного о наградах💰

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

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

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

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

Формирование вознаграждения — это сложное решение для моделирования многих реальных проблем RL.

Пример 2: научиться играть в монополию как профессионал 🎩🏨💰

В детстве я проводил много времени, играя в «Монополию» с друзьями и родственниками. Ну а у кого нет? Это захватывающая игра, сочетающая в себе удачу (вы бросаете кости) и стратегию.

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

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

Какими должны быть 4 ингредиента RL?

  • Агент — это вы, тот, кто хочет выиграть в «Монополии».
  • Ваши действия показаны на снимке экрана ниже:

  • Окружающая среда — это текущее состояние игры, включая список свойств, позиций и денежных сумм, которые есть у каждого игрока. Существует также стратегия вашего противника, которую вы не можете предсказать и которая находится вне вашего контроля.
  • И вознаграждение равно 0, за исключением вашего последнего хода, где оно равно +1, если вы выиграете игру, и -1, если вы обанкротитесь. Такая формулировка вознаграждения имеет смысл, но затрудняет решение проблемы. Как мы уже говорили выше, более редкое вознаграждение означает более сложное решение. Из-за этого существуют другие способы моделировать вознаграждение, делая их более шумными, но менее редкими.

Когда вы играете против другого человека в «Монополии», вы не знаете, как он или она будут играть. Что вы можете сделать, так это играть против себя. По мере того, как вы учитесь играть лучше, ваш противник тоже (потому что это вы), заставляя вас повышать уровень своей игры, чтобы продолжать побеждать. Вы видите петлю положительной обратной связи.

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

Самостоятельная игра — это основное различие между AlphaGo и AlphaGo Zero, двумя моделями, разработанными DeepMind, которые играют в игру го лучше, чем любой человек.

Пример 3: обучение вождению 🚗

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

Но как?

Научиться водить машину непросто. Цель водителя ясна: добраться из точки А в точку Б с комфортом для нее и любых пассажиров на борту.

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

  • поведение других водителей
  • Знаки дорожного движения
  • поведение пешеходов
  • состояние дорожного покрытия
  • погодные условия.
  • … даже оптимизация топлива (кто хочет тратить на это лишнее?)

Как бы мы подошли к этой проблеме с помощью обучения с подкреплением?

  • Агент – это водитель, который хочет с комфортом добраться из пункта А в пункт Б.
  • Состояние окружающей среды, которую наблюдает водитель, включает в себя множество факторов, включая положение, скорость и ускорение автомобиля, всех других автомобилей, пассажиров, дорожных условий или дорожных знаков. Преобразование такого большого вектора входных данных в соответствующее действие является сложной задачей, как вы можете себе представить.
  • действий в основном три: направление руля, интенсивность газа и интенсивность торможения.
  • Награда после каждого действия представляет собой взвешенную сумму различных аспектов, которые вам необходимо сбалансировать во время вождения. Уменьшение расстояния до точки B приносит положительное вознаграждение, а увеличение — отрицательное. Чтобы гарантировать отсутствие столкновений, слишком близкое приближение (или даже столкновение) с другим автомобилем или даже с пешеходом должно иметь очень большую отрицательную награду. Кроме того, для поощрения плавного вождения резкие изменения скорости или направления способствуют отрицательному вознаграждению.

После этих трех примеров я надеюсь, что следующее представление элементов RL и того, как они взаимодействуют друг с другом, имеет смысл:

Теперь, когда мы понимаем, как сформулировать задачу RL, нам нужно ее решить.

Как?

Продолжайте читать!

2. Политики и функции ценности

Политики

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

Это стратегия агента, обычно называемая политикой агента.

Политика – это изученное сопоставление состояний с действиями.

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

Политики либо детерминированы, когда они сопоставляют каждое состояние с одним действием,

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

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

Существует несколько методов фактического вычисления этой оптимальной политики. Они называются методами оптимизации политики.

Функции ценности

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

Но что такое функция значения?

А до этого,

что означает значение в данном контексте?

значение – это число, связанное с каждым состоянием s среды, которое оценивает, насколько хорошо для агента находиться в состоянии s. >.

Это совокупное вознаграждение, которое агент получает, начиная с состояния s и выбирая действия в соответствии с политикой π.

Функция значения — это изученное сопоставление состояний со значениями.

Функция ценности политики обычно обозначается как

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

Функция оптимального значения (или функция q-значения) удовлетворяет математическому уравнению, называемому уравнением Беллмана.

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

Ночем полезны функции значений?
Потому что вы можете вывести оптимальную политику из оптимальной функции q-значения.

Каким образом?
Оптимальной является политика, при которой в каждом состоянии s агент выбирает действие a, которое максимизирует значение q. функция.

Таким образом, вы можете переходить от оптимальных политик к оптимальным q-функциям и наоборот 😎.

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

Зоология алгоритмов обучения с подкреплением 🐘🐅🦒

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

Зоология алгоритмов RL разнообразна и немного пугает.

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

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

3. Как генерировать обучающие данные? 📊

Агенты обучения с подкреплением ОЧЕНЬ прожорливы к данным.

Для решения задач RL вам нужно много данных.

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

Вот почему ребята из OpenAI выпустили Gym toolkit еще в 2016 году. Тренажерный зал OpenAI предлагает стандартизированный API для набора сред для решения различных задач, включая

  • классические игры Atari,
  • роботизированное оружие
  • или высадку на Луну (ну упрощенную)

Есть и проприетарные среды, такие как MuJoCo (недавно купленные DeepMind). MuJoCo — это среда, в которой вы можете решать задачи непрерывного управления в 3D, например, учиться ходить 👶.

OpenAI Gym также определяет стандартный API для создания сред, позволяя третьим сторонам (например, вам) создавать и делать ваши среды доступными для других.

Если вас интересуют беспилотные автомобили, вам стоит попробовать CARLA, самый популярный открытый городской симулятор вождения.

4. Шаблонный код Python 🐍

Вы можете подумать:

То, что мы рассмотрели до сих пор, интересно, но как мне написать все это на Python?

И я с вами полностью согласна 😊

Давайте посмотрим, как все это выглядит на Python.

Вы нашли что-то непонятное в этом коде?

Что насчет строки 23? Что это за эпсилон?

Не паникуйте. Я не упоминал об этом раньше, но я не оставлю вас без объяснений.

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

Это значение от 0 до 1, и оно представляет вероятность того, что агент выберет случайное действие, а не то, что он считает лучшим.

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

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

Рекомендуется начинать тренировку с большого значения (например, 50%) и постепенно уменьшать его после каждого эпизода. Таким образом, агент много исследует в начале и меньше по мере совершенствования своей стратегии.

5. Резюме ✨

Ключевые выводы для этой 1-й части:

  • У каждой проблемы RL есть агент (или агенты), среда, действия, состояния и вознаграждения.
  • Агент последовательно выполняет действия с целью максимизации общего вознаграждения. Для этого ей необходимо найти оптимальную политику.
  • Функции ценности полезны, поскольку они дают нам альтернативный путь для поиска оптимальной политики.
  • На практике вам нужно попробовать разные алгоритмы RL для вашей задачи и посмотреть, какой из них работает лучше всего.
  • Агентам RL нужно много обучающих данных, чтобы учиться. Тренажерный зал OpenAI — отличный инструмент для повторного использования и создания вашей среды.
  • Исследование и эксплуатация необходимы при обучении агентов RL, чтобы гарантировать, что агент не застрянет в локальных оптимумах.

6. Домашнее задание 📚

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

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

Выберите проблему, которая вас волнует. Это те, на которые вы хотите потратить свое драгоценное время.

Определите, что такое агент(ы), действия, состояния и вознаграждения.

Не стесняйтесь, присылайте мне электронное письмо по адресу [email protected] с вашей проблемой, и я дам вам обратную связь.

7. Что дальше?

В Часть 2 мы решаем нашу первую задачу обучения с подкреплением, используя Q-обучение.

Увидимся там!

Хочешь поддержать меня?

Вы любите читать и узнавать о машинном обучении, искусственном интеллекте и науке о данных?

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

👉🏽 Станьте участником сегодня, используя мою реферальную ссылку.



👉🏽 Подпишитесь на рассылку datamachines.

👉🏽 Следуйте за мной в Twitter, Medium и LinkedIn.

👉🏽 Дайте мне много хлопков 👏🏿👏🏽👏 ниже

Хорошего дня 🤗

Пау