Цель этого поста - осветить содержание 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.
Призыв к действию:
Если вы нашли этот пост полезным, удерживайте кнопку хлопка столько, сколько захотите. Я определенно рекомендую этот курс всем, кто хочет начать или улучшить глубокое обучение. Содержание курса и подход к обучению замечательны, практичны и увлекательны. Я опубликовал и собираюсь опубликовать больше сообщений об этом курсе, так что следите за обновлениями и проверяйте их.