newsmode
search
Меню
arrow_back Назад

OMSCS CS7642 (Reinforcement Learning) Review and Tips

auto_awesomeКраткое саммари

Eugene Yan (Ziyou Yan) делится отзывом и советами о курсе CS7642 (Reinforcement Learning) программы Georgia Tech OMSCS, который он прошёл в 2018 году. Курс описывается как очень насыщенный, но тяжёлый: студенты тратят до 30–40 часов в неделю. Оценка складывается из еженедельных домашних заданий (30%), трёх крупных проектов (по 15% каждый) и одного большого финального экзамена из 25 вопросов «верно/неверно» с обязательными объяснениями (25%). Самым увлекательным был второй проект — обучение агента глубокого обучения с подкреплением (автор применил Double DQN) сажать ракету в среде OpenAI LunarLander, где агент успешно приземлился лишь к 2000-й итерации. Курс охватывает методы на основе модели (value iteration, policy iteration) и без модели (Q-learning, deep Q-learning), а также мультиагентные подходы и теорию игр, и даёт серьёзную практику в чтении и воспроизведении научных статей, включая работы Sutton и DeepMind.

OMSCS CS7642 (Reinforcement Learning): отзыв и советы

[ omscs learning deeplearning python ] · 6 мин чтения

Возможно, вам также будет интересен этот OMSCS FAQ, который я написал после выпуска. Или посмотрите все мои статьи, связанные с OMSCS, здесь: omscs.

Знаю, знаю, я виноват, что не писал в течение последних четырёх месяцев. Всё было ужасно загружено из-за проекта Voyager в Lazada: переход на новую платформу в конце марта, а затем подготовка к нашей юбилейной кампании в конце апреля. Всё свободное время помимо этого уходило на курс Reinforcement Learning (CS7642) в Georgia Tech, которому и посвящён этот пост.

Курс был очень насыщенным и увлекательным. На протяжении курса мы изучали методы, позволяющие оптимизировать результаты, ориентируясь в окружающем мире, и познакомились с несколькими основополагающими и передовыми (по крайней мере, на 2018 год) статьями. Я настоятельно рекомендую этот курс всем, кто учится на программе Georgia Tech OMSCS.

Особенно увлекательным был проект по посадке ракеты в среде OpenAI LunarLander. Он был реализован с помощью методов глубокого обучения с подкреплением. Вот как агент справился с первой попытки (в обучении с подкреплением «модели» принято называть агентами; подробнее здесь). Как видите, он рухнул прямо на поверхность. =(

Зачем проходить этот курс?

В самом конце курса Machine Learning, который я проходил прошлой осенью, было сделано небольшое введение в обучение с подкреплением. Мы узнали о методах на основе модели, таких как Value Iteration и Policy Iteration, а также о методах без модели, таких как Q-learning.

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

Каков курс на практике?

По объёму нагрузки этот курс довольно тяжёлый. Большинство студентов сообщали, что тратят до 30–40 часов в неделю, и даже при этом некоторые так и не смогли завершить проекты.

Лекции занимают около 2 часов в неделю. Однако эти лекции во многом лишь скользят по поверхности и больше склоняются к теории. Поэтому вы также будете тратить час-другой на просмотр дополнительных внешних материалов (видео David Silver отлично для этого подходят) и на офис-часы с ассистентами (TA).

Почти каждую неделю сдаётся одно небольшое домашнее задание, кроме недель, когда сдаются проекты. В основном они нацелены на связь теории с практикой, хотя некоторые из них показались мне излишне теоретическими и низкоуровневыми (например, спроектировать марковский процесс принятия решений, для решения которого Policy Iteration потребовалось бы более 15 итераций). На них приходится 30% итоговой оценки, и предполагается, что вы выполните все. Они могут занимать от 2 до 8 часов в зависимости от того, заметите ли вы «фишку» или нет.

Также есть три крупных проекта, в рамках которых нужно было писать статьи объёмом не более пяти страниц. Первый предполагал воспроизведение основополагающей статьи Sutton о TD-lambda, а третий — воспроизведение статьи о мультиагентном обучении с подкреплением, включая коррелированное равновесие.

Второй проект заслуживает особого упоминания — мы построили агента глубокого обучения с подкреплением, чтобы сажать ракету в среде OpenAI LunarLander! Это было очень увлекательно и дало практический опыт работы с глубоким обучением с подкреплением. Сюда входило изучение и воспроизведение прорывных статей DeepMind по обучению с подкреплением. Каждый проект составляет 15% итоговой оценки, и на него у меня уходило свыше 30 часов (то есть программирование, проведение экспериментов, написание текста).

В конце курса был один огромный экзамен, охватывающий темы всего курса, на который приходятся оставшиеся 25% итоговой оценки. Формат экзамена — 25 вопросов «верно/неверно» с объяснениями: простое указание «верно» или «неверно» без объяснения не приносило никаких баллов, даже если ответ был правильным. Я готовился к экзамену, в основном сосредоточившись на лекциях, и сумел справиться.

Было бы неполно, если бы я не упомянул превосходных ассистентов (TA), которые были на этом курсе. Ассистенты проводили офис-часы раз, а иногда и дважды в неделю, чтобы разъяснять лекции и давать рекомендации по домашним заданиям, проектам и экзаменам. Без них курс не был бы и наполовину таким насыщенным. Из четырёх курсов, которые я прошёл к этому моменту, ассистенты на Reinforcement Learning были безусловно лучшими (хотя Pedro на Computer Vision тоже был великолепен).

Посадка LunarLander

В OpenAI LunarLander цель — приземлиться на Луну. Доступны четыре дискретных действия: ничего не делать, включить левый ориентационный двигатель, включить главный двигатель, включить правый ориентационный двигатель. Состояние — это координаты и положение посадочного модуля.

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

Ранее мы уже видели, как (плохо) он справился на 1-й итерации, но давайте просто ещё раз посмотрим, как он терпит крушение.

На 125-й итерации он снижается с несколько меньшей скоростью, чем на 1-й итерации, но всё ещё далёк от успеха.

На 1000-й итерации ему удаётся успешно приземлиться. Тем не менее он делает это неоправданно медленно, и есть большой простор для улучшения.

На 2000-й итерации ему наконец удаётся успешно приземлиться за довольно короткое время.

Чему я научился?

Курс обучает основам обучения с подкреплением, начиная с методов на основе модели, таких как value iteration и policy iteration. Также были охвачены методы без модели, такие как Q-learning (то есть классический, табличный подход) и deep Q-learning (лично я применил Double DQN во втором проекте). Помимо одноагентных подходов, рассматривались и мультиагентные подходы и теория игр, а также было исследовано мультиагентное обучение с подкреплением.

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

Что дальше?

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

Кроме того, в интернете есть множество отличных ресурсов для дальнейшего обучения, например:

Семинары David Silver, которые в основном вводного уровня и охватывают работы Sutton, а также Deep RL Bootcamp от Google и Berkeley

Если этот материал оказался полезным, пожалуйста, цитируйте его так:

Yan, Ziyou. (Jul 2018). OMSCS CS7642 (Reinforcement Learning) Review and Tips. eugeneyan.com. https://eugeneyan.com/writing/omscs-cs7642-reinforcement-learning/.

или

@article{yan2018reinforcement, title = {OMSCS CS7642 (Reinforcement Learning) Review and Tips}, author = {Yan, Ziyou}, journal = {eugeneyan.com}, year = {2018}, month = {Jul}, url = {https://eugeneyan.com/writing/omscs-cs7642-reinforcement-learning/} }



Присоединяйтесь к 11 800+ читателям, получающим новости о машинном обучении, RecSys, LLM и инженерии.