Алгоритмы обучения с подкреплением на Python
Описание и разработка алгоритмов искусственного интеллекта
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Автор:
Лонца Андреа
Перевод:
Слинкин Алексей Александрович
Год издания: 2020
Кол-во страниц: 286
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-855-5
Артикул: 748353.01.99
Доступ онлайн
В корзину
Эта книга поможет читателю овладеть алгоритмами обучения с подкреплением (ОП) и научиться реализовывать их при создании самообучающихся агентов. В первой части рассматриваются различные элементы ОП, сфера его применения, инструменты, необходимые для работы в среде ОП. Вторая и третья части посвящены непосредственно алгоритмам. В числе прочего автор показывает, как сочетать Q-обучение с нейронными сетями для решения сложных задач, описывает методы градиента стратегии, TRPO и РРО, позволяющие повысить производительность и устойчивость, а также детерминированные алгоритмы DDPG и TD5. Читатель узнает о том, как работает техника подражательного обучения, познакомится с алгоритмами исследования на базе верхней доверительной границы (UCB и UCB1) и метаалгоритмом ESBAS.
Издание предназначено для тех, кто интересуется исследованиями в области искусственного интеллекта, применяет в работе глубокое обучение или хочет освоить обучение с подкреплением с нуля. Обязательное условие - владение языком Python на рабочем уровне.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Андреа Лонца Алгоритмы обуче ния с подкреплением на Python
Reinforcement Learning Algorithms with Python Learn, understand, and develop smart algorithms for addressing AI challenges Andrea Lonza BIRMINGHAM - MUMBAI
Алгоритмы обуче ния с подкреплением на Python Описание и разработка алгоритмов искусственного интеллекта Андреа Лонца Москва, 2020
УДК 004.85 ББК 32.971.3 Л76 Лонца А. Л76 Алгоритмы обуче ния с подкреплением на Python / пер. с англ. А. А. Слинкина. – М.: ДМК Пресс, 2020. – 286 с.: ил. ISBN 978-5-97060-855-5 Эта книга поможет читателю овладеть алгоритмами обучения с подкреплением (ОП) и научиться реализовывать их при создании самообучающихся агентов. В первой части рассматриваются различные элементы ОП, сфера его применения, инструменты, необходимые для работы в среде ОП. Вторая и третья части посвящены непосредственно алгоритмам. В числе прочего автор показывает, как сочетать Q-обучение с нейронными сетями для решения сложных задач, описывает методы градиента стратегии, TRPO и PPO, позволяющие повысить производительность и устойчивость, а также детерминированные алгоритмы DDPG и TD3. Читатель узнает о том, как работает техника подражательного обучения, познакомится с алгоритмами исследования на базе верхней доверительной границы (UCB и UCB1) и метаалгоритмом ESBAS. Издание предназначено для тех, кто интересуется исследованиями в области искусственного интеллекта, применяет в работе глубокое обучение или хочет освоить обучение с подкреплением с нуля. Обязательное условие – владение языком Python на рабочем уровне. УДК 004.85 ББК 32.971.3 First published in the English language under the title ‘Reinforcement Learning Algorithms with Python. Russian language edition copyright © 2020 by DMK Press. All rights reserved. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-1-78913-111-6 (англ.) Copyright © Packt Publishing 2019 ISBN 978-5-97060-855-5 (рус.) © Оформление, издание, перевод, ДМК Пресс, 2020
Спасибо, папа и мама, что открыли мне свет, именуемый жизнью, и всегда были рядом. Фред, ты крутой чувак. Ты всегда понуждаешь меня сделать больше. Спасибо, брат!
Содержание Об авторе ...........................................................................................................12 Предисловие ....................................................................................................13 Часть I. АЛГОРИТМЫ И ОКРУЖАЮЩИЕ СРЕДЫ .......................18 Глава 1. Ландшафт обуче ния с подкреплением ................................19 Введение в ОП .......................................................................................................20 Сравнение ОП и обучения с учителем ............................................................22 История ОП .......................................................................................................23 Глубокое обуче ние ............................................................................................25 Элементы ОП ........................................................................................................26 Стратегия ..........................................................................................................26 Функция ценности ............................................................................................28 Вознаграждение ................................................................................................29 Модель ...............................................................................................................30 Применение ОП ....................................................................................................30 Игры ...................................................................................................................30 Робототехника и индустрия 4.0 .......................................................................31 Машинное обуче ние .........................................................................................32 Экономика и финансы .....................................................................................32 Здравоохранение ..............................................................................................32 Интеллектуальные транспортные системы ....................................................33 Оптимизация энергопотребления и умные сети электроснабжения ...........33 Резюме ...................................................................................................................33 Вопросы .................................................................................................................33 Для дальнейшего чтения ......................................................................................34 Глава 2. Реализация цикла ОП и OpenAI Gym .....................................35 Настройка окружающей среды ............................................................................36 Установка OpenAI Gym .....................................................................................36 Установка Roboschool .......................................................................................37 OpenAI Gym и цикл ОП .........................................................................................37 Разработка цикла ОП ........................................................................................38 Привыкаем к пространствам ...........................................................................41 Разработка моделей МО с помощью TensorFlow ................................................42 Тензоры .............................................................................................................43 Создание графа .................................................................................................45 Простой пример линейной регрессии ............................................................46
Содержание 7 Введение в TensorBoard ........................................................................................49 Типы окружающих сред ОП .................................................................................51 Зачем нужны различные среды? .....................................................................51 Окружающие среды с открытым исходным кодом ........................................52 Резюме ...................................................................................................................54 Вопросы .................................................................................................................55 Для дальнейшего чтения ......................................................................................55 Глава 3. Решение задач методом динамического программирования ........................................................................................56 МППР .....................................................................................................................56 Стратегия ..........................................................................................................58 Доход .................................................................................................................58 Функции ценности ...........................................................................................59 Уравнение Беллмана ........................................................................................60 Классификация алгоритмов ОП ..........................................................................61 Безмодельные алгоритмы ................................................................................62 Алгоритмы ОП, основанные на модели ..........................................................63 Разнообразие алгоритмов ................................................................................64 Динамическое программирование .....................................................................64 Оценивание и улучшение стратегии...............................................................65 Итерация по стратегиям ..................................................................................66 Итерация по ценности .....................................................................................70 Резюме ...................................................................................................................72 Вопросы .................................................................................................................73 Для дальнейшего чтения ......................................................................................73 Часть II. БЕЗМОДЕЛЬНЫЕ АЛГОРИТМЫ ОП .................................74 Глава 4. Применение Q-обуче ния и алгоритма SARSA ...................75 Обучение без модели............................................................................................76 Порядок действий.............................................................................................76 Оценивание стратегии .....................................................................................77 Проблема исследования ...................................................................................77 TD-обуче ние ..........................................................................................................78 TD-обновление .................................................................................................79 Улучшение стратегии .......................................................................................79 Сравнение методов Монте-Карло и TD-методов ...........................................79 SARSA .....................................................................................................................80 Алгоритм ...........................................................................................................80 Применение SARSA к игре Taxi-v2 ......................................................................81 Q-обуче ние ............................................................................................................86 Теория ................................................................................................................86 Алгоритм ...........................................................................................................87 Применение Q-обуче ния к игре Taxi-v2 .............................................................87 Сравнение SARSA и Q-обуче ния......................................................................89
Содержание Резюме ...................................................................................................................91 Вопросы .................................................................................................................92 Глава 5. Глубокая Q-сеть ..............................................................................93 Глубокие нейронные сети и Q-обуче ние ............................................................93 Аппроксимация функций ................................................................................94 Q-обуче ние с нейронными сетями .................................................................95 Неустойчивость глубокого Q-обуче ния ..........................................................96 DQN ........................................................................................................................97 Решение .............................................................................................................97 Алгоритм DQN ..................................................................................................98 Архитектура модели .......................................................................................101 Применение DQN к игре Pong ...........................................................................102 Игры Atari ........................................................................................................102 Предварительная обработка ..........................................................................103 Реализация DQN .............................................................................................105 Результаты.......................................................................................................112 Вариации на тему DQN .......................................................................................113 Double DQN .....................................................................................................114 Dueling DQN ....................................................................................................117 n-шаговый DQN ..............................................................................................118 Резюме .................................................................................................................120 Вопросы ...............................................................................................................120 Для дальнейшего чтения ....................................................................................121 Глава 6. Стохастическая оптимизация и градиенты стратегии ..........................................................................................................122 Методы градиента стратегии.............................................................................122 Градиент стратегии ........................................................................................123 Теорема о градиенте стратегии .....................................................................124 Вычисление градиента ...................................................................................125 Стратегия ........................................................................................................126 Алгоритм ГС с единой стратегией .................................................................127 Устройство алгоритма REINFORCE ....................................................................127 Реализация REINFORCE ..................................................................................129 Посадка космического корабля с помощью алгоритма REINFORCE ..........132 REINFORCE с базой .............................................................................................134 Реализация REINFORCE с базой .....................................................................136 Обучение алгоритма исполнитель–критик ......................................................137 Как критик помогает обучаться исполнителю .............................................137 n-шаговая модель AC ......................................................................................138 Реализация AC.................................................................................................139 Посадка космического корабля с помощью алгоритма AC .........................141 Дополнительные улучшения AC и полезные советы ...................................142 Резюме .................................................................................................................143 Вопросы ...............................................................................................................143 Для дальнейшего чтения ....................................................................................143
Содержание 9 Глава 7. Реализация TRPO и PPO ............................................................144 Roboschool ...........................................................................................................144 Управление непрерывной системой .............................................................145 Метод естественного градиента стратегии ......................................................148 Интуитивное описание NPG ..........................................................................149 Немного математики .....................................................................................150 Осложнения в методе естественного градиента ..........................................152 Оптимизация стратегии в доверительной области .........................................152 Алгоритм TRPO ...............................................................................................153 Реализация алгоритма TRPO .........................................................................156 Применение TRPO ..........................................................................................160 Проксимальная оптимизация стратегии ..........................................................163 Краткое описание ...........................................................................................163 Алгоритм PPO .................................................................................................163 Реализация PPO ..............................................................................................164 Применение PPO ............................................................................................166 Резюме .................................................................................................................168 Вопросы ...............................................................................................................168 Для дальнейшего чтения ....................................................................................169 Глава 8. Применения алгоритмов DDPG и TD3 ................................170 Сочетание оптимизации градиента стратегии с Q-обуче нием ......................170 Детерминированный градиент стратегии ....................................................171 Алгоритм DDPG ..................................................................................................174 Реализация DDPG ...........................................................................................176 Применение DDPG к среде BipedalWalker-v2 ................................................180 Алгоритм TD3 .....................................................................................................182 Проблема смещения оценки в сторону завышения.....................................182 Уменьшение дисперсии .................................................................................184 Применение TD3 к среде BipedalWalker-v2 ...................................................186 Резюме .................................................................................................................187 Вопросы ...............................................................................................................188 Для дальнейшего чтения ....................................................................................188 Часть III. ЗА ПРЕДЕЛАМИ БЕЗМОДЕЛЬНЫХ АЛГОРИТМОВ .............................................................................................189 Глава 9. ОП на основе модели .................................................................190 Методы на основе модели ..................................................................................190 Общая картина обуче ния на основе модели ................................................191 Достоинства и недостатки .............................................................................195 Сочетание безмодельного и основанного на модели обучения .....................196 Полезная комбинация ....................................................................................196 Построение модели из изображений ............................................................198 Применение алгоритма ME-TRPO к задаче об обратном маятнике ...............199
Содержание Принцип работы ME-TRPO ............................................................................200 Реализация ME-TRPO .....................................................................................200 Эксперименты в среде RoboSchool ................................................................204 Резюме .................................................................................................................206 Вопросы ...............................................................................................................207 Для дальнейшего чтения ....................................................................................207 Глава 10. Подражательное обуче ние и алгоритм DAgger ...........208 Технические требования ....................................................................................208 Установка Flappy Bird .....................................................................................209 Подход на основе подражания ..........................................................................209 Пример: помощник водителя ........................................................................210 Сравнение подражательного обуче ния и обучения с подкреплением .......211 Роль эксперта в подражательном обуче нии .................................................211 Структура IL ....................................................................................................212 Игра Flappy Bird ..................................................................................................214 Порядок взаимодействия с окружающей средой .........................................215 Алгоритм агрегирования набора данных .........................................................216 Алгоритм DAgger ............................................................................................217 Реализация DAgger .........................................................................................217 Анализ результатов игры в Flappy Bird .........................................................221 Обратное обуче ние с подкреплением ...............................................................222 Резюме .................................................................................................................223 Вопросы ...............................................................................................................223 Для дальнейшего чтения ....................................................................................224 Глава 11. Оптимизация методом черного ящика ...........................225 За рамками ОП ....................................................................................................225 Краткий обзор ОП ...........................................................................................226 Альтернатива ..................................................................................................226 Основы эволюционных алгоритмов .................................................................227 Генетические алгоритмы ...............................................................................230 Эволюционные стратегии ..............................................................................230 Масштабируемые эволюционные стратегии ....................................................232 Основной принцип .........................................................................................233 Масштабируемая реализация ........................................................................234 Применение масштабируемой ЭС к среде LunarLander ..................................239 Резюме .................................................................................................................241 Вопросы ...............................................................................................................241 Для дальнейшего чтения ....................................................................................242 Глава 12. Разработка алгоритма ESBAS ..............................................243 Исследование и использование .........................................................................244 Задача о многоруком бандите .......................................................................245 Подходы к исследованию ...................................................................................246 e-жадная стратегия ........................................................................................246
11 Алгоритм UCB .................................................................................................247 Сложность исследования ...............................................................................248 Алгоритм ESBAS..................................................................................................249 Что такое выбор алгоритма ...........................................................................249 ESBAS изнутри ................................................................................................250 Реализация ......................................................................................................252 Тестирование в среде Acrobot ........................................................................255 Резюме .................................................................................................................257 Вопросы ...............................................................................................................258 Для дальнейшего чтения ....................................................................................258 Глава 13. Практические подходы к решению проблем ОП ........259 Рекомендуемые практики глубокого ОП ..........................................................259 Выбор подходящего алгоритма .....................................................................260 От простого к сложному .................................................................................261 Проблемы глубокого ОП .....................................................................................263 Устойчивость и воспроизводимость результатов ........................................263 Эффективность ...............................................................................................264 Обобщаемость .................................................................................................265 Передовые методы .............................................................................................266 ОП без учителя ................................................................................................266 Перенос обуче ния ...........................................................................................268 ОП в реальном мире ...........................................................................................270 Лицом к лицу с реальным миром ..................................................................270 Преодоление разрыва между имитационной моделью и реальным миром ..............................................................................................................271 Создание собственной окружающей среды ..................................................272 Будущее ОП и его влияние на общество ...........................................................272 Резюме .................................................................................................................273 Вопросы ...............................................................................................................274 Для дальнейшего чтения ....................................................................................274 Ответы на вопросы ......................................................................................275 Предметный указатель ..............................................................................281
Об авторе Андреа Лонца занимается глубоким обуче нием, одержим искусственным интеллектом и страстью создавать машины, действующие «разумно». Знания в области обуче ния с подкреплением, обработки естественного языка и компью терного зрения приобрел в ходе работы над проектами по машинному обуче нию в университете и в промышленности. Также участвовал в нескольких конкурсах Kaggle и достигал высоких результатов. Всегда ищет интересные задачи и любит доказывать, на что способен. О рецензенте Грег Уолтерс занимается компьютерами и программированием с 1972 года. Отлично владеет языками Visual Basic, Visual Basic .NET, Python и SQL (диалектами MySQL, SQLite, Microsoft SQL Server, Oracle), C++, Delphi, Modula-2, Pascal, C, ассемблером 80x86, COBOL и Fortran. Обучает программированию, через его руки прошло множество людей, которых он учил таким продуктам, как MySQL, Open Database Connectivity, Quattro Pro, Corel Draw!, Paradox, Microsoft Word, Excel, DOS, Windows 3.11, Windows for Workgroups, Windows 95, Windows NT, Windows 2000, Windows XP и Linux. Сейчас на пенсии и в свободное время музицирует и обожает готовить, но всегда готов поработать фрилансером над разными проектами.
Предисловие Обучение с подкреплением (ОП) – популярное и многообещающее направление искусственного интеллекта, в рамках которого изучается построение моделей и агентов, способных находить идеальное поведение в условиях изменяющихся требований. Эта книга поможет вам овладеть алгоритмами ОП и научиться реализовывать их при создании самообучаю щихся агентов. Книга начинается с введения в инструменты, библиотеки и процедуру установки, необходимые для работы в среде ОП, затем рассматриваются различные элементы ОП и применение методов, основанных на понятии ценности, в частности алгоритмов Q-обуче ния и SARSA. Вы научитесь сочетать Q-обучение с нейронными сетями для решения сложных задач. Рассматриваются также методы градиента стратегии, TRPO и PPO, позволяющие повысить производительность и устойчивость, а затем детерминированные алгоритмы DDPG и TD3. Объясняется, как работает техника подражательного обуче ния и как алгоритм Dagger позволяет обучить агента летать. Вы узнаете об эволюционных стратегиях и оптимизации методом черного ящика. И напоследок познакомитесь с алгоритмами исследования на базе верхней доверительной границы (UCB и UCB1) и метаалгоритмом ESBAS. Прочитав книгу до конца, вы научитесь применять основные алгоритмы ОП для решения реальных задач и станете членом сообщества ОП. ПредПОлагаемая аудитОрия Если вы занимаетесь исследованиями в области ИИ, применяете в работе глубокое обуче ние или просто хотите изучить ОП с нуля, то эта книга для вас. Она будет полезна и тем, кто хочет узнать о последних достижениях в этой области. Необходимо владение языком Python на рабочем уровне. Структура книги В главе 1 «Ландшафт обуче ния с подкреплением» описываются проблемы, которые ОП с успехом решает, и приложения, в которых алгоритмы ОП уже нашли применение. Здесь же рассматриваются инструменты, библиотеки и процедуры их установки и настройки, необходимые для выполнения обсуждаемых в книге проектов. В главе 2 «Реализация цикла ОП и OpenAI Gym» описывается главный цикл алгоритмов ОП, инструментарий для разработки алгоритмов и различные типы сред. Мы разработаем с помощью интерфейса к OpenAI Gym агента, который будет играть в игру CartPole, совершая случайные действия. Мы также научимся использовать OpenAI Gym для работы в других средах. Глава 3 «Решение задач методом динамического программирования» содержит введение в основные идеи, терминологию и подходы, применяемые в ОП.
Предисловие Вы узнаете о главных составных частях ОП и составите общее представление о том, как алгоритмы ОП применяются к решению задач. Вы также узнаете о различиях между основанными на модели и безмодельными алгоритмами и о классификации алгоритмов обуче ния с подкреплением. Мы применим динамическое программирование для решения игры FrozenLake. В главе 4 «Применения Q-обуче ния и алгоритма SARSA» речь пойдет о методах на основе ценности, в частности Q-обуче нии и SARSA, двух алгоритмах, которые отличаются от динамического программирования и хорошо масштабируются на задачи большого размера. Чтобы лучше разобраться в этих алгоритмах, мы применим их к игре FrozenLake и сравним результаты с динамическим программированием. В главе 5 «Глубокие Q-сети» описывается использование нейронных сетей и, в частности, сверточных нейронных сетей (СНС) к Q-обуче нию. Вы узнаете, почему сочетание Q-обуче ния и нейронных сетей дает поразительные результаты и как это открывает путь к гораздо более широкому кругу задач. Кроме того, мы применим глубокую Q-сеть к игре Atari, воспользовавшись интерфейсом к OpenAI Gym. В главе 6 «Стохастическая оптимизация и градиенты стратегии» вводится новое семейство безмодельных алгоритмов: методы градиента стратегии. Мы узнаем о различии между методами градиента стратегии и методами на основе ценности, а также об их сильных и слабых сторонах. Затем реализуем алгоритмы REINFORCE и исполнитель–критик для решения игры LunarLander. В главе 7 «Реализация TRPO и PPO» предлагается модификация методов градиента стратегии с использованием новых механизмов контроля над улучшением стратегии. Эти механизмы позволяют улучшить устойчивость и сходимость алгоритмов градиента стратегии. В частности, мы опишем и реализуем два основных метода градиента стратегии, в которых используются эти подходы: TRPO и PPO. Они будут реализованы в семействе сред с непрерывным пространством действий RoboSchool. В главе 8 «Применения алгоритмов DDPG и TD3» вводится новая категория алгоритмов с детерминированной стратегией, которые сочетают идею градиента стратегии с Q-обуче нием. Вы узнаете об идее и реализации двух глубоких детерминированных алгоритмов, DDPG и TD3, в новой окружающей среде. В главе 9 «ОП на основе модели» иллюстрируются алгоритмы ОП, которые обучаются модели окружающей среды для планирования будущих действий, т. е. обуче ния стратегии. Вы узнаете, как они работают, в чем их плюсы и почему они предпочтительны во многих ситуациях. Чтобы лучше разобраться в них, мы реализуем основанный на модели алгоритм в среде RoboSchool. В главе 10 «Подражательное обуче ние и алгоритм DAgger» объясняется, как работает подражательное обуче ние и как его можно адаптировать к конкретной задаче. Будет рассмотрен самый известный алгоритм подражательного обуче ния, DAgger. Ради лучшего освоения мы реализуем его и тем ускорим процесс обуче ния агента в игре FlappyBird. В главе 11 «Оптимизация методом черного ящика» изучаются эволюционные алгоритмы – класс алгоритмов оптимизации методом черного ящика, которые не опираются на обратное распространение. Интерес к этим алгоритмам растет, потому что они, во-первых, быстро обучаются, а во-вторых, легко
Графические выделения 15 распараллеливаются на сотни и тысячи процессорных ядер. В этой главе подводится теоретический фундамент под эти алгоритмы и приводится практическая реализация на примере алгоритма эволюционной стратегии. В главе 12 «Разработка алгоритма ESBAS» описывается важная дилемма исследования–использования, специфичная для ОП. Она демонстрируется на примере задачи о многоруких бандитах и решается методами верхней доверительной границы: UCB и UCB1. Затем мы узнаем о проблеме выбора алгоритма и разработаем метаалгоритм ESBAS, в котором UCB1 используется для выбора наиболее подходящего алгоритма ОП в конкретной ситуации. В главе 13 «Практические подходы к решению проблем ОП» мы рассмотрим основные проблемы, возникающие в этой области, и объясним, как их преодолевать. Вы узнаете о некоторых трудностях применения ОП к реальным задачам, о будущем глубокого ОП и о его влиянии на общество. ЧтО неОбхОдимО для Чтения этОй книги Необходимо владение языком Python на рабочем уровне. Знакомство с ОП и различными инструментами, используемыми в этой области, также было бы полезно. графиЧеСкие выделения В этой книге для выделения семантически различной информации применяются различные стили. Ниже приведены примеры стилей с пояснениями. Код в тексте: фрагменты кода, имена таблиц базы данных, папок и файлов, URL-адреса, адреса в Twitter, например: «В этой книге используется версия Python 3.7, но должны работать все версии начиная с 3.5. Предполагается также, что пакеты numpy и matplotlib уже установлены». Отдельно стоящие фрагменты кода набраны так: import gym # создать окружающую среду env = gym.make("CartPole-v1") # привести среду в исходное состояние перед началом работы env.reset() # повторить 10 раз for i in range(10): # предпринять случайное действие env.step(env.action_space.sample()) # отрисовать игру env.render() # закрыть среду env.close() Текст, который вводится на консоли или выводится на консоль, напечатан следующим образом:
Предисловие $ git clone https://github.com/pybox2d/pybox2d $ cd pybox2d $ pip install -e . Новые термины, важные слова и слова на экране набраны полужирным шрифтом. Также выделяются элементы интерфейса, например пункты меню и поля в диалоговых окнах, например: «В обуче нии с подкреплением (ОП) алгоритм называется агентом, он обучается на данных, поступающих от окружающей среды». Предупреждения и важные замечания оформлены так. Советы и рекомендации выглядят так. Отзывы и ПОжелания Мы всегда рады отзывам наших читателей. Расскажите нам, что вы думаете об этой книге – что понравилось или, может быть, не понравилось. Отзывы важны для нас, чтобы выпускать книги, которые будут для вас максимально полезны. Вы можете написать отзыв прямо на нашем сайте www.dmkpress.com, зайдя на страницу книги, и оставить комментарий в разделе «Отзывы и рецензии». Также можно послать письмо главному редактору по адресу dmkpress@gmail. com, при этом напишите название книги в теме письма. Если есть тема, в которой вы квалифицированы, и вы заинтересованы в написании новой книги, заполните форму на нашем сайте http://dmkpress.com/ authors/publish_book/ или напишите в издательство: dmkpress@gmail.com. СПиСОк ОПеЧатОк Хотя мы приняли все возможные меры для того, чтобы удостовериться в качестве наших текстов, ошибки все равно случаются. Если вы найдете ошибку в одной из наших книг – возможно, ошибку в тексте или в коде, – мы будем очень благодарны, если вы сообщите нам о ней. Сделав это, вы избавите других читателей от расстройств и поможете нам улучшить последующие версии данной книги. Если вы найдете какие-либо ошибки в коде, пожалуйста, сообщите о них главному редактору по адресу dmkpress@gmail.com, и мы исправим это в следующих тиражах. СкаЧивание иСхОднОгО кОда Скачать файлы с дополнительной информацией для книг издательства «ДМК Пресс» можно на сайте www.dmkpress.com на странице с описанием соответствую щей книги.
Доступ онлайн
В корзину