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

В нашем меняющемся мире даже проблемы, которые выглядят как статические задачи ввода-вывода, могут стать динамическими, если вы будете учитывать время. Например, представьте, что вы решаете простую задачу контролируемого обучения классификации изображений домашних животных с двумя целевыми классами - собакой и кошкой. Вы собрали набор обучающих данных и реализовали классификатор с помощью своего любимого набора инструментов для глубокого обучения, и через некоторое время модель, которая объединилась, демонстрирует отличную производительность. Большой! Вы развернули его и оставили работать на некоторое время. Однако после отпуска на каком-то морском курорте вы снова обнаруживаете, что мода на уход за собаками изменилась, и значительная часть ваших запросов теперь неправильно классифицирована, поэтому вам нужно обновить свои тренировочные изображения и повторить процесс снова. Не хорошо!

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

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

Обучение - под присмотром, без присмотра и с подкреплением

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

  • Классификация текста. Является ли это сообщение спамом?
  • Классификация изображений и расположение объекта. Есть ли на этом изображении изображение кошки, собаки или чего-то еще?
  • Проблемы регрессии. Какая будет погода завтра по данным датчиков погоды?
  • Анализ настроений. Каков уровень удовлетворенности клиентов этим обзором?

Эти вопросы могут выглядеть по-разному, но они разделяют ту же идею: у нас есть много примеров входных и желаемых выходных данных, и мы хотим узнать, как сгенерировать выходные данные для некоторых будущих, невидимых в настоящее время входных данных. Название контролируемый происходит от того факта, что мы учимся на известных ответах, предоставленных источником «достоверных» данных.

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

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

Другой пример обучения без учителя - кластеризация, когда алгоритму необходимо найти структуру в выборках данных в соответствии с некоторой метрикой расстояния. В этом случае нужны только метрика и образцы данных. Результат содержит группы точек данных, также называемые «кластерами». Например, вы можете захотеть найти похожие изображения или клиентов с общим поведением.

RL - это третий лагерь, который находится где-то между полным контролем и полным отсутствием предопределенных ярлыков.

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

Сравнение RL с контролируемым и неконтролируемым обучением

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

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

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

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

Подводя итог, мы рассмотрели RL, что делает его особенным и как он соотносится с парадигмой контролируемого и неконтролируемого обучения. Изучите передовые методы исследования, включая зашумленные сети, псевдосчет и методы дистилляции сети, из книги Максима Лапана Практическое обучение с подкреплением, второе издание.

Об авторе

Максим Лапан - энтузиаст глубокого обучения и независимый исследователь. Его опыт и 15-летний опыт работы в качестве разработчика программного обеспечения и системного архитектора простираются от разработки низкоуровневых драйверов ядра Linux до оптимизации производительности и проектирования распределенных приложений, работающих на тысячах серверов. Обладая обширным опытом работы в области больших данных, машинного обучения и крупных параллельных распределенных систем HPC и не-HPC, он может объяснить ряд сложных концепций простыми словами и яркими примерами. В настоящее время его интересы связаны с практическими приложениями глубокого обучения, такими как глубокая обработка естественного языка и глубокое обучение с подкреплением. Максим живет с семьей в Москве, Российская Федерация.