Глубокое обучение с подкреплением: теория и практика на языке Python - Лаура Грессер - E-Book

Глубокое обучение с подкреплением: теория и практика на языке Python E-Book

Лаура Грессер

0,0

Beschreibung

Глубокое обучение с подкреплением (глубокое RL) сочетает в себе два подхода к машинному обучению. В ходе такого обучения виртуальные агенты учатся решать последовательные задачи о принятии решений. За последнее десятилетие было много неординарных достижений в этой области — от однопользовательских и многопользовательских игр, таких как го и видеоигры Atari и Dota 2, до робототехники. Эта книга — введение в глубокое обучение с подкреплением, уникально комбинирующее теорию и практику. Авторы начинают повествование с базовых сведений, затем подробно объясняют теорию алгоритмов глубокого RL, демонстрируют их реализации на примере программной библиотеки SLM Lab и напоследок описывают практические аспекты использования глубокого RL. Руководство идеально подойдет как для студентов, изучающих компьютерные науки, так и для разработчиков программного обеспечения, которые знакомы с основными принципами машинного обучения и знают Python.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 563

Veröffentlichungsjahr: 2024

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Переводчики К. Синица, К. Синица, К. Синица, К. Синица, К. Синица

Лаура Грессер, Ван Лун Кенг

Глубокое обучение с подкреплением: теория и практика на языке Python . — СПб.: Питер, 2024.

ISBN 978-5-4461-1699-7

© ООО Издательство "Питер", 2024

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

Оглавление

Отзывы о книге
Предисловие
Введение
Благодарности
Об авторах
От издательства
О научном редакторе русскоязычного издания
1. Введение в обучение с подкреплением
1.1. Обучение с подкреплением
1.2. Обучение с подкреплением как МППР
1.3. Обучаемые функции в обучении с подкреплением
1.4. Алгоритмы глубокого обучения с подкреплением
1.5. Глубокое обучение для обучения с подкреплением
1.6. Обучение с подкреплением и обучение с учителем
1.7. Резюме
Часть I. Алгоритмы, основанные на стратегиях и полезностях
2. REINFORCE
2.1. Стратегия
2.2. Целевая функция
2.3. Градиент стратегии
2.4. Выборка методом Монте-Карло
2.5. Алгоритм REINFORCE
2.6. Реализация REINFORCE
2.7. Обучение агента в REINFORCE
2.8. Результаты экспериментов
2.9. Резюме
2.10. Рекомендуемая литература
2.11. Историческая справка
3. SARSA
3.1. Q-функция и V-функция
3.2. Метод временных различий
3.3. Выбор действий в SARSA
3.4. Алгоритм SARSA
3.5. Реализация SARSA
3.6. Обучение агента SARSA
3.7. Результаты экспериментов
3.8. Резюме
3.9. Рекомендуемая литература
3.10. Историческая справка
4. Глубокие Q-сети
4.1. Настройка Q-функции в DQN
4.2. Выбор действий в DQN
4.3. Хранение прецедентов в памяти
4.4. Алгоритм DQN
4.5. Реализация DQN
4.6. Обучение агента DQN
4.7. Результаты экспериментов
4.8. Резюме
4.9. Рекомендуемая литература
4.10. Историческая справка
5. Улучшение DQN
5.1. Прогнозные сети
5.2. Двойная DQN
5.3. Приоритизированная память прецедентов
5.4. Реализация улучшенной DQN
5.5. Обучение агента DQN играм Atari
5.6. Результаты экспериментов
5.7. Резюме
5.8. Рекомендуемая литература
Часть II. Комбинированные методы
6. Метод актора-критика с преимуществом (А2С)
6.1. Актор
6.2. Критик
6.3. Алгоритм А2С
6.4. Реализация А2С
6.5. Архитектура сети
6.6. Обучение агента А2С
6.7. Результаты экспериментов
6.8. Резюме
6.9. Рекомендуемая литература
6.10. Историческая справка
7. Оптимизация ближайшей стратегии
7.1. Суррогатная целевая функция
7.2. Оптимизация ближайшей стратегии
7.3. Алгоритм РРО
7.4. Реализация РРО
7.5. Обучение агента РРО
7.6. Результаты экспериментов
7.7. Резюме
7.8. Рекомендуемая литература
8. Методы параллелизации
8.1. Синхронная параллелизация
8.2. Асинхронная параллелизация
8.3. Обучение агента А3С
8.4. Резюме
8.5. Рекомендуемая литература
9. Сравнительный анализ алгоритмов
Часть III. Практика
10. Начало работы с глубоким RL
10.1. Приемы проектирования программ
10.2. Рекомендации по отладке
10.3. Практические приемы в играх Atari
10.4. Справочник по глубокому обучению с подкреплением
10.5. Резюме
11. SLM Lab
11.1. Алгоритмы, реализованные в SLM Lab
11.2. Файл spec
11.3. Запуск SLM Lab
11.4. Анализ результатов эксперимента
11.5. Резюме
12. Архитектура сетей
12.1. Виды нейронных сетей
12.2. Рекомендации по выбору семейства сетей
12.3. Net API
12.4. Резюме
12.5. Рекомендуемая литература
13. Аппаратное обеспечение
13.1. Компьютер
13.2. Типы данных
13.3. Оптимизация типов данных в RL
13.4. Выбор аппаратного обеспечения
13.5. Резюме
Часть IV. Проектирование сред
14. Состояния
14.1. Примеры состояний
14.2. Полнота состояния
14.3. Сложность состояния
14.4. Потеря информации о состоянии
14.5. Предварительная обработка
14.6. Резюме
15. Действия
15.1. Примеры действий
15.2. Полнота действий
15.3. Сложность действий
15.4. Резюме
15.5. Проектирование действий в повседневной жизни
16. Вознаграждения
16.1. Роль вознаграждений
16.2. Рекомендации по проектированию вознаграждений
16.3. Резюме
17. Функция переходов
17.1. Проверка осуществимости
17.2. Проверка реалистичности
17.3. Резюме
Заключение
Воспроизводимость
Отрыв от реальности
Метаобучение и многозадачное обучение
Многоагентные задачи
Эффективность выборки
Обобщение
Исследование и структурирование вознаграждений
Приложения
А. История глубокого обучения с подкреплением
Б. Примеры сред
Б.1. Дискретные среды
Б.2. Непрерывные среды
Список используемых источников

Отзывы о книге

Эта книга — доступное введение в глубокое обучение с подкреплением. В ней охва­чены как математические концепции, лежащие в основе популярных алгоритмов, так и их практическая реализация. Я считаю ее ценным источником информации для всех, кто интересуется практическим применением глубокого обучения с подкреплением.

Володимир Мних, ведущий разработчик DQN

Отличная книга, прочитав которую вы быстро изучите теорию и язык программирования, а также научитесь на практике реализовывать алгоритмы глубокого обучения с подкреплением. Понятное изложение с использованием привычной нотации, объяснение всех новейших методов проиллюстрировано лаконичным читаемым кодом и ни одной страницы отвлеченных рассуждений — просто идеально для формирования прочных знаний по теме.

Винсент Ванхук, старший научный сотрудник, Google

Как человек, проводящий свои дни в попытках сделать более доступными методы глубокого обучения с подкреплением, могу сказать, что книга Лауры и Кенга — долгожданное пополнение ряда подобной литературы. В ней есть как удобочитаемое введение в основные концепции обучения с подкреплением, так и интуитивно понятные объяснения и код для большинства важных алгоритмов в данной области. Мне кажется, она на долгие годы станет бесценным источником знаний для тех, кто хочет изучать глубокое обучение с подкреплением.

Артур Джулиани, ведущий инженер по машинному обучению, Unity Technologies

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

Мэтью Ратц, исследователь в области обучения с подкреплением, ETH в Цюрихе

Тем, кто дал мне понять, что возможно все.

Лаура

Моей жене Даниэле.

Кенг

Предисловие

В апреле 2019 года боты, созданные Open AI Five, сыграли в турнире по Dota 2 против команды OG — чемпионов мира 2018 года. Dota 2 — это сложная многопользовательская игра. Игроки в ней могут выбирать разных персонажей. Для победы важны стратегия, работа в команде и быстрое принятие решений. При таком количестве переменных и кажущемся бесконечном просторе для оптимизации, создание конкурентоспособной системы искусственного интеллекта кажется непосильной задачей. И все же боты OpenAI одержали уверенную победу, а немного погодя стали побеждать в 99 % матчей против официальных игроков. В основе этого достижения лежит глубокое обучение с подкреплением.

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

Хотя создание системы обучения компьютерной программы для победы в видеоигре, возможно, не самое важное занятие, это только начало. Обучение с подкреп­лением — это область машинного обучения, занимающаяся задачами последовательного принятия решений, то есть теми, решение которых занимает определенное время. Оно применимо практически в любой ситуации: в видеоиграх, на прогулке по улице или при вождении автомобиля.

Лаура Грессер и Ван Лун Кенг предложили доходчивое введение в сложную тему, играющую ведущую роль в современном машинном обучении. Мало того, что они использовали свои многочисленные публикации об исследованиях на данную тему, они создали библиотеку с открытым исходным кодом SLM Lab, призванную помочь новичкам быстро освоить глубокое машинное обучение. SLM Lab написана на Python с помощью фреймворка PyTorch, но читателям достаточно знать только Python. Эта книга будет полезна и тем, кто собирается применять в качестве фреймворка глубокого обучения другие библиотеки, например TensorFlow. В ней они познакомятся с концепциями и формулировкой задач глубокого обучения с подкреплением.

В издании сведены воедино новейшие исследования в сфере глубокого обучения с подкреплением и даны рабочие примеры и код. Их библиотека также совместима с OpenAI Gym, Roboschool и инструментарием Unity ML-Agents, что делает книгу хорошим стартом для читателей, нацеленных на работу с этими инструментами.

Пол Дикс, редактор серии

Введение

С глубоким обучением с подкреплением (re­inforcement learning, RL) мы впервые познакомились, когда DeepMind достиг беспрецедентной производительности в аркадных играх Atari. Используя лишь изображения и не располагая первоначальными знаниями о системе, агенты впервые достигли поведения уровня человека.

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

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

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

Другой трудностью был большой разрыв между теорией и реализацией. Зачастую из-за большого количества компонентов и настраиваемых гиперпараметров алгоритмы глубокого RL капризны и ненадежны. Для успеха необходимы корректная совместная работа всех компонентов и подходящие гиперпараметры. Из теории далеко не сразу становятся понятными детали правильной реализации, но они очень важны. Ресурс, объединяющий теорию и практику, был бы неоценим во время нашего обучения.

Нам казалось, что можно найти более простой путь от теории к реализации, который облегчил бы изучение глубокого RL. Данная книга воплощает нашу попытку сделать это. В ней введение в глубокое RL проходит через все стадии: сначала интуитивное понимание, затем объяснение теории и алгоритмов, а в конце реализация и практические рекомендации. В связи с этим к книге прилагается фреймворк SLM Lab, содержащий реализации всех рассматриваемых алгоритмов. Если кратко, это книга, от которой мы не отказались бы в начале своего обучения.

Глубокое RL относится к области обучения с подкреплением. В основе обучения с подкреплением зачастую лежит аппроксимация функции, в глубоком RL аппроксиматоры обучаются посредством глубоких нейронных сетей. Обучение с подкреплением, обучение с учителем и обучение без учителя — три основные методики машинного обучения, каждая из которых отличается формулировкой задач и обучением алгоритмов по данным.

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

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

Книга организована следующим образом. В главе 1 дается введение в различные аспекты проблем глубокого RL и обзор его алгоритмов.

Часть I книги посвящена алгоритмам, основанным на полезностях и стратегии. В главе 2 рассматривается первый метод градиента стратегии, известный как REINFORCE. В главе 3 описывается первый основанный на полезностях метод под названием SARSA. В главе 4 обсуждаются алгоритмы глубоких Q-сетей (Deep Q-Networks, DQN), а глава 5 сфокусирована на улучшающих их методиках — контрольных сетях (target networks), алгоритмах двойной DQN и приоритизированной памяти прецедентов (Prioritized Experience Replay).

В части II основное внимание уделяется алгоритмам, объединяющим методы, основанные на полезностях и стратегии. В главе 6 представлен алгоритм актора-критика, расширяющий REINFORCE. В главе 7 приведена оптимизация ближайшей стратегии (Proximal Policy Optimization, PPO), которой может быть расширен метод актора-критика. В главе 8 обсуждаются приемы синхронной и асинхронной параллелизации, применимые ко всем алгоритмам в этой книге. В заключение в главе 9 подводятся итоги по всем алгоритмам.

Все главы об алгоритмах построены по одной схеме. Сначала приводятся основные концепции и прорабатываются соответствующие математические формулировки. Затем идет описание алгоритма и обсуждаются реализации на Python. В конце приводится полный алгоритм с подобранными гиперпараметрами, который может быть запущен в SLM Lab, а основные характеристики алгоритма иллюстрируются графиками.

В части III основной упор сделан на практических деталях реализации алгоритмов глубокого RL. В главе 10 описываются практики проектирования и отладки. В нее включены также справочник гиперпараметров и результаты сравнения производительности алгоритмов. В главе 11 представлены основные команды и функции библиотеки SLM Lab, прилагаемой к книге. В главе 12 рассматривается проектирование нейронных сетей, а в главе 13 обсуждается аппаратное оборудование.

В части IV книги речь идет о проектировании среды. В нее входят главы 14, 15, 16 и 17, в которых рассматриваются способы задания состояний, действий, вознаграждений и функций переходов соответственно.

Читать по порядку следует главы с 1-й по 10-ю. В них дано введение во все алгоритмы книги и представлены практические рекомендации, как их запустить. В следу­ющих трех главах, с 11-й по 13-ю, внимание уделяется более специфическим темам, и их можно читать в любом порядке. Для тех, кто не хочет вдаваться в такие по­дробности, достаточно прочитать главы 1, 2, 3, 4, 6 и 10, в которых последовательно изложены несколько алгоритмов. В конце, в части IV, помещены отдельные главы, предназначенные для читателей, особо заинтересованных в более глубоком понимании использованных сред или построении собственных сред.

Прилагаемая к книге библиотека программного обеспечения SLM Lab — это модульный фреймворк глубокого RL, созданный с помощью PyTorch. SLM — это аббревиатура для Strange Loop Machine (машина на странных петлях), названия, данного в честь знаменитой книги Ховштадтера «Гёдель, Эшер, Бах: эта бесконечная гирлянда»1. Во включенных в книгу примерах из SLM Lab используются синтаксис PyTorch и функции для обучения нейронных сетей. Однако основные принципы реализации алгоритмов глубокого RL применимы и к другим фреймворкам глубокого обучения, таким как TensorFlow.

Для того чтобы новичкам было легче освоить глубокое RL, компоненты SLM Lab разбиты на концептуально понятные части. Кроме того, чтобы упростить переход от теории к коду, они упорядочены в соответствии с изложением глубокого RL в академической литературе.

Другой важный аспект изучения глубокого RL — эксперименты. С этой целью в SLM Lab представлен фреймворк для экспериментов, призванный помочь начинающим в создании и тестировании собственных гипотез.

Библиотека SLM Lab — это проект с открытым исходным кодом на Github. Мы рекомендуем установить ее (на машины с Linux или MacOS) и запустить первое демо, следуя инструкциям, приведенным на сайте репозитория https://github.com/kengz/SLM-Lab. В Git была создана специальная ветка book с версией кода, совместимой с этой книгой. В листинге 0.1 приведена краткая инструкция по установке, скопированная с сайта репозитория.

Листинг 0.1. Установка SLM-Lab с ветки book

1 # клонируйте репозиторий

2 git clone https://github.com/kengz/SLM-Lab.git

3 cd SLM-Lab

4 # переключитесь на специальную ветку для этой книги

5 git checkout book

6 # установите зависимости

7 ./bin/setup

8 # далее следуйте инструкциям, приводимым на сайте репозитория

Рекомендуется сначала задать эти настройки, чтобы можно было обучать агентов по алгоритмам в соответствии с их появлением в книге. Помимо установки и запуска первого примера, необходимости в знакомстве с SLM Lab до прочтения глав об алгоритмах (части I и II) не возникнет: все команды для обучения агентов даны там, где нужно. Кроме того, SLM Lab обсуждается более подробно в главе 11, после перехода от алгоритмов к практическим аспектам глубокого обучения с подкреплением.

1 Go..del, Escher, Bach: An Eternal Golden Braid.

Благодарности

Завершить этот проект нам помогло немало людей. Спасибо Милану Цвитковичу, Алексу Лидсу, Навдипу Джайтли, Джону Крону, Кате Василаки и Кейтлин Глисон за поддержку и вдохновение. Выражаем благодарность OpenAI, PyTorch, Илье Кострикову и Джамромиру Дженишу за предоставление высококачественной реализации с открытым исходным кодом различных компонентов алгоритмов глубокого RL. Благодарим также Артура Джулиани за предварительные обсу­ждения структуры сред. Эти ресурсы и обсуждения были бесценны при создании SLM Lab.

Хотелось бы поблагодарить Александра Саблайроллеса, Ананта Гупта, Брендона Стрикланда, Чонга Ли, Джона Крона, Джорди Франка, Кэтрин Джаясурия, Мэтью Ратца, Пидонга Вонга, Раймонда Чуа, Регину Р. Монако, Рико Джоншковски, Софи Табак и Утку Эвси за обстоятельные замечания о ранних набросках этой книги.

Мы очень признательны производственной команде Pearson — Алине Кирсановой, Крису Зану, Дмитрию Кирсанову и Джулии Нахил. Благодаря вашему профессио­нализму, старанию и вниманию к деталям текст стал гораздо лучше.

Наконец, эта книга не появилась бы на свет без нашего редактора Деборы Вильямс Коли. Благодарим за вашу помощь и терпение.

Об авторах

Лаура Грессер работает разработчиком исследовательского программного обес­печения для робототехнических систем в Google. Получила степень магистра компьютерных наук в Нью-Йоркском университете со специализацией в машинном обучении.

Ван Лун Кенг — разработчик систем искусственного интеллекта в Machine Zone, использует глубокое обучение с подкреплением для решения проблем промышленного производства. Специалист в области теоретической физики и компьютерных наук.

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

От издательства

Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.

О научном редакторе русскоязычного издания

Александр Игоревич Панов, кандидат физико-математических наук, доцент, заведующий отделом ФИЦ ИУ РАН, руководитель Центра когнитивного моделирования МФТИ, ведущий научный сотрудник Института искусственного интеллекта (AIRI), член Научного совета Российской ассоциации искусственного интеллекта. Специалист в области когнитивной робототехники, обучения с подкреплением, общего искусственного интеллекта.