автордың кітабын онлайн тегін оқу Грокаем глубокое обучение с подкреплением
Переводчик С. Черников
Мигель Моралес
Грокаем глубокое обучение с подкреплением. — СПб.: Питер, 2023.
ISBN 978-5-4461-3944-6
© ООО Издательство "Питер", 2023
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
Данелл, Авроре, Соломону и тем, кто будет после них. Быть вместе с вами словно получать +1 за каждый временной шаг. (Могу заверить, что +1 — это наивысшая награда.) Я вас люблю!
Предисловие
В этой книге вы узнаете об обучении с подкреплением (reinforcement learning, RL). Его сложно понять и объяснить по ряду причин. Во-первых, это довольно специфический подход — здесь много математики. Усвоить основные знания по этой теме и не увязнуть в них — уже непростая задача.
Во-вторых, обучение с подкреплением изначально предполагает некоторое логическое несоответствие, так как это одновременно и способ осмысления задач принятия решений, и набор инструментов для решения этих задач. Под способом осмысления я имею в виду то, что RL служит основой для принятия решений: помимо прочего, в нем обсуждаются сигналы состояния и подкрепления. Говоря о наборе инструментов, я подразумеваю, что при обсуждении RL мы зачастую пользуемся такими терминами, как марковские процессы принятия решений и алгоритм Беллмана. На удивление легко спутать способ осмысления с математическими инструментами, которые мы используем.
Наконец, RL можно по-разному реализовать. Поскольку это способ осмысления, мы можем говорить о нем как о чем-то абстрактном, но его также можно воплотить в коде или, если уж на то пошло, в виде нейронов.
Для изучения RL и глубоких нейронных сетей нужны разные фундаментальные знания — это два интересных направления исследований, которые развивались независимо друг от друга. Объяснить и то и другое в контексте средств разработки — непростая задача.
Не стоит забывать, что для понимания обучения с подкреплением нужно не только овладеть инструментами и их реализацией в глубоких нейросетях, но и перенять определенный способ осмысления RL. Иначе вы не сможете делать обобщения за рамками тех примеров, которые изучаете. Повторюсь, преподавать RL сложно, а в обучении глубокому RL очень много нюансов, которые могут свести весь процесс на нет. Чтобы всего этого избежать, мы обращаемся к книге Мигеля Моралеса.
Эта книга очень удачно составлена. Здесь простым языком объясняется, что такое машинное обучение (machine learning, ML), глубокое обучение (deep learning, DL) и обучение с подкреплением. Читателю дается обобщенная информация о положении дел в области искусственного интеллекта, возможностей методик глубокого обучения с подкреплением и способа осмысления ML, RL и DL. Книга может стать для вас учебным пособием, справочником и (как для меня) источником вдохновения.
Простота изложения материала меня совершенно не удивляет. Я знаю Мигеля не один год. Он прошел путь от студента на курсах по машинному обучению до преподавателя. Он был ведущим ассистентом на моем курсе по обучению с подкреплением и принятию решений в онлайн-магистратуре Технологического института Джорджии на протяжении многих семестров. За это время Мигель успел поработать с тысячами студентов. Я наблюдал за его ростом как профессионала, исследователя и педагога. Он помог улучшить мой курс по RL и продолжает его совершенствовать, чтобы сделать опыт обучения с подкреплением более глубоким для студентов. Мигель прирожденный учитель.
Я пишу этот текст в благодарность за его работу. Я счастлив, что могу сотрудничать с ним, и рад, что у него появилась возможность написать эту книгу. Приятного чтения. Думаю, вы многому научитесь. Я и сам кое-что узнал.
Чарльз Исбелл-мл. (Charles Isbell, Jr.), профессор и декан факультета в колледже вычислительной техники при Технологическом институте Джорджии
Вступление
Обучение с подкреплением — это захватывающая область машинного обучения, способная внести серьезный вклад в развитие человечества. Несколько технологий уже повлияли на историю нашего мира, начиная с появления колеса, электричества и заканчивая Интернетом. Каждое технологическое открытие стимулирует последующий прогресс: без электричества не было бы персональных компьютеров, без компьютеров не было бы Интернета, а без Интернета не было бы поисковых систем.
Для меня самый удивительный аспект RL и искусственного интеллекта — это не столько возможное появление других разумных существ (что само по себе довольно волнующе), сколько то, что идет после. Я считаю, что, будучи прочным фундаментом для автономной оптимизации определенных задач, обучение с подкреплением способно изменить мир. Помимо автоматизации, создание разумных машин может вывести понимание человеческого интеллекта на уровень, который нам сейчас недоступен. Возможно, зная, как найти оптимальные решения для любых задач, мы сможем понять алгоритм, который занимается поиском этих решений. Я думаю, что, научившись создавать разумных существ, люди сами могут стать умнее.
Но до этого еще далеко. Чтобы воплотить в жизнь эти смелые мечты, мы должны привлечь к процессу больше умов. Обучение с подкреплением уже довольно давно находится в зачаточном состоянии, поэтому впереди у нас много работы. Эта книга — мой вклад в то, чтобы DL и RL в целом занималось больше людей.
Базовая структура RL интуитивно ясна, но большинство материалов на эту тему новичку будет сложно понять. Я не ставил перед собой задачу сделать сборник примеров или справочник по теории обучения с подкреплением. Мне хотелось создать ресурс, который смог бы объединить теорию и практику. Как вы вскоре сами увидите, я не брезгую математическими уравнениями: если вы хотите постичь какую-то область исследований, без них не обойтись. Но даже если вас интересует только практическая сторона дела, для разработки качественных решений на основе RL все равно понадобятся некоторые базовые знания. Я не полагаюсь только на уравнения, ведь не все, кто интересуется обучением с подкреплением, любят математику. Некоторым комфортнее работать с кодом и конкретными примерами, поэтому в книге представлено и много практики.
При написании этого пособия бо´льшая часть усилий была направлена на преодоление разрыва между теорией и практикой: доступное изложение базовой информации я сопровождаю примерами кода, уделяя много внимания деталям. Тем, кому сложно дается теория, здесь будет легче понять язык, на котором разговаривают ведущие исследователи. А тем, кто любит читать уравнения, но не может преобразовать их в код, наоборот, будет проще понять практическую сторону обучения с подкреплением.
Я буду искренне рад, если вам удастся насладиться книгой и почерпнуть из нее много полезной информации. Надеюсь, вы овладеете искусством глубокого обучения с подкреплением и сможете внести свой вклад в это фантастическое сообщество, которое я так полюбил. Как я уже упоминал, написание книги было бы невозможным без последних технологических инноваций. Но будущее этой отрасли зависит только от вас, поэтому дерзайте!
Благодарности
Я хочу поблагодарить сотрудников Технологического института Джорджии за то, что они взяли на себя риск и ввели первую онлайн-магистерскую программу компьютерных наук для получения качественного последипломного образования. Если бы не эти ребята, я бы, наверное, никогда не написал эту книгу.
Хочу выразить благодарность профессору и декану Чарльзу Исбеллу и профессору Майклу Литтману (Michael Littman) за создание замечательного курса по обучению с подкреплением. Я особенно признателен декану Исбеллу, который дал мне большой простор для профессионального роста и изучения RL. Кроме того, свой подход к преподаванию обучения с подкреплением (с разделением задачи на три вида обратной связи) я перенял именно у профессора Литтмана. Спасибо за ваши наставления.
Спасибо яркому преподавательскому составу курса CS 7642 в Технологическом институте Джорджии за совместную работу над тем, чтобы помочь студентам узнать больше и приятно провести время с нами. Хочу выразить отдельную благодарность Тиму Бейлу (Tim Bail), Пушкару Колхе (Pushkar Kolhe), Крису Серрано (Chris Serrano), Фарруку Рахману (Farrukh Rahman), Вахе Хагопяну (Vahe Hagopian), Куинну Ли (Quinn Lee), Таке Хасегаве (Taka Hasegawa), Чжу Тяньханг (Tianhang Zhu) и Дону Джейкобу (Don Jacob). Мы с вами отлично сработались.
Спасибо тем, кто ранее внес существенный вклад в этот курс. Я многое для себя почерпнул из нашего общения: Алек Фейерштейн (Alec Feuerstein), Валькирия Фелсо (Valkyrie Felso), Эдриен Экоффет (Adrien Ecoffet), Каушик Субраманьян (Kaushik Subramanian) и Эшли Эдвардс (Ashley Edwards). Хочу поблагодарить наших студентов за их вопросы, которые помогли мне определить пробелы в знаниях тех, кто пытается освоить RL. Я писал эту книгу, думая о вас. Особой признательности заслуживает анонимный студент, который посоветовал мне выбрать Manning в качестве издательства для этой книги. Я до сих пор не знаю, кто это был, но спасибо ему.
Хочу поблагодарить сотрудников Lockheed Martin за обратную связь в ходе написания этой книги. Особая благодарность Крису Астеду (Chris Aasted), Джулии Куок (Julia Kwok), Тейлор Лопес (Taylor Lopez) и Джону Хэддону (John Haddon), который одним из первых прочел мой самый ранний черновик. Его отзыв помог вывести мои писательские навыки на новый уровень.
Спасибо ребятам из Manning за то, что предоставили мне условия, благодаря которым эта книга стала реальностью. Спасибо Брайану Сойеру (Brian Sawyer) за то, что связался со мной и открыл передо мной двери; Берту Бейтсу (Bert Bates) за то, что с самого начала задал направление и помог мне сосредоточиться на преподавании; Кэндес Уэст (Candace West) за то, что помогла мне превратиться из «никого» в «кого-то»; Сюзанне Клайн (Susanna Kline) за то, что помогла мне ускорить работу, когда я был занят; Дженнифер Стаут (Jennifer Stout) за моральную поддержку в конце пути; Ребекке Рейнхарт (Rebecca Rinehart) за тушение пожаров; Элу Кринкеру (Al Krinker) за отзывы, послужившие руководством к действию, и за помощь в отделении полезной информации от шума; Матко Хрватину (Matko Hrvatin) за усердную работу над выпусками MEAP и за дополнительную мотивацию в написании этой книги; Кэндис Гиллхулли (Candace Gillhoolley) за продвижение этой книги, Степану Журековичу (Stjepan Jureković) за то, что вытащил меня; Ивану Мартиновичу (Ivan Martinovic) за важный отзыв, который помог улучшить текст; Лори Вейдерт (Lori Weidert) за то, что дважды подготовила эту книгу к изданию; Дженнифер Хоул (Jennifer Houle) за терпение к изменениям в дизайне; Кэти Петито (Katie Petito) за кропотливую работу над деталями; Кэти Теннант (Katie Tennant) за последние штрихи. Я знаю, что здесь не все: спасибо вам за ваш тяжелый труд.
Всем рецензентам — Элу Рахими (Al Rahimi), Алену Коньюоту (Alain Couniot), Альберто Чарланти (Alberto Ciarlanti), Дэвиду Финтону (David Finton), Дониёру Улмасову (Doniyor Ulmasov), Эдиссону Реинозо (Edisson Reinozo), Эзре Джоелу Шредеру (Ezra Joel Schroeder), Хэнку Мейссе (Hank Meisse), Хао Лю (Hao Liu), Айку Оконкуо (Ike Okonkwo), Джи Мей (Jie Mei), Джульену Похи (Julien Pohie), Киму Фолку Йоргенсену (Kim Falk Jørgensen), Марку-Филиппе Хагету (Marc-Philippe Huget), Михаэлю Халлеру (Michael Haller), Мишель Кломп (Michel Klomp), Начо Орменьо (Nacho Ormeño), Робу Пачеко (Rob Pacheco), Себастьяну Майеру (Sebastian Maier), Себастьяну Заба (Sebastian Zaba), Сваминатану Субраманяну (Swaminathan Subramanian), Тайлеру Коваллису (Tyler Kowallis), Урсину Стауссу (Ursin Stauss) и Сяоху Чжу (Xiaohu Zhu) — спасибо за то, что помогли сделать эту книгу лучше.
Хочу поблагодарить работников Udacity за то, что дали мне возможность поделиться своей страстью к глубокому обучению со своими студентами и записать лекции по алгоритму «актер-критик» для их программы Deep Reinforcement Learning Nanodegree. Отдельное спасибо Алексис Кук (Alexis Cook), Мэту Леонарду (Mat Leonard) и Луису Серрано (Luis Serrano).
Я благодарен членам сообщества RL за то, что помогли мне прояснить этот текст и лучше понять материал. Отдельное спасибо Дэвиду Сильверу (David Silver), Сергею Левину (Sergey Levine), Хадо ван Хасселту (Hado van Hasselt), Паскалю Пупарту (Pascal Poupart), Джону Шульману (John Schulman), Питеру Аббелю (Pieter Abbeel), Челсе Финн (Chelsea Finn) и Владу Мниху (Vlad Mnih) за их лекции; Ричу Саттону (Rich Sutton) за предоставление материалов эталонного учебника в этой области; Джеймсу Макглашану (James MacGlashan) и Джошуа Ахиму (Joshua Achiam) за их кодовую базу, онлайн-ресурсы и подсказки, когда я не знал, где искать ответ. Я хочу поблагодарить Дэвида Ха (David Ha) за то, что он подсказал мне, куда двигаться дальше.
Выражаю особую благодарность Сильвии Море (Silvia Mora) за помощь в подготовке иллюстраций к книге и участие почти во всех моих проектах.
Наконец, спасибо моей семье, которая служила мне опорой на протяжении всего проекта. Я знал, что написать книгу будет непросто, и позже в этом убедился. Но, несмотря ни на что, мои жена и дети всегда были рядом, ожидая моих 15-минутных перерывов каждые два часа. Спасибо тебе, Соло, за все моменты счастья. Спасибо тебе, Рози, за твои любовь и красоту. И спасибо тебе, Данелл, моей прекрасной жене, за то, что ты есть. Ты мой верный напарник в этой интересной игре под названием жизнь. Я так рад, что встретил тебя.
О книге
Цель этой книги — устранить разрыв между теорией и практикой глубокого обучения с подкреплением. Она рассчитана на читателей, знакомых с методами машинного обучения, которые хотят разобраться в обучении с подкреплением. Сначала я познакомлю вас с основами DRL. Затем дам подробный анализ соответствующих алгоритмов и подходов. В конце вы познакомитесь с передовыми методиками, которые могут иметь большое значение в будущем.
Для кого эта книга
Моя книга будет по душе тем, кого не пугают исследовательская работа, код на Python и интуитивно понятные разъяснения. Здесь есть немного математики и много интересных наглядных примеров, способствующих обучению. Даже если вы знаете только Python, этого будет достаточно, чтобы почерпнуть много полезной информации. Хоть и предполагается, что вы уже знакомы с основами глубокого обучения, здесь приводится краткий обзор нейронных сетей, обратного распространения и связанных с ними методик. В целом книга самодостаточна, и, если вы хотите поэкспериментировать с агентами искусственного интеллекта и освоить глубокое обучение с подкреплением, она вам в этом поможет.
Структура издания
Книга состоит из 13 глав, разделенных на две части.
Первая часть охватывает главы 1–5. В первой главе вы познакомитесь с областью глубокого обучения с подкреплением и узнаете наш дальнейший план действий. Во второй будет представлена структура для разработки задач, понятных агентам RL. В третьей главе подробно рассматриваются алгоритмы решения тех задач, в которых агенту известны тенденции окружающего мира, а в четвертой — тех, в которых агент не знает о них. В главе 5 вы познакомитесь с методами решения проблемы прогнозирования, которые лежат в основе передовых методов RL.
Во вторую часть входят главы 6–13. В шестой главе представлены методы выполнения задач управления, алгоритмы оптимизации правил только на основе метода проб и ошибок. Глава 7 рассказывает о более продвинутых методах RL, в том числе о тех, что используют планирование для повышения эффективности выборки. В главе 8 речь пойдет об аппроксимации функций в RL за счет реализации простого алгоритма на основе нейронных сетей. В главе 9 подробно обсуждаются передовые методы применения аппроксимации функций для выполнения задач обучения с подкреплением. В главе 10 вы найдете несколько передовых техник для дальнейшего усовершенствования методик, изученных ранее. В главе 11 представлена другая методика использования моделей DRL, эффективность которой доказана в многочисленных тестах. В главе 12 подробно рассматриваются продвинутые методы DRL, передовые алгоритмы и распространенные способы решения реальных задач. В главе 13 можно найти обзор передовых направлений развития исследований RL, которые выглядят наиболее перспективно в контексте сильного искусственного интеллекта.
О коде
В книге вы найдете много примеров исходного кода: в виде листингов с заголовком «Я знаю Python» и в самом тексте. Исходный код отформатирован с помощью моноширинного шрифта, чтобы отделить его от обычного текста, и оснащен подсветкой синтаксиса, чтобы вам было легче его читать.
Оригинальный исходный код зачастую переформатирован: в него добавлены переводы строк, в нем переименованы переменные и откорректированы отступы с учетом доступного на страницах книги места. Иногда, очень редко, код содержит оператор продолжения строки в Python (\), который сигнализирует о том, что выражение продолжается на следующей строке.
Кроме того, из листингов с исходным кодом были удалены комментарии, а сам код описывается в тексте книги. Аннотации в нем указывают на важные понятия.
Код примеров из этой книги доступен для скачивания на сайте Manning: https://www.manning.com/books/grokking-deep-reinforcement-learning — и на странице GitHub: https://github.com/mimoralea/gdrl.
От издательства
Ваши замечания, предложения, вопросы отправляйте по адресу comp@piter.com (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.
Поскольку эта книга черно-белая, в ней сложно корректно показать цвета линий на графиках. Цветные оригинальные иллюстрации вы можете скачать на нашем сайте по ссылке https://clck.ru/34VaFw. Они пронумерованы согласно страницам, на которых расположены.
Об авторе
Мигель Моралес (Miguel Morales) занимается обучением с подкреплением в отделе автономных ракетных и противопожарных систем компании Lockheed Martin в Денвере, штат Колорадо. Он занимает должность внештатного преподавателя в Технологическом институте Джорджии в рамках курса по обучению с подкреплением и принятию решений. Мигель работал в Udacity, где курировал проекты по машинному обучению, руководил обучающим курсом Nanodegree в области беспилотных автомобилей и участвовал в составлении курса по глубокому обучению с подкреплением. Он окончил Технологический институт Джорджии со степенью магистра компьютерных наук по специализации в области интерактивного интеллекта.
