Нейронные сетиО курсе:Это практический курс, ориентированный на освоение инструментов работы с нейронными сетями и сопутствующих современных программных средств. Малая часть курса посвящена теории нейронных сетей, объяснению терминов, ограничений и возможностей нейронных сетей, типов решаемых задач. Однако уровень проработки теоретического материала не предназначен для умения написать собственную библиотеку для вычисления нейронных сетей. В основном курс состоит из экспериментирования с готовыми инструментами, готовыми библиотеками данных, готовыми подходами к решению задач. Цель курса - преодолеть порог входа в отрасль, предоставить практический опыт и две опоры для дальнейшего самостоятельного исследования нейронных сетей: инструменты и терминология. Второй семестр выделен для выполнения курсовой работы, что позволяет подробно разобраться в одном из направлений нейронных сетей. Таким образом достигается баланс между поверхностным широким охватом материала и изучением вопроса в глубину с высокой долей самостоятельности. Инструментарий:Язык программирования: Python3 Библиотека: TensorFlow Среда разработки: Jupyter Программа курса (осенний семестр):Занятие 1 - ВведениеПостановка задач обучения по прецедентам. Объекты и признаки с примерами. Устройство нейронной сети. Слои, функция активации. Метод градиентного спуска. Метод стохастического градиента. Шаг оптимизатора, тип оптимизатора, функция потерь. Переобучение. Обучающая и тестовая выборка. Типы нейронных сетей (линейные, DNN, бинарные, сверточные, GAN, рекуррентные). Занятие 2 - Системы контроля версийЗачем нужно контролировать версии. Понятие коммита, ветви в version control system (VCS). Проблема коллективной разработки без VCS. Синхронизация с центральным сервером. Понятие затягивания и проталкивания изменений. Слияние ветвей. Разрешение конфликтов. Ресурсы для VCS. Проблема бинарных файлов. Примеры VCS: git, mercurial, subversion, CVS. Github, клонирование репозиториев и пул-реквесты. Readme.md и формат markdown. Занятие 3 - Многослойный персептронГотовые обучающие выборки и их важность (MNIST, ImageNet, CIFAR-10, CIFAR-100, FashionMNIST, COCO, ...). Tensorflow и Python. Способы ускорения вычисления нейронных сетей. Примеры применения нейронных сетей в науке. Занятие 4 - Сверточные сетиАнализ изображений. Как животные видят. Трансляционная инвариантность свёрточных нейронных сетей. Определение свёртки. Строительные блоки для сверточных сетей: свёртка, активация, субдискретизация. Maxpooling, padding. Какие параметры подбираются при обучении сверточных сетей. Как работает свёртка с набором изображений на выходе предыдущего свёрточного слоя. Визуализация выходов скрытых слоёв в tensorflow. Автоэнкодеры. Две фазы обучения сверточных сетей. Занятие 5 - Генеративно-соревновательные сети GANПринцип работы соревновательных генеративных сетей. Структурная схема. Генератор и дискриминатор. Латентное пространство. Виды GAN: cвёрточный DCGAN, условный CGAN, цикличный CycleGAN, парные CoGAN, ProGAN устойчивого роста, Вассерштейновские WGAN. Повышение качества распознования за счет дообучения. Занятие 6 - Условные генеративно-соревновательные сети CGANИспользование gan для генерации изображений. Зачем нужен условный GAN. Сложности обучения GAN, проблемы сходимости, проблемы устойчивости, проблемы коллапса распределения. Эмпирические трюки, позволяющие бороться с этими проблемами: использование leakyReLU; downsampling и upsampling с использованием strided convolution; нормализация данных (и преобразование пикселей исходных картинок к диапазону [-1,1]), использование момента в градиентном спуске. Занятие 7 - Использование обученных сетейВычислительная сложность обучения против вычислительной сложности использования. Типы готовых сетей: классификаторы, поиск объектов, распознавание лиц, семантическая сегментация, семантическое описание. Готовые нейронные сети: YOLO, VGG16, R-CNN, (Mask R-CNN, Fast R-CNN, Faster R-CNN), AlexNet, Resnet50/101/152/200..., DenseNet121/169/201, MobileNet25/50/... Связь ResNet с решением системы линейных дифференциальных уравнений. Библиотека tensornets. Занятие 8 - Рекуррентные сетиУстройство и область применения рекуррентных сетей. Сети Элмана и Джордана. Расчет количества параметров слоя. Долгая краткосрочная память (LSTM) и принцип её работы. Экспоненциальное сглаживание в блоке памяти LSTM. Функции активации LSTM. Управляемый рекуррентный блок (GRU). Машинный перевод, как частный случай задачи Seq2Seq. Архитектура Transformer и Universal transformer. Занятие 9 - АвтоэнкодерыСтруктура и обучение автоэнкодера. Очищение изображения от шумов. Регуляризация: лассо-регрессия и гребневая регрессия. Вариативность в латентном пространстве. Плавная интерполяция. Сжатие данных. Занятие 10 - Обучение с подкреплениемОбучение с подкреплением (RL). OpenAI и gym. Обучение без учителя. Агент, функция награды, состояние среды. Типовые среды: Atari, шахматы, Go, gym. Классификация алгоритмов RL. Q-learning. Reward shaping. Типовые ошибки при обучении с подкреплением и их причины. Важность отсутствия априорных знаний при обучении. Experience replay. Double DQN. Эпсилон-жадный алгоритм. Выборки случайных фрагментов записей для обучения.Занятие 12 - Перенос обучения Занятие 11 - Перенос обученияЗачем нужен перенос обучения. Примеры переноса обучения: изображения, работа с естественным языком. Тонкая настройка. Занятие 12 - Отбор и генерация признаковЗачем нужен отбор признаков. Методы отбора признаков: фильтрация, построение семейств, регуляризация. Хэширование признаков для больших таблиц. Почему можно генерировать признаки. Аугментация. Примеры неинформативных признаков. Работа с событиями во времени. Библиотека featuretools для генерации признаков. Весенний семестр:Выполняется курсовая работа. Она может быть совмещена с обязательной курсовой работой по физике, выполняемой в лаборатории физического факультета МГУ на втором курсе. Примерные темы работ представлены ниже. Жирным отмечены работы, совмещенные с курсовой по физике:
|