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

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

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

Язык программирования: Python 3
Библиотека: PyTorch
Среда разработки: Colab
msu.ai Курс нейронные сети и их применение в научных исследованиях
Слушатели курса во время занятий

Программа курса:

Задача курса. AI, ML, DL. Области применения. Связь с наукой. Обзор курса. Базовые задачи. Комбинированные задачи. Инструменты. Контейнеры. План исследования. Сбор и подготовка данных. Извлечение закономерностей. Валидация результата. Пример ML задачи. Данные. Связность данных. Загрузка и визуализация данных. Алгоритм k-NN. Описание модели. Нормализация данных. Параметры и гиперпараметры модели. Метрики. Accuracy. Precision, Recall. F-мера. AUC-ROC. Разделение train-validation-test. Примеры ошибок в данных и при разбиении. Подбор гиперпараметров на тестовой выборке. Кросс-валидация. Алгоритм кросс-валидации. Оценка результата кросс-валидации. Типичные ошибки при кросс-валидации. Кросс-валидация для научных исследований: на что обратить внимание. GridSearch. RandomizedSearch
Лекция №1.
Введение в машинное обучение
Линейные модели. Задача регресии. Линейная регрессия. Случай многих переменных и практические особенности работы с линейными моделями. Линейный классификатор с пороговой функций принятия решения. Hard Margin Classifier. Линейный классификатор с Hinge loss. Soft Margin Classifier. Метод градиентного спуска. Численный расчет производной. Аналитический расчет производной от функции потерь. Выбор шага обучения. Алгоритм стохастического градиентного спуска. Выбор размера батча. Регуляризация. Обобщенные линейные модели. Kernel SVM. Вероятностный подход в задаче классификации. Наивный Байесовский классификатор. Кросс-энтропия как общая функция потерь для задач классификации. Расчет функции потерь. Пример обучения линейного классификатора с hinge loss. MNIST. CIFAR-10
Лекция №2.
Линейный классификатор
Системы предсказаний. Экспертные системы (Rule-based systems). Классическое машинное обучение. Глубокое машинное обучение. Необходимость методов классического машинного обучения. Деревья решений. Принцип работы дерева решений. Деревья решений (классификация). Деревья решений (Регрессия). Деревья решений и работа с пропущенными значениями. Преимущества и недостатки деревьев решений. Bias, Variance, Irreducible error. Бутстрэп. Корреляция и построение доверительного интервала для нее. Построение доверительного интервала для качества метрики. Ансамбли. Корректирующий код. Усреднение предсказания классификаторов. Bagging = Bootstrap aggregation. Метод случайных подпространств (RSM, random subspace method). Комбинация RSM и Bagging. Случайный лес. Boosting. Gradient boosting (градиентный бустинг). Модификации градиентного бустинга. Блендинг и Стэкинг. Некоторые практические рекомендации. Применение нейронных сетей к табличным данным
Лекция №3.
Классическое машинное обучение
Генерация признаков. Типы признаков. Преобразования признаков. Практический пример работы с признаками. Примеры данных, которые нецелесообразно отправлять в модель в сыром виде. Отбор признаков. Зачем отбирать признаки. Полный перебор. Одномерный отбор признаков. Жадный отбор признаков. Отбор признаков на основе моделей. Randomization/Permutation. Boruta. Dropped variable importance. Отбор признаков — это тоже выбор гиперпарметров. Задача понижения размерности. Manifold assumption. PCA (Метод главных компонент). Kernel PCA Ядровой (нелинейный) метод главных компонент. Методы, основанные на сохранении расстояний. t-SNE (t-distributed stochastic neighbor embedding). UMAP. Кластеризация
Лекция №4.
Генерация и отбор признаков
Ограничения Линейного классификатора. ХОR — проблема. Проблемы классификации более сложных объектов. Многослойные сети. Обучение нейронной сети. Прямое и обратное распространение. Веса сети. Нейронная сеть как универсальный аппроксиматор. Метод обратного распространения ошибки. Функции потерь (loss functions). Функции активации. Углубление в PyTorch. Пример нейронной сети на MNIST. Dataset и DataLoader. Трансформации (Transforms). Создание нейронной сети. Обучение нейронной сети. Сохранение и загрузка весов модели
Лекция №5.
Нейронные сети
Введение в сверточные нейронные сети. Полносвязная нейронная сеть. Нарушение связей между соседними пикселями. Другие 'hand-crafted' фильтры. Свертка с фильтром. Сверточный слой нейросети. Применение свёрточных слоёв. Общая структура свёрточной нейронной сети. Другие виды сверток. 1D. 3D. Визуализация. Визуализация весов. Визуализация карт активаций. Feature extractor. Практические рекомендации
Лекция №6.
Свёрточные нейронные сети
Сигмоида затухает и теоретически, и практически. Затухание градиента. Нормализация входов и выходов. Нормализация входных данных. Нормализация целевых значений в задаче регрессии. Инициализация весов. Инициализация Ксавье (Xavier Glorot). Инициализация Каймин Хе (Kaiming He). Важность инициализации весов. Ортогональная инициализация. Инициализация весов в PyTorch. Слои нормализации. Covariate shift (Ковариантный сдвиг). Internal covariate shift. Batch Normalization. Другие Normalization. Регуляризация. L1, L2 регуляризации. Dropout. DropConnect. DropBlock. Batch Normalization до или после Dropout. Оптимизация параметров нейросетей. Обзор популярных оптимизаторов. Ландшафт функции потерь. Сравнение оптимизаторов. Режимы обучения. Ранняя остановка. Понижение шага обучения на каждой эпохе. Neural Network WarmUp. Cyclical learning schedule. Взаимодействие learning schedule и адаптивного изменения learning rate
Лекция №7.
Улучшение сходимости нейросетей и борьба с переобучением
Особенности рекуррентных нейронных сетей. Примеры задач. Базовый RNN блок. RNNCell. Пример прогнозирования временного ряда. Подготовка данных. Создание и обучение модели. LSTM. LSTMCell. LSTM in PyTorch. Модификации LSTM. Пример посимвольной генерации текста. Подготовка данных. Создание и обучение модели. Embedding. Токенизация. Sequence-to-Sequence with RNNs. Attention. Sequence-to-Sequence with RNNs and Attention mechanism. Модели внимания в машинном переводе. Модели внимания в задаче генерации подписи к изображениям. Проблема attention. Разновидности функций сходства векторов. Key, query, value. Multihead Attention. Image Captioning with RNNs and Attention. Transformer для машинного перевода. Архитектура сети Transformer. Общий пайплайн задачи машинного перевода. Архитектура трансформера-кодировщика. Архитектура трансформера-декодировщика. Небольшая историческая справка. Hugging Face. Языковое моделирование. Как работает GPT. Токенизация. Архитектура GPT. Positional Encoding. Transformer Decoder Block. Методы Генерации текста. Сравнение поколений GPT. Файнтюнинг. Как происходит обучение. Обучающие данные. Training. Результат файнтюнинга. Примеры применений Transformer. BERT (Bidirectional Encoder Representations from Transformers ). GPT (Generative Pretrained Transformer)
Лекция №8.
Рекуррентные нейронные сети (RNN)
Базовые компоненты свёрточных сетей. ImageNet. Метрики Top 1 and Top5. Baseline (AlexNet 2012). Тюнинг гиперпараметров (ZFnet). Базовый блок (VGGNet 2014). Вычислительные ресурсы. Inception module (GoogLeNet 2014). "Stem network". Global Average Pooling. Затухание градиента. Batchnorm (революция глубины). Skip connection (ResNet 2015). Архитектура ResNet. Stage ratio. BasicBlock в PyTorch. Bottleneck layer. Обучение ResNet. Grouped Convolution (ResNeXt 2016). Grouped Convolution in PyTorch. ResNeXt = Skip connection + Inception + Grouped convolution. Обзор сети MobileNet (2017 г.). Сравнение моделей. Много skip connection (DenseNet 2016). Ширина вместо глубины (WideResNet 2016). Squeeze-and-Excitation (SENet 2017). Поиск хорошей архитектуры. Neural Architecture Search. Обзор сети EfficientNet (2019 г.). Self Attention (ViT 2020). Сравнение со сверткой. Архитектура ViT. Предсказание с помощью ViT. Обучение ViT. DeiT: Data-efficient Image Transformers. ConvNext (2022). Model soups (2022). Обучение без разметки. Дистилляция. Feature extraction. BYOL. CLIP. Практические рекомендации
Лекция №9.
Архитектуры CNN
Причины использования Explainability. Оценка важности признаков для простых моделей. Оценка важности признака для линейных моделей. Оценка важности признака для дерева. Методы, изучающие отклик модели на изменение входных данных. ICE (Individual Conditional Expectation). LIME (Local Interpretable Model-agnostic Explanations). SHAP (SHapley Additive exPlanations). Градиентные методы. Vanilla Gradient. SmoothGrad. Integrated Gradients. SHAP Deep Explainer. Grad-CAM. Критика градиентных методов. Методы, специфичные для трансформеров. Attention rollout. Attention Flow. Gradient-weighted Attention Rollout. Заключение
Лекция №10.
Explainability
Проблемы при работе с реальной задачей машинного обучения. Общие подходы при работе с реальными данными. Нехватка данных. Дисбаланс классов. Аугментация. Transfer learning. Порядок действий при transfer learning. Практический пример transfer learning. Metric learning. Формирование векторов-признаков (embedding). Сиамская сеть (Siamese Network). Реализация сиамской сети. Оптимизация гиперпараметров
Лекция №11.
Обучение на реальных данных
Задачи компьютерного зрения. Dataset COCO — Common Objects in Context. Семантическая сегментация (*Semantic segmentation*). Способы предсказания класса для каждого пикселя. Fully Convolutional Networks. Разжимающий слой. Пирамида признаков. IoU — оценка точности. Loss функции для сегментации. U-Net: Convolutional Networks for Biomedical Image Segmentation. Обзор DeepLabv3+ (2018). Segmentation models PyTorch (SMP). Детектирование (Object detection). Детектирование единственного объекта. Детектирование нескольких объектов. Object proposal. NMS. Backbone для детекторов. YOLO. Instance Segmentation. Panoptic Segmentation. OWL-ViT (2022). SAM (2023). Оценка качества детекции. mAP — mean Average Precision. Практические соображения
Лекция №12.
Сегментация и детектирование
Автоэнкодер (AE). Unsupervised learning. Representation learning. Снижение размерности. Архитектура автоэнкодера. Сжатие информации и потери. Manifold assumption. Метод главных компонент (PCA). Аналогия AE и PCA. Очищение изображения от шумов. PCA для избавления от шума. Реализация автоэнкодера. Обнаружение аномалий. Предобучение на неразмеченных данных. Автоэнкодер как генератор и его ограничения. Плавная интерполяция. Вариационные автоэнкодеры (VAE). Реализация вариационного автоэнкодера. Проблемы «ванильного» VAE. Автоэнкодеры с условием (CAE). Условные вариационные автоэнкодеры (CVAE). Реализация вариационного автоэнкодера с условиями, CVAE. Разделение (disentangling) стиля и метки
Лекция №13.
Автоэнкодеры
"Классические" генеративные алгоритмы. Задача генерации. Простейший пример: генерация объектов из нормального распределения. Генеративные алгоритмы, основанные на глубоком обучении. Введение в генеративно-состязательные нейронные сети. Latent space. Наивный подход в решении задачи генерации. Дискриминатор. Generative adversarial network (GAN). DCGAN — Генерация изображений. cGAN — GAN с условием. Тонкости обучения GANов. Диффузионные модели. Прямой диффузный процесс. Обратный диффузный процесс. Denoising U-Net. Реализация прямого и обратного диффузного процесса. Обучение диффузных моделей
Лекция №14.
Генеративные модели
Как работает обучение с подкреплением. Место RL в машинном обучении. Терминология: агент, функция награды, состояние среды. Классические примеры задач RL. Особенности и сложности RL. Библиотеки. Gym. Markov property. Markov process. Матрица состояний. Награда (Reward). Суммарная награда (Return). Марковский процесс принятия решений. Формальное описание MDP. Нахождение лучшей последовательности переходов. Уравнение Беллмана. Нахождение оптимальной политики Беллмана. Траектории MDP. Q-Learning. Пример c CartPole DQN. Дальнейшие идеи. Альтернативные подходы
Лекция №15.
Обучение с подкреплением
Обращаем ваше внимание, что программа курса и материалы лекции, указанные по ссылкам, постоянно дорабатываются.
Версию в разработке можно посмотреть в репозитории на GitHub