Оглавление....8
Предисловие....17
Благодарности....19
Об этой книге....20
Об иллюстрации на обложке....24
Об авторах....25
Глава 1. Что такое глубокое обучение?....26
1.1 Искусственный интеллект, машинное и глубокое обучение....27
1.1.1 Искусственный интеллект....27
1.1.2 Машинное обучение....28
1.1.3 Извлечение правил и представлений из данных....30
1.1.4 «Глубина» глубокого обучения....33
1.1.5 Принцип действия глубокого обучения в трех рисунках....35
1.1.6 Каких успехов достигло глубокое обучение....37
1.1.7 Не верьте рекламной шумихе....38
1.1.8 Перспективы развития ИИ....39
1.2 Краткая история машинного обучения....40
1.2.1 Вероятностное моделирование....41
1.2.2 Первые нейронные сети....41
1.2.3 Ядерные методы....42
1.2.4 Деревья решений, случайные леса и градиентный бустинг....44
1.2.5 Назад к нейронным сетям....45
1.2.6 Отличительные черты глубокого обучения....46
1.2.7 Современный ландшафт машинного обучения....47
1.3 Почему глубокое обучение? Почему сейчас?....49
1.3.1 Оборудование....50
1.3.2 Данные....51
1.3.3 Алгоритмы....52
1.3.4 Новая волна инвестиций....53
1.3.5 Демократизация глубокого обучения....54
1.3.6 Ждать ли продолжения этой тенденции?....54
Глава 2. Математические основы нейронных сетей....57
2.1 Первое знакомство с нейронной сетью....58
2.2 Представление данных для нейронных сетей....62
2.2.1 Скаляры (тензоры нулевого ранга)....63
2.2.2 Векторы (тензоры первого ранга)....63
2.2.3 Матрицы (тензоры второго ранга)....64
2.2.4 Тензоры третьего и более высокого рангов....64
2.2.5 Ключевые атрибуты....64
2.2.6 Манипулирование тензорами в R....66
2.2.7 Пакеты данных....66
2.2.8 Практические примеры тензоров с данными....67
2.2.9 Векторные данные....67
2.2.10 Временные ряды, или последовательности данных....68
2.2.11 Изображения....69
2.2.12 Видеоданные....69
2.3 Шестеренки нейронных сетей: операции с тензорами....70
2.3.1 Поэлементные операции....71
2.3.2 Операции с тензорами разной размерности....72
2.3.3 Скалярное произведение тензоров....74
2.3.4 Изменение формы тензора....76
2.3.5 Геометрическая интерпретация операций с тензорами....77
2.3.6 Геометрическая интерпретация глубокого обучения....81
2.4 Механизм нейронных сетей: оптимизация на основе градиента....82
2.4.1 Что такое производная?....84
2.4.2 Производная операций с тензорами: градиент....85
2.4.3 Стохастический градиентный спуск....87
2.4.4 Объединение производных: алгоритм обратного распространения ошибки....90
2.5 Возвращаясь к нашему первому примеру....97
2.5.1 Повторная реализация нашего первого примера с нуля в TensorFlow....99
2.5.2 Выполнение одного шага обучения....101
2.5.3 Полный цикл обучения....103
2.5.4 Оценка модели....104
Краткие итоги главы....105
Глава 3. Введение в Keras и TensorFlow....106
3.1 Что такое TensorFlow?....107
3.2 Что такое Keras?....108
3.3 Keras и TensorFlow: краткая история....109
3.4 Интерфейсы Python и R: краткая история....110
3.5 Настройка среды разработки для глубокого обучения....111
3.5.1 Установка Keras и TensorFlow....112
3.6 Первые шаги с TensorFlow....113
3.6.1 Тензоры TensorFlow....114
3.7 Атрибуты тензоров....115
3.7.1 Форма тензора и ее изменение....116
3.7.2 Срезы тензоров....118
3.7.3 Операции с тензорами разной размерности....119
3.7.4 Модуль tf....119
3.7.5 Неизменность тензоров и переменные....121
3.7.6 Математические операции в TensorFlow....122
3.7.7 Взгляд на API GradientTape с другой стороны....123
3.7.8 Полный пример: линейный классификатор в чистом TensorFlow....124
3.8 Анатомия нейронной сети и основы API Keras....129
3.8.1 Слои: строительные блоки глубокого обучения....130
3.8.2 От слоев к моделям....134
3.8.3 Этап «компиляции»: настройка процесса обучения....136
3.8.4 Выбор функции потерь....139
3.8.5 Использование метода fit()....140
3.8.6 Отслеживание потерь и показателей на контрольных данных....141
3.8.7 Использование модели после обучения....142
Краткие итоги главы....143
Глава 4. Примеры работы с нейросетью: классификация и регрессия....145
4.1 Классификация отзывов к фильмам: пример бинарной классификации....147
4.1.1 Набор данных IMDB....147
4.1.2 Подготовка данных....149
4.1.3 Создание модели....150
4.1.4 Проверка вашего выбора....153
4.1.5 Использование обученной сети для прогнозирования на новых данных....156
4.1.6 Продолжаем эксперименты....157
4.1.7 Промежуточные итоги....157
4.2 Классификация новостных лент: пример многоклассовой классификации....158
4.2.1 Набор данных Reuters....158
4.2.2 Подготовка данных....160
4.2.3 Построение модели....160
4.2.4 Проверка модели....161
4.2.5 Предсказания на новых данных....163
4.2.6 Другой способ обработки меток и потерь....164
4.2.7 Важность использования достаточно больших промежуточных слоев....164
4.2.8 Дальнейшие эксперименты....165
4.2.9 Промежуточные итоги....165
4.3 Предсказание цен на дома: пример регрессии....166
4.3.1 Набор данных с ценами на жилье в Бостоне....166
4.3.2 Подготовка данных....167
4.3.3 Построение модели....167
4.3.4 Оценка качества модели методом K-кратной перекрестной проверки....168
4.3.5 Выдача прогнозов на новых данных....173
4.3.6 Промежуточные выводы....173
Краткие итоги главы....173
Глава 5. Основы машинного обучения....175
5.1 Обобщение – цель машинного обучения....175
5.1.1 Недообучение и переобучение....176
5.1.2 Базовые принципы обобщения в глубоком обучении....182
5.2 Оценка моделей машинного обучения....189
5.2.1 Наборы данных для обучения, проверки и контроля....189
5.2.2 Использование критериев, основанных на здравом смысле....193
5.2.3 Что следует помнить об оценке модели....194
5.3 Улучшение качества обучения модели....195
5.3.1 Настройка ключевых параметров градиентного спуска....195
5.3.2 Использование лучшей априорно обоснованной архитектуры....198
5.3.3 Увеличение емкости модели....199
5.4 Как улучшить обобщение....201
5.4.1 Подготовка набора данных....201
5.4.2 Конструирование признаков....202
5.4.3 Использование ранней остановки....204
5.4.4 Регуляризация модели....204
Краткие итоги главы....215
Глава 6. Обобщенный рабочий процесс машинного обучения....217
6.1 Постановка задачи....219
6.1.1 Уточнение задачи....219
6.1.2 Получение исходных данных....221
6.1.3 Добейтесь понимания данных....225
6.1.4 Выберите меру успеха....226
6.2 Разработка модели....227
6.2.1 Подготовка данных....227
6.2.2 Выбор протокола оценки....229
6.2.3 Как превзойти простой базовый уровень....230
6.2.4 Масштабирование: разработка модели, способной к переобучению....231
6.2.5 Регуляризация и настройка модели....232
6.3 Развертывание модели....233
6.3.1 Представление модели заказчику....233
6.3.2 Передача модели заказчику....234
6.3.3 Мониторинг модели в рабочей среде....238
6.3.4 Поддержка и обновление модели....238
Краткие итоги главы....239
Глава 7. Работа с Keras: углубленные навыки....241
7.1 Широкий спектр рабочих процессов Keras....242
7.2 Различные способы построения моделей Keras....242
7.2.1 Sequential API....243
7.2.2 Functional API....246
7.2.3 Создание подкласса класса Model....253
7.2.4 Смешивание и сочетание разных компонентов....257
7.2.5 Используйте правильные инструменты....258
7.3 Использование встроенных циклов обучения и оценки....258
7.3.1 Разработка собственных метрик....259
7.3.2 Использование обратных вызовов....262
7.3.3 Разработка собственных обратных вызовов....264
7.3.4 Мониторинг и визуализация с помощью TensorBoard....266
7.4 Разработка собственных циклов обучения и оценки....268
7.4.1 Обучение или логический вывод....269
7.4.2 Использование метрик на низком уровне....270
7.4.3 Полный цикл обучения и оценки....271
7.4.4 Увеличьте быстродействие с помощью tf_function()....274
7.4.5 Использование fit() с пользовательским циклом обучения....275
Краткие итоги главы....278
Глава 8. Глубокое обучение в компьютерном зрении....279
8.1 Введение в сверточные нейронные сети....280
8.1.1 Операция свертки....283
8.1.2 Выбор максимального значения из соседних (max-pooling)....288
8.2 Обучение сверточной нейронной сети с нуля на небольшом наборе данных....291
8.2.1 Целесообразность глубокого обучения для решения задач с небольшими наборами данных....292
8.2.2 Загрузка данных....292
8.2.3 Построение сети....295
8.2.4 Предварительная обработка данных....297
8.2.5 Расширение данных....303
8.3 Использование предварительно обученной сверточной нейронной сети....307
8.3.1 Выделение признаков....308
8.3.2 Дообучение ранее обученной модели....318
Краткие итоги главы....322
Глава 9. Глубокое обучение для компьютерного зрения....323
9.1 Три основные задачи компьютерного зрения....324
9.2 Пример сегментации изображения....325
9.3 Современные стандартные архитектуры сверточных сетей....335
9.3.1 Модульность, иерархия и повторное использование....336
9.3.2 Остаточные связи....339
9.3.3 Пакетная нормализация....343
9.3.4 Разделяемые по глубине свертки....346
9.3.5 Применим знания на практике: мини-модель, подобная Xception....349
9.4 Интерпретация знаний сверточной нейросети....352
9.4.1 Визуализация промежуточных активаций....353
9.4.2 Визуализация сетевых фильтров....359
9.4.3 Визуализация тепловых карт активации класса....365
Краткие итоги главы....371
Глава 10. Глубокое обучение и временные ряды....372
10.1 Различные виды задач временных рядов....372
10.2 Пример прогнозирования температуры....374
10.2.1 Подготовка данных....378
10.2.2 Простое решение задачи без привлечения машинного обучения....382
10.2.3 Решение с использованием базовой модели машинного обучения....384
10.2.4 Эксперимент с одномерной сверточной сетью....386
10.2.5 Первый вариант простой рекуррентной модели....389
10.3 Рекуррентные нейронные сети....390
10.3.1 Рекуррентный слой в Keras....393
10.4 Продвинутое применение рекуррентных нейронных сетей....398
10.4.1 Использование рекуррентного прореживания для борьбы с переобучением....399
10.4.2 Наложение рекуррентных слоев....402
10.4.3 Использование двунаправленных рекуррентных сетей....404
10.4.4 Что дальше....407
Краткие итоги главы....409
Глава 11. Глубокое обучение в обработке текстов....410
11.1 Обработка естественного языка: обзор отрасли....410
11.2 Подготовка текстовых данных....413
11.2.1 Стандартизация текста....414
11.2.2 Разделение текста (токенизация)....415
11.2.3 Индексация словаря....416
11.2.4 Использование слоя layer_text_vectorization....418
11.3 Два подхода к представлению групп слов: наборы и последовательности....422
11.3.1 Подготовка данных обзоров фильмов IMDB....423
11.3.2 Обработка слов без учета порядка....426
11.3.3 Обработка последовательности слов....434
11.4 Архитектура Transformer....448
11.4.1 Механизм самовнимания....448
11.4.2 Многоголовое внимание....454
11.4.3 Кодировщик в архитектуре Transformer....455
11.4.4 Когда следует использовать модели последовательности, а не модели мешка слов....465
11.5 Помимо классификации текста: обучение преобразованию последовательностей....466
11.5.1 Пример машинного перевода....468
11.5.3 Рекуррентная модель преобразования последовательностей....471
11.5.4 Преобразование последовательностей с Transformer....478
Краткие итоги главы....484
Глава 12. Генеративные модели глубокого обучения....486
12.1 Генерирование текста с помощью Keras....488
12.1.1 Краткая история генеративных сетей....488
12.1.2 Как генерируют последовательности данных?....490
12.1.3 Важность стратегии выбора....490
12.1.4 Реализация генерации текста с помощью Keras....493
12.1.5 Обратный вызов генерации текста с выборкой при разной температуре....497
12.1.6 Подведение итогов....504
12.2 DeepDream....504
12.2.1 Реализация DeepDream в Keras....505
12.2.2 Подведение итогов....513
12.3 Нейронный перенос стиля....514
12.3.1 Функция потерь содержания....515
12.3.2 Функция потерь стиля....515
12.3.3 Реализация переноса стиля в Keras....516
12.3.4 Подведение итогов....524
12.4 Генерация изображений с помощью вариационных автокодировщиков....524
12.4.1 Выбор шаблонов из скрытых пространств изображений....525
12.4.2 Концептуальные векторы для редактирования изображений....526
12.4.3 Вариационные автокодировщики....527
12.4.4 Реализация VAE с помощью Keras....530
12.4.5 Подведение итогов....536
12.5 Введение в генеративно-состязательные сети....536
12.5.1 Реализация генеративно-состязательной сети....538
12.5.2 Полезные технические приемы....539
12.5.3 Получение набора данных CelebA....540
12.5.4 Дискриминатор....542
12.5.5 Генератор....543
12.5.6 Состязательная сеть....544
12.5.7 Подведение итогов....547
Краткие итоги главы....548
Глава 13. Глубокое обучение в реальной жизни....549
13.1 Получение максимальной отдачи от ваших моделей....550
13.1.1 Оптимизация гиперпараметров....550
13.1.2 Ансамблирование моделей....559
13.2 Масштабируемое обучение моделей....561
13.2.1 Ускорение обучения на GPU со смешанной точностью....562
13.2.2 Обучение модели на нескольких GPU....565
13.2.3 Обучение модели на TPU....570
Краткие итоги главы....572
Глава 14. Заключение....573
14.1 Краткий обзор ключевых понятий....574
14.1.1 Различные подходы к ИИ....574
14.1.2 Что выделяет глубокое обучение среди других подходов к машинному обучению....575
14.1.3 Как правильно воспринимать глубокое обучение....575
14.1.4 Ключевые технологии глубокого обучения....577
14.1.5 Обобщенный рабочий процесс машинного обучения....578
14.1.6 Основные архитектуры сетей....579
14.1.7 Пространство возможностей....584
14.2 Ограничения глубокого обучения....586
14.2.1 Риск очеловечивания моделей глубокого обучения....587
14.2.2 Принципиальное различие между автоматом и интеллектом....589
14.2.3 Различие между локальным и экстремальным обобщением....591
14.2.4 Предназначение интеллекта....594
14.2.5 Восхождение по уровням обобщения....595
14.3 Курс на большую универсальность в ИИ....596
14.3.1 О важности постановки правильной цели: правило короткого пути....596
14.3.2 Новая цель....599
14.4 Реализация интеллекта: недостающие ингредиенты....601
14.4.1 Построение и использование абстрактных аналогий....601
14.4.2 Два полюса абстракции....603
14.4.3 Сочетание двух полюсов абстракции....606
14.4.4 Недостающая половина картинки....606
14.5 Будущее глубокого обучения....608
14.5.1 Модели как программы....608
14.5.2 Машинное обучение и синтез программ....610
14.5.3 Сочетание глубокого обучения и синтеза программ....610
14.5.4 Непрерывное обучение и повторное использование модульных подпрограмм....613
14.5.5 Долгосрочная перспектива....614
14.6 Как не отстать от прогресса в быстро развивающейся отрасли....616
14.6.1 Решения реальных задач на сайте Kaggle....616
14.6.2 Знакомство с последними разработками на сайте arXiv....616
14.6.3 Исследование экосистемы Keras....617
14.7 Заключительное слово....618
Приложение. Введение в Python для пользователей R....619
Предметный указатель....643
Перед вами второе, расширенное в 1.5 раза издание бестселлера от автора библиотеки Keras.
Умение работать с моделями глубокого обучения стало важным навыком современных ученых, исследователей и программистов. API языка R для Keras и TensorFlow делает глубокое обучение доступным для всех пользователей R, даже если у них нет опыта работы с машинным обучением или нейронными сетями.Интуитивно понятные объяснения, четкие иллюстрации и наглядные примеры помогут вам освоить основные навыки глубокого обучения с помощью R, такие как компьютерное зрение, обработка естественного языка, работа с текстом, и даже изучить передовую архитектуру Transformer.Для читателей со средними навыками программирования на R. Опыт работы с Keras, TensorFlow или моделями глубокого обучения не требуется.