python

«Глубокое обучение с подкреплением. AlphaGo и другие технологии»: анонс книги

  • воскресенье, 3 ноября 2019 г. в 00:23:59
https://habr.com/ru/company/piter/blog/474276/
  • Блог компании Издательский дом «Питер»
  • Python
  • Математика
  • Профессиональная литература
  • Машинное обучение


Всем привет!

У нас доступна для предзаказа одна из лучших книг по обучению с подкреплением, в оригинале именуемая "Deep Reinforcement Learning Hands-on" под авторством Максима Лапаня. Вот как будет выглядеть обложка русского перевода:



Чтобы вы могли оценить краткое содержание книги, предлагаем вам перевод обзора, написанного автором к выходу оригинала.


Привет!

Я – энтузиаст-самоучка, увлекающийся глубоким обучением. Поэтому, когда со мной связались представители издательства «Packt», предложившие написать практичную книгу о современном состоянии глубокого обучения с подкреплением, мне было немного боязно, но после некоторых колебаний я согласился, оптимистично предполагая: «о, будет же интересный опыт».
Не скажу, что эта работа далась мне как легкая прогулка, конечно нет. Никаких тебе выходных, никакого свободного времени, постоянный страх «сморозить глупость» и погоня за дедлайнами по каждой главе (две недели на главу и код примеров). Однако, в целом все прошло позитивно и очень интересно.

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



Может быть, что-то еще было, но важнейшими источниками информации были именно эти. Все они очень далеки от практики:

  • Книга Саттона и Барто, также известная под названием “The RL book”, дает лишь теоретические основы этой дисциплины.
  • Статьи на тему RL публикуются почти ежедневно, но по-прежнему редко содержат ссылки на конкретный код. Только формулы и алгоритмы. Если вам повезет – будут указаны гиперпараметры.
  • Курс Дэвида Силвера преподавали в Университетском колледже Лондона (UCL) в 2015 году. Там дается очень хороший обзор методов, существовавших на тот момент, позволяющий их интуитивно освоить, однако, здесь теория вновь преобладает над практикой.


В то же время, меня очень зацепила статья DeepMind (“Нейронная сеть может по пикселям обучиться играть в игры Atari! ВАУ!”), и я чувствовал, что за этой сухой теорией скрывается огромная практическая ценность. Итак, я потратил очень много времени на изучение теории, реализуя различные методы и занимаясь их отладкой. Как вы, вероятно, догадываетесь, это было непросто: можно потратить пару недель на оттачивание метода, а затем обнаружить, что ваша реализация неверна (или, того хуже, вы неправильно поняли формулу). Я не считаю такое обучение тратой времени – напротив, я думаю, что это самый правильный способ изучить что-либо. Однако, на это требуется масса времени.

Два года спустя, когда я приступил к работе над текстом, моя основная цель была такова: дать основательную практичную информацию по методам RL читателю, который только знакомится с этой увлекательной дисциплиной – как я когда-то.

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

В то же время, предполагается, что читатель обладает базовыми знаниями глубокого обучения и статистики. В книге есть глава с обзором библиотеки PyTorch (так как все примеры даны с использованием PyTorch), но эту главу нельзя считать самодостаточным источником информации по нейронным сетям. Если вы раньше никогда не слышали о функциях потерь и активации – начните с изучения других книг, сегодня их много. (Прим. пер.: например, книга "Глубокое обучение").

В моей книге вы найдете массу примеров различной сложности, начиная с самых простых (метод CrossEntropy в среде CartPole содержит ~100 строк на python), заканчивая немаленькими проектами, например, изучением AlphGo Zero или агента RL для торговли на бирже. Код примеров полностью выложен на GitHub, всего там более 14k строк кода на Python.

Книга состоит из 18 глав, охватывающих наиболее важные аспекты современного глубокого обучения с подкреплением:

  • Глава 1: содержит вводную информацию о парадигме обучения с подкреплением, демонстрирует, чем она отличается от обучения с учителем и без учителя. Здесь рассмотрена центральная математическая модель, относящаяся к обучению с подкреплением: марковские процессы принятия решений: (МППР). Знакомство с МППР сделано пошаговым: я рассказываю о марковских цепях, которые преобразуются в марковские процессы подкрепления (с добавлением компонента подкрепления) и, наконец, в полноценные марковские процессы принятия решений, где в общей картине учитываются еще и действия агента.
  • Глава 2: рассказывает об OpenAI Gym, обобщающем API для RL, рассчитанном на работу в разнообразных окружениях, в том числе, в Atari, решение классических задач, например, CartPole, задач непрерывного обучения и др.
  • Глава 3: дает экспресс-обзор PyTorch API. Эта глава не задумывалась как полноценное руководство по DL, однако, она закладывает основу для понимания дальнейших глав. Если вы пользуетесь другим инструментарием для решения задач глубокого обучения, то она должна послужить хорошим введением в красивую модель PyTorch, чтобы вам было проще понять примеры из следующих глав. В конце этой главы мы обучим простую GAN, которая будет генерировать и различать скриншоты Atari из разных игр.
  • Глава 4: рассматривает один из простейших и при этом весьма мощных методов: CrossEntropy. В этой главе мы обучим первую сеть, которая сможет решать задачи в окружении CartPole.
  • Глава 5: С этой главы начинается вторая часть книги, посвященная алгогритму итерации по значениям. В главе 5 разобран простой способ табличного обучения с использованием уравнения Беллмана для решения задач в окружении FrozenLake.
  • Глава 6: В этой главе мы знакомимся с сетями DQN, которые играют в игру Atari. Архитектура агента точно такая же, как и в знаменитой статье DeepMind.
  • Глава 7: рассматривает несколько современных расширений DQN, помогающих повысить стабильность и производительность базовой DQN. В этой главе проработаны методы из статьи “Rainbow: Combining improvements in Deep RL”; все эти методы в главе реализованы, причем, я объясняю лежащие в их основе идеи. Вот эти методы: N-шаговый DQN, двойной DQN, шумные сети, буфер приоритетного воспроизведения, дуэльные сети и сети категорий. В конце главы все методы объединены в общий пример кода, точно как это сделано в «радужной статье».
  • Глава 8: описывает первый проект среднего размера, иллюстрирующий практическую сторону RL при решении реальных задач. В этой главе при помощи DQN обучается агент для совершения операций на бирже.
  • Глава 9: с этой главы начинается третья часть книги, посвященная методам градиентов политик. В ней мы знакомимся с такими методами, их сильными и слабыми сторонами в сравнении с уже рассмотренными выше методами перебора по значениями. Первый метод из данного семейства называется REINFORCE.
  • Глава 10: описывает, как бороться с одной из наиболее серьезных проблем RL: изменчивостью градиента политик. После экспериментов с базовыми уровнями PG вы познакомитесь с методом «актор-критик».
  • Глава 11: рассказывает о том, как распараллелить метод «актор-критик» на современном аппаратном обеспечении.
  • Глава 12: второй практический пример, описывающий решение задач, связанных с обработкой естественного языка. В этой главе мы обучаем простой чатбот использовать методы RL на материале корнеллского корпуса кинодиалогов.
  • Глава 13: еще один практический пример, посвященный автоматизации в Вебе: в качестве платформы используется MiniWoB. К сожалению, OpenAI отказался от использования MiniWoB, поэтому найти информацию о ней сложно (вот и вот кое-какие крупицы). Но сама идея MiniWoB – блестящая, поэтому в данной главе я показываю, как настроить и обучить агент решению некоторых задач, связанных с ней.
  • Глава 14: с нее начинается последняя, четвертая часть книги, посвященная более продвинутым методам и приемам. Глава 14 посвящена задачам непрерывного управления и описывает методы A3C, DDPG и D4PG для решения задач в некоторых окружениях PyBullet.
  • Глава 15: подробнее рассказывает о проблемах непрерывного управления и знакомит вас с феноменом доверительной области (Trust region) на примерах методов TRPO, PPO и ACKTR.
  • Глава 16: посвящена методам обучения с подкреплением без градиентов (работающим по принципу «черный ящик»); они позиционируются как более масштабируемые альтернативы для методов DQN и PG. Эволюционные стратегии и генетические алгоритмы применены здесь для решения нескольких задач непрерывного управления.
  • Глава 17: рассматривает подходы к RL на основе моделей и описывает попытку DeepMind заполнить пробел между методами на основе моделей и без применения моделей. В этой главе реализован агент I2A для игры Breakout.
  • Глава 18: В последней главе книги рассмотрен метод AlphaGo Zero, применяемый при игре в Connect4. Затем готовый агент используется в составе телеграм-бота для проверки результатов.



Вот и все! Надеюсь, книга вам понравится.