Основы глубокого обучения
Реклама. ООО «ЛитРес», ИНН: 7719571260.
Оглавление
Нихиль Будума. Основы глубокого обучения
Предисловие
Требования и цели
Условные обозначения
Образцы кода
Глава 1. Нейросеть
Создание умных машин
Ограничения традиционных компьютерных программ
Механика машинного обучения
Нейрон
Выражение линейных персептронов в виде нейронов
Нейросети с прямым распространением сигнала
Линейные нейроны и их ограничения
Нейроны с сигмоидой, гиперболическим тангенсом и усеченные линейные
Выходные слои с функцией мягкого максимума
Резюме
Глава 2. Обучение нейросетей с прямым распространением сигнала
Проблема фастфуда
Градиентный спуск
Дельта-правило и темп обучения
Градиентный спуск с сигмоидными нейронами
Алгоритм обратного распространения ошибок
Стохастический и мини-пакетный градиентный спуск
Переобучение и наборы данных для тестирования и проверки
Борьба с переобучением в глубоких нейросетях
Резюме
Глава 3. Нейросети в TensorFlow
Что такое TensorFlow?
Сравнение TensorFlow с альтернативами
Установка TensorFlow
Создание переменных TensorFlow и работа с ними
Операции в TensorFlow
Тензоры-заполнители
Сессии в TensorFlow
Области видимости переменной и совместное использование переменных
Управление моделями на CPU и GPU
Создание модели логистической регрессии в TensorFlow
Журналирование и обучение модели логистической регрессии
Применение TensorBoard для визуализации вычислительного графа и обучения
Создание многослойной модели для MNIST в TensorFlow
Резюме
Глава 4. Не только градиентный спуск
Проблемы с градиентным спуском
Локальные минимумы на поверхности ошибок глубоких сетей
Определимость модели
Насколько неприятны сомнительные локальные минимумы в нейросетях?
Плоские области на поверхности ошибок
Когда градиент указывает в неверном направлении
Импульсная оптимизация
Краткий обзор методов второго порядка
Адаптация темпа обучения
AdaGrad – суммирование исторических градиентов
RMSProp – экспоненциально взвешенное скользящее среднее градиентов
Adam – сочетание импульсного метода с RMSProp
Философия при выборе метода оптимизации
Резюме
Глава 5. Сверточные нейросети
Нейроны и зрение человека
Недостатки выбора признаков
Обычные глубокие нейросети не масштабируются
Фильтры и карты признаков
Полное описание сверточного слоя
Max Pooling (операция подвыборки)
Полное архитектурное описание сверточных нейросетей
Работа с MNIST с помощью сверточных сетей
Предварительная обработка изображений улучшает работу моделей
Ускорение обучения с помощью пакетной нормализации
Создание сверточной сети для CIFAR-10
Визуализация обучения в сверточных сетях
Применение сверточных фильтров для воссоздания художественных стилей
Обучаем сверточные фильтры в других областях
Резюме
Глава 6. Плотные векторные представления и обучение представлений
Обучение представлений в пространстве низкой размерности
Метод главных компонент
Мотивация для архитектуры автокодера
Реализация автокодера в TensorFlow
Шумопонижение для повышения эффективности плотных векторных представлений
Разреженность в автокодерах
Когда контекст информативнее, чем входной вектор данных
Технология Word2Vec
Реализация архитектуры Skip-Gram
Резюме
Глава 7. Модели анализа последовательностей
Анализ данных переменной длины
seq2seq и нейронные N-граммные модели
Реализация разметки частей речи
Определение зависимостей и SyntaxNet
Лучевой поиск и глобальная нормализация
Когда нужна модель глубокого обучения с сохранением состояния
Рекуррентные нейронные сети
Проблема исчезающего градиента
Нейроны долгой краткосрочной памяти (long short-term memory, LSTM)
Примитивы TensorFlow для моделей РНС
Реализация модели анализа эмоциональной окраски
Решение задач класса seq2seq при помощи рекуррентных нейронных сетей
Дополнение рекуррентных сетей вниманием
Разбор нейронной сети для перевода
Резюме
Глава 8. Нейронные сети с дополнительной памятью
Нейронные машины Тьюринга
Доступ к памяти на основе внимания
Механизмы адресации памяти в NTM
Дифференцируемый нейронный компьютер
Запись без помех в DNC
Повторное использование памяти в DNC
Временное связывание записей DNC
Понимание головки чтения DNC
Сеть контроллера DNC
Визуализация работы DNC
Реализация DNC в TensorFlow
Обучение DNC чтению и пониманию
Резюме
Глава 9. Глубокое обучение с подкреплением
Глубокое обучение с подкреплением и игры Atari
Что такое обучение с подкреплением?
Марковские процессы принятия решений (MDP)
Стратегия
Будущая выгода
Дисконтирование будущих выгод
Исследование и использование
ϵ-жадность
Нормализованный алгоритм ϵ-жадности
Изучение стратегии и ценности
Изучение стратегии при помощи градиента по стратегиям
Тележка с шестом и градиенты по стратегиям
OpenAI Gym
Создание агента
Создание модели и оптимизатора
Семплирование действий
Фиксация истории
Основная функция градиента по стратегиям
Работа PGAgent в примере с тележкой с шестом
Q-обучение и глубокие Q-сети
Уравнение беллмана
Проблемы итерации по ценностям
Аппроксимация Q-функции
Глубокая Q-сеть (DQN)
Обучение DQN
Стабильность обучения
Целевая Q-сеть
Повторение опыта
От Q-функции к стратегии
DQN и марковское предположение
Решение проблемы марковского предположения в DQN
Игра в Breakout при помощи DQN
Создание архитектуры
Занесение кадров в стек
Задание обучающих операций
Обновление целевой Q-сети
Реализация повторения опыта
Основной цикл DQN
Результаты DQNAgent в Breakout
Улучшение и выход за пределы DQN
Глубокие рекуррентные Q-сети (DRQN)
Продвинутый асинхронный агент-критик (A3C)
Подкрепление без учителя и вспомогательное обучение (unsupervised reinforcement and auxiliary learning, unreal)
Резюме
Благодарности
Несколько слов об обложке
Об авторе
Эту книгу хорошо дополняют:
Отрывок из книги
С оживлением нейросетей в 2000-е годы глубокое обучение стало очень активно развивающейся областью исследований, основой передачи знаний с помощью машин. В этой книге приведены примеры и объяснения, которые помогут понять основные идеи этой сложной отрасли. Такие крупные компании, как Google, Microsoft и Facebook, уделяют внимание глубокому обучению и расширяют свои подразделения в этой области. Для всех прочих глубокое обучение остается сложным, многогранным и малопонятным предметом. В работах по этой теме много неясного жаргона, а разнообразные учебники, выложенные в сети, не дают четкого представления о том, как решаются задачи в данной области. Наша цель – восполнить этот пробел.
Это книга для аудитории, на базовом уровне владеющей математическим анализом, матричным исчислением и программированием на Python. Понять материал без этих знаний можно, но, скорее всего, очень сложно. Для некоторых разделов пригодится эрудиция в области линейной алгебры. К концу книги, надеемся, читатели уже будут понимать принципы решения задач в глубоком обучении, исторический контекст современных подходов к нему и узнают, как внедрить его алгоритмы при помощи открытой библиотеки TensorFlow.
.....
Математическое обсуждение искусственного нейрона мы закончим, выразив его функции в векторной форме. Представим входные данные нейрона как вектор x = [x1 x2 … xn], а веса нейрона как w = [w1 w2 … wn]. Теперь выходные данные нейрона можно выразить как y = f (x w + b), где b – смещение. Мы способны вычислить выходные данные из скалярного произведения входного вектора на вектор весов, добавив смещение и получив логит, а затем применив функцию активации. Это кажется тривиальным, но представление нейронов в виде ряда векторных операций очень важно: только в таком формате их используют в программировании.
Выше мы говорили об использовании моделей машинного обучения для определения зависимости между результатом на экзаменах и временем, потраченным на обучение и сон. Для решения задачи мы создали линейный классификатор-персептрон, который делит плоскость декартовых координат надвое:
.....