Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
Мы учимся, взаимодействуя с окружающей средой, и получаемые вознаграждения и наказания определяют наше поведение в будущем. Глубокое обучение с подкреплением привносит этот естественный процесс в искусственный интеллект и предполагает анализ результатов для выявления наиболее эффективных путей движения вперед. Агенты глубокого обучения с подкреплением могут способствовать успеху маркетинговых кампаний, прогнозировать рост акций и побеждать гроссмейстеров в Го и шахматах. Давайте научимся создавать системы глубокого обучения на примере увлекательных упражнений, сопровождаемых кодом на Python с подробными комментариями и понятными объяснениями. Вы увидите, как работают алгоритмы, и научитесь создавать собственных агентов глубокого обучения с подкреплением, используя оценочную обратную связь.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 402
Veröffentlichungsjahr: 2023
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Переводчик С. Черников
Мигель Моралес
Грокаем глубокое обучение с подкреплением. — СПб.: Питер, 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.
Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.
Поскольку эта книга черно-белая, в ней сложно корректно показать цвета линий на графиках. Цветные оригинальные иллюстрации вы можете скачать на нашем сайте по ссылке https://clck.ru/34VaFw. Они пронумерованы согласно страницам, на которых расположены.
Мигель Моралес (Miguel Morales) занимается обучением с подкреплением в отделе автономных ракетных и противопожарных систем компании Lockheed Martin в Денвере, штат Колорадо. Он занимает должность внештатного преподавателя в Технологическом институте Джорджии в рамках курса по обучению с подкреплением и принятию решений. Мигель работал в Udacity, где курировал проекты по машинному обучению, руководил обучающим курсом Nanodegree в области беспилотных автомобилей и участвовал в составлении курса по глубокому обучению с подкреплением. Он окончил Технологический институт Джорджии со степенью магистра компьютерных наук по специализации в области интерактивного интеллекта.
В этой главе
• Вы узнаете, что такое глубокое обучение с подкреплением и чем оно отличается от других подходов к машинному обучению.
• Познакомитесь с последними достижениями в сфере глубокого RL и узнаете, как оно может помочь в решении разных задач.
• Узнаете, чего ожидать от этой книги и как извлечь из нее максимум пользы.
Я представляю время, когда мы будем для роботов тем же, чем сейчас собаки являются для людей, и болею за машины.
Клод Шеннон, отец информационного века, выдающийся ученый в области искусственного интеллекта
Люди хотят быть счастливыми. Каждое наше действие, от выбора еды на завтрак до продвижения по карьерной лестнице, обусловлено стремлением привнести в жизнь приятные моменты. Это могут быть эгоцентричные удовольствия или благородные цели, то, что приносит немедленное или долгосрочное удовлетворение. Главное, что мы считаем это важным и ценным, ведь в каком-то смысле эти мгновения придают нашей жизни смысл.
Наша способность испытывать чувства от подобных моментов связана с интеллектом — способностью приобретать и применять знания и навыки. Люди, которых общество считает умными, могут отказываться не только от немедленного удовлетворения в пользу долгосрочных целей, но и от хорошего, гарантированного будущего в пользу лучшего, но неопределенного. Целей, которые дольше материализуются и обладают неизвестной долгосрочной ценностью, обычно сложнее всего достичь. Преодолеть все эти трудности могут исключительные люди — интеллектуалы и лидеры, признанные в обществе.
Из книги вы узнаете о подходе глубокого обучения с подкреплением, связанном с созданием компьютерных программ, способных достигать целей, требующих интеллекта. В первой главе вы познакомитесь с основами этого подхода и получите советы о том, как извлечь из моего пособия максимум пользы.
Глубокое обучение с подкреплением (deep reinforcement learning, DRL) — это подход к искусственному интеллекту на основе машинного обучения, направленный на создание компьютерных программ, способных выполнять задачи, требующие интеллекта. Отличительная черта программ DRL — обучение методом проб и ошибок на основе обратной связи, которая является одновременно последовательной, оценочной и выборочной за счет использования мощной аппроксимации нелинейных функций.
Давайте разберем это определение по частям, но не слишком увлекайтесь деталями, ведь у вас впереди еще целая книга, чтобы погрузиться в глубокое обучение с подкреплением. Эта глава — введение в материал, который вы будете изучать далее. Периодически мы будем возвращаться к ней при рассмотрении подробностей в последующих главах.
Цель этой книги — дать вам полное, всестороннее понимание этого определения. После прочтения вы сможете объяснить, почему я выбрал именно эти слова и именно эти формулировки, а пока просто расслабьтесь и прочтите первую главу.
Искусственный интеллект (ИИ) — это раздел информатики, связанный с созданием программ, способных демонстрировать разумное поведение. Традиционно любое программное обеспечение (ПО), отображающее такие когнитивные способности, как восприятие, поиск, планирование и обучение, считается частью ИИ. Вот несколько примеров:
• страницы, возвращаемые поисковой системой;
• маршрут, прокладываемый GPS-навигатором;
• умный помощник с распознаванием голоса и синтетической речью;
• список рекомендаций на сайтах интернет-магазинов;
• функция «следуй за мной» в дронах.
Любая программа, проявляющая интеллект, относится к ИИ, но не все примеры искусственного интеллекта могут обучаться. Машинное обучение — это область ИИ, посвященная созданию ПО для выполнения задач, требующих интеллекта, через обучение на основе данных. У ML есть три основных направления: контролируемое, неконтролируемое и обучение с подкреплением.
Контролируемое обучение (supervised learning, SL) предполагает использование промаркированных данных. В процессе SL человек решает, какие данные нужно собрать и как их пометить. Цель этого направления ML — обобщение. Классический пример — приложение для распознавания цифр, написанных от руки: человек собирает изображения с рукописными цифрами и учит модель правильно распознавать и категоризировать эти цифры. Ожидается, что обученная модель сможет обобщать и категоризировать новые изображения с такими цифрами.
Неконтролируемое обучение (unsupervised learning, UL) подразумевает использование непромаркированных данных. Несмотря на то что данные больше не нуждаются в метках, методы по их сбору, которые использует компьютер, все еще должны разрабатываться человеком. Цель UL — сжатие. Классический пример — приложение для сегментации клиентов: человек собирает сведения о клиентах и учит модель объединять их в кластеры, которые сжимают информацию, раскрывая базовые закономерности.
Обучение с подкреплением проводится методом проб и ошибок. В задачах этого типа человек не маркирует данные, не собирает их и не участвует в разработке механизма их сбора. Цель RL — действие. Классический пример — агент для игры в Pong, который взаимодействует с эмулятором аркадного автомата Pong и учится, выполняя действия и наблюдая за их последствиями. Обученный агент должен уметь действовать таким образом, который позволит ему успешно играть в Pong.
Относительно новый действенный подход к ML, глубокое обучение, включает использование многоуровневой аппроксимации нелинейных функций, обычно в виде нейронных сетей. DL не самостоятельный раздел ML, поэтому принципиально не отличается от описанных выше методов. Это набор техник и методов использования нейронных сетей для выполнения задач ML: будь то SL, UL или RL. DRL — это всего лишь подход к решению задач RL с использованием DL.
Суть в том, что DRL — это подход к решению задачи. Область ИИ определяет следующую задачу: создание разумных машин. Один из способов ее решения — DRL. На страницах книги вы встретите сравнения между RL и другими видами машинного обучения, но в этой главе приводятся только определения и исторический экскурс в ИИ в целом. Важно отметить, что область DRL — это часть RL, поэтому при упоминании RL я имею в виду и DRL. Но при необходимости я провожу между ними различие.
По сути, в DRL мы занимаемся сложными последовательными задачами принятия решений в условиях неопределенности. Но эта тема исследуется и в других областях. Например, теория управления (control theory, CT) изучает пути управления сложными известными динамическими системами. В CT динамика систем, которыми мы пытаемся управлять, известна заранее. Исследование операций (operations research, OR) тоже посвящено принятию решений в условиях неопределенности. Но задачи в этой области обычно гораздо шире, чем в DRL. Психология изучает человеческое поведение. Это отчасти та же «сложная последовательная задача о принятии решений в условиях неопределенности».
Подытожим: вы имеете дело с областью, на развитие которой влияет много других направлений. Это здорово, но возможна несогласованность терминологий, обозначений и т.д. Я предпочитаю подходить к этой проблеме в контексте компьютерных наук, поэтому посвятил свою книгу созданию программ, решающих сложные задачи принятия решений в условиях неопределенности. В связи с этим на ее страницах встречаются примеры кода.
В DRL такие программы называются агентами. Они занимаются только принятием решений. Это значит, что рука робота, обученного поднимать объекты, не входит в состав агента. Агент — это только код, принимающий решения.
Противоположность агента — среда — все, что находится за пределами агента и вне его полного контроля. Давайте снова представим себе робота, которого вы учите поднимать предметы. Объекты, которые нужно поднять, поднос, на котором они лежат, ветер и все остальное, что не принадлежит лицу, принимающему решения, — это часть среды. Значит, рука робота тоже относится к среде, так как не входит в состав агента. Агент может принять решение о движении рукой, но само движение создает шум, поэтому рука — это часть среды.
Поначалу это четкое разделение между агентом и средой может показаться нелогичным, но агенту отводится лишь одна роль: принятие решений. Все, что происходит после, относится к среде.
Ниже приведен общий обзор всех компонентов DRL. Подробнее о них вы узнаете в главе 2.
Среда — это набор переменных, относящихся к задаче. Например, в случае с ранее упомянутым роботом в ее состав входят такие переменные, как местоположение, скорость и направление движения руки. Переменные и все их возможные значения называют пространством состояний, где состояние — это отдельный экземпляр, набор значений, которые принимают переменные.
Интересно, что у агентов обычно нет доступа ко всему состоянию среды. Та часть состояния, которую агент может наблюдать, называется наблюдением. Наблюдения зависят от состояний, но представляют собой то, что может видеть агент. Например, в случае с роботизированной рукой агент может иметь доступ только к изображениям из камеры. У каждого объекта есть определенное местоположение, но агенту ничего не известно об этой конкретной части состояния. Вместо этого он воспринимает основанные на состояниях наблюдения. В научной литературе, в том числе и в этой книге, наблюдения и состояния часто используются как синонимы. Заранее прошу прощения за такую непоследовательность. Просто помните о различиях и делайте поправку на лексику — это главное.
В каждом состоянии среда предоставляет агенту набор действий, выполнив которые он может повлиять на нее. В ответ на действия агента среда может менять состояния. За эту связь отвечает функция перехода. Среда может возвращать и сигнал вознаграждения. За эту связь отвечает функция вознаграждения. Совокупность этих двух функций называется моделью среды.
Обычно у среды есть четко определенная задача, которая формируется через функцию вознаграждения. Сигналы этой функции могут быть одновременно последовательными, оценочными и выборочными. Для достижения поставленной цели агент должен продемонстрировать интеллект или хотя бы когнитивные способности, связанные с ним: долгосрочное мышление, сбор информации и обобщение.
Работа агента проходит в три этапа: взаимодействие со средой, оценка ее поведения и улучшение ответов. Агент может быть предназначен для изучения связей между наблюдениями и действиями (такие связи называют правилами или стратегиями) или для изучения влияния модели среды. А с помощью функций ценности его можно научить оценивать и будущее вознаграждение.
Взаимодействие между агентом и средой продолжается несколько циклов — временных шагов. На каждом временном шаге агент наблюдает за средой, выполняет действие и получает новое наблюдение и награду. Совокупность состояния, действия, награды и нового состояния называется опытом. Любой опыт открывает возможность для обучения и улучшения производительности.
Задача, которую пытается выполнить агент, может иметь естественное завершение или не иметь его. Задачи с естественным завершением, такие как игры, называются эпизодическими, а без него, такие как обучение движению вперед, — непрерывными. Последовательность временных шагов от начала до завершения эпизодической задачи называется эпизодом. Чтобы научиться выполнять задачу, агенту может понадобиться несколько временных шагов и эпизодов. Агенты обучаются методом проб и ошибок: они пытаются что-то сделать, наблюдают результат, делают вывод, пробуют что-то другое и т.д.
Этот цикл мы подробно рассмотрим в главе 4 на примере среды с одношаговыми эпизодами. Начиная с главы 5, вы будете иметь дело со средами, которые требуют больше одного цикла взаимодействия в каждом эпизоде.
У выполняемого агентом действия могут быть отложенные последствия. Вознаграждение может быть скудным и проявляться только через несколько временных шагов. Поэтому агент должен уметь учиться на последовательной обратной связи. Она лежит в основе так называемой временной задачи присваивания коэффициентов доверия — в определении того, какое состояние и/или действие привело к получению вознаграждения. Когда у задачи есть временная составляющая, а у действия — отложенные последствия, наградам сложно присвоить коэффициенты доверия.
В главе 3 мы отдельно изучим все тонкости последовательной обратной связи. То есть ваши программы будут учиться на одновременно последовательной, контролируемой (в отличие от оценочной) и исчерпывающей (в отличие от выборочной) обратной связи.
Агенту может быть недостаточно полученного вознаграждения — оно может не повлиять на процесс обучения. Награда может указывать на качество, а не на корректность: то есть она может не нести в себе информации о других потенциальных вознаграждениях. В связи с этим агент должен быть способен учиться на оценочной обратной связи. Такая обратная связь порождает потребность в исследовании. Агент должен уметь находить баланс между сбором новой информации и использованием уже имеющейся. Это называют компромиссом между разведкой и эксплуатацией.
В главе 4 мы отдельно изучим все тонкости оценочной обратной связи. То есть ваши программы будут обучаться на одновременно одинарной (в отличие от последовательной), оценочной и исчерпывающей (в отличие от выборочной) обратной связи.
Получаемая агентом награда — просто образец. В действительности у агента нет доступа к функции вознаграждения. К тому же состояние и пространство действий обычно довольно большие или даже бесконечные, что затрудняет обучение с использованием рассеянной и слабой обратной связи. Поэтому агент должен быть способен обобщать и учиться на выборочной обратной связи.
Агенты для аппроксимации правил называются ориентированными на правила, для аппроксимации функций ценности — ценностно ориентированными, для аппроксимации моделей — модельно-ориентированными, а агенты для аппроксимации и правил, и функций ценности называются «актеры-критики». Агенты могут предназначаться для аппроксимации одного из этих компонентов или сразу нескольких.
Агент может аппроксимировать функции с помощью разных методов и подходов, от деревьев принятия решений до SVM и нейросетей. Но в этой книге мы ограничимся только последними. В конце концов, именно они делают RL глубоким. Такое решение подходит не для всех задач: нейросети требовательны к данным и сложны для интерпретации — помните об этом. Но на сегодня это один из самых действенных способов аппроксимации функций, который часто показывает непревзойденную производительность.
Искусственная нейронная сеть (ИНС) — это многоуровневый аппроксиматор нелинейных функций, отдаленно напоминающий биологические нейросети в мозге животного. ИНС — это не алгоритм, а структура, состоящая из нескольких слоев математических преобразований, применяемых к входным значениям.
Главы 3–7 посвящены только задачам, в которых агенты обучаются на исчерпывающей (а не выборочной) обратной связи. В главе 8 мы впервые рассмотрим полную задачу DRL: использование нейросетей для обучения агента на выборочной обратной связи. Помните, что связь, на которой обучаются агенты DRL, одновременно последовательная, оценочная и выборочная.
Для приобретения навыков не обязательно углубляться в историю, но, зная ее, вы сможете лучше вникнуть в контекст изучаемой темы. Это может повысить вашу мотивацию и улучшить ваши навыки. Ознакомившись с историей ИИ и DRL, вы поймете, чего можно ожидать от этой перспективной технологии в будущем. Иногда мне кажется, что такое количество внимания ИИ идет только на пользу, привлекая людей. Но, когда пора приниматься за работу, ажиотаж утихает, и это проблема. Я не против того, чтобы люди восторгались ИИ, но мне хочется, чтобы их ожидания были реалистичными.
История DRL началась очень давно. Еще в древности люди задумывались о возможности существования разумных созданий, помимо людей. Но отправной точкой можно считать работы Алана Тьюринга (Alan Turing) в 1930–1950 годах, проложившие путь к современной информатике и ИИ и послужившие основой для последующих научных изысканий в этой области.
Самый известный пример его трудов — тест, который предлагает стандартный подход к оценке компьютерного интеллекта: если в ходе сеанса вопросов/ответов наблюдателю не удается отличить компьютер от человека, первый считается разумным. Несмотря на свою примитивность, тест Тьюринга позволил целым поколениям размышлять о возможности создания разумных машин, определив цель, на которую могут ориентироваться исследователи.
Формальное начало ИИ как академической дисциплины можно отнести к Джону Маккарти (John McCarthy), влиятельному исследователю ИИ, который внес заметный вклад в эту область. В 1955 году Маккарти впервые предложил термин «искусственный интеллект», в 1956-м — возглавил конференцию по ИИ, в 1958-м — изобрел язык программирования Lisp, а в 1959-м — стал соучредителем лаборатории MIT, которая занимается исследованием ИИ. Несколько десятилетий он публиковал важные научные работы, способствовавшие развитию ИИ как области научных исследований.
Вся та работа и прогресс, которые наблюдались на ранних этапах развития ИИ, вызывали большой интерес, но не обошлось и без серьезных неудач. Известные исследователи высказывались о том, что человекоподобный компьютерный интеллект появится в течение нескольких лет, но этого так и не произошло. Ситуация усугубилась, когда знаменитый ученый Джеймс Лайтхилл (James Lighthill) составил отчет, в котором раскритиковал положение дел в академическом исследовании ИИ. Все это привело к началу длинного периода, на протяжении которого исследования в этой области испытывали сокращение финансирования и общественного интереса, — к зиме искусственного интеллекта.
На протяжении многих лет в области изучения ИИ сохранялась такая картина: исследователи добивались успехов, что порождало чрезмерный оптимизм и завышенные ожидания со стороны общества и в итоге приводило к сокращению финансирования от правительства и отраслевых партнеров.
Скорее всего, мы переживаем еще один весьма оптимистичный период в истории ИИ, поэтому должны сохранять бдительность. Те, кто применяет ИИ на практике, понимают, что это мощный инструмент, но некоторые люди считают ИИ волшебным ящиком, который может принять любую задачу и выдать лучшее возможное решение. Это не так. Кто-то даже выражает реальные опасения по поводу того, что у ИИ может пробудиться сознание. Вот что сказал Эдсгер В. Дейкстра (Edsger W. Dijkstra) по этому поводу: «Вопрос о том, может ли компьютер мыслить, ничуть не интересней вопроса о том, может ли подводная лодка плавать».
Но если не брать во внимание эту «голливудскую» версию ИИ, последний прогресс в этой области вселяет оптимизм. На сегодня самые влиятельные компании в мире делают крупные инвестиции в исследование искусственного интеллекта. Google, Facebook, Microsoft, Amazon и Apple вкладывают много средств в эту область и отчасти обязаны ей своей высокой прибыльностью. Существенные и стабильные инвестиции создали идеальные условия для текущих темпов исследования ИИ. Ученые имеют доступ к самым мощным компьютерам и огромным объемам данных. Команды ведущих исследователей работают совместно над одними и теми же задачами. Область ИИ стала более стабильной и продуктивной. Мы наблюдаем один успех за другим, и в ближайшем будущем эта тенденция лишь усилится.
Искусственные нейросети начали применять для выполнения задач RL в 1990-х. Классический пример — программа для игры в нарды, TD-Gammon, созданная Джеральдом Тезауро (Gerald Tesauro) и др. Чтобы освоить нарды, она сначала научилась самостоятельно оценивать позиции на доске с помощью RL. И хотя методики, реализованные в TD-Gammon, — это не совсем DRL, программа стала одним из первых случаев успешного применения ИНС для решения сложных задач RL.
В 2004 году Эндрю Ын (Andrew Ng) и др. разработали автономный вертолет, который самостоятельно обучался трюкам высшего пилотажа, часами наблюдая за полетами опытных пилотов. При разработке была применена методика обратного обучения с подкреплением, при которой агент учится на демонстрациях специалистов. В том же году Нейт Кохл (Nate Kohl) и Питер Стоун (Peter Stone) применили категорию методов DRL, известную как градиент политик, чтобы создать робота, который играет в футбол, для турнира RoboCup. Для обучения агента движению вперед ученые использовали RL. Спустя всего три часа этот робот научился двигаться вперед быстрее, чем любой другой с той же аппаратной начинкой.
В 2000-х были и другие успехи, но по-настоящему область DRL начала развиваться только с 2010 года, когда произошел всплеск популярности глубокого обучения. В 2013 и 2015 годах Мних (Mnih) и др. опубликовали несколько научных работ с описанием алгоритма DQN (Deep Q-Learning), который учился играть в приставку Atari по одним лишь пикселям на экране. Используя сверточную нейросеть (convolutional neural network, CNN) и единый набор гиперпараметров, алгоритм DQN превзошел профессиональных игроков в 22 играх из 49.
Это достижение положило начало революции в сообществе DRL: в 2014 году Сильвер (Silver) и др. выпустили алгоритм градиента по детерминированным политикам(deterministic policy gradient, DPG), а уже через год Лилликрап (Lillicrap) и др. представили его улучшенную, глубокую версию (deep deterministic policy gradient, DDPG). В 2016 году Шульман (Schulman) и др. предложили методы оптимизации стратегий в доверительной области (trust region policy optimization, TRPO) и обобщенной оценки преимущества (generalized advantage estimation, GAE). Сергей Левин (Sergey Levine) и др. опубликовали управляемый поиск политик1 (Guided Policy Search, GPS), а Сильвер и др. показали AlphaGo в этом же году и AlphaZero в следующем. В этот период появилось много других алгоритмов: двойные глубокие Q-сети (double deep Q-networks, DDQN), приоритетное воспроизведение опыта (prioritized experience replay, PER), оптимизация проксимальной политики (proximal policy optimization, PPO), «актер-критик» с воспроизведением опыта (actor-critic with experience replay, ACER), асинхронное преимущество «актер-критик» (asynchronous advantage actor-critic, A3C), преимущество «актер-критик» (advantage actor-critic, A2C), «актер-критик» с использованием области доверия с коэффициентом Кронекера (actor-critic using Kronecker-factored trust region, ACKTR), Rainbow («Радуга»), Unicorn («Единорог») (это, кстати, настоящие названия) и т.д. В 2019 году Ориол Виньялс (Oriol Vinyals) и др. показали агент AlphaStar, способный обыгрывать профессиональных игроков в StarCraft II. Спустя несколько месяцев Якуб Пахоцки (Jakub Pachocki) и др. наблюдали за тем, как их команда ботов для игры в Dota 2 под названием Five стала первым ИИ, победившим чемпионов мира по киберспорту.
Благодаря прогрессу DRL за последние два десятилетия мы прошли путь от нард с 1020 состояниями полной информации до игры го или, что еще лучше, StarCraft II, в которых таких состояний 10170 и 10270 соответственно. Сложно представить более удачный момент для того, чтобы начать знакомство с этой областью. Подумайте только, что может произойти за следующие 20 лет! Хотите быть причастны к этому? Область DRL сейчас на подъеме, и я ожидаю, что она продолжит бурно развиваться.
Я считаю, что ИИ — это область с неограниченным потенциалом для позитивных изменений, независимо от того, что говорят паникеры. Начало промышленной революции в 1750-х вызвало настоящий хаос: мощные механизмы приходили на смену однообразному физическому труду, безжалостно вытесняя людей с их рабочих мест. Это не могло не волновать: машины работали быстрее, эффективней и экономили средства. «Они лишат нас работы. Как мы теперь будем зарабатывать на жизнь?» Все опасения оправдались. Но факт в том, что многие из этих видов работ были не только изнурительными, но и опасными.
Спустя век после промышленной революции стало очевидно, что долгосрочные последствия этих изменений пошли обществу на пользу. Люди, у которых раньше было лишь несколько рубашек и пара штанов, могли купить намного больше вещей по более низким ценам. Да, изменения давались тяжело, но в конечном счете они сделали мир лучше.
Появление персональных компьютеров в 1970-х ознаменовало начало цифровой революции. Затем наши жизни изменил Интернет. Благодаря ему мы получили большие данные (big data) и облачные вычисления. На этой благодатной почве взошло машинное обучение в его нынешнем виде. Возможно, в следующие пару десятилетий будет сложно принять изменения, которые повлечет за собой ИИ, и его влияние на общество, но долгосрочные последствия легко перевесят любые препятствия, возникающие на этом пути. Я ожидаю, что в обозримом будущем людям даже не придется работать, чтобы себя прокормить, одеться или иметь крышу над головой, так как все эти вещи будут автоматически производиться искусственным интеллектом. Мы будем жить в изобилии.
Поскольку мы продолжаем повышать уровень машинного интеллекта, некоторые исследователи считают, что это может привести к появлению ИИ, превосходящего человеческий. На этом этапе мы можем столкнуться с таким явлением, как сингулярность: искусственный интеллект, превосходящий человеческий, позволит совершенствовать технологию ИИ куда более быстрыми темпами, так как у цикла самосовершенствования больше не будет слабого звена — человека. Но здесь следует проявить благоразумие, так как это скорее идеал, чем практический аспект, о котором нужно переживать.
Конечно, мы должны осознавать последствия развития ИИ и нам нужно стремиться сделать его безопасным, но на сегодняшний день сингулярность не проблема. В этой книге вы узнаете о множестве реальных проблем, свойственных DRL в его текущем состоянии. Именно на них и следует сосредоточиться.
Любую задачу ML можно сформулировать в контексте DRL, но по многим причинам это не всегда уместно. Вы должны понимать плюсы и минусы DRL в целом и уметь определять, для каких задач и условий оно подходит, а для каких — нет.
Не углубляясь в технические детали, подумайте о неизбежных плюсах и минусах использования DRL в вашем следующем проекте. Как вы потом поймете, каждый из обсуждаемых здесь аспектов может быть как положительным, так и отрицательным, в зависимости от решаемой задачи. Например, эта область сводится к тому, чтобы передать управление машине. Хорошо это или плохо? Готовы ли вы позволить компьютеру принимать решения за вас? Неспроста в качестве среды исследования DRL часто выбирают игры: обучать агентов в реальных условиях было бы дорого и опасно. Можете себе представить агента для управления автомобилем, который учится не попадать в аварии методом проб и ошибок? В DRL агенты должны ошибаться. Вы можете себе это позволить? Готовы ли вы принять риск отрицательных последствий (с реальным ущербом) для людей? Подумайте об этом, прежде чем браться за свой следующий проект на основе DRL.
Вам нужно подумать и о том, как ваш агент будет познавать среду. Например, в большинстве ценностно ориентированных методов для этого предусмотрен случайный выбор действия. Но есть и методы с более стратегическим подходом к познанию. У каждого варианта свои преимущества и недостатки, и вам часто придется идти на компромисс.
Наконец, обучение с нуля каждый раз может быть сложной задачей, занимающей много времени и ресурсов. Но есть несколько методов, которые помогут вам закрепить ранее полученные знания. Прежде всего, это трансферное обучение — перенос знаний из одних задач в другие. Например, чтобы научить робота пользоваться молотком и отверткой, можете взять низкоуровневые действия, освоенные в задаче «поднять молоток», и применить этот опыт для выполнения задачи «поднять отвертку». Для вас это должно звучать логично, ведь людям не приходится заново учиться простым движениям при выполнении каждой новой задачи. Во время обучения мы формируем иерархии действий, и область иерархического обучения с подкреплением пытается имитировать эту черту в агентах DRL.
Суть DRL в решении конкретных задач. В отличие от SL, цель которого — обобщение, RL хорошо себя проявляет в четко описанных условиях. Например, у каждой игры Atari есть определенная задача. Агенты DRL плохо справляются с обобщением поведения для решения разных проблем: агент, который обучается игре в Pong, не сможет играть в Breakout. И если вы попробуете научить его играть сразу в Pong и Breakout, он, скорее всего, будет показывать плохие результаты в обеих играх. С другой стороны, SL довольно хорошо классифицирует несколько объектов одновременно. Итак, сильная сторона DRL — решение отдельных, четко определенных задач.
В DRL мы используем методы обобщения для приобретения простых навыков на основе сенсорного ввода. Одни из важнейших улучшений за последние годы связаны с производительностью этих методов, с новыми приемами и рекомендациями по обучению глубоких сетей и т.д. К счастью для нас, большинство достижений в DL открывают новые направления исследований в области DRL.
Конечно, DRL нельзя назвать идеальным. Одна из главных проблем, с которыми вы столкнетесь, в том, что для формирования эффективных стратегий в большинстве задач агентам будут нужны миллионы образцов. Для сравнения: людям для обучения требуется лишь несколько взаимодействий. Оптимизация выборки — это, наверное, один из главных аспектов DRL, нуждающихся в улучшении. Это крайне важная тема, поэтому мы будем периодически к ней возвращаться.
Еще одна проблема DRL связана с функциями вознаграждения и пониманием его значения. Если специалист определяет награды, которые агент пытается максимизировать, означает ли это, что мы в каком-то смысле «контролируем» этого агента? И насколько этот фактор положительный? Должны ли появляться вознаграждения как можно чаще, что ускоряет процесс обучения, или как можно реже, что делает решения более захватывающими и уникальными?
У нас, у людей, нет четко определенной награды. Один и тот же человек может увидеть событие как в положительном, так и в отрицательном свете, просто изменив точку зрения. Кроме того, не так-то легко разработать функцию вознаграждения для такой задачи, как ходьба. Что в этом случае важнее: двигаться вперед или не упасть? Так какая же «идеальная» функция вознаграждения для ходьбы?!
Сейчас проводятся интересные исследования в области сигналов вознаграждения. Одно из особенно интригующих направлений называется «внутренняя мотивация». Она позволяет агенту исследовать новые действия без какой-либо конкретной причины, просто из любопытства. Агенты с внутренней мотивацией лучше обучаются в средах с редкими наградами, что позволяет находить интересные и уникальные решения. Суть в том, что попытки выполнить задачу, которая не была смоделирована или не имеет четкой функции вознаграждения, приведут к появлению проблем.
Обсудим еще один момент, который в дальнейшем будет играть существенную роль. Чего ожидать от этой книги? Для меня это очень важно. Я хочу, чтобы вы знали, на что рассчитывать, чтобы дальше не возникало никаких сюрпризов. Мне не хочется создавать у вас иллюзию того, что вы сумеете написать агент, который вас озолотит. Если бы все было так просто, я не стал бы писать эту книгу. Хочу предупредить, что если вы хотите чему-то научиться, то будьте готовы приложить необходимые усилия. Это обоюдный процесс: я постараюсь сделать материал понятным, а вы должны потрудиться над тем, чтобы его усвоить. Если какой-то материал покажется вам лишним и вы решите его пропустить, мы с вами окажемся в проигрыше.
С помощью книги я хочу превратить вас из любителя ML без опыта в области глубокого обучения с подкреплением в специалиста, способного разрабатывать передовые алгоритмы DRL.
В главах 3–7 вы познакомитесь с агентами, которые могут обучаться на последовательной и оценочной обратной связи, сначала изолированно, а затем в процессе взаимодействия. В главах 8–12 мы погрузимся в ключевые алгоритмы, методы и подходы к DRL. Первые две главы посвящены базовым понятиям DRL в целом, а последняя содержит заключительные замечания.
Я рассчитываю на то, что в первой половине книги (главы 3–7) вы освоите «табличное» обучение с подкреплением. То есть задачи RL, в которых можно провести исчерпывающую выборку и в которых вам не понадобятся нейросети или какая-либо аппроксимация функций. Глава 3 посвящена последовательному аспекту RL и временной задаче присваивания коэффициентов доверия. В главе 4 мы проанализируем (снова отдельно) трудности обучения на основе оценочной обратной связи и баланс между исследованием и эксплуатацией. Наконец, вы узнаете о методах, которые могут выполнить эти две задачи одновременно. В главе 5 будут представлены агенты, которые учатся оценивать результаты фиксированного поведения. В шестой главе речь пойдет об обучении, направленном на улучшение поведения, а в седьмой вы изучите методики, повышающие эффективность RL.
Вторая половина (главы 8–12) рассчитана на то, чтобы вы усвоили все тонкости ключевых алгоритмов DRL. Не сомневайтесь, мы как следует углубимся в эту тему. Вы узнаете о множестве разных типов агентов, от ориентированных на политику и ценность до методов «актер-критик». В главах 8–10 подробно рассматривается ценностно ориентированное DRL. В главе 11 вы познакомитесь с DRL, ориентированным на политику и использующим метод «актер-критик», а глава 12 посвящена градиенту по детерминированным политикам (deterministic policy gradient, DPG), мягкому методу «актер-критик» (soft actor-critic, SAC) и оптимизации проксимальной политики (proximal policy optimization, PPO).
Чтобы сделать сравнение и противопоставление агентов одного типа более наглядным, некоторые примеры в этих главах будут повторяться. Вы по-прежнему будете исследовать принципиально разные типы задач, от небольших непрерывных до пространств состояний на основе изображений и от дискретных до непрерывных пространств действий. Но основное внимание в этой книге уделяется не моделированию задач, требующему отдельных навыков, а поиску решений в готовых средах.
К желающим освоить глубокое обучение с подкреплением есть несколько требований. Во-первых, у вас уже должно быть некоторое представление об ML и DL. Во-вторых, вы должны ориентироваться в коде на языке Python и обладать базовыми математическими знаниями. Но, что важнее всего, будьте готовы прилагать усилия.
Я строю свое повествование, основываясь на том, что у читателя уже есть базовые знания об области машинного обучения. Вы должны уметь обучать простые модели SL, возможно, с использованием наборов данных Iris или Titanic; должны быть знакомы с такими понятиями DL, как тензоры и матрицы; у вас должен быть опыт обучения как минимум одной модели DL, например сверточной нейросети (CNN) с набором данных MNIST.
Все темы в этой книге посвящены DRL, и мы не будем рассматривать глубокое обучение отдельно. Есть много полезных ресурсов, которыми вы можете воспользоваться. Но опять же для этого вам нужно знать основы. Если вы уже обучали CNN, можете не волноваться. Если же нет, то прежде, чем переходить ко второй части этой книги, я настоятельно советую выполнить несколько практических упражнений по DL.
Я также рассчитываю на то, что вы ориентируетесь в коде на Python. Это наглядный и простой для восприятия язык программирования. Даже те, кто с ним не знаком, как правило, могут что-то понять, читая написанный на нем код. У вас не должно быть проблем с пониманием Python, так как вам придется читать код на нем. Те, кто будет игнорировать эту часть, многое потеряют.
В этой книге будет много математических уравнений, и это хорошо. Математика — идеальный язык, и ничто не сможет его заменить. Но я ожидаю от вас только умения ориентироваться в уравнениях и желание их читать — ничего больше. Всем уравнениям сопутствуют подробные аннотации, чтобы даже те, кто «не дружит с математикой», могли найти для себя что-то полезное.
Наконец, я ожидаю, что вы не прочь потрудиться — в том смысле, что вы действительно хотите изучить DRL. Если вы решите пропустить математическое уравнение, листинг кода на Python, раздел, страницу, главу или еще что-то, то упустите много полезной информации. Чтобы получить максимум от этой книги, я советую вам читать ее от начала и до конца. Несмотря на разный формат, иллюстрации и врезки — часть основного повествования.
Не забывайте также выполнять представленный здесь исходный код (в следующем разделе вы узнаете, как это делать) и экспериментировать с наиболее интересными для вас примерами.
Вместе с этой книгой вы получаете тщательно проверенную среду разработки и код для воспроизведения результатов. Я создал образ Docker и несколько блокнотов Jupyter, чтобы вам не пришлось возиться с установкой пакетов, настройкой ПО или копированием кода. От вас требуется лишь наличие Docker. Следуйте инструкциям по выполнению кода на странице https://github.com/mimoralea/gdrl. Они довольно простые.
Код написан на Python с активным использованием NumPy и PyTorch. Я выбрал PyTorch вместо Keras и TensorFlow, так как эта библиотека кажется мне более подходящей для применяемого языка. Если вы уже работаете с NumPy, использовать PyTorch вам будет несложно, чего нельзя сказать о пакете TensorFlow, который выглядит как совершенно отдельная парадигма программирования. Я не хочу сказать, что какой-то из этих инструментов хуже. Просто, по моему опыту работы с этими двумя библиотеками, PyTorch гораздо лучше подходит для проведения исследований и обучения.
DRL — это алгоритмы, методы, приемы, трюки и т.д., поэтому переписывание библиотек NumPy или PyTorch было бы бессмысленным. Но в то же время мы будем создавать алгоритмы DRL с нуля. Я не стану учить вас использовать библиотеки DRL вроде Keras-RL, Baselines или RLlib. Я хочу, чтобы вы овладели DRL, поэтому код мы будем писать вручную. Я много лет преподаю RL и могу сказать, что у тех, кто пишет код, больше шансов на то, чтобы понять обучение с подкреплением. Но эта книга вовсе не о PyTorch: здесь вы не найдете отдельного обзора этой библиотеки. Мы будем рассматривать только код, написанный с ее использованием. Если вам знакомы некоторые концепции глубокого обучения, вы сможете понять код из этой книги. Не волнуйтесь, вам не нужно изучать PyTorch отдельно. Постепенно я буду давать вам всю необходимую информацию.
Что касается сред для обучения агентов, то мы будем использовать популярный пакет OpenAI Gym и несколько библиотек, которые я разработал для этого пособия. Но мы опять же не станем вникать во все тонкости Gym. Вам достаточно знать, что эта библиотека предоставляет среды для обучения агентов RL. Не забывайте, что нас в первую очередь интересуют алгоритмы RL (решения), а не среды или задачи моделирования, которые, конечно, тоже очень важны.
Если вы знакомы с глубоким обучением, то, скорее всего, знаете, что такое графический процессор (graphics processing unit, GPU). Архитектуры DRL не нуждаются в вычислениях на том уровне, который обычно встречается в моделях DL. Поэтому использовать GPU хоть и полезно, но в нашем случае не нужно.
С другой стороны, в отличие от моделей DL, некоторые агенты DRL сильно нагружают центральный процессор (ЦП) и состоят из множества потоков. Если вы планируете приобрести новый компьютер, обратите внимание на производительность (а точнее, на количество ядер) ЦП. Позже вы увидите, что некоторые алгоритмы активно распараллеливают вычисления, и слабым местом в этом случае будет именно центральный, а не графический процессор. Но примеры кода будут хорошо работать в контейнере независимо от аппаратной начинки вашего компьютера. Если же ваши аппаратные ресурсы крайне ограниченны, можете обратить внимание на облачные платформы. Некоторые сервисы вроде Google Colab предлагают бесплатное оборудование для глубокого обучения.
Освоить глубокое обучение с подкреплением нелегко, так как агенты должны учиться на одновременно последовательной, оценочной и выборочной обратной связи. Использование последовательной обратной связи вынуждает агента учиться находить баланс между ближайшими и долгосрочными целями, использование оценочной — учиться балансировать между сбором и использованием информации, а выборочной — обобщать старый и новый опыт.
Обучение с подкреплением относится к искусственному интеллекту — разделу информатики, посвященному созданию программ, которые проявляют интеллект, подобный человеческому. Это общая цель и для многих других дисциплин, таких как теория управления и исследование операций. Один из самых популярных и успешных подходов к искусственному интеллекту — машинное обучение, состоящее из трех основных направлений: обучения с подкреплением, контролируемого и неконтролируемого обучения. Так как глубокое обучение — это один из подходов к ML, у него нет конкретного направления, но его мощь способствует развитию всей сферы.
Глубокое обучение с подкреплением включает в себя использование нескольких слоев мощных аппроксиматоров функций, известных как нейросети, для выполнения сложных последовательных задач принятия решений в условиях неопределенности. Этот подход показывает хорошие результаты в задачах, связанных с управлением, но к принятию критически важных решений без участия человека нужно относиться серьезно. На сегодняшний день глубокое обучение с подкреплением нуждается в более безопасных алгоритмах с повышенной дискретизацией и эффективными стратегиями исследования.
Но будущее DRL довольно безоблачно. По мере взросления этой технологии ее могут поджидать опасности, но сейчас важно лишь то, что у нее большой потенциал. Ступая на этот путь, вы должны чувствовать воодушевление и желание проявить себя с лучшей стороны. Возможность внести свой вклад в потенциальные изменения такого масштаба выпадает нечасто. Вы должны быть благодарны за то, что вам посчастливилось жить в такое время. Давайте же станем частью этих перемен.
На этом этапе вы:
• понимаете, что такое глубокое обучение с подкреплением и как оно соотносится с другими подходами к машинному обучению;
• знаете о последних достижениях в области глубокого обучения с подкреплением и осознаете, что его можно применить к широкому спектру задач;
• знаете, чего ожидать от книги и как извлечь из нее максимум пользы.
Не стыдно затвитить
Делитесь своими успехами
В конце каждой главы я буду предлагать несколько идей о том, как вывести полученные вами знания на новый уровень. Если хотите, можете поделиться своими результатами со всем миром. И не забывайте знакомиться с успехами других читателей. Это отличный шанс, и я надеюсь, что вы им воспользуетесь.
• #gdrl_ch01_tf01. Контролируемое, неконтролируемое обучение и обучение с подкреплением — это ключевые направления машинного обучения. Вам нужно знать не только их отличия, но и то, что их объединяет. Запишите краткий сравнительный анализ этих подходов и предложите варианты их совместного использования для выполнения задачи в области ИИ. Все они преследуют одну цель: создание сильного искусственного интеллекта. Мы должны стремиться к тому, чтобы максимально эффективно использовать доступные нам инструменты.
• #gdrl_ch01_tf02.