Содержание
Об авторе 18
Благодарности 19
Предисловие 22
Цунами машинного обучения 22
Машинное обучение в ваших проектах 23
Цель и подход 23
Предварительные требования 24
Дорожная карта 25
Изменения во втором издании 27
Другие ресурсы 28
Типографские соглашения, используемые в книге 29
Код примеров 30
Использование кода примеров 31
Об иллюстрации на обложке 31
Ждем ваших отзывов! 32
Часть I. Основы машинного обучения 33
Глава 1. Введение в машинное обучение 35
Что такое машинное обучение? 36
Для чего используют машинное обучение? 37
Примеры приложений 40
Типы систем машинного обучения 42
Обучение с учителем и без учителя 43
Пакетное и динамическое обучение 51
Обучение на основе образцов или на основе моделей 55
Основные проблемы машинного обучения 62
Недостаточный размер обучающих данных 62
Нерепрезентативные обучающие данные 64
Данные плохого качества 66
Несущественные признаки 66
Переобучение обучающими данными 67
Недообучение обучающими данными 69
Шаг назад 70
Испытание и проверка 71
Настройка гиперпараметра и подбор модели 71
Несоответствие данных 73
Упражнения 75
Глава 2. Полный проект машинного обучения 77
Работа с реальными данными 77
Выяснение общей картины 79
Постановка задачи 79
Выбор критерия качества работы 82
Проверка допущений 85
Получение данных 85
Создание рабочей области 85
Загрузка данных 90
Беглый взгляд на структуру данных 91
Создание испытательного набора 96
Обнаружение и визуализация данных для понимания их сущности 101
Визуализация географических данных 102
Поиск связей 104
Экспериментирование с комбинациями атрибутов 107
Подготовка данных для алгоритмов машинного обучения 109
Очистка данных 110
Обработка текстовых и категориальных атрибутов 113
Специальные трансформаторы 116
Масштабирование признаков 117
Конвейеры трансформации 119
Выбор и обучение модели 121
Обучение и оценка с помощью обучающего набора 121
Более подходящая оценка с использованием перекрестной проверки 123
Точная настройка модели 126
Решетчатый поиск 126
Рандомизированный поиск 129
Ансамблевые методы 130
Анализ лучших моделей и их ошибок 130
Оценка системы с помощью испытательного набора 131
Запуск, наблюдение и сопровождение системы 132
Пробуйте! 137
Упражнения 137
Глава 3. Классификация 139
MNIST 139
Обучение двоичного классификатора 142
Показатели эффективности 143
Измерение правильности с использованием перекрестной проверки 143
Матрица неточностей 145
Точность и полнота 147
Соотношение точность/полнота 149
Кривая ROC 153
Многоклассовая классификация 157
Анализ ошибок 160
Многозначная классификация 164
Многовыходовая классификация 166
Упражнения 168
Глава 4. Обучение моделей 171
Линейная регрессия 172
Нормальное уравнение 174
Вычислительная сложность 178
Градиентный спуск 178
Пакетный градиентный спуск 182
Стохастический градиентный спуск 186
Мини-пакетный градиентный спуск 189
Полиномиальная регрессия 191
Кривые обучения 193
Регуляризированные линейные модели 198
Гребневая регрессия 198
Лассо-регрессия 201
Эластичная сеть 204
Раннее прекращение 205
Логистическая регрессия 207
Оценивание вероятностей 207
Обучение и функция издержек 208
Границы решений 210
Многопеременная логистическая регрессия 213
Упражнения 217
Глава 5. Методы опорных векторов 219
Линейная классификация SVM 219
Классификация с мягким зазором 220
Нелинейная классификация SVM 223
Полиномиальное ядро 224
Признаки близости 226
Гауссово ядро RBF 227
Вычислительная сложность 229
Регрессия SVM 230
Внутренняя кухня 232
Функция решения и прогнозы 232
Цель обучения 233
Квадратичное программирование 235
Двойственная задача 236
Параметрически редуцированные методы SVM 237
Динамические методы SVM 240
Упражнения 242
Глава 6. Деревья принятия решений 245
Обучение и визуализация дерева принятия решений 245
Вырабатывание прогнозов 247
Оценивание вероятностей классов 249
Алгоритм обучения CART 250
Вычислительная сложность 251
Загрязненность Джини или энтропия? 252
Гиперпараметры регуляризации 253
Регрессия 254
Неустойчивость 257
Упражнения 258
Глава 7. Ансамблевое обучение и случайные леса 261
Классификаторы с голосованием 262
Бэггинг и вставка 265
Бэггинг и вставка в Scikit-Learn 267
Оценка на неиспользуемых образцах 268
Методы случайных участков и случайных подпространств 270
Случайные леса 270
Особо случайные деревья 272
Значимость признаков 272
Бустинг 274
AdaBoost 274
Градиентный бустинг 278
Стекинг 283
Упражнения 287
Глава 8. Понижение размерности 289
“Проклятие размерности” 290
Основные подходы к понижению размерности 292
Проекция 292
Обучение на основе многообразий 294
PCA 296
Предохранение дисперсии 296
Главные компоненты 297
Проецирование до d измерений 299
Использование Scikit-Learn 300
Коэффициент объясненной дисперсии 300
Выбор правильного количества измерений 300
Алгоритм PCA для сжатия 302
Рандомизированный анализ главных компонентов 303
Инкрементный анализ главных компонентов 303
Ядерный анализ главных компонентов 304
Выбор ядра и подстройка гиперпараметров 306
LLE 308
Другие методики понижения размерности 311
Упражнения 312
Глава 9. Методики обучения без учителя 315
Кластеризация 316
K-Means 319
Ограничения K-Means 331
Использование кластеризации для сегментирования изображений 332
Использование кластеризации для предварительной обработки 334
Использование кластеризации для частичного обучения 336
DBSCAN 340
Другие алгоритмы кластеризации 343
Смеси гауссовых распределений 346
Обнаружение аномалий с использованием смесей гауссовых распределений 352
Выбор количества кластеров 354
Байесовские модели со смесями гауссовых распределений 357
Другие алгоритмы для обнаружения аномалий и новизны 363
Упражнения 364
Часть II. Нейронные сети и глубокое обучение 367
Глава 10. Введение в искусственные нейронные сети с использованием Keras 369
От биологических нейронов к искусственным нейронам 370
Биологические нейроны 372
Логические вычисления с помощью нейронов 374
Персептрон 375
Многослойный персептрон и обратное распространение 380
Многослойные персептроны для регрессии 385
Многослойные персептроны для классификации 386
Реализация многослойных персептронов с помощью Keras 388
Установка TensorFlow 2 390
Построение классификатора изображений с использованием
API-интерфейса Sequential 391
Построение многослойного персептрона для регрессии
с использованием API-интерфейса Sequential 404
Построение сложных моделей с использованием API-интерфейса Functional 405
Использование API-интерфейса Subclassing для построения
динамических моделей 411
Сохранение и восстановление модели 413
Использование обратных вызовов 414
Использование TensorBoard для визуализации 416
Точная настройка гиперпараметров нейронной сети 420
Количество скрытых слоев 424
Количество нейронов на скрытый слой 426
Скорость обучения, размер пакета и другие гиперпараметры 427
Упражнения 430
Глава 11. Обучение глубоких нейронных сетей 435
Проблемы исчезновения и взрывного роста градиентов 436
Инициализация Глоро и Хе 437
Ненасыщаемые функции активации 440
Пакетная нормализация 445
Отсечение градиентов 453
Повторное использование заранее обученных слоев 454
Обучение передачей знаний с помощью Keras 456
Предварительное обучение без учителя 459
Предварительное обучение на вспомогательной задаче 460
Более быстрые оптимизаторы 461
Моментная оптимизация 462
Ускоренный градиент Нестерова 464
AdaGrad 465
RMSProp 467
Оптимизация Adam и Nadam 467
Планирование скорости обучения 472
Избегание переобучения посредством регуляризации 477
Регуляризация ℓ1 и ℓ2 478
Отключение 479
Отключение Монте-Карло 483
Регуляризация на основе max-нормы 486
Резюме и практические рекомендации 487
Упражнения 489
Глава 12. Специальные модели и обучение с помощью TensorFlow 491
Краткий тур по TensorFlow 492
Использование TensorFlow подобно NumPy 496
Тензоры и операции 496
Тензоры и NumPy 498
Преобразования типов 499
Переменные 500
Другие структуры данных 501
Настройка моделей и алгоритмов обучения 502
Специальные функции потерь 502
Сохранение и загрузка моделей, которые содержат
специальные компоненты 503
Специальные функции активации, инициализаторы,
регуляризаторы и ограничения 506
Специальные метрики 507
Специальные слои 511
Специальные модели 515
Потери и метрики, основанные на внутренностях модели 517
Вычисление градиентов с использованием автоматического
дифференцирования 520
Специальные циклы обучения 524
Функции и графы TensorFlow 528
AutoGraph и трассировка 531
Правила TF Function 532
Упражнения 535
Глава 13. Загрузка и предварительная обработка данных с помощью TensorFlow 537
API-интерфейс Data 538
Формирование цепочки трансформаций 539
Тасование данных 541
Предварительная обработка данных 545
Собираем все вместе 547
Предварительная выборка 548
Использование набора данных с библиотекой tf.keras 550
Формат TFRecord 552
Сжатые файлы TFRecord 552
Краткое введение в протокольные буферы 553
Протобуферы TensorFlow 555
Загрузка и разбор протобуферов Example 556
Обработка списка списков с использованием протобуфера
SequenceExample 558
Предварительная подготовка входных признаков 559
Кодирование категориальных признаков с использованием векторов
в унитарном коде 561
Кодирование категориальных признаков с использованием вложений 564
Слои предварительной обработки Keras 569
TF Transform 572
Проект TensorFlow Datasets (TFDS) 574
Упражнения 576
Глава 14. Глубокое компьютерное зрение с использованием сверточных
нейронных сетей 579
Строение зрительной коры головного мозга 580
Сверточные слои 582
Фильтры 585
Наложение множества карт признаков 586
Реализация с помощью TensorFlow 588
Требования к памяти 591
Объединяющие слои 592
Реализация в TensorFlow 595
Архитектуры сверточных нейронных сетей 597
LeNet-5 600
AlexNet 602
GoogLeNet 605
VGGNet 609
ResNet 609
Xception 613
SENet 616
Реализация сверточной нейронной сети ResNet-34 с использованием Keras 618
Использование заранее обученных моделей из Keras 620
Использование заранее обученных моделей для обучения передачей знаний 622
Классификация и установление местонахождения 626
Выявление объектов 628
Полностью сверточные сети 630
Вы просматриваете только раз (YOLO) 633
Семантическая сегментация 637
Упражнения 642
Глава 15. Обработка последовательностей с использованием
рекуррентных и сверточных нейронных сетей 645
Рекуррентные нейроны и слои 646
Ячейки памяти 649
Входные и выходные последовательности 650
Обучение рекуррентных нейронных сетей 651
Прогнозирование временных рядов 652
Метрики базисного уровня 654
Реализация простой рекуррентной нейронной сети 655
Глубокие рекуррентные нейронные сети 657
Прогнозирование на несколько временных шагов вперед 659
Обработка длинных последовательностей 663
Борьба с проблемой нестабильных градиентов 664
Борьба с проблемой краткосрочной памяти 667
Упражнения 677
Глава 16. Обработка естественного языка с помощью рекуррентных
нейронных сетей и внимания 679
Генерация шекспировского текста с использованием символьной сети RNN 681
Создание обучающего набора данных 681
Расщепление последовательного набора данных 683
Разрезание последовательного набора данных на множество окон 684
Построение и обучение модели Char-RNN 686
Использование модели Char-RNN 687
Генерирование поддельного шекспировского текста 688
Сеть RNN с запоминанием состояния 689
Смысловой анализ 692
Маскирование 697
Повторное использование заранее обученных вложений 700
Сеть “кодировщик–декодировщик” для нейронного машинного перевода 702
Двунаправленные рекуррентные нейронные сети 707
Лучевой поиск 708
Механизмы внимания 710
Зрительное внимание 714
Внимание — это все, что нужно: архитектура “Преобразователь” 716
Последние новшества в языковых моделях 727
Упражнения 731
Глава 17. Обучение представлению и порождению с использованием
автокодировщиков и порождающих состязательных сетей 733
Эффективные представления данных 735
Выполнение анализа главных компонентов с помощью понижающего
линейного автокодировщика 737
Многослойные автокодировщики 739
Реализация многослойного автокодировщика с использованием Keras 739
Визуализация реконструкций 741
Визуализация набора данных Fashion MNIST 742
Предварительное обучение без учителя с использованием
многослойных автокодировщиков 744
Соединение весов 745
Обучение одного автокодировщика за раз 746
Сверточные автокодировщики 748
Рекуррентные автокодировщики 749
Шумоподавляющие автокодировщики 750
Разреженные автокодировщики 753
Вариационные автокодировщики 757
Генерирование изображений Fashion MNIST 762
Порождающие состязательные сети 764
Трудности обучения порождающих состязательных сетей 769
Глубокие сверточные порождающие состязательные сети 771
Прогрессивный рост порождающих состязательных сетей 775
Сети StyleGAN 779
Упражнения 782
Глава 18. Обучение с подкреплением 785
Обучение для оптимизации наград 786
Поиск политики 788
Введение в OpenAI Gym 790
Нейросетевые политики 795
Оценка действий: проблема присваивания коэффициентов доверия 797
Градиенты политики 799
Марковские процессы принятия решений 805
Обучение методом временных разностей 811
Q-обучение 812
Политики исследования 814
Приближенное Q-обучение и глубокое Q-обучение 815
Реализация глубокого Q-обучения 817
Варианты глубокого Q-обучения 822
Фиксированные цели Q-ценностей 823
Двойная глубокая Q-сеть 824
Воспроизведение опытов по приоритетам 825
Соревнующаяся глубокая Q-сеть 826
Библиотека TF-Agents 827
Установка TF-Agents 828
Среды TF-Agents 829
Спецификации среды 830
Оболочки сред и предварительная обработка Atari 831
Структура обучения 835
Создание глубокой Q-сети 837
Создание агента DQN 840
Создание буфера воспроизведения и соответствующего наблюдателя 841
Создание метрик обучения 844
Создание драйвера сбора 845
Создание набора данных 847
Создание цикла обучения 850
Обзор ряда популярных алгоритмов обучения с подкреплением 852
Упражнения 855
Глава 19. Широкомасштабное обучение и развертывание моделей TensorFlow 857
Обслуживание модели TensorFlow 858
Использование TensorFlow Serving 859
Создание службы прогнозирования на облачной платформе Google 871
Использование службы прогнозирования 876
Развертывание модели на мобильном или встроенном устройстве 880
Использование графических процессоров для ускорения вычислений 886
Получение собственного графического процессора 887
Использование виртуальной машины, оснащенной
графическим процессором 890
Среда Colaboratory 891
Управление оперативной памятью графического процессора 893
Размещение операций и переменных на устройствах 897
Параллельное выполнение на множестве устройств 899
Обучение моделей на множестве устройств 902
Параллелизм модели 902
Параллелизм данных 905
Обучение и масштабирование с использованием API-интерфейса
Distribution Strategies 911
Обучение модели на кластере TensorFlow 913
Запуск крупных заданий обучения на платформе AI Platform
инфраструктуры Google Cloud 917
Служба подстройки гиперпараметров типа “черный ящик”
платформы AI Platform 920
Упражнения 921
Спасибо! 922
Приложение А. Решения упражнений 924
Глава 1. Введение в машинное обучение 924
Глава 2. Полный проект машинного обучения 927
Глава 3. Классификация 927
Глава 4. Обучение моделей 927
Глава 5. Методы опорных векторов 930
Глава 6. Деревья принятия решений 932
Глава 7. Ансамблевое обучение и случайные леса 934
Глава 8. Понижение размерности 935
Глава 9. Методики обучения без учителя 938
Глава 10. Введение в искусственные нейронные сети с использованием Keras 940
Глава 11. Обучение глубоких нейронных сетей 944
Глава 12. Специальные модели и обучение с помощью TensorFlow 946
Глава 13. Загрузка и предварительная обработка данных с помощью TensorFlow 949
Глава 14. Глубокое компьютерное зрение с использованием сверточных
нейронных сетей 953
Глава 15. Обработка последовательностей с использованием рекуррентных
и сверточных нейронных сетей 957
Глава 16. Обработка естественного языка с помощью рекуррентных
нейронных сетей и внимания 961
Глава 17. Обучение представлению и порождению с использованием
автокодировщиков и порождающих состязательных сетей 964
Глава 18. Обучение с подкреплением 966
Глава 19. Широкомасштабное обучение и развертывание моделей TensorFlow 970
Приложение Б. Контрольный перечень для проекта машинного обучения 974
Постановка задачи и выяснение общей картины 974
Получение данных 975
Исследование данных 976
Подготовка данных 977
Составление окончательного списка перспективных моделей 978
Точная настройка системы 978
Представление своего решения 979
Запуск! 980
Приложение В. Двойственная задача SVM 981
Приложение Г. Автоматическое дифференцирование 984
Ручное дифференцирование 984
Конечно-разностное приближение 985
Автоматическое дифференцирование в прямом режиме 986
Автоматическое дифференцирование в обратном режиме 989
Приложение Д. Другие популярные архитектуры искусственных
нейронных сетей 992
Сети Хопфилда 992
Машины Больцмана 994
Ограниченные машины Больцмана 996
Глубокие сети доверия 998
Самоорганизующиеся карты 1000
Приложение Е. Специальные структуры данных 1003
Строки 1003
Зубчатые тензоры 1004
Разреженные тензоры 1006
Тензорные массивы 1006
Множества 1007
Очереди 1009
Приложение Ж. Графы TensorFlow 1011
Функции TF Function и конкретные функции 1011
Исследование определений и графов функций 1013
Более пристальный взгляд на трассировку 1015
Использование AutoGraph для захвата потока управления 1017
Обработка переменных и других ресурсов в функциях TF Function 1018
Использование функций TF Function с tf.keras 1020
Предметный указатель 1021