ПРЕДИСЛОВИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Цели и подходы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Уровень подготовки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Прочие ресурсы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Типографские соглашения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Использование программного кода примеров . . . . . . . . . . . . . . . . . 17
Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
От издательства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
ЧАСТЬ I. ВВЕДЕНИЕ В ГЕНЕРАТИВНОЕ ГЛУБОКОЕ ОБУЧЕНИЕ . . . . . . . 20
Глава 1. Генеративное моделирование . . . . . . . . . . . . . . . . . . . . . 21
Что такое генеративное моделирование? . . . . . . . . . . . . . . . . . . . . 21
Генеративное и дискриминативное моделирование . . . . . . . . . . 23
Достижения в машинном обучении . . . . . . . . . . . . . . . . . . . . . . 25
Появление генеративного моделирования . . . . . . . . . . . . . . . . 26
Основа для генеративного моделирования . . . . . . . . . . . . . . . . 29
Вероятностные генеративные модели . . . . . . . . . . . . . . . . . . . . . . . 32
Привет, Ирм! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Ваша первая вероятностная генеративная модель . . . . . . . . . . 36
Наивная байесовская параметрическая модель . . . . . . . . . . . . 41
Привет, Ирм! Продолжение . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Сложности генеративного моделирования . . . . . . . . . . . . . . . . . . . 46
Обучение представлению . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Настройка окружения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Глава 2. Глубокое обучение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Структурированные и неструктурированные данные . . . . . . . . . . . . 56
Глубокие нейронные сети . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Keras и TensorFlow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Ваша первая глубокая нейронная сеть . . . . . . . . . . . . . . . . . . . . . . 61
Загрузка данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Конструирование модели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Компиляция модели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Обучение модели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Оценка модели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Улучшение модели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Сверточные слои . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Пакетная нормализация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Слои прореживания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Соединяем все вместе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Глава 3. Вариационные автокодировщики . . . . . . . . . . . . . . . . . . 89
Художественная выставка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Автокодировщики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Ваш первый автокодировщик . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Кодировщик . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Декодировщик . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Объединение кодировщика и декодировщика . . . . . . . . . . . . . . 99
Анализ автокодировщика . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Выставка вариационного искусства . . . . . . . . . . . . . . . . . . . . . . . . 104
Конструирование вариационного автокодировщика . . . . . . . . . . . 106
Кодировщик . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Функция потерь . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Анализ вариационного автокодировщика . . . . . . . . . . . . . . . . 114
Использование вариационного автокодировщика для генерации
изображений лиц . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Обучение VAE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Анализ вариационного автокодировщика . . . . . . . . . . . . . . . . 119
Генерирование новых лиц . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Арифметика скрытого пространства . . . . . . . . . . . . . . . . . . . . 121
Преобразование одного лица в другое . . . . . . . . . . . . . . . . . . 123
Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Глава 4. Генеративно-состязательные сети . . . . . . . . . . . . . . . . . 125
Ганимал . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Введение в генеративно-состязательные сети . . . . . . . . . . . . . . . . 128
Ваша первая генеративно-состязательная сеть . . . . . . . . . . . . . . . 129
Дискриминатор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Генератор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Обучение генеративно-состязательной сети . . . . . . . . . . . . . . 136
Проблемы генеративно-состязательных сетей . . . . . . . . . . . . . . . . 142
Колебания потерь . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Коллапс модели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Неинформативные потери . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Гиперпараметры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Решение проблем генеративно-состязательных сетей . . . . . . . 145
Генеративно-состязательные сети с функцией
потерь Вассерштейна . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Функция потерь Вассерштейна . . . . . . . . . . . . . . . . . . . . . . . . 146
Ограничение Липшица . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Усечение весов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Обучение WGAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Анализ WGAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
WGAN-GP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Функция потерь штрафа за градиент . . . . . . . . . . . . . . . . . . . 153
Анализ WGAN-GP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
ЧАСТЬ II. УЧИМ МАШИНЫ РИСОВАТЬ, ПИСАТЬ,
СОЧИНЯТЬ МУЗЫКУ И ИГРАТЬ В ИГРЫ . . . . . . . . . . . . . . . . . . . . . . . . 160
Глава 5. Рисование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Яблоки и апельсины . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
CycleGAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Ваша первая сеть CycleGAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Обзор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Генераторы (U-Net) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Дискриминаторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Компиляция CycleGAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Обучение CycleGAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Анализ CycleGAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
CycleGAN, рисующая в стиле Моне . . . . . . . . . . . . . . . . . . . . . . . . 181
Генераторы (ResNet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Анализ CycleGAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Нейронный перенос стиля . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Потеря содержимого . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Потеря стиля . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Потеря общей дисперсии . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Запуск нейронного переноса стиля . . . . . . . . . . . . . . . . . . . . . 194
Анализ модели нейронного переноса стиля . . . . . . . . . . . . . . 195
Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Глава 6. Литературное творчество . . . . . . . . . . . . . . . . . . . . . . . . 197
Литературное общество для проблемных правонарушителей . . . . 198
Сети с долгой краткосрочной памятью . . . . . . . . . . . . . . . . . . . . . 200
Ваша первая сеть LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Лексемизация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Создание набора данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Архитектура модели LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Слой Embedding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Слой LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Ячейка LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Генерирование нового текста . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Расширения RNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Многослойные рекуррентные сети . . . . . . . . . . . . . . . . . . . . . 217
Управляемые рекуррентные блоки . . . . . . . . . . . . . . . . . . . . . 218
Двунаправленные ячейки . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Модели кодировщик-декодировщик . . . . . . . . . . . . . . . . . . . . 220
Генератор вопросов и ответов . . . . . . . . . . . . . . . . . . . . . . . . 223
Набор данных с вопросами и ответами . . . . . . . . . . . . . . . . . . 224
Архитектура модели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Вычисление результатов . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Результаты моделирования . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Глава 7. Сочинение музыки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Вступление . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Нотная запись . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Ваша первая сеть RNN для генерирования музыки . . . . . . . . . . . . 240
Внимание . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Конструирование механизма внимания
с помощью Keras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Анализ сети RNN с механизмом внимания . . . . . . . . . . . . . . . . 249
Механизм внимания в сетях типа
кодировщик-декодировщик . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Генерирование полифонической музыки . . . . . . . . . . . . . . . . . 258
Музыкальный орган . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Ваша первая сеть MuseGAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Генератор MuseGAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Аккорды, стиль, мелодия и дорожки . . . . . . . . . . . . . . . . . . . . 265
Генератор тактов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Объединяем все вместе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Критик . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Анализ сети MuseGAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Глава 8. Играем в игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Обучение с подкреплением . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
OpenAI Gym . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Архитектура модели мира . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Вариационный автокодировщик . . . . . . . . . . . . . . . . . . . . . . . 281
Сеть MDN-RNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Контроллер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Подготовка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Обзор процесса обучения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Сбор данных в ходе случайных прогонов . . . . . . . . . . . . . . . . . . . 286
Обучение VAE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Архитектура VAE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Анализ VAE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Сбор данных для обучения RNN . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Обучение сети MDN-RNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Архитектура сети MDN-RNN . . . . . . . . . . . . . . . . . . . . . . . . . . 298
Выборка следующего состояния и вознаграждения
из MDN-RNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Функция потерь в MDN-RNN . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Обучение контроллера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Архитектура контроллера . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
CMA-ES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Параллельное выполнение алгоритма CMA-ES . . . . . . . . . . . . 307
Вывод контроллера в процессе обучения . . . . . . . . . . . . . . . . 309
Обучение в мнимом окружении . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Обучение контроллера в мнимом окружении . . . . . . . . . . . . . 312
Недостатки обучения в мнимом окружении . . . . . . . . . . . . . . . 314
Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Глава 9. Будущее генеративного моделирования . . . . . . . . . . . 316
Пять лет прогресса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Трансформер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
Позиционное кодирование . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
Многоголовое внимание . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
Декодировщик . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Анализ трансформера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
BERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
GPT-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
MuseNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Достижения в генерировании изображений . . . . . . . . . . . . . . . . . 329
ProGAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Self-Attention GAN (SAGAN) . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
BigGAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
StyleGAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Области применения генеративного моделирования . . . . . . . . . . . 339
Изобразительное творчество искусственного
интеллекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Музыкальное творчество искусственного
интеллекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Глава 10. Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
ОБ АВТОРЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
ОБ ОБЛОЖКЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346