Первые шаги
В этом модуле мы познакомимся:
i. с основными задачами которые можно решить с помощью нейронных сетей
ii. фреймворками, позволяющими реализовывать различные нейросетевые архитектуры в соответствии с задачей
iii. и методами, лежащими в основе обучения искусственных нейронных сетей.
Искусственный интеллект и другие задачи которые можно решать с помощью нейронных сетей
объяснить, что такое искусственные нейроны для того, чтобы понимать из чего состоят искусственные нейронные сети, познакомятся с историей развития искусственного интеллекта и актуальными задачами, которые стоят перед учеными в области Data Science.
ДЗ
Docker.
В докерфайле из материалов нужно заменить версию Tensorflow на последнюю и добавить установку Keras.
Запустить контейнер из своего образа, импортировать TF и Keras и вывести версии.
Выложить скриншот с версиями
Стохастический градиентный спуск и метод обратного распространения
разобрать математическую основу обучения нейронной сети и базовые идеи работы с данными.
Первая нейронная сеть на PyTorch
работать с фреймворком PyTorch;
реализовывать простейшие нейронные сети.
ДЗ
Логистическая регрессия и переобучение.
1. В файле log_reg.ipynb изменить код таким образом, чтобы решить ту же самую задачу, а именно обучить логистическую регрессию, на двумерных данных
2. Добиться от классифкатора на minst переобучения за счет изменения архитектуры и гиперпараметров.
Переобучение и регуляризация нейронных сетей
объяснить, что такое переобучение нейронной сети, и как с ним бороться для повышения эффективности своих моделей.
Первая нейронная сеть на Tensorflow
реализовывать нейронные сети с помощью одного из самых популярных фреймворков.
ДЗ
Основы tenosrlow и tf.keras.
Скачайте ноутбук с домашним заданием по ссылке.
Более подробная инструкция в ноутбуке, в том числе и в какой форме его можно сдать.
Взрыв и затухание градиентов
проанализировать проблемы взрыва и затухания градиентов и познакомятся с методами борьбы позволяющими обучать более глубокие нейронные сети.
Погружение в Tensorflow
разобрать продвинутые возможности фреймворка Tensorflow.
Адаптивные методы градиентного спуска
применять современные модификации метода градиентного спуска для ускорения обучения нейронных сетей.
Основные архитектуры и методы обучения нейронных сетей
В этом модуле мы узнаем:
i. Какие нейросетевые архитектуры существуют
ii. Какие методы позволяют обучать глубокие нейронные сети.
ii. Как применять нейросети в задачах компьютерного зрения, обработки естественных языков и обучения с подкреплением.
Основные архитектуры нейронных сетей: Автокодировщики
создавать автокодировщики;
модифицировать основную структуру под конкретную задачу.
ДЗ
Автокодировщик.
0. Обучить многослойный автокодировщик:
а. отрисовать классы в латентном представлении автокодировщика с двумерным латентным слоем,
б. сделать tSNE над 32-мерным латентным слоем.
1. Обучить автокодировщик с шумом:
а. Добавить ко входным данным нормальный шум,
б. Сделать отражение части изображения,
в. Отрисовать карты активаций нейронов внутреннего слоя.
Практическое занятие на TensorFlow. Разреженный Автокодировщик
решать задачи удаления шума с изображения и разреживания представления данных.
Основные архитектуры нейронных сетей: Сверточные сети
использовать наиболее популярную архитектуру нейронной сети для решения задач компьютерного зрения, а также операцию обратную свертке для реализации сверточных автокодировщиков.
ДЗ
Сверточные сети.
Необязательное домашнее задание
1. Реализовать сверточный автокодировщик
2. Сделать оптимизацию изображения под активацию сверточных нейронов классификатора
3. Сделать оптимизацию изображения под активацию сверточных нейронов автокодировщика
Практическое занятие на Keras. Transfer Learning
разобрать на практике один из ключевых методов решения задач компьютерного зрения.
Основные архитектуры нейронных сетей: Рекуррентные сети
на примере задачи классификации коротких текстов, познакомиться еще с одной важнейшей архитектурой — рекуррентной нейронной сетью;
помимо обработки естественных языков рассмотреть общий подход к работе с последовательными данными с помощью рекуррентной сети.
Практическое занятие на PyTorch. Генерация Википедии
перейти от предсказания свойств текста к порождению собственных текстов.
ДЗ
Создаем Википедию.
1. Используя подход аналогичный torchvision, сделать свой класс датасета.
Необязательное д/з:
1. Поэкспериментировать с разными архитектурами рекурренток: тип ячеек, слои, нормализация, методы оптимизации
Введение в обучение с подкреплением
применять методы классического обучения с подкреплением для таких задач как A/B тестирование или игра в шахматы;
разобраться с тем, кто такие многорукие бандиты и что такое TD-обучение.
Практическое занятие. Крестики-нолики
на примере игры в крестики-нолики сравнить решение с помощью нейронной сети с “табличными” методами обучения с подкреплением.
Современные нейронные сети для задач компьютерного зрения и обработки естественных языков
В этом модуле мы разберем:
i. Современные архитектуры сверточных и рекуррентных нейронных сетей.
ii. Задачи сегментации и детекции объектов на изображении
iii. Как устроено внимание и почему нейронные сети могут что-то забыть.
Современные сверточные сети. Блоки и шорткаты
проанализировать историю развития современных сверточных сетей;
объяснить, что позволило сделать их по-настоящему глубокими и как это повлияло на область компьютерного зрения.
Современные рекуррентные сети. Внимание
“научить” нейросеть обращать внимание на наиболее важную информацию на изображении или в тексте;
использовать эту способность, чтобы искать логически связанные блоки информации, чем это поможет при машинном переводе, поиске ответов на вопросы, аннотации изображений.
Современные рекуррентные сети. Трансформеры
использовать только attention-слои для Natural Language Inference, а также разобраться, как трансформер позволяет создать эмбеддинги, учитывающими контекст при кодировании многозначных слов.
Metric-learning и обучение без примеров
отображать объекты в пространство с метрикой и использовать такое представление для поиска похожих объектов и решения задачи классификации при отсутствии данных.
Современные сверточные сети. Transfer learning и fine-tuning
объяснить, что делать, если данных недостаточно для обучения глубокой нейронной сети;
использовать знания из уже обученной нейронной сети и подстраивать такую сеть к конкретной задаче.
ДЗ
Катастрофическое забывание (необязательное).
1. Дообучить готовую модель на imagenette2 и проверить качество
2. Сохранить последний слой обученной модели и заменить его на новый для CIFAR10
2. Дообучить модель решать датасет CIFAR10 и проверить качество
3. Вернуть оригинальный последний слой модели и проверить качество на imagenette2
4. Дообучить только последний слой на imagenette2 и проверить удалось ли добиться исходного качества.
Генеративные состязательные сети
объяснить, как нейронная сеть учится обманывать другую нейронную сеть, и как от этого они обе становятся лучше, а мы получаем генератор качественных данных.
ДЗ
GANs.
1. Сделать сверточный GANs
Глубокие сверточные сети. Сегментация
разобраться, как при помощи нейронной сети сегментировать изображение, какие для этого есть архитектуры, что за принципы лежат в основе UNet и DeepLab.
Глубокие сверточные сети. Детекция
проанализировать принципы работы нейронных сетей для детекции объектов: от эволюцию от первых “чисто” нейросетевых алгоритмов до современных архитектур, работающих за “один взгляд” - YOLO, SSD.
Нейронные сети для слабоформализуемых задач
В этом модуле мы научимся:
i. Решать задачи с необычной структурой данных или отсутствием данных.
ii. Создавать новые объекты и определять их “реалистичность”
iii. Имитировать поведение людей и разбираться в их скрытых мотивах
Вариационный и состязательный автокодировщики
ДЗ
Вариационный автокодировщик.
Реализовать VAE в pytorch для MNIST датасета.
1. Обучить VAE с 32- и 64-мерным латентным слоем и сравнить качество автокодирования и качество генерации новых изображений
2. Обучить VAE с 2-мерным латентным слоем и сгенерировать изображения из решетки в латентном пространстве
Доменная адаптация и условная генерация
разобрать подходы к обучению нейронных сетей на многомодальных данных, способы целенаправленного забывания информации и применение состязательного фреймворка для “честной” условной генерации.
ДЗ
Условная генерация.
Обучить две версии CAAE — "частную" и "нечестную", преобразовать с их помощью исходные данные в латентное представление и обучить 3 классификатора — один на исходных данных и два на кодах, полученных из "честного" и "нечестного" CAAE. Сравнить качество классификации.
Необязательная часть:
Сделать перенос стиля с одной цифры на другие с помощью "честного" CAAE
Генеративные модели для текстов
работать с методом Professor forcing;
использовать идеи обучения с подкреплением для генерации текстов, а также пропускать градиент через дискретные объекты с помощью репараметризации.
Катастрофическое забывание
Глубокое обучение с подкреплением
проанализировать как же Google удалось победить чемпиона мира в игру го и что еще можно сделать таким же способом.
Обратное обучение с подкреплением
имитировать поведение эксперта;
объяснить, что делать, если награды неизвестны и можно ли назначать награды нейронной сетью.
Сферические свертки и множества точек
применять непрерывные свертки для данных имеющих пространственную структуру.
Сверточные и рекуррентные сети на графах
проанализировать архитектуры, позволяющие работать с данными имеющими графовую структуру.
Проектная работа
В рамках курса предусмотрена защита проекта. Он представляет собой генеративную модель для порождения текста заданного стиля или изображений заданной тематики.
Работа над проектом проходит поэтапно:
1. Выбор тематики.
2. Сбор и подготовка соответствующих данных.
3. Построение и обучение генеративной модели
Проект выполняется программистом в течение двух недель после прохождения курса. Готовое решение должно включать в себя код модели и ее обучения на Python, описание архитектуры модели, отчет об обучении модели и примеры генерации.
Выбор темы и организация проектной работы / Консультация по домашним заданиям
выбрать и обсудить тему проектной работы;
спланировать работу над проектом;
ознакомиться с регламентом работы над проектом.
Защита проектных работ
защитить проект и получить рекомендации экспертов.