От издательства....24
Об иллюстрации на обложке....23
Об авторах....22
Благодарности....17
Введение....15
Предисловие....13
Об этой книге....19
Для кого предназначено издание....19
Структура издания....20
О коде....21
Дискуссионный форум книги....21
Часть I. Актуальность и основные понятия....25
Глава 1. Глубокое обучение и JavaScript....26
1.1. Искусственный интеллект, машинное обучение, нейронные сети и глубокое обучение....29
1.1.1. Искусственный интеллект....29
1.1.2. Машинное обучение: отличия от традиционного программирования....30
1.1.3. Нейронные сети и глубокое обучение....36
1.1.4. Почему глубокое обучение? И почему именно сейчас?....40
1.2. Какой смысл в сочетании JavaScript и машинного обучения....42
1.2.1. Глубокое обучение с помощью Node.js....49
1.2.2. Экосистема JavaScript....50
1.3. Почему именно TensorFlow.js....52
1.3.1. Краткая история TensorFlow, Keras и TensorFlow.js....52
1.3.2. Почему именно TensorFlow.js: краткое сравнение с аналогичными библиотеками....56
1.3.3. Как TensorFlow.js используется в мире....57
1.3.4. Что вы узнаете о TensorFlow.js из этой книги, а что — нет....58
Упражнения....59
Резюме....60
Часть II. Введение в TensorFlow.js....61
Глава 2. Приступим: простая линейная регрессия в TensorFlow.js....62
2.1. Пример 1. Предсказание продолжительности скачивания с помощью TensorFlow.js....63
2.1.1. Обзор проекта: предсказание продолжительности....63
2.1.2. Примечания относительно листингов и команд консоли....64
2.1.3. Создание и форматирование данных....65
2.1.4. Описываем простую модель....68
2.1.5. Подгонка модели к обучающим данным....71
2.1.6. Используем обученную модель для предсказаний....74
2.1.7. Резюме нашего первого примера....75
2.2. Внутреннее устройство Model.fit(): анализируем градиентный спуск из примера 1....76
2.2.1. Основные идеи оптимизации на основе градиентного спуска....76
2.2.2. Обратное распространение ошибки: внутри градиентного спуска....82
2.3. Множественная линейная регрессия....86
2.3.1. Набор данных стоимости жилья в Бостоне....86
2.3.2. Получаем из GitHub и запускаем проект Boston-housing....87
2.3.3. Доступ к данным о бостонских ценах на недвижимость....89
2.3.4. Точная формулировка задачи проекта Boston-housing....91
2.3.5. Небольшое отступление: нормализация данных....93
2.3.6. Линейная регрессия по набору данных Boston-housing....97
2.4. Интерпретация модели....101
2.4.1. Выясняем смысл усвоенных весов....102
2.4.2. Извлекаем из модели внутренние веса....103
2.4.3. Нюансы интерпретируемости....104
Упражнения....105
Резюме....106
Глава 3. Вводим нелинейность: теперь не только взвешенные суммы....107
3.1. Нелинейность: что это такое и где может пригодиться....108
3.1.1. Развиваем чутье на нелинейность в нейронных сетях....110
3.1.2. Гиперпараметры и их оптимизация....118
3.2. Нелинейность на выходе модели: модели для классификации....121
3.2.1. Бинарная классификация....122
3.2.2. Измерение качества работы бинарных классификаторов: точность, полнота, безошибочность и кривые ROC....126
3.2.3. Кривая ROC: наглядное представление соотношения плюсов и минусов при бинарной классификации....128
3.2.4. Бинарная перекрестная энтропия....133
3.3. Многоклассовая классификация....137
3.3.1. Унитарное кодирование категориальных данных....138
3.3.2. Многомерная логистическая функция активации....140
3.3.3. Категориальная перекрестная энтропия: функция потерь для многоклассовой классификации....142
3.3.4. Матрица различий: детальный анализ многоклассовой классификации....144
Упражнения....146
Резюме....147
Глава 4. Распознавание изображений и звуковых сигналов с помощью сверточных сетей....149
4.1. От векторов к тензорам: представление изображений....150
4.1.1. Набор данных MNIST....151
4.2. Ваша первая сверточная нейронная сеть....152
4.2.1. Слой conv2d....154
4.2.2. Слой maxPooling2d....159
4.2.3. «Лейтмотивы» свертки и субдискретизации....160
4.2.4. Слои схлопывания и плотные слои....161
4.2.5. Обучение сверточной сети....163
4.2.6. Предсказания с помощью сверточной сети....168
4.3. Вне браузера: обучаем модели быстрее с помощью Node.js....171
4.3.1. Зависимости и импорты, необходимые для tfjs-node....171
4.3.2. Сохранение модели из Node.js и загрузка ее в браузере....176
4.4. Распознавание устной речи....179
4.4.1. Спектрограммы: представление звуков в виде изображений....179
Упражнения....185
Резюме....186
Глава 5. Перенос обучения: переиспользование предобученных нейронных сетей....187
5.1. Переиспользование предобученных моделей....188
5.1.1. Перенос обучения при совместимых формах выходных сигналов: блокировка слоев....190
5.1.2. Перенос обучения при несовместимых формах выходных сигналов: создание новой модели на основе выходных сигналов базовой модели....197
5.1.3. Извлекаем максимум пользы из переноса обучения благодаря тонкой настройке: пример обработки аудиоданных....210
5.2. Обнаружение объектов с помощью переноса обучения для сверточной сети....222
5.2.1. Задача обнаружения простых объектов на синтезированных изображениях....224
5.2.2. Углубляемся в обнаружение простых объектов....225
Упражнения....234
Резюме....236
Часть III. Продвинутые возможности глубокого обучения с TensorFlow.js....237
Глава 6. Работа с данными....238
6.1. Работа с данными с помощью пространства имен tf.data....239
6.1.1. Объект tf.data.Dataset....240
6.1.2. Создание объекта tf.data.Dataset....240
6.1.3. Доступ к данным в объекте Dataset....246
6.1.4. Операции над наборами данных модуля tfjs-data....247
6.2. Обучение моделей с помощью model.fitDataset....252
6.3. Распространенные паттерны доступа к данным....258
6.3.1. Работаем с форматом данных CSV....258
6.3.2. Доступ к видеоданным с помощью метода tf.data.webcam()....264
6.3.3. Доступ к аудиоданным с помощью API tf.data.microphone()....267
6.4. Вероятно, данные не без изъяна: обработка проблемных данных....270
6.4.1. Теория данных....270
6.4.2. Обнаружение и исправление проблем с данными....275
6.5. Дополнение данных....281
Упражнения....285
Резюме....285
Глава 7. Визуализация данных и моделей....287
7.1. Визуализация данных....288
7.1.1. Визуализация данных с помощью tfjs-vis....288
7.1.2. Комплексный практический пример: визуализация метеорологических данных с помощью tfjs-vis....298
7.2. Визуализация моделей после обучения....302
7.2.1. Визуализация внутренних функций активации сверточной сети....305
7.2.2. Визуализируем именно то, к чему чувствительны сверточные слои: наиболее активирующие изображения....309
7.2.3. Визуальная интерпретация результата классификации изображения сверточной сетью....314
Материалы для дальнейшего чтения и изучения....316
Упражнения....316
Резюме....317
Глава 8. Недообучение, переобучение и универсальный технологический процесс машинного обучения....318
8.1. Постановка задачи предсказания температуры....319
8.2. Недообучение, переобучение и меры противодействия им....323
8.2.1. Недообучение....323
8.2.2. Переобучение....326
8.2.3. Сокращаем переобучение за счет регуляризации весов и визуализируем эффект от нее....328
8.3. Универсальный технологический процесс машинного обучения....334
Упражнения....338
Резюме....338
Глава 9. Глубокое обучение для последовательностей и текста....339
9.1. Вторая попытка прогноза погоды: знакомство с RNN....341
9.1.1. Почему плотные слои не способны моделировать упорядоченность....341
9.1.2. Моделирование последовательного упорядочения с помощью RNN....343
9.2. Создание моделей глубокого обучения для обработки текста....353
9.2.1. Представление текста в машинном обучении: унитарное и федеративное кодирование....354
9.2.2. Первая попытка анализа тональностей....356
9.2.3. Более эффективное представление текста — вложения слов....358
9.2.4. Одномерные сверточные сети....361
9.3. Решение задач преобразования последовательностей в последовательности с помощью механизма внимания....369
9.3.1. Постановка задачи преобразования последовательности в последовательность....370
9.3.2. Архитектура «кодировщик — декодировщик» и механизм внимания....372
9.3.3. Заглянем глубже в модель «кодировщик-декодировщик», основанную на механизме внимания....376
Материалы для дальнейшего изучения....380
Упражнения....380
Резюме....382
Глава 10. Генеративное глубокое обучение....384
10.1. Генерация текста с помощью LSTM....385
10.1.1. Предсказание следующего символа: простой способ генерации текста....386
10.1.2. Пример LSTM-text-generation....388
10.1.3. Температура: настройка степени стохастичности генерируемого текста....393
10.2. Вариационные автокодировщики: поиск экономичного структурированного векторного представления изображений....395
10.2.1. Классический автокодировщик и VAE: основные понятия....396
10.2.2. Подробный пример VAE: пример Fashion-MNIST....400
10.3. Генерация изображений с помощью GAN....407
10.3.1. Основная идея GAN....409
10.3.2. «Кирпичики» GAN....413
10.3.3. Детальнее исследуем обучение ACGAN....417
10.3.4. Обучение ACGAN для набора данных MNIST и генерация изображений в действии....421
Материалы для дальнейшего изучения....424
Упражнения....425
Резюме....425
Глава 11. Основы глубокого обучения с подкреплением....427
11.1. Постановка задач обучения с подкреплением....429
11.2. Сети стратегий и градиентный спуск по стратегиям: пример cart-pole....432
11.2.1. Удержание шеста в равновесии в тележке как задача обучения с подкреплением....433
11.2.2. Сети стратегий....435
11.2.3. Обучение сети стратегий: алгоритм REINFORCE....438
11.3. Оценочные сети и Q-обучение: пример игры «Змейка»....447
11.3.1. «Змейка» как задача обучения с подкреплением....447
11.3.2. Марковский процесс принятия решений и Q-значения....450
11.3.3. Глубокая Q-сеть....454
11.3.4. Обучение глубокой Q-сети....457
Материалы для дальнейшего изучения....471
Упражнения....472
Резюме....474
Часть IV. Резюме и заключительное слово....475
Глава 12. Тестирование, оптимизация и развертывание моделей....476
12.1. Тестирование моделей TensorFlow.js....477
12.1.1. Традиционное модульное тестирование....478
12.1.2. Тестирование с помощью «золотых значений»....481
12.1.3. Соображения по поводу непрерывного обучения....484
12.2. Оптимизация модели....486
12.2.1. Оптимизация размера модели посредством квантования весовых коэффициентов модели после обучения....486
12.2.2. Оптимизация скорости выполнения вывода с помощью преобразования GraphModel....495
12.3. Развертывание моделей TensorFlow.js на различных платформах и в различных средах....501
12.3.1. Дополнительные нюансы развертывания на веб-платформе....501
12.3.2. Развертывание в облачных сервисах....502
12.3.3. Развертывание в среде браузерного расширения, например, Chrome Extension....504
12.3.4. Развертывание моделей TensorFlow.js в мобильных JavaScript-приложениях....506
12.3.5. Развертывание моделей TensorFlow.js в межплатформенных приложениях для настольных компьютеров на JavaScript....508
12.3.6. Развертывание моделей TensorFlow.js в WeChat и прочих системах плагинов мобильных приложений на основе JavaScript....510
12.3.7. Развертывание моделей TensorFlow.js на одноплатных компьютерах....512
12.3.8. Краткая сводка вариантов развертывания....513
Материалы для дальнейшего изучения....514
Упражнения....514
Резюме....516
Глава 13. Резюме, заключительные слова и дальнейшие источники информации....517
13.1. Обзор ключевых понятий....518
13.1.1. Различные подходы к ИИ....518
13.1.2. Почему глубокое обучение выделяется из всех прочих подобластей машинного обучения....519
13.1.3. Общая картина глубокого обучения....520
13.1.4. Ключевые технологии, благодаря которым возможно глубокое обучение....520
13.1.5. Сферы применения и возможности, открываемые благодаря глубокому обучению на JavaScript....521
13.2. Краткий обзор технологического процесса глубокого обучения и алгоритмов в TensorFlow.js....523
13.2.1. Универсальный технологический процесс машинного обучения с учителем....523
13.2.2. Типы моделей и слоев в TensorFlow.js: краткий справочник....525
13.2.3. Использование предобученных моделей в TensorFlow.js....531
13.2.4. Спектр возможностей....533
13.2.5. Ограничения глубокого обучения....536
13.3. Современные тенденции глубокого обучения....539
13.4. Рекомендации по дальнейшему изучению....540
13.4.1. Отрабатывайте навыки решения реальных задач на Kaggle....541
13.4.2. Читайте о последних новинках на arXiv....541
13.4.3. Исследование экосистемы TensorFlow.js....542
Заключительные слова....542
Приложения....543
Приложение А. Установка библиотеки tfjs-node-gpu и ее зависимостей....544
A.1. Установка tfjs-node-gpu в Linux....544
A.2. Установка tfjs-node-gpu в Windows....547
Приложение Б. Краткое руководство по тензорам и операциям над ними в TensorFlow.js....549
Б.1. Создание тензоров и соглашения про их оси координат....549
Б.1.1. Скаляры (тензоры ранга 0)....550
Б.1.2. tensor1d (тензоры ранга 1)....552
Б.1.3. tensor2d (тензоры ранга 2)....553
Б.1.4. Тензоры ранга 3 и более высоких рангов....554
Б.1.5. Понятие батчей данных....555
Б.1.6. Примеры тензоров из практики....556
Б.1.7. Создание тензоров из тензорных буферов....558
Б.1.8. Создание тензоров, содержащих одних нули и одни единицы....559
Б.1.9. Создание тензоров со случайными значениями....560
Б.2. Основные операции над тензорами....561
Б.2.1. Унарные операции....562
Б.2.2. Бинарные операции....564
Б.2.3 Конкатенация и срезы тензоров....565
Б.3. Управление памятью в TensorFlow.js: tf.dispose() и tf.tidy()....568
Б.4. Вычисление градиентов....571
Упражнения....574
Пора научиться использовать TensorFlow.js для построения моделей глубокого обучения, работающих непосредственно в браузере!
Умные веб-приложения захватили мир, а реализовать их в браузере или серверной части позволяет TensorFlow.js. Данная библиотека блестяще портируется, ее модели работают везде, где работает JavaScript.
Специалисты из Google Brain создали книгу, которая поможет решать реальные прикладные задачи. Вы не будете скучать над теорией, а сразу освоите базу глубокого обучения и познакомитесь с продвинутыми концепциями ИИ на примерах анализа текста, обработки речи, распознавания образов и самообучающегося игрового искусственного интеллекта.