Глубокое обучение с R и Keras. 2 изд

Глубокое обучение с R и Keras. 2 изд

Глубокое обучение с R и Keras. 2 изд
Автор: Шолле Франсуа
Дата выхода: 2023
Издательство: ДМК Пресс
Количество страниц: 648
Размер файла: 10,0 МБ
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы

 Оглавление . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .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 или моделями глубокого обучения не требуется.


Похожее:

Список отзывов:

Нет отзывов к книге.