Что такое обучение с подкреплением, или Reinforcement learning? Почти то же самое, что и обучение с учителем, но в роли “учителя” выступает настоящая или виртуальная среда. Давайте “на пальцах”: помните популярный способ научить плавать? Вывезти в лодке на середину озера и выбросить на глубину с наставлением: «Жить хочешь – выплывешь».
Этот же принцип работает в обучении с подкреплением: робота бросают в некий лабиринт, из которого он сам должен найти выход. В процессе поиска робот получает от внешней среды информацию о том, где выхода нет, таким образом изучает окружающий мир и учится находить путь к выходу.
Наградой за успешно выполненное задание является возможность взяться за новое, а также набранные в процессе решения баллы. Чем эффективнее выполнена задача, тем больше начисляется баллов.
Обучение с подкреплением применяется в тех случаях, когда нужно выбрать лучший вариант среди многих или достичь сложной цели за множество ходов. Алгоритмы подкрепления, которые включают в себя глубокое обучение, могут победить чемпионов мира в игре Go, начиная с базового понимания правил игры и тренируясь от партии к партии.
Таким образом, это уже искусственный интеллект в действии: машина пытается решить задачу разными способами, ошибается, учится на своих ошибках, улучшает показатели. Этот метод используют в первую очередь там, где нужно научить машину выживать в реальной среде.
Например, на дороге – в случае с беспилотным автомобилем. В обучении беспилотных автомобилей у машины нет задачи запомнить подробную карту города, страны, континента, все улицы и повороты. Но она обязательно должна понять шаблоны повторяющихся ситуаций и обобщить их.
Первая цель робота в обучении с подкреплением – минимизировать ошибки. Машина учится анализировать информацию перед каждым следующим ходом. Например, беспилотный автомобиль во время обучения учится вовремя реагировать на сигнал светофора, остановиться перед пешеходом на переходе, пропустить быстро движущийся автомобиль или спецтранспорт справа. Чтобы достичь лучшего результата, машина обучается в виртуальной модели города со случайными пешеходами и другими участниками дорожного движения.
Вторая цель робота в Reinforcement learning – получить от выполнения задания максимальную выгоду. Сама выгода при этом должна быть запрограммирована заранее: максимально быстрое время прохождения маршрута, оптимальное расходование ресурсов предприятия, обслуживание как можно большего количества посетителей.
Обучение с подкреплением применяется там, где нужно соизмерить отсроченную выгоду – цель – с ситуативным принятием решения. Этот вид обучения решает сложную задачу соотнесения немедленных действий с отсроченной отдачей, которую они производят. Как и людям, алгоритмам подкрепления обучения иногда приходится ждать, чтобы увидеть плоды своих решений. В таких случах зачастую сложно понять, какое действие приводит к какому результату.
Области практического применения reinforcement learning:
Давайте посмотрим описания и видео нескольких вдохновляющих примеров.
На видео ниже вы можете посмотреть результат бота, обученного по игре в Packman. Цель обучения – максимизировать набранные очки, при этом избегать “опасности” и, как следствие, проигрыша.
Код проекта можно найти на GitHub.
На следующем видео можно увидеть, как робот учится открывать дверь. Если вы не связаны с робототехникой, вам может быть не до конца понятно почему нельзя просто запрограммировать алгоритм “тяни или толкай”. Но в конце видео приводится пояснение зачем нужны такие сложности. В случае если, например, дверь держат с той стороны, или непонятно, надо тянуть дверь на себя или толкать от себя, “простой” алгоритм не будет работать. А алгоритм, основанный на нейронной сети, обученной методом с подкреплением, будет.
Автоматическая программа, генерирующая постоянную прибыль – просто мечта каждого практикующего игрока биржевого рынка. В работе Financial Trading as a Game: A Deep Reinforcement Learning Approach предложили модель Марковского процесса принятия решений (MDP), подходящую для задачи финансовой торговли, с современным алгоритмом с глубокой рекуррентной Q-сетью (DRQN).
Создатели обучили алгоритм торговле валютными парами и получили положительную статистику торгов.
Детали можно почитать в оригинальной работе https://arxiv.org/abs/1807.02787.
Посмотрите пример академического проекта курса машинного обучения в Римском университете La Sapienza. В нем применяется нейронная сеть, которая использует Reinforcement Learning, чтобы научиться водить машину, используя только три датчика на передней части автомобиля.
Думаем, этих нескольких примеров достаточно для понимания где и каким образом можно применять обучение с подкреплением.
О других видах машинного обучения читайте в наших статьях: “Искусственный интеллект, машинное обучение и нейронные сети – в чем разница и для чего их используют”, “Классическое обучение как разновидность машинного обучения”, “Ансамбли алгоритмов в машинном обучении”, “Нейросети в машинном обучении”.