Цель этого поста - осветить содержание fast.ai 2018 Практическое глубокое обучение для кодеров, часть 1. Я надеюсь, что любой, кто решит пройти этот курс или задумается о нем, извлечет из этого пользу. Обратите внимание, что структура контента извлекается из временных рамок видео, представленных в вики-ссылке для каждого урока.

Урок 1. Как узнать кошек и собак

Вики-урок: http://forums.fast.ai/t/wiki-lesson-1/9398

  • Подход к обучению «сверху вниз» в сравнении с подходом «снизу вверх»
  • Jupyter Notebook Lesson1.ipynb «Собаки против кошек»
  • Запуск первой модели глубокого обучения с архитектурой «resnet34», эпоха, точность при проверке.
  • Анализ результатов: просмотр изображений
  • Что такое глубокое обучение?
  • Универсальная аппроксимационная теорема и примеры, используемые корпорацией Google.
  • Что на самом деле происходит в модели глубокого обучения со сверточной сетью.
  • Добавление нелинейного слоя к нашей модели, сигмоида или ReLu (выпрямленная линейная единица), SGD (стохастический градиентный спуск)
  • Визуализация и понимание сверточных сетей
  • Циклические скорости обучения с библиотекой Fastai как «lr_find» или средством поиска скорости обучения.

Урок 2: сверточные нейронные сети

Вики-урок: http://forums.fast.ai/t/wiki-lesson-2/9399

  • Обзор Урока 1, Классификатор изображений
  • Что такое скорость обучения (LR), LR Finder, мини-пакет, learn.sched.plot_lr () и learn.sched.plot (), введение в оптимизатор ADAM
  • Как улучшить вашу модель с большим количеством данных,
    избежать переобучения, использовать другое увеличение данных
  • Data Augmentation (DA), tfms = и precompute = True, наглядные примеры обнаружения и активации уровня в предварительно обученных
    сетях, таких как ImageNet.
  • Отжиг скорости обучения, косинусный отжиг, стохастический градиентный спуск (SGD) с подходом перезапуска, ансамбль; "Суперсила Джереми"
  • Сохраните веса вашей модели с помощью «learn.save ()» и «learn.load ()», папок «tmp» и «models»
  • Тонкая настройка и дифференцированная скорость обучения
  • Почему Fast.ai перешел с Keras + TensorFlow на PyTorch, создав высокоуровневую библиотеку поверх.
  • Матрица классификации или неточности
  • Загрузите / импортируйте данные из Kaggle с помощью «kaggle-cli», используя файлы CSV с Pandas.
  • Недокументированный профессиональный совет от Джереми: тренируйтесь с маленьким размером, затем используйте «learn.set_data ()» с большим набором данных (например, 299 на 224 пикселей)
  • Использование увеличения времени тестирования
  • Конкурс спутниковых снимков Amazon на Kaggle.

Урок 3. Улучшение классификатора изображений

Урок Wiki: http://forums.fast.ai/t/wiki-lesson-3/9401

  • Как выполнить задание по определению породы собак.
  • Что это значит для «Precompute = True» и «learn.bn_freeze»
  • Введение и сравнение с Keras с TensorFlow
  • Перенос библиотеки PyTorch fast.ai в проект Keras + TensorFlow
  • Теория сверточных сетей и демонстрация Otavio Good (Word Lens)
  • Демо ConvNet с Excel, фильтром, скрытым слоем, Maxpool, плотными весами, полностью подключенным слоем, выводом, прибавлением вероятностей к 1, функцией активации, Softmax
  • Классификация по нескольким маркам с конкурсом Amazon Satellite
  • Установка разной скорости обучения для разных слоев
  • «Сигмоидная» активация для нескольких меток
  • Обучение только последних слоев, а не начальных замороженных / замороженных слоев из моделей ImageNet
  • Работа со структурированными данными «Корпорасьон Фаворита Прогноз продаж бакалейных товаров» на основе конкурса Rossman Stores
  • Разделите столбцы Россмана на два типа: категориальные и непрерывные

Урок 4. Структурированные, временные ряды и языковые модели

Вики-урок: http://forums.fast.ai/t/wiki-lesson-4/9402

  • Прекращение обсуждения с «Dog_Breeds»
  • Зачем отслеживать потери / лог-потери и точность?
  • Просмотр структурированных данных и данных временных рядов с помощью конкурса Rossmann Kaggle
  • RMSPE: среднеквадратическая ошибка в процентах
  • Работа с категориальными переменными
  • Введение в обработку естественного языка (NLP)
  • Создание языковой модели с набором данных IMDB
  • Tokenize: разбиение предложения на массив токенов

Урок 5: Совместная фильтрация, внутри цикла обучения

Вики-урок: http://forums.fast.ai/t/wiki-lesson-5/9403

  • Набор данных MovieLens: создание эффективной модели совместной фильтрации с нуля
  • Почему матричная факторизация, а не нейронная сеть? Использование решателя Excel для градиентного спуска «GRG Nonlinear»
  • Инициализация Kaiming He (через DeepGrid)
  • Снова улучшаем модель MovieLens в Excel, добавляя константу для фильмов и пользователей, называемую «предвзятость».
  • Получение оценок от 1 до 5 с помощью сигмовидной функции
  • Что происходит внутри «цикла обучения»
  • Вкладка "Momentum" в таблице
  • Вкладка "Адам" в таблице
  • Beyond Dropout: «снижение веса» или регуляризация L2

Урок 6. Интерпретация вложений, RNN с нуля

Вики-урок: http://forums.fast.ai/t/wiki-lesson-6/9404

  • Встраивание интерполяции с использованием «PCA» из «sklearn.decomposition» для линейной алгебры
  • Глядя на конкурс Kaggle «Россманн Ритейл / Магазин» с помощью статьи «Вложения сущностей категориальных переменных».
  • «Россманн» Очистка данных / Разработка функций
  • Как написать что-то отличное от библиотеки Fastai
  • Подробнее о SGD с записной книжкой «lesson6-sgd.ipynb», задаче линейной регрессии с непрерывными выводами. Функция потерь «a * x + b» и среднеквадратичной ошибки (MSE) с «y_hat»
  • Градиентный спуск, реализованный в PyTorch, «loss.backward ()», «.grad.data.zero_ ()» в классе «optim.sgd»
  • Градиентный спуск с Numpy
  • Базовая NN с одним скрытым слоем (прямоугольник, стрелка, круг, треугольник), Джереми, Image CNN с одним плотным скрытым слоем.
  • RNN с PyTorch, вопрос: «Что представляет собой скрытое состояние?»
  • Модель с несколькими выходами
  • Длина последовательности в зависимости от размера партии
  • Матрица идентичности (init!), Статья Джеффри Хинтона «Простой способ инициализировать рекуррентные сети из выпрямленных линейных единиц»

Урок 7. Реснет с нуля

Вики-урок: http://forums.fast.ai/t/wiki-lesson-7/9405

  • Построение модели RNN с помощью «self.init_hidden (bs)» и «self.h», подхода «back prop through time (BPTT)».
  • Создание мини-партий
  • Как создать данные обучения / проверки Ницше
  • Работа с PyTorch, не принимающим «Тензор 3 ранга», только ранг 2 или 4, «F.log_softmax ()»
  • Введение в ячейку ГРУ (RNNCell имеет проблему взрыва градиента - т.е. вам нужно использовать низкую скорость обучения и небольшой BPTT)
  • Долговременная кратковременная память (LSTM), LayerOptimizer (), косинусный отжиг CosAnneal ()
  • Компьютерное зрение с помощью CIFAR 10 и записной книжки «lesson7-cifar10.ipynb», зачем изучать исследования CIFAR 10, ImageNet и MNIST
  • Рассмотрение полностью связанной модели на основе записной книжки студента Керема Тургутлу, затем модели CNN (с демонстрацией в Excel)
  • Произведен рефакторинг модели с использованием нового класса ConvLayer () и padding.
  • Использование пакетной нормализации (BatchNorm) для повышения устойчивости модели, «BnLayer ()» и «ConvBnNet ()»
  • Deep BatchNorm
  • Замените модель на ResNet, класс «ResnetLayer ()», используя «boosting».
  • Слой «Узкое место» с «BnLayer ()», «ResNet 2» с «Resnet2 ()», пропуск соединений.
  • Карты активации классов (CAM) "Dogs v Cats"
  • Вопросы Джереми: «Ваше путешествие к глубокому обучению» и «Как не отставать от важных исследований для практиков», «Если вы собираетесь перейти к Части 2, от вас ожидается, что вы овладеете всеми методами, описанными в Части 1», - совет Джереми мастер Часть 1.

Призыв к действию:

Если вы нашли этот пост полезным, удерживайте кнопку хлопка столько, сколько захотите. Я определенно рекомендую этот курс всем, кто хочет начать или улучшить глубокое обучение. Содержание курса и подход к обучению замечательны, практичны и увлекательны. Я опубликовал и собираюсь опубликовать больше сообщений об этом курсе, так что следите за обновлениями и проверяйте их.