Глубокое обучение на Python

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Глубокое обучение динамично развивается, открывая все новые и новые возможности создания ПО. Это не только автоматический перевод текстов с одного языка на другой, распознавание изображений, но и многое другое. Глубокое обучение превратилось в важный навык, необходимый каждому разработчику. Keras и TensorFlow облегчают жизнь разработчикам и позволяют легко работать даже тем, кто не имеет фундаментальных знаний в области математики или науки о данных. Настала пора познакомиться с глубоким обучением и мощной библиотекой Keras! В этом расширенном и дополненном издании создатель библиотеки Keras — Франсуа Шолле делится знаниями и с новичками, и с опытными специалистами. Иллюстрации и наглядные примеры помогут вам разобраться с самыми сложными вопросами и концепциями. Вы быстро приобретете навыки, необходимые для разработки приложений глубокого обучения.

Author(s): Франсуа Шолле
Series: Библиотека программиста
Edition: 2
Publisher: Питер
Year: 2023

Language: Russian
Commentary: Publisher's PDF
Pages: 576
City: СПб.
Tags: Artificial Intelligence; Machine Learning; Neural Networks; Deep Learning; Unsupervised Learning; Reinforcement Learning; Computer Vision; Supervised Learning; Python; Convolutional Neural Networks; Recurrent Neural Networks; Autoencoders; Generative Adversarial Networks; Classification; Feature Engineering; Keras; Gradient Descent; NumPy; Model Evaluation; Overfitting; Underfitting; Tensor Calculus; Backpropagation; Semi-Supervised Learning

Предисловие
Благодарности
О книге
Кому адресована эта книга
О примерах кода
Об авторе
Об иллюстрации на обложке
От издательства
Глава 1. Что такое
глубокое обучение
1.1 Искусственный интеллект, машинное и глубокое обучение
1.1.1. Искусственный интеллект
1.1.2. Машинное обучение
1.1.3. Изучение правил и представлений данных
1.1.4. «Глубина» глубокого обучения
1.1.5. Принцип действия глубокого обучения в трех картинках
1.1.6. Какой ступени развития достигло глубокое обучение
1.1.7. Не верьте рекламе
1.1.8. Перспективы ИИ
1.2. Что было до глубокого обучения: краткая история машинного обучения
1.2.1. Вероятностное моделирование
1.2.2. Первые нейронные сети
1.2.3. Ядерные методы
1.2.4. Деревья решений, случайные леса и градиентный бустинг
1.2.5. Назад к нейронным сетям
1.2.6. Отличительные черты глубокого обучения
1.2.7. Современный ландшафт машинного обучения
1.3. Почему глубокое обучение? Почему сейчас?
1.3.1. Оборудование
1.3.2. Данные
1.3.3. Алгоритмы
1.3.4. Новая волна инвестиций
1.3.5. Демократизация глубокого обучения
1.3.6. Ждать ли продолжения этой тенденции?
Глава 2. Математические основы нейронных сетей
2.1. Первое знакомство с нейронной сетью
2.2. Представление данных для нейронных сетей
2.2.1. Скаляры (тензоры нулевого ранга)
2.2.2. Векторы (тензоры первого ранга)
2.2.3. Матрицы (тензоры второго ранга)
2.2.4. Тензоры третьего и более высоких рангов
2.2.5. Ключевые атрибуты
2.2.6. Манипулирование тензорами с помощью NumPy
2.2.7. Пакеты данных
2.2.8. Практические примеры тензоров с данными
2.2.9. Векторные данные
2.2.10. Временные ряды или последовательности
2.2.11. Изображения
2.2.12. Видео
2.3. Шестеренки нейронных сетей: операции с тензорами
2.3.1. Поэлементные операции
2.3.2. Расширение
2.3.3. Скалярное произведение тензоров
2.3.4. Изменение формы тензора
2.3.5. Геометрическая интерпретация операций с тензорами
2.3.6. Геометрическая интерпретация глубокого обучения
2.4. Механизм нейронных сетей: оптимизация на основе градиента
2.4.1. Что такое производная?
2.4.2. Производная операций с тензорами: градиент
2.4.3. Стохастический градиентный спуск
2.4.4. Объединение производных: алгоритм обратного распространения ошибки
2.5. Оглядываясь на первый пример
2.5.1. Повторная реализация первого примера в TensorFlow
2.5.2. Выполнение одного этапа обучения
2.5.3. Полный цикл обучения
2.5.4. Оценка модели
Краткие итоги главы
Глава 3. Введение в Keras
и TensorFlow
3.1. Что такое TensorFlow
3.2. Что такое Keras
3.3. Keras и TensorFlow: краткая история
3.4. Настройка окружения для глубокого обучения
3.4.1. Jupyter Notebook: предпочтительный способ проведения экспериментов с глубоким обучением
3.4.2. Использование Colaboratory
3.5. Первые шаги с TensorFlow
3.5.1. Тензоры-константы и тензоры-переменные
3.5.2. Операции с тензорами: математические действия в TensorFlow
3.5.3. Второй взгляд на GradientTape
3.5.4. Полный пример: линейный классификатор на TensorFlow
3.6. Анатомия нейронной сети: знакомство с основами Keras
3.6.1. Слои: строительные блоки глубокого обучения
3.6.2. От слоев к моделям
3.6.3. Этап «компиляции»: настройка процесса обучения
3.6.4. Выбор функции потерь
3.6.5. Метод fit()
3.6.6. Оценка потерь и метрик на проверочных данных
3.6.7. Вывод: использование модели после обучения
Краткие итоги главы
Глава 4. Начало работы с нейронными сетями: классификация и регрессия
4.1. Классификация отзывов к фильмам: пример бинарной классификации
4.1.1. Набор данных IMDB
4.1.2. Подготовка данных
4.1.3. Конструирование модели
4.1.4. Проверка решения
4.1.5. Использование обученной сети для предсказаний на новых данных
4.1.6. Дальнейшие эксперименты
4.1.7. Подведение итогов
4.2. Классификация новостных лент: пример классификации в несколько классов
4.2.1. Набор данных Reuters
4.2.2. Подготовка данных
4.2.3. Конструирование модели
4.2.4. Проверка решения
4.2.5. Предсказания на новых данных
4.2.6. Другой способ обработки меток и потерь
4.2.7. Важность использования достаточно больших промежуточных слоев
4.2.8. Дальнейшие эксперименты
4.2.9. Подведение итогов
4.3. Предсказание цен на дома: пример регрессии
4.3.1. Набор данных с ценами на жилье в Бостоне
4.3.2. Подготовка данных
4.3.3. Конструирование модели
4.3.4. Оценка решения методом перекрестной проверки по K блокам
4.3.5. Предсказания на новых данных
4.3.6. Подведение итогов
Краткие итоги главы
Глава 5. Основы машинного обучения
5.1. Обобщение: цель машинного обучения
5.1.1. Недообучение и переобучение
5.1.2. Природа общности в глубоком обучении
5.2. Оценка моделей машинного обучения
5.2.1. Обучающие, проверочные и контрольные наборы данных
5.2.2. Выбор базового уровня
5.2.3. Что важно помнить об оценке моделей
5.3. Улучшение качества обучения модели
5.3.1. Настройка основных параметров градиентного спуска
5.3.2. Использование более удачной архитектуры
5.3.3. Увеличение емкости модели
5.4. Улучшение общности
5.4.1. Курирование набора данных
5.4.2. Конструирование признаков
5.4.3. Ранняя остановка
5.4.4. Регуляризация модели
Краткие итоги главы
Глава 6. Обобщенный процесс машинного обучения
6.1. Определение задачи
6.1.1. Формулировка задачи
6.1.2. Сбор данных
6.1.3. Первичный анализ данных
6.1.4. Выбор меры успеха
6.2. Разработка модели
6.2.1. Подготовка данных
6.2.2. Выбор протокола оценки
6.2.3. Преодоление базового случая
6.2.4. Следующий шаг: разработка модели с переобучением
6.2.5 Регуляризация и настройка модели
6.3. Развертывание модели
6.3.1. Объяснение особенностей работы модели заинтересованным сторонам и обозначение границ ожидаемого
6.3.2. Предоставление доступа к модели
6.3.3. Мониторинг качества работы модели в процессе эксплуатации
6.3.4. Обслуживание модели
Краткие итоги главы
Глава 7. Работа с Keras: глубокое погружение
7.1. Спектр рабочих процессов
7.2. Разные способы создания моделей Keras
7.2.1. Последовательная модель Sequential
7.2.2. Функциональный API
7.2.3. Создание производных от класса Model
7.2.4 Смешивание и согласование различных компонентов
7.2.5. Используйте правильный инструмент
7.3. Встроенные циклы обучения и оценки
7.3.1. Использование собственных метрик
7.3.2. Использование обратных вызовов
7.3.3. Разработка своего обратного вызова
7.3.4. Мониторинг и визуализация с помощью TensorBoard
7.4. Разработка своего цикла обучения и оценки
7.4.1. Обучение и прогнозирование
7.4.2. Низкоуровневое использование метрик
7.4.3. Полный цикл обучения и оценки
7.4.4. Ускорение вычислений с помощью tf.function
7.4.5. Использование fit() с нестандартным циклом обучения
Краткие итоги главы
Глава 8. Введение в глубокое обучение в технологиях компьютерного зрения
8.1. Введение в сверточные нейронные сети
8.1.1. Операция свертывания
8.1.2. Выбор максимального значения из соседних (max-pooling)
8.2. Обучение сверточной нейронной сети с нуля на небольшом наборе данных
8.2.1. Целесообразность глубокого обучения для решения задач с небольшими наборами данных
8.2.2. Загрузка данных
8.2.3. Конструирование сети
8.2.4. Предварительная обработка данных
8.2.5. Обогащение данных
8.3. Использование предварительно обученной модели
8.3.1. Выделение признаков
8.3.2. Дообучение предварительно обученной модели
Краткие итоги главы
Глава 9. Продвинутые приемы глубокого обучения в технологиях компьютерного зрения
9.1. Три основных задачи в сфере компьютерного зрения
9.2. Пример сегментации изображения
9.3. Современные архитектурные шаблоны сверточных сетей
9.3.1. Модульность, иерархия, многократное использование
9.3.2. Остаточные связи
9.3.3. Пакетная нормализация
9.3.4. Раздельная свертка по глубине
9.3.5. Собираем все вместе: мини-модель с архитектурой Xception
9.4. Интерпретация знаний, заключенных в сверточной нейронной сети
9.4.1. Визуализация промежуточных активаций
9.4.2. Визуализация фильтров сверточных нейронных сетей
9.4.3. Визуализация тепловых карт активации класса
Краткие итоги главы
Глава 10. Глубокое обучение на временных последовательностях
10.1. Разные виды временных последовательностей
10.2. Пример прогнозирования температуры
10.2.1. Подготовка данных
10.2.2. Базовое решение без привлечения машинного обучения
10.2.3. Базовое решение c привлечением машинного обучения
10.2.4. Попытка использовать одномерную сверточную модель
10.2.5. Первое базовое рекуррентное решение
10.3. Рекуррентные нейронные сети
10.3.1. Рекуррентный слой в Keras
10.4. Улучшенные методы использования рекуррентных нейронных сетей
10.4.1. Использование рекуррентного прореживания для борьбы с переобучением
10.4.2. Наложение нескольких рекуррентных слоев друг на друга
10.4.3. Использование двунаправленных рекуррентных нейронных сетей
10.4.4. Что дальше
Краткие итоги главы
Глава 11. Глубокое обучение
для текста
11.1. Обработка естественных языков
11.2. Подготовка текстовых данных
11.2.1. Стандартизация текста
11.2.2. Деление текста на единицы (токенизация)
11.2.3. Индексирование словаря
11.2.4. Использование слоя TextVectorization
11.3. Два подхода к представлению групп слов: множества и последовательности
11.3.1. Подготовка данных IMDB с отзывами к фильмам
11.3.2. Обработка наборов данных: мешки слов
11.3.3. Обработка слов как последовательностей: модели последовательностей
11.4. Архитектура Transformer
11.4.1. Идея внутреннего внимания
11.4.2. Многоголовое внимание
11.4.3. Кодировщик Transformer
11.4.4. Когда использовать модели последовательностей вместо моделей мешка слов
11.5. За границами классификации текста: обучение «последовательность в последовательность»
11.5.1. Пример машинного перевода
11.5.2. Обучение типа «последовательность в последовательность» рекуррентной сети
11.5.3. Обучение типа «последовательность в последовательность» архитектуры Transformer
Краткие итоги главы
Глава 12. Генеративное глубокое обучение
12.1. Генерирование текста
12.1.1. Краткая история генеративного глубокого обучения для генерирования последовательностей
12.1.2. Как генерируются последовательности данных?
12.1.3. Важность стратегии выбора
12.1.4. Реализация генерации текста в Keras
12.1.5. Обратный вызов для генерации текста с разными значениями температуры
12.1.6. Подведение итогов
12.2. DeepDream
12.2.1. Реализация DeepDream в Keras
12.2.2. Подведение итогов
12.3. Нейронная передача стиля
12.3.1. Функция потерь содержимого
12.3.2. Функция потерь стиля
12.3.3. Нейронная передача стиля в Keras
12.3.4. Подведение итогов
12.4. Генерирование изображений с вариационными автокодировщиками
12.4.1. Выбор шаблонов из скрытых пространств изображений
12.4.2. Концептуальные векторы для редактирования изображений
12.4.3. Вариационные автокодировщики
12.4.4. Реализация VAE в Keras
12.4.5. Подведение итогов
12.5. Введение в генеративно-состязательные сети
12.5.1. Реализация простейшей генеративно-состязательной сети
12.5.2. Набор хитростей
12.5.3. Получение набора данных CelebA
12.5.4. Дискриминатор
12.5.5. Генератор
12.5.6. Состязательная сеть
12.5.7. Подведение итогов
Краткие итоги главы
Глава 13. Методы и приемы для применения
на практике
13.1. Получение максимальной отдачи от моделей
13.1.1. Оптимизация гиперпараметров
13.1.2. Ансамблирование моделей
13.2. Масштабирование обучения моделей
13.2.1. Ускорение обучения на GPU со смешанной точностью
13.2.2. Обучение на нескольких GPU
13.2.3. Обучение на TPU
Краткие итоги главы
Глава 14. Заключение
14.1. Краткий обзор ключевых понятий
14.1.1. Разные подходы к ИИ
14.1.2. Что делает глубокое обучение особенным среди других подходов к машинному обучению
14.1.3. Как правильно воспринимать глубокое обучение
14.1.4. Ключевые технологии
14.1.5. Обобщенный процесс машинного обучения
14.1.6. Основные архитектуры сетей
14.1.7. Пространство возможностей
14.2. Ограничения глубокого обучения
14.2.1. Риск очеловечивания моделей глубокого обучения
14.2.2 Автоматы и носители интеллекта
14.2.3. Локальное и экстремальное обобщение
14.2.4. Назначение интеллекта
14.2.5. Восхождение по спектру обобщения
14.3. Курс на увеличение универсальности в ИИ
14.3.1. О важности постановки верной цели: правило выбора кратчайшего пути
14.3.2 Новая цель
14.4. Реализация интеллекта: недостающие ингредиенты
14.4.1. Интеллект как чувствительность к абстрактным аналогиям
14.4.2. Два полюса абстракции
14.4.3. Недостающая половина картины
14.5. Будущее глубокого обучения
14.5.1. Модели как программы
14.5.2. Сочетание глубокого обучения и синтеза программ
14.5.3. Непрерывное обучение и повторное использование модульных подпрограмм
14.5.4. Долгосрочная перспектива
14.6. Как не отстать от прогресса в быстроразвивающейся области
14.6.1. Практические решения реальных задач на сайте Kaggle
14.6.2. Знакомство с последними разработками на сайте arXiv
14.6.3. Исследование экосистемы Keras
Заключительное слово