Deep Reinforcement Learning 101. Что важно знать на старте

Всем привет. Меня зовут Ростислав Мироненко и я сотрудничаю с EPAM Ukraine в роли Solution Architect. Одним из направлений моей работы является развитие Machine Learning экспертизы. В этой статье я расскажу об основах Reinforcement Learning и о том, как вы можете им научиться без предыдущего опыта в машинном обучении: фактически с нуля.

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

Что такое Deep Reinforcement Learning и где оно применяется

Reinforcement Learning (далее RL, так как переведенное название «обучение с подкреплением» как-то не звучит) — это один из типов машинного обучения, который фокусируется на автономном принятии решений (выполнении действий) моделью при взаимодействии с некой средой. Больше про типы машинного обучения вы можете почитать здесь. Через RL модель машинного обучения ищет правильное действие или последовательность действий, которые приближают ее к желаемому результату.

Желаемый результат при моделировании определяется системой вознаграждений (reward) и наказаний (punishment/penalty): модель получает некое числовое вознаграждение за действия, которые приближают ее к цели, и штраф — за действия, которые отдаляют ее от цели. При обучении RL модель стремится максимизировать свою кумулятивную награду (сумму наград за каждое принятое решение).

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

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

Самыми яркими областями применения DRL являются:

— Компьютерные игры (например, шахматы, шашки, PacMan). Наиболее показательным примером здесь является AlphaGo Zero — проект Google, создавший с помощью RL движки для игры в шахматы и го, которые попали в список сильнейших подобных решений в мире (причем движок для го стал первым, который смог победить чемпиона мира по этой игре).

— Автономные транспортные средства (в основном самоуправляемые автомобили). RL использует Tesla для обучения автопилотов своих машин.

— Автоматизация производства (например, роботизированная рука для производственных линий сборки).

Основные понятия Deep Reinforcement Learning

Основные понятия RL и DRL описываются с помощью Марковского процесса принятия решений (Markov Decision Process):

  1. Агент (Agent) — программа (возможно, установленная на устройстве), которая взаимодействует с окружающей средой.
  2. Окружающая среда (Environment) — реальные, физические условия, в которых действует агент.
  3. Состояние (State) — набор переменных, описывающих окружающую среду в любой точке. Агент при взаимодействии с окружающей средой получает значения состояния и интерпретирует их для определения вознаграждения и принятия решения о следующем действии.
  4. Действие (Action) — единица взаимодействия с окружающей средой, которая доступна агенту в определенном состоянии. В любом состоянии агенту обычно доступны несколько действий, из которых он должен выбрать только одно. В ответ на действие состояние окружающей среды изменяется, и агент получает новые значения переменных для нового состояния.
  5. Вознаграждение (Reward) — обратная связь от окружающей среды, которая оценивает, насколько хорошим или плохим является действие. Это интерпретация значения переменных для конкретного состояния. Чем выше вознаграждение, тем лучше было решение модели.
  6. Полиси (Policy) — метод маппинга возможных действий агента на его прогнозированное состояние. Это собственно адаптация поведения, стратегия DRL модели на основании ее обучения, которая позволит ей достичь цели и получить наивысшее вознаграждение.
  7. Пространство действий (Action Space) — все возможные действия, доступные агенту.
  8. State Space — диапазон значений для всех переменных состояния, которые полностью описывают окружающую среду.

Игровое практическое изучение Deep Reinforcement Learning с помощью AWS DeepRacer

Что делать, если вас интересует машинное обучение вообще и DRL в частности, но вы не Data Scientist и не знаете, где получить базовые практические навыки? Хорошим вариантом является AWS DeepRacer — сервис от AWS, который в игровой форме учит основам DRL. С его помощью вы можете создавать и тренировать DRL модели автономных гоночных машинок, которые нужно научить ездить на тестовых гоночных треках. Если у вас есть AWS аккаунт и ранее вы не пользовались DeepRacer, то вам доступны 10 часов пользования этим сервисом бесплатно — этого вполне достаточно, чтобы немного разобраться с DRL.

Алерт: после окончания 10 бесплатных часов обучение моделей в сервисе стоит 3.50 USD за час, поэтому для экспериментов лучше настроить локальный тренинг и использовать DeepRacer сервис только для загрузки своих моделей. Как это делать, читайте здесь и здесь.

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

Как это выглядит на деле через AWS консоль:

1) Выбираете один из более чем 40 тренировочных треков.

2) Выбираете тип гонки (самый простой Time Trial — просто гонка на время).

3) Выбираете гиперпараметры — это настройки обучения нейронной сети, которую под капотом будет использовать DeepRacer RL модель.

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

4) Выбрать Action Space — Continuous или Discrete.

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

5) Задать функцию вознаграждения для модели.

В DeepRacer функция награды представляет собой код на Python, который принимает словарь с данными о состоянии агента (машинки) в момент действия и возвращает числовой размер награды с типом float. На скриншоте — одна из простейших функций по умолчанию, которая награждает модель за движение как можно ближе к центру. Таким образом, при обучении модель будет стремиться ехать как можно ближе к центру (так как это повышает размер вознаграждения) и однажды сможет проехать весь трек до конца и ни разу не съехать с пути.

Мои эксперименты с DeepRacer показали, что модель с параметрами по умолчанию (трек: Oval Track, Discrete action space, абсолютно все значения по умолчанию) способна полностью проехать этот трек после примерно полутора часов тренировки.

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

6) Выбрать количество времени для тренировки и нажать «Start training».

После окончания тренировки ее результаты будут отображаться на графике.

Также после окончания тренировки можно сделать оценку модели на любом из доступных гоночных треков. Я сделал ее на том же треке, и моя модель медленно, но верно смогла полностью проехать все 5 кругов — всего за два часа тренинга.

На основании данных тренировки и оценки (визуальное наблюдение, графики и анализ логов) вам как Data Scientist-у нужно принять решение, что делать для улучшения модели. Если вы планировали только познакомиться с RL, то где-то здесь можно остановиться, так как основные термины и вызовы RL уже должны быть понятны.

Кстати, с 2018 года Amazon проводит гоночные соревнования на физических машинках DeepRacer на ежегодной re:Invent конференции. Не стал исключением и этот год: The AWS DeepRacer League 2021 Championship Finale | AWS Events.

Отбор в эти финалы происходит через глобальную DeepRacer лигу, где может участвовать каждый. И теоретически каждый может через эту лигу пробиться в суперфинал и поехать в командировку на очередной re:Invent в Лас-Вегас.

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

Рекомендую пробовать силы в подобных активностях — это интересно. Чтобы дать такую возможность коллегам по всему миру, осенью в рамках EPAM Cloud&DevOps практики мы с помощью наших партнеров из Amazon провели глобальный DeepRacer ивент (как это было — читайте здесь). В 2022 мы планируем самостоятельно провести подобный ивент на уровне локации (Харьков или Украина) для популяризации машинного обучения вообще и DRL в частности среди нашей команды.

Поделитесь в комментариях, как вы изучаете Reinforcement Learning? Буду рад конструктивной дискуссии.

👍ПодобаєтьсяСподобалось9
До обраногоВ обраному7
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Спасибо за статью. Не знал о существовании этого сервиса от амазон, заценю.
Со своей стороны добавил бы курс от Сергея Левина по этой теме
rail.eecs.berkeley.edu/deeprlcourse
Довольно интересный для ознакомления, если уже есть база

Будьте внимательны: там маленький Free Tier лимит, используйте сетап для локального тренинга: aws-deepracer-community.github.io/deepracer-for-cloud

Дякую за статтю! На kaggle час від часу проводяться змагання із Reinforcement Learning, цікаво, що в багатьох випадках перемагали Rule-based agents до останнього (www.kaggle.com/c/lux-ai-2021/overview). Ось рішення переможця www.kaggle.com/...​ai-2021/discussion/294993. Цікаво, що я зайняв призове місце у тому змаганні створивши агента який навчався на діях агентів команди переможця. Тай узагалі їх результати показали силу DRL. По суті ми мали економічну стратегію (без бойових юнітів), а завданням було протриматись певну кількість ігрових ночей. Так от їх агент поміж іншого навчився захищати потрібні ресурси шляхом розміщення юнітів, і еволюціонував разом із зміною правил гри, що відбулось у середині змагання.

І момент, я люблю машинне навчання і ним займаюсь, але RL це явно не та галузь, на мою думку, із якої варто починати вивчення даної теми. Хоча якщо розібратись ML і DS це не ті напрямки із яких варто починати свій шлях в ІТ. У Львові до прикладу якщо ти не маєш професійного досвіду у цьому напрямну протягом 2 років ти не потрібен нікому.

Дякую за посилання на Kaggle, цікавий ресурс!

Підписатись на коментарі