Нейронные сети и их применение
в научных исследованиях
КУРС ПРИ ПОДДЕРЖКЕ НЕКОММЕРЧЕСКОГО ФОНДА РАЗВИТИЯ НАУКИ И ОБРАЗОВАНИЯ «ИНТЕЛЛЕКТ»
Курс «Нейронные сети и их применение в научных исследованиях» ориентирован на освоение инструментов работы с нейронными сетями и сопутствующих современных программных средств.

Цель курса — дать практический навык использования методов классического машинного обучения и искусственных нейронных сетей молодым учёным (магистрам, аспирантам, молодым сотрудникам) разных факультетов МГУ имени М. В. Ломоносова, имеющих базовые знания программирования и математики, для применения в их научных исследованиях.

Курс будет полезен для начинающих учёных и технических, и гуманитарных факультетов: физиков и филологов, химиков и медиков, математиков и социологов.

Итогом учёбы будет подготовленный слушатель курса, который написал программу и получил качественный результат, успешно применённый в его диссертации, и подготовил научную публикацию об этом.

Инструментарий:

Язык программирования: Python 3
Библиотека: PyTorch
Среда разработки: Colab


Программа курса:
ML и DL и AI в Computer Science. Связь DL с наукой. История развития DL. Сферы применения и технологии. Причины успехов технологий на основе DL. ML — Подход к научным проблемам. Базовые задачи ML. Типы данных. Примеры датасетов. Оценка результата. Демонстрация работы с данными. Табличные данные. Аудиоданные. Обзор контейнеров. Предобработка данных . Обзор видов связности данных. Работа с изображениями.
Лекция №1.
Введение в машинное обучение
Ограничения алгоритма k-nearest neighbors (kNN). kNN для классификации. Практические аспекты работы с классификаторами. Линейный классификатор. Переход к сравнению с шаблоном. Переход к весам. Support Vector Machine (метод опорных векторов). Функция потерь SVM. Вычисление функции потерь SVM. Обновления весов методом градиентного спуска. Градиент функции потерь. Численный расчет производной. Аналитический расчет производной от функции потерь SVM. Выбор шага обучения. Выбор размера батча. Регуляризация. Функция потерь Кросс-энтропия. Переход к вероятностям. Определение Кросс-энтропии. Градиент функции потерь Кросс-энтропии. Практическое вычисление SoftMax.


Лекция №2.
Линейный классификатор
Системы предсказаний. Экспертные системы (Rule-based systems). Классическое машинное обучение. Глубокое машинное обучение. Необходимость методов классического машинного обучения. Деревья решений. Принцип работы дерева решений. Деревья решений (классификация). Деревья решений (Регрессия). Деревья решений и работа с пропущенными значениями. Преимущества и недостатки деревьев решений. Bias, Variance, Irreducible error. Бутстрэп. Корреляция и построение доверительного интервала для нее. Построение доверительного интервала для качества метрики. Ансамбли. Корректирующий код. Усреднение предсказания классификаторов. Bagging = Bootstrap aggregation. Метод случайных подпространств (RSM, random subspace method). Комбинация RSM и Bagging. Случайный лес. Boosting. AdaBoost. Gradient boosting (градиентный бустинг). Модификации градиентного бустинга. Блендинг и Стэкинг. Некоторые практические рекомендации. Применение нейронных сетей к табличным данным.


Лекция №3.
Классическое машинное обучение
Генерация признаков. Типы признаков. Преобразования признаков. Практический пример работы с признаками. Примеры данных, которые нецелесообразно отправлять в модель в сыром виде. Отбор признаков. Зачем отбирать признаки. Полный перебор. Одномерный отбор признаков. Жадный отбор признаков. Отбор признаков на основе моделей. Отбор признаков — это тоже выбор гиперпарметров. Задача понижения размерности. Manifold assumption. PCA (Метод главных компонент). Kernel PCA Ядровой (нелинейный) метод главных компонент. Методы, основанные на сохранении расстояний. tSNE (t-distributed stochastic neighbor embedding). UMAP. Понижение размерности для улучшения качества кластеризации.
Лекция №4.
Генерация и отбор признаков
Ограничения Линейного классификатора. ХОR — проблема. Проблемы классификации более сложных объектов. Многослойные сети. Обучение нейронной сети. Прямое распространение. Веса сети. Метод обратного распространения ошибки. Функции потерь (loss functions). Функции активации. Пример простой сети на датасете mnist.
Лекция №5.
Нейронные сети
Введение в свёрточные нейронные сети. Полносвязная нейронная сеть. Нарушение связей между соседними пикселями. Примеры 'hand-crafted' фильтров. Свёртка с фильтром. Свёрточный слой нейросети. Основные параметры свёртки. Использование свёрточных слоёв. Пример свёрточной сети. Визуализация. Визуализация весов. Визуализация карт активаций. Feature extractor.
Лекция №6.
Свёрточные нейронные сети
Сигмоида затухает и теоретически и практически. Затухание градиента. Инициализация весов. Инициализация Ксавьера (Xavier Glorot). Хи-инициализация (Kaiming He). Важность инициализации весов. Обобщение инициализаций Ксавьера и Хи-инициализации. Ортогональная инициализация. Инициализация весов в Pytorch. Регуляризация. L1, L2 регуляризации. Dropout. DropConnect. DropBlock. Нормализация. Нормализация входных данных. Covariate shift (Ковариантный сдвиг). Internal covariate shift. BatchNormalization. Другие Normalization. Оптимизация весов нейросетей. Обзор популярных оптимизаторов. Сравнение оптимизаторов. Режимы обучения. Ранняя остановка. Понижение шага обучения на каждой эпохе. Cyclical learning schedule. Neural Network WarmUp.
Лекция №7.
Улучшение сходимости нейросетей и борьба с переобучением
Особенности рекуррентных нейронных сетей. Примеры задач. Базовый RNN блок. RNNCell. Пример прогнозирования временного ряда. Подготовка данных. Создание и обучение модели. Пример посимвольной генерации текста. Подготовка данных. Создание и обучение модели. LSTM. LSTMCell. LSTM in Pytorch. Модификации LSTM. Sequence-to-Sequence with RNNs. Attention.
Sequence-to-Sequence with RNNs and Attention mechanism. Проблема attention. Image Captioning with RNNs and Attention. Key, query, value. Attention Layer. Self-Attention Layer. Multihead Self-Attention Layer. Attention is all you need. Decoder. Токенизация. Примеры применений Transformer. BERT (Bidirectional Encoder Representations from Transformers ). GPT (Generative Pretrained Transformer).
Лекция №8.
Рекуррентные нейронные сети (RNN)
Базовые компоненты свёрточных сетей. ImageNet Large Scale Visual Recognition Challenge. Обзор сети AlexNet(2012 г.). Архитектура ZFnet(2013 г.). Обзор сети VGGNet(2014 г.). Оценка вычислительных ресурсов. Обзор сети GoogLeNet(2014 г.). Inception module. 1x1 Convolution. "Stem network". Global Average Pooling. Затухание градиента. Появление "глубоких" моделей (deep models). Обзор сети ResNet(2015 г.). Resudial connection. Архитектура ResNet. ResNet: bottleneck layer. ResNet реализация в Pytorch. Обучение ResNet. Обзор сети ResNeXt(2016 г.). Groupped Convolution. Grouped convolution in Pytorch. ResNext, Inception, grouped conv. Feature extraction. Сравнение моделей. Обзор сети DenseNet(2016 г.). 2016 WideResNet. Архитектура SENet(2017 г.). Обзор сети MobileNet(2017 г.). Depthwise separable convolution. Inverted residual block. Swish. Neural Architecture Search. Обзор сети EfficientNet(2019 г.). Обзор Visual Transformers(2020 г.). Архитектура ViT. Предсказание с помощью ViT. Обучение ViT. Использование ViT с собственным датасетом. Обзор сети MLP-Mixer(2020 г.).
Лекция №9.
Архитектуры CNN
Причины использования Explainability. Обнаружение некорректных зависимостей. Доверие к предсказаниям. Публикации в научных журналах. Explainability & Interpretability. Оценка важности признаков в простых случаях. Оценка важности признака для регрессии. Оценка важности признака для дерева. Randomization/Permutation. Dropped variable importance. Библиотеки для реализации explanation. SHAP (SHapley Additive exPlanations). LIME. Boruta. Другие библиотеки. Примеры explanations для разных видов данных. Табличные данные. NLP: Пример абстрактного обобщения текста. Изображения. Заключение.
Лекция №10.
Explainability
Проблемы при работе с реальной задачей машинного обучения. Общие подходы при работе с реальными данными. Большее количество данных. Изменение баланса класса сэмплированием. Аугментация. Изображения. Аудио. Текст. Transfer Learning. Структурные компоненты. Практический пример Transfer Learning. Few/One-Shot learning. Формирование векторов-признаков (embedding). Сиамская сеть (Siamese Network). Реализация сиамской сети. Few-shots learning in GPT. Оптимизация гиперпараметров.
Лекция №11.
Обучение на реальных данных
Задачи компьютерного зрения. Dataset COCO — Common Objects in Context. Семантическая сегментация (*Semantic segmentation*). Способы предсказания класса для каждого пикселя. Автокодировщик. Разжимающий слой. Пирамида признаков. U-Net: Convolutional Networks for Biomedical Image Segmentation. return up. IoU - оценка точности. Loss функции для сегментации. Fully Convolutional Networks. Обзор DeepLabv3+(2018). Детектирование (Object detection). Детектирование единственного объекта. Детектирование нескольких объектов. Нard Example Mining. Instance Segmentation. Оценка качества детекции. mAP - mean Average Precision. DINO — Self-supervised representation learning (with segmentation capabilities). Сегментация изображений. Сегментация видео. Кластеризация. Swin Transformer.
Лекция №12.
Сегментация и детектирование
Введение в генеративно-состязательные нейронные сети. Latent space. Наивный подход в решении задачи генерации. Дискриминатор. Generative adversarial network (GAN). DCGAN — Генерация изображений. cGAN — GAN с условием. ProGAN, StyleGAN, StyleGAN2, Alias-Free GAN. Тонкости обучения GANов. Частые/простые ошибки. Зачем давать преимущество дискриминатору. Использование оптимизатора ADAM. Top K Training. Краткое описание примечательных моделей GAN. GAN для решения задачи распознавания капчи. Pix2Pix. Семантическая генерация. Text to image. Задача переноса стиля.
Лекция №13.
GAN — Генеративно-состязательные нейронные сети
Автоэнкодер (AE). Unsupervised learning. Representation learning. Снижение размерности. Архитектура автоэнкодера. Сжатие информации и потери. Manifold assumption. Метод главных компонент (PCA). Аналогия AE и PCA. Очищение изображения от шумов. PCA для избавления от шума. Реализация автоэнкодера. Разреженный автоэнкодер. Автоэнкодер, как генератор и его ограничения. Плавная интерполяция. Вариационные автоэнкодеры (VAE). Реализация вариационного автоэнкодера. Почему KL(Q||P). Проблемы «ванильного» VAE. Автоэнкодеры с условием(CAE). Условные вариационные автоэнкодеры (CVAE). Реализация вариационного автоэнкодера с условиями, CVAE. Состязательные автокодировщики (AAE = AE + GAN). Разделение (disentangling) стиля и метки. Semisupervised AAE.
Лекция №14.
Автоэнкодеры
Обучение с учителем. Обучение без учителя. Обучение с подкреплением. Терминология: агент, функция награды, состояние среды. Отличие от supervised learning. Классические примеры задач RL. Особенности и сложности RL.. Gym. Markov property. Markov process. Матрица состояний. Награда (Reward). Суммарная награда (Return). Марковский процесс принятия решений. Формальное описание MDP. Нахождение лучшей последовательности переходов. Уравнение Беллмана. Нахождение оптимальной политики Беллмана. Temporal difference (TD) learning. Q-Learning. Пример c CartPole DQN. Дальнейшие идеи. Альтернативные подходы.
Лекция №15.
Обучение с подкреплением