Маленькие шаги в сфере обучения с подкреплением

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

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

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

Остановить поток информации

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

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

Онлайн-курс

Итак, давайте проясним свой разум, начнем с чистого листа, сохраним спокойствие и пройдем Практический курс обучения с подкреплением от Coursera. Этот курс не будет прогулкой по парку, но задача состоит в том, чтобы потренировать свой мозг и задать себе вопрос, полностью ли вы усвоили основные концепции. Он начинается с очень простого метода кросс-энтропии и постепенно переходит к итерации политик, итерации значений, Q-Learning и SARSA. Вторая половина курса включает в себя: сети Deep Q и алгоритмы критиков. В этом курсе хорошо то, что вам не нужно беспокоиться о наличии тяжелых вычислительных ресурсов, поскольку вы можете выполнять задания в записных книжках Jupyter на Coursera или Google Colab (у них есть инструкции по настройке на Colab) или даже на вашей собственной машине с вашей любимой IDE. Лично я предпочитаю писать код в своей локальной среде IDE, поскольку в моем распоряжении есть все инструменты для отладки. Фактически, я бы даже подтолкнул вас к запуску и отладке вашего кода в IDE, поскольку вам нужно будет понимать, что на самом деле содержат объекты спортзала OpenAI (использование операторов печати не идеально). В противном случае вы будете чувствовать, что вещи находятся в черном ящике, хотя это не так. Ознакомьтесь с документацией OpenAI, чтобы почувствовать конкретную среду и с радостью начать отладку (да, я очень рад, когда провожу сеансы отладки; не уверен, что вы почувствуете).

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

Заведите учебник (и это вам очень поможет!)

Учебники скучные. Я понял. Но иногда именно они могут утешить вас в море онлайн-статей. Мой популярный учебник по обучению с подкреплением - Обучение с подкреплением: введение Саттона и Барто. Это не удивит вас, если вы когда-либо искали учебник по обучению с подкреплением, и это учебник для большинства университетских курсов.

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

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

Учитесь кодируя, а не просто читая

Когда я начал погружаться в мир обучения с подкреплением, меня всегда смущали связи между «функцией ценности», «значением Q», «оптимальной политикой» и «политикой». Поверьте, эти концепции станут ясны как день после того, как вы их внедрите и примените для обучения своих агентов. Читайте текст, смотрите видео курса, реализуйте функции, запускайте, отлаживайте, повторяйте.

Играя вокруг

Во время прохождения этого курса Coursera (желательно после того, как вы закончите 3-ю неделю курса и у вас будет представление о том, что такое Q-Learning), взгляните на Лекцию Лекса Фридмана о глубоком обучении с подкреплением. Это не технический аспект, но теперь вы лучше понимаете, о чем идет речь в части слайдов, посвященной Q-обучению. Особенность обучения с подкреплением заключается в том, что если вы погуглите определенные концепции, когда вам нужно их узнать, вы сохраните знания какое-то время, но если у вас нет глубокого понимания того, что они делают, вы всегда будете сбиты с толку. Это одна из причин, по которой я предлагаю вам ознакомиться с этими лекциями после того, как вы достаточно хорошо поймете основные концепции. Затем попробуйте Deep Traffic. Есть несколько параметров, с которыми можно поиграть, и если вы не уверены в том, что они означают, просмотрите его документацию и прочтите статью, чтобы лучше понять, почему определенные параметры помогают. Затем попробуйте Демонстрацию Deep Q-Learning Karpathy. К настоящему времени вы должны быть хорошо знакомы с различными гиперпараметрами.

Параметры хрупкие, но сначала проверьте их на наличие опечаток!

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

Идти широким

Когда вы хорошо освоите основные концепции обучения с подкреплением, начните читать лекции из Курса глубокого обучения с подкреплением Калифорнийского университета в Беркли и Лекций Дэвида Сильвера по обучению с подкреплением. Это хорошо, чтобы повторить то, что вы узнали, и убедиться, что вы все еще можете следовать, несмотря на небольшие изменения в обозначениях и т. !).

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

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

Другие источники

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