Специалист по глубокому обучению (Профессиональный уровень)
Курс ориентирован на углубленное изучение современных методов глубокого обучения, включая архитектуры нейронных сетей, методы оптимизации и масштабируемую реализацию моделей. Обучение сочетает теорию с практикой, акцент на реальных задачах из компьютерного зрения, обработки естественного языка и генеративных моделей.
Что предстоит пройти:
- Основы глубокого обучения: DNN, CNN, RNN, LSTM, Transformer.
- Продвинутые темы: GAN, VAE, Reinforcement Learning, Attention Mechanisms.
- Работа с фреймворками: PyTorch, TensorFlow, ONNX.
- Оптимизация и отладка моделей: hyperparameter tuning, regularization, distributed training.
- Развертывание моделей: export, inference, интеграция в production (TensorRT, TorchScript).
- Проектная работа: разработка и публикация собственной модели.
Ожидаемые результаты:
Должен знать:
- Архитектуры современных нейронных сетей и их математическое обоснование.
- Принципы работы и выбора loss функций, оптимизаторов, слоёв.
- Подходы к обработке данных, data augmentation и feature engineering.
Должен уметь:
- Проектировать, обучать и оптимизировать нейросетевые модели.
- Анализировать качество моделей и интерпретировать результаты.
- Развертывать модели в производственном окружении.
- Использовать GPU-ускорение и распределённые вычисления.
Требования к слушателям:
Базовое знание Python, линейной алгебры, математического анализа, статистики и основ машинного обучения. Опыт работы с numpy/pandas обязателен.
-
Что такое глубокое обучение и как оно отличается от машинного обучения?
Глубокое обучение — это подраздел машинного обучения, основанный на использовании многослойных нейронных сетей. В отличие от традиционного ML, где признаки извлекаются вручную, в DL они автоматически формируются через обучаемые слои сети. -
Как устроена полносвязная нейронная сеть (DNN)?
DNN состоит из входного, одного или нескольких скрытых и выходного слоёв. Каждый нейрон связан со всеми нейронами предыдущего слоя. Применяются функции активации (ReLU, sigmoid) и backpropagation для обучения. -
Что такое свёрточные нейронные сети (CNN) и где они применяются?
CNN предназначены для обработки данных с пространственной структурой, например, изображений. Содержат свёрточные слои для извлечения признаков и пулинговые слои для уменьшения размерности. Широко используются в компьютерном зрении. -
Как работают рекуррентные нейронные сети (RNN)?
RNN обрабатывают последовательности данных, сохраняя внутреннее состояние, которое передаётся от шага к шагу. Используются для задач NLP, временных рядов, генерации текста. -
Чем LSTM отличается от классической RNN?
LSTM (Long Short-Term Memory) решает проблему затухания градиентов в стандартных RNN за счёт механизма вентилей: входного, забывания и выходного. Это позволяет модели запоминать долгосрочные зависимости. -
Что такое Transformer и как он работает?
Transformer — архитектура, основанная на механизме внимания. Он не использует рекуррентные связи, что позволяет параллелизовать вычисления. Основные компоненты: self-attention и feed-forward сети. -
Как устроены GAN и для чего они нужны?
GAN (Generative Adversarial Network) состоит из двух моделей: генератора и дискриминатора. Они конкурируют друг с другом: генератор создаёт фейковые данные, дискриминатор пытается их определить. Используется для генерации изображений, стиля и др. -
Что такое VAE и как он отличается от GAN?
VAE (Variational Autoencoder) — это вероятностный генеративный метод. В отличие от GAN, VAE явно моделирует распределение данных и может восстанавливать входные данные, а также генерировать новые примеры. -
Как работает алгоритм обратного распространения ошибки (backpropagation)?
Backpropagation вычисляет градиенты параметров сети относительно функции потерь по цепному правилу дифференцирования. Эти градиенты используются для обновления весов с помощью оптимизатора. -
Какие существуют популярные функции активации и чем они различаются?
ReLU, Leaky ReLU, Tanh, Sigmoid. ReLU помогает избежать проблемы затухания градиента, Tanh лучше масштабирует значения, Sigmoid используется на выходе бинарной классификации. -
Что такое оптимизаторы и какие из них наиболее часто используются?
Оптимизаторы обновляют веса модели. Часто применяются SGD с моментом, Adam, RMSProp. Adam сочетает преимущества AdaGrad и RMSProp и подходит для большинства задач. -
Что такое переобучение и как с ним бороться?
Переобучение возникает, когда модель слишком хорошо запоминает тренировочные данные. Меры: регуляризация (L1/L2), dropout, early stopping, data augmentation. -
Что такое dropout и как он влияет на обучение?
Dropout — метод регуляризации, при котором случайные нейроны «выключаются» во время обучения. Это снижает зависимость между нейронами и повышает обобщающую способность. -
Как оценивать качество модели глубокого обучения?
Метрики зависят от задачи: accuracy, precision, recall, F1-score, ROC-AUC для классификации; MSE, MAE для регрессии. Также важна валидация на тестовой выборке. -
Что такое transfer learning и как его применять?
Transfer learning — использование предобученной модели на новой задаче. Чаще всего замораживают часть слоёв и дообучают последние. Эффективно при малом объёме данных. -
Как работает attention mechanism?
Attention позволяет модели сосредоточиться на наиболее релевантных частях входных данных. Self-attention вычисляет взаимосвязи между элементами последовательности. -
Что такое batch normalization и зачем он нужен?
BatchNorm нормализует выходы слоёв по батчам, ускоряя обучение и улучшая стабильность. Позволяет использовать более высокие скорости обучения. -
Какие типы loss-функций используются в глубоком обучении?
Для классификации: cross-entropy. Для регрессии: MSE, MAE. Для GAN: Wasserstein loss, hinge loss. Выбор зависит от задачи и выходного представления. -
Как происходит развертывание модели в production?
Модель сериализуется (TorchScript, SavedModel), затем интегрируется в API (Flask/FastAPI). Можно использовать ONNX, TensorRT, TorchServe для ускорения и масштабирования. -
Что такое distributed training и как он реализуется?
Распределённое обучение — разделение вычислений между GPU/устройствами. Реализуется через DataParallel, DistributedDataParallel (PyTorch), MirroredStrategy (TensorFlow). -
Как проводится hyperparameter tuning?
Используются методы: grid search, random search, Bayesian optimization. Инструменты: Optuna, Ray Tune, Hyperopt. Основные параметры: learning rate, batch size, количество слоёв. -
Что такое on-device inference и почему он важен?
On-device inference — выполнение модели на клиентском устройстве (например, смартфоне). Уменьшает задержку, экономит пропускную полосу, повышает приватность. -
Какие есть подходы к интерпретации моделей глубокого обучения?
Grad-CAM, SHAP, LIME, saliency maps. Позволяют понять, какие части входных данных влияют на вывод модели, особенно важно в медицине, финансах. -
Что такое federated learning и где применяется?
Federated learning — обучение модели на децентрализованных данных без их централизованного хранения. Используется в мобильных устройствах, здравоохранении, где важна конфиденциальность. -
Какие современные тенденции в области глубокого обучения?
Эффективные архитектуры (EfficientNet, MobileNet), few-shot/zero-shot learning, multimodal модели (CLIP, Flamingo), MLOps, автоматизация (AutoML), этика и справедливость моделей.
-
Какие основные проблемы возникают при обучении глубоких сетей и как их решать?
Проблемы: переобучение, затухание/взрыв градиентов, плохая сходимость. Решения: нормализация весов, batch norm, careful initialization, clipping градиентов, использование Adam. -
Что такое learning rate scheduling и какие стратегии используются?
Learning rate scheduling — изменение скорости обучения в процессе обучения. Стратегии: step decay, ReduceLROnPlateau, cyclic LR, cosine annealing. Улучшает сходимость и обобщающую способность. -
Как работает механизм self-attention в Transformer?
Self-attention вычисляет взаимосвязь между всеми парами элементов входной последовательности. Каждый элемент получает представление с учётом контекста, что улучшает обработку зависимостей на удалённых позициях. -
Что такое positional encoding и почему он нужен в Transformer?
Positional encoding добавляется к входным эмбеддингам для передачи информации о позиции элементов в последовательности, так как Transformer не имеет рекуррентной структуры. -
Какие типы свёрток существуют и где они применяются?
Обычная, глубокая (depthwise), групповая (grouped), транспонированная. Используются в MobileNet, EfficientNet, GAN для повышения эффективности и обратного восстановления размерности. -
Что такое data augmentation и как он влияет на качество модели?
Data augmentation — искусственное увеличение данных через преобразования (повороты, обрезка, шум). Повышает обобщающую способность и устойчивость к вариациям входных данных. -
Как происходит обучение GAN и какие проблемы могут возникнуть?
GAN обучается через минимаксную игру между генератором и дискриминатором. Проблемы: mode collapse, нестабильная сходимость, vanishing gradients. -
Что такое encoder-decoder архитектура и где она используется?
Encoder извлекает признаки из входных данных, decoder восстанавливает или генерирует выход. Применяется в машинном переводе, сегментации изображений, seq2seq задачах. -
Какие метрики используются для оценки качества генеративных моделей?
Inception Score (IS), Frechet Inception Distance (FID), Precision and Recall. Оценивают разнообразие и качество генерируемых образцов. -
Что такое fine-tuning и когда его стоит применять?
Fine-tuning — дообучение предобученной модели на новых данных. Применяется при наличии небольшого датасета, чтобы воспользоваться уже извлечёнными признаками. -
Как работают residual connection и зачем они нужны?
Residual connections позволяют части входа проходить напрямую через блок сети. Уменьшают проблему исчезающих градиентов и упрощают обучение глубоких сетей. -
Что такое cross-validation и как её использовать в DL?
Cross-validation — разделение данных на фолды для более точной оценки модели. В DL применяется редко из-за вычислительной сложности, но может использоваться при малых наборах данных. -
Какие особенности обучения с малым количеством данных?
Требуется transfer learning, data augmentation, простые модели, регуляризация. Важно избегать переобучения и использовать подходящие метрики. -
Что такое momentum в оптимизации и как он работает?
Momentum добавляет инерцию к обновлениям параметров, помогая двигаться в направлении, которое показало хорошие результаты ранее. Ускоряет сходимость и помогает избежать локальных минимумов. -
Как работает метод Layer Normalization и чем он отличается от BatchNorm?
LayerNorm нормализует по признакам, а не по батчу. Эффективен при переменной длине последовательностей и в RNN, где BatchNorm может быть нестабильным. -
Что такое zero-shot learning и как он реализуется?
Zero-shot learning позволяет классифицировать объекты из классов, которых не было в тренировочных данных. Реализуется через связь между текстовым описанием и визуальными признаками (например, CLIP). -
Какие подходы используются для уменьшения размера модели?
Pruning (обрезка весов), quantization (понижение точности), knowledge distillation (перенос знаний от большой модели к маленькой), lightweight архитектуры (MobileNet, SqueezeNet). -
Что такое onnx и зачем он нужен?
ONNX (Open Neural Network Exchange) — формат для сериализации моделей, совместимый между фреймворками. Позволяет экспортировать модель из PyTorch/TensorFlow и запускать в других средах. -
Как работает TorchScript и в чём его преимущества?
TorchScript — способ сериализовать модель PyTorch в автономный формат. Поддерживает JIT-компиляцию, позволяет запускать модель без Python и использовать в production. -
Что такое TensorRT и как он ускоряет вывод?
TensorRT — фреймворк NVIDIA для оптимизации моделей под GPU. Выполняет fusion слоёв, fp16/int8 quantization, оптимизацию графа вычислений. -
Какие есть способы работы с missing data в глубоком обучении?
Импутация (среднее, медиана), маскировка, специальные маркеры. В NLP часто используется [MASK] token, в табличных данных — заполнение пропусков. -
Какие современные подходы к обработке категориальных признаков в DL?
Embedding слои, one-hot кодирование, target encoding, TabTransformer. Embedding позволяет эффективно обрабатывать категориальные данные в нейросетях. -
Что такое MLOps и как он связан с глубоким обучением?
MLOps — практики DevOps для ML, включают CI/CD для моделей, мониторинг, версионирование данных и моделей. Необходим для стабильного развёртывания и обслуживания DL-систем. -
Какие этические аспекты следует учитывать при создании моделей глубокого обучения?
Смещение в данных, конфиденциальность (GDPR), объяснимость, безопасность (adversarial attacks), воздействие на общество (deepfakes, автоматизация). -
Какие перспективные направления развития глубокого обучения можно выделить?
Энергоэффективные модели, few-shot learning, multimodal AI, neuro-symbolic системы, edge AI, автоматическая генерация архитектур (NAS), интерпретируемость и explainable AI.
-
Какой из следующих слоёв используется для уменьшения размерности в свёрточных сетях?
A) Свёрточный (Conv2D)
B) Пулинговый (MaxPooling2D)
C) Batch Normalization
D) Dropout
Правильный ответ: B -
Какая функция активации помогает решить проблему затухания градиента?
A) Sigmoid
B) Tanh
C) ReLU
D) Softmax
Правильный ответ: C -
Какой оптимизатор сочетает преимущества AdaGrad и RMSProp?
A) SGD с моментом
B) Adam
C) Adagrad
D) RMSProp
Правильный ответ: B -
Что такое overfitting?
A) Модель плохо обучается на тренировочных данных
B) Модель хорошо работает на тестовых данных, но плохо на тренировочных
C) Модель слишком точно подстраивается под тренировочные данные
D) Модель не способна выучить шаблоны
Правильный ответ: C -
Какой метод регуляризации случайным образом отключает нейроны во время обучения?
A) BatchNorm
B) L2 Regularization
C) Dropout
D) Early Stopping
Правильный ответ: C -
Какой фреймворк использует граф вычислений по умолчанию в версии 1.x?
A) PyTorch
B) Keras
C) TensorFlow
D) ONNX
Правильный ответ: C -
Какая метрика используется для бинарной классификации при несбалансированных данных?
A) Accuracy
B) Precision
C) F1-score
D) MSE
Правильный ответ: C -
Как называется механизм внимания, позволяющий модели фокусироваться на разных частях входной последовательности?
A) Self-Attention
B) Cross-Attention
C) Scaled Dot-Product Attention
D) Global Attention
Правильный ответ: A -
Какой тип рекуррентной сети лучше справляется с долгосрочными зависимостями?
A) Простая RNN
B) LSTM
C) GRU
D) Bidirectional RNN
Правильный ответ: B -
Какой подход позволяет использовать предобученную модель на новой задаче?
A) Fine-tuning
B) Random initialization
C) Data Augmentation
D) Quantization
Правильный ответ: A -
Какой слой нормализует выходы по батчу?
A) LayerNorm
B) InstanceNorm
C) GroupNorm
D) BatchNorm
Правильный ответ: D -
Какой loss используется в GAN для стабилизации обучения?
A) Binary Crossentropy
B) Hinge Loss
C) Wasserstein Loss
D) MSE
Правильный ответ: C -
Какой формат позволяет экспортировать модель из одного фреймворка в другой?
A) HDF5
B) ONNX
C) PT
D) PKL
Правильный ответ: B -
Какой метод используется для ускорения вывода модели на GPU?
A) Quantization
B) Pruning
C) TensorRT
D) Knowledge Distillation
Правильный ответ: C -
Какой тип обучения позволяет модели генерировать новые данные?
A) Supervised Learning
B) Reinforcement Learning
C) Unsupervised Learning
D) Generative Modeling
Правильный ответ: D -
Какой подход к снижению точности весов применяется для ускорения инференса?
A) Quantization-Aware Training
B) Pruning
C) Knowledge Distillation
D) Transfer Learning
Правильный ответ: A -
Какой метод позволяет объединить несколько моделей для повышения качества?
A) Early Stopping
B) SWA
C) Ensembling
D) BatchNorm
Правильный ответ: C -
Какой тип свёртки используется в MobileNet для уменьшения числа параметров?
A) Transposed Convolution
B) Depthwise Separable Convolution
C) Dilated Convolution
D) Standard Convolution
Правильный ответ: B -
Какой алгоритм используется для обработки последовательностей в машинном переводе?
A) CNN
B) Transformer
C) DBSCAN
D) PCA
Правильный ответ: B -
Какой метод используется для оценки качества генерации изображений в GAN?
A) BLEU
B) FID
C) Perplexity
D) IoU
Правильный ответ: B -
Какое устройство лучше всего подходит для распределённого обучения?
A) CPU
B) GPU
C) TPU
D) FPGA
Правильный ответ: C -
Какой подход используется для защиты модели от adversarial атак?
A) BatchNorm
B) Dropout
C) Adversarial Training
D) Quantization
Правильный ответ: C -
Какой метод используется для представления категориальных признаков в DL?
A) One-Hot Encoding
B) Label Smoothing
C) Embedding
D) Min-Max Scaling
Правильный ответ: C -
Какой тип обучения используется в MoCo и SimCLR?
A) Supervised
B) Reinforcement
C) Self-Supervised
D) Semi-Supervised
Правильный ответ: C -
Какой алгоритм используется для поиска гиперпараметров с помощью вероятностных моделей?
A) Grid Search
B) Random Search
C) Bayesian Optimization
D) Genetic Algorithm
Правильный ответ: C
-
Какой метод используется для уменьшения времени вывода модели за счёт снижения точности вычислений?
A) BatchNorm
B) Quantization
C) Dropout
D) Early Stopping
Правильный ответ: B -
Какой механизм позволяет Transformer модели учитывать позиции токенов в последовательности?
A) Positional Encoding
B) Self-Attention
C) Feed-Forward Network
D) Layer Normalization
Правильный ответ: A -
Какая метрика оценивает качество восстановления изображения в autoencoder?
A) BLEU
B) F1-score
C) PSNR
D) Precision
Правильный ответ: C -
Какой тип обучения использует награду от окружения для обновления модели?
A) Supervised Learning
B) Reinforcement Learning
C) Self-Supervised Learning
D) Unsupervised Learning
Правильный ответ: B -
Как называется подход, при котором модель обучается на данных, хранящихся на разных устройствах без централизованного сбора?
A) Distributed Training
B) Federated Learning
C) Transfer Learning
D) Curriculum Learning
Правильный ответ: B -
Какой слой применяется для увеличения размерности изображения в генеративных моделях?
A) Conv2D
B) MaxPooling2D
C) Transposed Convolution (Conv2DTranspose)
D) Global Average Pooling
Правильный ответ: C -
Какой из следующих методов используется для интерпретации важности входных признаков в нейросетях?
A) PCA
B) Grad-CAM
C) K-means
D) T-SNE
Правильный ответ: B -
Какой подход к оптимизации позволяет использовать несколько GPU для ускорения обучения?
A) DataParallel
B) SGD
C) Adagrad
D) RMSProp
Правильный ответ: A -
Какой метод используется для создания компактной модели за счёт удаления малозначимых весов?
A) Knowledge Distillation
B) Pruning
C) Quantization
D) Dropout
Правильный ответ: B -
Какой алгоритм применяется для построения представлений в self-supervised learning через сравнение положительных и отрицательных примеров?
A) Triplet Loss
B) Contrastive Loss
C) InfoNCE
D) Hinge Loss
Правильный ответ: C -
Какой тип регуляризации добавляет штраф за величину весов в функцию потерь?
A) L1 Regularization
B) BatchNorm
C) Dropout
D) Data Augmentation
Правильный ответ: A -
Какой из следующих фреймворков предоставляет инструменты для развёртывания моделей на производстве?
A) Scikit-learn
B) TensorFlow Serving
C) Pandas
D) Matplotlib
Правильный ответ: B -
Какой подход к обучению позволяет модели генерировать выходные данные по частям с учётом предыдущего контекста?
A) Teacher Forcing
B) Beam Search
C) Autoregressive Modeling
D) Scheduled Sampling
Правильный ответ: C -
Какой тип свёртки применяется для расширения восприимчивого поля без увеличения числа параметров?
A) Depthwise
B) Dilated
C) Transposed
D) Standard
Правильный ответ: B -
Какой из следующих методов используется для поиска аномалий с помощью автоэнкодера?
A) Reconstruction Error
B) Crossentropy
C) KL-Divergence
D) MSE
Правильный ответ: A -
Какой из следующих форматов поддерживает сериализацию моделей в ONNX?
A) .h5
B) .onnx
C) .pt
D) .pb
Правильный ответ: B -
Какой из следующих механизмов помогает улучшить стабильность обучения глубоких сетей?
A) Residual Connection
B) Softmax
C) Dropout
D) ReLU
Правильный ответ: A -
Какой тип attention используется в Transformer для связи между запросами, ключами и значениями внутри одного входа?
A) Cross-Attention
B) Scaled Dot-Product Attention
C) Multi-Head Attention
D) Self-Attention
Правильный ответ: D -
Какой метод используется для повышения устойчивости модели к шумам в данных?
A) BatchNorm
B) Adversarial Training
C) Dropout
D) Early Stopping
Правильный ответ: B -
Какой из следующих подходов используется для автоматического выбора архитектуры модели?
A) NAS (Neural Architecture Search)
B) Grid Search
C) Random Search
D) Bayesian Optimization
Правильный ответ: A -
Какой из следующих методов используется для генерации текста с контролем длины и разнообразия?
A) Greedy Decoding
B) Top-k Sampling
C) Beam Search
D) Temperature Scaling
Правильный ответ: B -
Какой loss лучше всего подходит для задач многоклассовой классификации?
A) Binary Crossentropy
B) Categorical Crossentropy
C) Hinge Loss
D) MSE
Правильный ответ: B -
Какой подход используется для обучения модели на основе нескольких задач одновременно?
A) Transfer Learning
B) Self-Supervised Learning
C) Multi-Task Learning
D) Few-Shot Learning
Правильный ответ: C -
Какой из следующих методов используется для улучшения качества работы с несбалансированными данными?
A) Oversampling
B) Dropout
C) BatchNorm
D) Quantization
Правильный ответ: A -
Какой из следующих принципов лежит в основе MLOps?
A) Разделение обучения и инференса
B) CI/CD для ML-моделей
C) Использование только открытых данных
D) Ручное управление версиями модели
Правильный ответ: B
-
Какой из следующих методов позволяет модели обучаться на основе предыдущего опыта без явной разметки?
A) Supervised Learning
B) Reinforcement Learning
C) Self-Supervised Learning
D) Semi-Supervised Learning
Правильный ответ: B -
Какой тип нормализации применяется в рекуррентных сетях для стабилизации обучения?
A) BatchNorm
B) LayerNorm
C) InstanceNorm
D) GroupNorm
Правильный ответ: B -
Какая метрика используется для оценки качества сегментации изображений?
A) IoU (Intersection over Union)
B) BLEU
C) F1-score
D) PSNR
Правильный ответ: A -
Какой подход к обучению использует шум и его последовательное удаление для генерации данных?
A) GAN
B) VAE
C) Diffusion Models
D) Flow-based Models
Правильный ответ: C -
Какой слой используется в Transformer для кодирования позиций токенов?
A) Embedding
B) Positional Encoding
C) Feed-Forward
D) Attention
Правильный ответ: B -
Какой механизм позволяет модели фокусироваться на наиболее важных частях входа при генерации выхода?
A) Residual Connection
B) Dropout
C) Attention
D) BatchNorm
Правильный ответ: C -
Какой метод используется для уменьшения влияния небольших возмущений на вывод модели?
A) Quantization
B) Adversarial Training
C) Knowledge Distillation
D) Pruning
Правильный ответ: B -
Какой тип обучения позволяет модели обобщать на основе одного или нескольких примеров?
A) Zero-Shot Learning
B) Few-Shot Learning
C) Self-Supervised Learning
D) Supervised Learning
Правильный ответ: B -
Какой из следующих инструментов используется для версионирования моделей и данных в MLOps?
A) Docker
B) MLflow
C) Git
D) Kubernetes
Правильный ответ: B -
Какой метод используется для построения представлений без использования меток классов?
A) PCA
B) Self-Supervised Learning
C) K-means
D) T-SNE
Правильный ответ: B -
Какой из следующих подходов позволяет дообучить модель на новых данных, сохранив знания из исходного датасета?
A) Transfer Learning
B) Ensemble Learning
C) Curriculum Learning
D) Federated Learning
Правильный ответ: A -
Какой из следующих методов используется для ускорения вывода модели на мобильных устройствах?
A) BatchNorm
B) Quantization
C) Dropout
D) Early Stopping
Правильный ответ: B -
Какой тип attention используется в модели DETR для связи между запросами и ключами из разных источников?
A) Self-Attention
B) Cross-Attention
C) Scaled Dot-Product Attention
D) Multi-Head Attention
Правильный ответ: B -
Какой из следующих подходов используется для интерпретации решений модели глубокого обучения?
A) PCA
B) SHAP
C) KNN
D) DBSCAN
Правильный ответ: B -
Какой из следующих алгоритмов позволяет обучать модель на основе сравнения положительных и отрицательных пар?
A) Triplet Loss
B) Contrastive Loss
C) InfoNCE
D) Hinge Loss
Правильный ответ: C -
Какой тип свёртки используется в EfficientNet для повышения эффективности?
A) Depthwise Separable Convolution
B) Transposed Convolution
C) Dilated Convolution
D) Standard Convolution
Правильный ответ: A -
Какой из следующих методов используется для создания маленькой модели на основе большой, но точной?
A) Pruning
B) Knowledge Distillation
C) Quantization
D) Dropout
Правильный ответ: B -
Какой loss используется в задачах детекции объектов для регрессии координат bounding box?
A) Crossentropy
B) Focal Loss
C) Smooth L1 Loss
D) BCEWithLogitsLoss
Правильный ответ: C -
Какой метод используется для улучшения сходимости при использовании больших batch size?
A) LayerNorm
B) BatchNorm
C) Learning Rate Scaling
D) Dropout
Правильный ответ: C -
Какой формат используется для сериализации модели в PyTorch?
A) .onnx
B) .pt
C) .pb
D) .h5
Правильный ответ: B -
Какой из следующих механизмов помогает улучшить качество генерации текста за счёт хранения нескольких возможных вариантов?
A) Greedy Decoding
B) Beam Search
C) Sampling
D) Temperature Scaling
Правильный ответ: B -
Какой из следующих методов используется для уменьшения количества параметров в модели за счёт их удаления?
A) Quantization
B) Pruning
C) Knowledge Distillation
D) Dropout
Правильный ответ: B -
Какой тип обучения используется в CLIP для совместного представления изображений и текста?
A) Supervised Learning
B) Self-Supervised Learning
C) Multimodal Learning
D) Reinforcement Learning
Правильный ответ: C -
Какой из следующих методов позволяет использовать данные вне центрального сервера, сохраняя конфиденциальность?
A) Distributed Training
B) Federated Learning
C) Transfer Learning
D) Curriculum Learning
Правильный ответ: B -
Какой из следующих алгоритмов используется для автоматической настройки гиперпараметров с помощью вероятностных моделей?
A) Grid Search
B) Bayesian Optimization
C) Random Search
D) Genetic Algorithm
Правильный ответ: B
Экзаменационный билет №1
Теоретическая часть:
-
Опишите архитектуру и принцип работы LSTM. Какие компоненты она включает и как они взаимодействуют между собой?
Ответ: LSTM (Long Short-Term Memory) — это разновидность RNN, предназначенная для обработки последовательностей и сохранения долгосрочной зависимости. Архитектура включает три ключевых элемента: входной вентиль (input gate), вентиль забывания (forget gate) и выходной вентиль (output gate). Входной вентиль определяет, какие новые данные будут добавлены в ячейку памяти. Вентиль забывания решает, какие данные из предыдущего состояния следует удалить. Выходной вентиль контролирует, какие части текущего состояния ячейки будут переданы на выход. -
Что такое dropout и как он помогает бороться с переобучением?
Ответ: Dropout — это метод регуляризации, при котором случайные нейроны отключаются во время обучения. Это заставляет модель не полагаться слишком сильно на конкретные нейроны, тем самым улучшая обобщающую способность и снижая вероятность переобучения.
Практическая часть:
- Реализуйте простую свёрточную сеть (CNN) с использованием PyTorch для классификации набора данных CIFAR-10. Сеть должна содержать минимум два сверточных слоя и один полносвязный выходной слой.
Ответ:import torch import torch.nn as nn import torch.optim as optim import torchvision import torchvision.transforms as transforms class SimpleCNN(nn.Module): def __init__(self): super(SimpleCNN, self).__init__() self.features = nn.Sequential( nn.Conv2d(3, 32, kernel_size=3, padding=1), nn.ReLU(), nn.MaxPool2d(kernel_size=2), nn.Conv2d(32, 64, kernel_size=3, padding=1), nn.ReLU(), nn.MaxPool2d(kernel_size=2) ) self.classifier = nn.Sequential( nn.Flatten(), nn.Linear(64 * 8 * 8, 512), nn.ReLU(), nn.Linear(512, 10) ) def forward(self, x): x = self.features(x) x = self.classifier(x) return x # Загрузка данных transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform) trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True) # Инициализация модели, функции потерь и оптимизатора model = SimpleCNN() criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=0.001) # Обучение модели for epoch in range(2): # Пример с двумя эпохами for inputs, labels in trainloader: optimizer.zero_grad() outputs = model(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() print(f'Epoch {epoch+1}, Loss: {loss.item():.4f}')
Экзаменационный билет №2
Теоретическая часть:
-
Опишите, как работает механизм внимания (attention) в модели Transformer и зачем он нужен?
Ответ: Механизм внимания в Transformer позволяет модели фокусироваться на наиболее релевантных частях входной последовательности при обработке текущего токена. В частности, self-attention вычисляет взаимосвязи между всеми парами токенов, что обеспечивает учёт контекста. Это устраняет необходимость рекуррентных связей и делает модель более параллелизуемой. -
Что такое transfer learning и в каких случаях его стоит применять?
Ответ: Transfer learning — это подход, при котором предобученная модель используется как основа для новой задачи. Применяется, когда объем доступных данных мал или вычислительные ресурсы ограничены. Замораживают часть слоёв и дообучают верхние слои под конкретную задачу.
Практическая часть:
- Реализуйте обучение линейной регрессии с помощью PyTorch без использования высокоуровневых API (например, nn.Linear, optim.Adam), используя только torch.Tensor и автоматическое дифференцирование. Обучите модель на случайно сгенерированных данных.
Ответ:import torch # Генерация данных X = torch.randn(100, 1) y = 3 * X + 2 + 0.1 * torch.randn(X.shape) # Инициализация параметров w = torch.randn(1, requires_grad=True) b = torch.randn(1, requires_grad=True) # Параметры обучения lr = 0.01 epochs = 100 # Обучение for epoch in range(epochs): y_pred = X.mm(w) + b loss = ((y_pred - y) ** 2).mean() loss.backward() with torch.no_grad(): w -= lr * w.grad b -= lr * b.grad w.grad.zero_() b.grad.zero_() if (epoch+1) % 10 == 0: print(f'Epoch {epoch+1}, Loss: {loss.item():.4f}') print(f'Итоговая модель: y = {w.item():.2f}x + {b.item():.2f}')
Экзаменационный билет №3
Теоретическая часть:
-
Объясните, что такое batch normalization и как он влияет на обучение нейронной сети?
Ответ: Batch normalization — это метод нормализации выходов слоёв по батчам, что ускоряет обучение и улучшает стабильность. Он уменьшает проблему внутреннего ковариационного сдвига, позволяет использовать более высокие скорости обучения и снижает зависимость от начальной инициализации весов. -
Что такое GAN и как происходит процесс обучения генератора и дискриминатора?
Ответ: GAN (Generative Adversarial Network) состоит из двух моделей: генератора и дискриминатора. Генератор создаёт фейковые данные, пытаясь обмануть дискриминатор, а тот учится отличать реальные данные от сгенерированных. Процесс обучения ведётся через минимаксную игру, где обе модели совершенствуются поочерёдно.
Практическая часть:
- Реализуйте простой GAN для генерации одномерных данных с использованием PyTorch.
Ответ:import torch import torch.nn as nn import torch.optim as optim # Определение генератора class Generator(nn.Module): def __init__(self): super(Generator, self).__init__() self.model = nn.Sequential( nn.Linear(10, 25), nn.ReLU(), nn.Linear(25, 1) ) def forward(self, x): return self.model(x) # Определение дискриминатора class Discriminator(nn.Module): def __init__(self): super(Discriminator, self).__init__() self.model = nn.Sequential( nn.Linear(1, 25), nn.ReLU(), nn.Linear(25, 1), nn.Sigmoid() ) def forward(self, x): return self.model(x) # Инициализация моделей G = Generator() D = Discriminator() # Оптимизаторы opt_G = optim.Adam(G.parameters(), lr=0.001) opt_D = optim.Adam(D.parameters(), lr=0.001) # Функция потерь criterion = nn.BCELoss() # Обучение for epoch in range(1000): # Обучение дискриминатора real_data = torch.randn(64, 1) real_labels = torch.ones(real_data.size(0), 1) noise = torch.randn(64, 10) fake_data = G(noise).detach() fake_labels = torch.zeros(fake_data.size(0), 1) outputs_real = D(real_data) loss_real = criterion(outputs_real, real_labels) outputs_fake = D(fake_data) loss_fake = criterion(outputs_fake, fake_labels) loss_D = loss_real + loss_fake opt_D.zero_grad() loss_D.backward() opt_D.step() # Обучение генератора noise = torch.randn(64, 10) fake_data = G(noise) outputs = D(fake_data) loss_G = criterion(outputs, torch.ones(outputs.size(0), 1)) opt_G.zero_grad() loss_G.backward() opt_G.step() if (epoch+1) % 100 == 0: print(f'Epoch {epoch+1}, Loss D: {loss_D.item():.4f}, Loss G: {loss_G.item():.4f}')
Экзаменационный билет №4
Теоретическая часть:
-
Что такое self-supervised learning и в чём его отличие от supervised и unsupervised обучения?
Ответ: Self-supervised learning — это метод, при котором обучение происходит без явной разметки, но не просто на основе структуры данных (как в unsupervised), а с использованием предтекстовых задач, извлекающих supervisory сигнал из самих данных. Например, маскировка токенов (BERT) или сравнение положительных и отрицательных пар (SimCLR). В отличие от supervised, он не требует меток; в отличие от unsupervised, формирует представления через целевую задачу. -
Как работает алгоритм backpropagation и как он связан с градиентным спуском?
Ответ: Backpropagation — это метод вычисления градиентов функции потерь по параметрам модели с использованием цепного правила дифференцирования. Градиенты затем используются в градиентном спуске для обновления весов. Таким образом, backpropagation обеспечивает теоретическую основу для корректировки параметров модели в направлении минимизации ошибки.
Практическая часть:
- Реализуйте простой autoencoder для сжатия и восстановления данных MNIST с помощью PyTorch. Обучите модель и визуализируйте оригинальные и реконструированные изображения.
Ответ:import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms import matplotlib.pyplot as plt # Определение autoencoder class Autoencoder(nn.Module): def __init__(self): super(Autoencoder, self).__init__() self.encoder = nn.Sequential( nn.Linear(28*28, 128), nn.ReLU(), nn.Linear(128, 64), nn.ReLU(), nn.Linear(64, 12) ) self.decoder = nn.Sequential( nn.Linear(12, 64), nn.ReLU(), nn.Linear(64, 128), nn.ReLU(), nn.Linear(128, 28*28), nn.Sigmoid() ) def forward(self, x): x = self.encoder(x) x = self.decoder(x) return x # Подготовка данных transform = transforms.ToTensor() train_dataset = datasets.MNIST(root='./data', train=True, transform=transform, download=True) train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=64, shuffle=True) # Инициализация модели model = Autoencoder() criterion = nn.BCELoss() optimizer = optim.Adam(model.parameters(), lr=0.001) # Обучение for epoch in range(10): for data, _ in train_loader: img = data.view(data.size(0), -1) output = model(img) loss = criterion(output, img) optimizer.zero_grad() loss.backward() optimizer.step() print(f'Epoch {epoch+1}, Loss: {loss.item():.4f}') # Визуализация examples = enumerate(train_loader) batch_idx, (example_data, example_targets) = next(examples) reconstructed = model(example_data.view(example_data.shape[0], -1)).detach().view(-1, 28, 28) for i in range(5): plt.subplot(2, 5, i+1) plt.imshow(example_data[i].squeeze(), cmap='gray') plt.title("Original") plt.axis('off') plt.subplot(2, 5, i+6) plt.imshow(reconstructed[i].squeeze(), cmap='gray') plt.title("Reconstructed") plt.axis('off') plt.show()
Экзаменационный билет №5
Теоретическая часть:
-
Что такое dropout и batch normalization? В чём их основное различие в контексте регуляризации нейронных сетей?
Ответ: Dropout — это метод регуляризации, при котором случайные нейроны отключаются во время обучения, что снижает зависимость между ними и уменьшает переобучение. Batch normalization нормализует выходы слоёв по батчам, ускоряя обучение и улучшая стабильность сети. Основное различие заключается в том, что dropout действует как регуляризатор, тогда как batch normalization влияет на динамику обучения и не является строгим методом регуляризации, хотя может частично её обеспечивать. -
Объясните, как работает механизм self-attention в Transformer. Как вычисляются Q, K и V?
Ответ: Self-attention позволяет модели учитывать взаимосвязи между элементами последовательности. Для этого входные векторы проецируются в три пространства: Query (Q), Key (K) и Value (V) с помощью обучаемых матриц весов. Затем вычисляется матрица внимания через скалярные произведения Q и K, которые масштабируются и пропускаются через softmax для получения весов. Эти веса применяются к V, чтобы получить выход внимания.
Практическая часть:
- Реализуйте простой Transformer Encoder блок с использованием PyTorch. Используйте nn.MultiheadAttention и реализуйте feed-forward сеть. Протестируйте его на случайной последовательности тензоров.
Ответ:import torch import torch.nn as nn class TransformerEncoderBlock(nn.Module): def __init__(self, embed_dim=64, num_heads=4, ff_dim=256, dropout_rate=0.1): super(TransformerEncoderBlock, self).__init__() self.attention = nn.MultiheadAttention(embed_dim, num_heads) self.norm1 = nn.LayerNorm(embed_dim) self.dropout1 = nn.Dropout(dropout_rate) self.ffn = nn.Sequential( nn.Linear(embed_dim, ff_dim), nn.ReLU(), nn.Linear(ff_dim, embed_dim) ) self.norm2 = nn.LayerNorm(embed_dim) self.dropout2 = nn.Dropout(dropout_rate) def forward(self, x): # Multi-head attention attn_output, _ = self.attention(x, x, x) x = x + self.dropout1(attn_output) x = self.norm1(x) # Feed-forward network ffn_output = self.ffn(x) x = x + self.dropout2(ffn_output) x = self.norm2(x) return x # Тестирование seq_len = 10 embed_dim = 64 batch_size = 32 # Случайная последовательность тензоров x = torch.randn(seq_len, batch_size, embed_dim) # Инициализация и применение блока block = TransformerEncoderBlock() output = block(x) print("Входной тензор:", x.shape) print("Выходной тензор:", output.shape)
Экзаменационный билет №6
Теоретическая часть:
-
Что такое overfitting и какие методы борьбы с ним вы знаете?
Ответ: Overfitting — это явление, при котором модель слишком точно подстраивается под тренировочные данные и теряет способность обобщать. Методы борьбы: регуляризация (L1/L2), dropout, batch normalization, data augmentation, early stopping, упрощение модели, увеличение размера датасета. -
Опишите основные компоненты архитектуры VAE и как она отличается от GAN.
Ответ: VAE состоит из encoder, который кодирует вход в скрытое пространство, и decoder, который его восстанавливает. Обучение происходит на минимизацию reconstruction loss и KL-дивергенции между апостериорным и априорным распределением. В отличие от GAN, VAE не использует противостояние между генератором и дискриминатором, а обучается напрямую восстанавливать данные.
Практическая часть:
- Реализуйте простой Variational Autoencoder (VAE) для работы с MNIST на PyTorch.
Ответ:import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms class VAE(nn.Module): def __init__(self, latent_dim=20): super(VAE, self).__init__() self.encoder = nn.Sequential( nn.Linear(28*28, 512), nn.ReLU() ) self.mu = nn.Linear(512, latent_dim) self.logvar = nn.Linear(512, latent_dim) self.decoder = nn.Sequential( nn.Linear(latent_dim, 512), nn.ReLU(), nn.Linear(512, 28*28), nn.Sigmoid() ) def reparameterize(self, mu, logvar): std = torch.exp(0.5 * logvar) eps = torch.randn_like(std) return mu + eps * std def forward(self, x): h = self.encoder(x.view(-1, 28*28)) mu, logvar = self.mu(h), self.logvar(h) z = self.reparameterize(mu, logvar) return self.decoder(z), mu, logvar def loss_function(recon_x, x, mu, logvar): BCE = nn.functional.binary_cross_entropy(recon_x, x.view(-1, 28*28), reduction='sum') KLD = -0.5 * torch.sum(1 + logvar - mu.pow(2) - logvar.exp()) return BCE + KLD # Подготовка данных transform = transforms.ToTensor() train_data = datasets.MNIST(root='./data', train=True, transform=transform, download=True) train_loader = torch.utils.data.DataLoader(train_data, batch_size=128, shuffle=True) # Инициализация модели model = VAE() optimizer = optim.Adam(model.parameters(), lr=1e-3) # Обучение for epoch in range(10): total_loss = 0 for data, _ in train_loader: recon_batch, mu, logvar = model(data) loss = loss_function(recon_batch, data, mu, logvar) optimizer.zero_grad() loss.backward() optimizer.step() total_loss += loss.item() print(f'Epoch {epoch+1}, Loss: {total_loss / len(train_loader.dataset):.4f}')
Экзаменационный билет №7
Теоретическая часть:
-
Что такое gradient clipping и в каких случаях он применяется?
Ответ: Gradient clipping — это метод ограничения величины градиентов во время обучения, чтобы избежать проблемы exploding gradients. Применяется в RNN, Transformer и других моделях, где градиенты могут становиться очень большими. Обычно используется при использовании SGD с моментом или Adam. -
Какие основные компоненты входят в архитектуру YOLO для детекции объектов?
Ответ: YOLO (You Only Look Once) состоит из backbone-сети для извлечения признаков, neck-части (например, FPN), улучшающей представление признаков на разных уровнях, и head-части, которая предсказывает bounding boxes и классы. Также используется grid-based подход, где изображение делится на ячейки, каждая из которых предсказывает свои объекты.
Практическая часть:
- Реализуйте простую функцию вычисления IoU (Intersection over Union) между двумя bounding box'ами. Напишите её на Python и протестируйте на примерах.
Ответ:import torch def iou(box1, box2): # box1, box2: [x_min, y_min, x_max, y_max] x1_max = max(box1[0], box2[0]) y1_max = max(box1[1], box2[1]) x2_min = min(box1[2], box2[2]) y2_min = min(box1[3], box2[3]) inter_area = max(0, x2_min - x1_max + 1) * max(0, y2_min - y1_max + 1) area1 = (box1[2] - box1[0] + 1) * (box1[3] - box1[1] + 1) area2 = (box2[2] - box2[0] + 1) * (box2[3] - box2[1] + 1) union_area = area1 + area2 - inter_area return inter_area / union_area # Тестирование box_a = [0, 0, 2, 2] box_b = [1, 1, 3, 3] print(f'IoU между {box_a} и {box_b}: {iou(box_a, box_b):.4f}') # ~0.1429
Экзаменационный билет №8
Теоретическая часть:
-
В чём разница между обучением с учителем (supervised learning) и без учителя (unsupervised learning)? Приведите примеры задач.
Ответ: Supervised learning использует размеченные данные (вход + целевой выход), например, классификация или регрессия. Unsupervised learning работает с неразмеченными данными, например, кластеризация (K-Means) или снижение размерности (PCA). -
Что такое self-supervised learning и почему он становится популярным в NLP и CV?
Ответ: Self-supervised learning — это метод, где supervisory сигнал создаётся из самих данных. Например, маскировка слов (BERT) или предсказание поворота изображения. Он популярен, потому что позволяет эффективно использовать большие объёмы неразмеченных данных и формировать качественные представления без ручной разметки.
Практическая часть:
- Реализуйте функцию masked language modeling (MLM) для случайного маскирования токенов в последовательности. Используйте PyTorch.
Ответ:import torch import torch.nn as nn class MLMHead(nn.Module): def __init__(self, hidden_size, vocab_size): super(MLMHead, self).__init__() self.fc = nn.Linear(hidden_size, vocab_size) def forward(self, x): return self.fc(x) def mask_tokens(input_ids, tokenizer, mlm_probability=0.15): labels = input_ids.clone() probability_matrix = torch.rand(input_ids.shape) special_tokens_mask = [tokenizer.get_special_tokens_mask(val, already_has_special_tokens=True) for val in input_ids.tolist()] probability_matrix.masked_fill_(torch.tensor(special_tokens_mask, dtype=torch.bool), value=0.0) masked_indices = probability_matrix < mlm_probability labels[~masked_indices] = -100 # Ignore index in loss indices_replaced = torch.bernoulli(torch.full(input_ids.shape, 0.8)).bool() & masked_indices input_ids[indices_replaced] = tokenizer.convert_tokens_to_ids(tokenizer.mask_token) return input_ids, labels # Тестирование from transformers import BertTokenizer tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') text = "Hello, my dog is cute." tokenized = tokenizer(text, return_tensors='pt', padding=True, truncation=True) input_ids = tokenized['input_ids'] masked_input, labels = mask_tokens(input_ids, tokenizer) print("Original IDs:", input_ids) print("Masked IDs:", masked_input) print("Labels:", labels)
Экзаменационный билет №9
Теоретическая часть:
-
Что такое few-shot learning и в каких задачах он применяется?
Ответ: Few-shot learning — это подход, при котором модель обучается распознавать новые классы по очень малому числу примеров (от 1 до нескольких). Применяется в задачах, где сбор размеченных данных затруднён, например, в медицине, редких событиях или персонализированных системах. -
Какие метрики используются для оценки качества генеративных моделей?
Ответ: Для оценки качества генерации изображений применяются Inception Score (IS), Frechet Inception Distance (FID), Precision and Recall. Для текста — BLEU, ROUGE, METEOR, BERTScore. Эти метрики оценивают как качество, так и разнообразие сгенерированных образцов.
Практическая часть:
- Реализуйте обучение простой GAN для генерации изображений MNIST на PyTorch. Добавьте логику сохранения лучших результатов.
Ответ:import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import os # Генератор class Generator(nn.Module): def __init__(self): super().__init__() self.gen = nn.Sequential( nn.Linear(100, 256), nn.ReLU(), nn.Linear(256, 28*28), nn.Tanh() ) def forward(self, x): return self.gen(x) # Дискриминатор class Discriminator(nn.Module): def __init__(self): super().__init__() self.disc = nn.Sequential( nn.Linear(28*28, 256), nn.LeakyReLU(0.2), nn.Linear(256, 1), nn.Sigmoid() ) def forward(self, x): return self.disc(x) # Данные transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))]) train_loader = DataLoader(datasets.MNIST('.', transform=transform, download=True), batch_size=128, shuffle=True) # Модели G = Generator() D = Discriminator() opt_G = optim.Adam(G.parameters(), lr=0.0002) opt_D = optim.Adam(D.parameters(), lr=0.0002) criterion = nn.BCELoss() # Обучение os.makedirs('models', exist_ok=True) best_fid = float('inf') for epoch in range(20): for real, _ in train_loader: real = real.view(-1, 28*28) batch_size = real.shape[0] real_labels = torch.ones(batch_size, 1) fake_labels = torch.zeros(batch_size, 1) # D: реальные opt_D.zero_grad() loss_real = criterion(D(real), real_labels) loss_real.backward() # D: фейковые z = torch.randn(batch_size, 100) fake = G(z).detach() loss_fake = criterion(D(fake), fake_labels) loss_fake.backward() opt_D.step() # G opt_G.zero_grad() fake = G(z) loss_g = criterion(D(fake), real_labels) loss_g.backward() opt_G.step() print(f'Epoch {epoch+1}, Loss D: {loss_real.item()+loss_fake.item():.4f}, Loss G: {loss_g.item():.4f}') # Сохранение модели fid_score = np.random.rand() # Здесь должна быть реальная метрика, например, FID if fid_score < best_fid: best_fid = fid_score torch.save(G.state_dict(), 'models/gan_generator.pth')
Экзаменационный билет №10
Теоретическая часть:
-
Что такое MLOps и как он связан с жизненным циклом ML-моделей?
Ответ: MLOps — это набор практик DevOps, адаптированных под машинное обучение. Он охватывает все этапы жизненного цикла модели: разработка, тестирование, развёртывание, мониторинг, версионирование, CI/CD, A/B-тестирование. Цель — автоматизация и стандартизация работы с ML-системами в production. -
Какие современные архитектуры используются в компьютерном зрении и почему они эффективны?
Ответ: Современные архитектуры: Vision Transformers (ViT), ConvNeXt, EfficientNet, Swin Transformer. ViT использует механизмы внимания и показывает высокую точность. ConvNeXt сочетает преимущества CNN и Transformer. EfficientNet балансирует точность и производительность. Swin Transformer оптимизирован для длинных последовательностей изображений.
Практическая часть:
- Реализуйте простой пайплайн MLOps: сохранение модели, загрузка, инференс и сериализация в ONNX.
Ответ:import torch import torch.nn as nn import torch.onnx # Простая модель class Net(nn.Module): def __init__(self): super().__init__() self.lin = nn.Linear(10, 2) def forward(self, x): return self.lin(x) # Обучение model = Net() torch.save(model.state_dict(), "models/simple_model.pth") # Загрузка model_loaded = Net() model_loaded.load_state_dict(torch.load("models/simple_model.pth")) model_loaded.eval() # Инференс x = torch.randn(1, 10) with torch.no_grad(): out = model_loaded(x) print("Предсказание:", out) # Экспорт в ONNX dummy_input = torch.randn(1, 10) torch.onnx.export(model_loaded, dummy_input, "models/simple_model.onnx", export_params=True, opset_version=10, do_constant_folding=True, input_names=['input'], output_names=['output']) print("Модель экспортирована в ONNX")
Экзаменационный билет №11
Теоретическая часть:
-
Что такое distributed training и какие подходы к нему существуют в PyTorch?
Ответ: Distributed training — это обучение модели на нескольких GPU или узлах для ускорения процесса. В PyTorch реализовано несколько подходов: DataParallel (простой, но менее эффективный), DistributedDataParallel (лучшая производительность), а также использование torch.distributed для низкоуровневого контроля. -
Как работает механизм scheduled sampling в RNN и почему он полезен?
Ответ: Scheduled sampling — это метод обучения RNN, при котором модель постепенно переходит от использования ground truth как входа к использованию собственных предсказаний. Это помогает снизить разницу между обучением и инференсом (exposure bias) и улучшает стабильность генерации.
Практическая часть:
- Реализуйте простую RNN-модель с использованием scheduled sampling на PyTorch для задачи генерации последовательностей.
Ответ:import torch import torch.nn as nn class SeqModel(nn.Module): def __init__(self, input_size, hidden_size, output_size): super().__init__() self.rnn = nn.GRU(input_size, hidden_size, batch_first=True) self.fc = nn.Linear(hidden_size, output_size) def forward(self, x, teacher_forcing_ratio=0.5, targets=None): batch_size = x.size(0) seq_len = x.size(1) hidden = torch.zeros(1, batch_size, self.rnn.hidden_size) outputs = [] inp = x[:, 0, :] for t in range(seq_len): out, hidden = self.rnn(inp.unsqueeze(1), hidden) out = self.fc(out.squeeze(1)) outputs.append(out.unsqueeze(1)) if targets is not None and torch.rand(1).item() < teacher_forcing_ratio: inp = targets[:, t, :] else: inp = torch.softmax(out, dim=-1) return torch.cat(outputs, dim=1) # Тестирование model = SeqModel(input_size=10, hidden_size=32, output_size=10) x = torch.randn(8, 5, 10) targets = torch.randint(0, 10, (8, 5)).long() outputs = model(x, targets=targets) print("Выходной тензор:", outputs.shape)
Экзаменационный билет №12
Теоретическая часть:
-
Опишите основные отличия между GAN и VAE как моделей генерации данных.
Ответ: GAN использует противостояние между генератором и дискриминатором, что позволяет создавать более реалистичные данные, но обучение может быть нестабильным. VAE основан на вероятностном моделировании и явно кодирует данные в скрытое пространство, что делает его более стабильным, но качество генерации может быть ниже. -
Что такое knowledge distillation и как она используется в практике?
Ответ: Knowledge distillation — это метод переноса знаний от большой модели (teacher) к маленькой (student). Маленькая модель обучается воспроизводить выходы большой, что позволяет создавать компактные и быстрые модели, сохраняя высокую точность.
Практическая часть:
- Реализуйте простой пайплайн knowledge distillation, где маленькая CNN-модель обучается по выходам большой CNN на наборе CIFAR-10.
Ответ:import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader # Учительская модель class Teacher(nn.Module): def __init__(self): super().__init__() self.net = nn.Sequential( nn.Conv2d(3, 128, 3), nn.ReLU(), nn.MaxPool2d(2), nn.Conv2d(128, 256, 3), nn.ReLU(), nn.AdaptiveAvgPool2d((1,1)), nn.Flatten(), nn.Linear(256, 10) ) def forward(self, x): return self.net(x) # Студенческая модель class Student(nn.Module): def __init__(self): super().__init__() self.net = nn.Sequential( nn.Linear(3*32*32, 128), nn.ReLU(), nn.Linear(128, 10) ) def forward(self, x): return self.net(x.view(-1, 3*32*32)) # Подготовка данных transform = transforms.ToTensor() train_data = datasets.CIFAR10('.', transform=transform, download=True) train_loader = DataLoader(train_data, batch_size=128, shuffle=True) # Инициализация teacher = Teacher().eval() student = Student() optimizer = optim.Adam(student.parameters(), lr=0.001) # Обучение с дистилляцией for epoch in range(5): for x, y in train_loader: with torch.no_grad(): soft_targets = teacher(x).detach() student_preds = student(x) loss = nn.KLDivLoss(reduction='batchmean')(F.log_softmax(student_preds, dim=1), F.softmax(soft_targets, dim=1)) optimizer.zero_grad() loss.backward() optimizer.step() print(f'Epoch {epoch+1}, Loss: {loss.item():.4f}')
Экзаменационный билет №13
Теоретическая часть:
-
Что такое quantization и какие виды quantization используются в глубоком обучении?
Ответ: Quantization — это снижение точности представления весов модели (например, float32 → int8) для уменьшения размера и увеличения скорости вывода. Виды: post-training quantization, quantization-aware training, dynamic quantization. Применяется в edge устройствах и мобильных приложениях. -
Какие метрики используются для оценки качества NLP-моделей и в чём их особенность?
Ответ: BLEU, ROUGE, METEOR, CIDEr, perplexity, BERTScore. Эти метрики сравнивают сгенерированный текст с эталонами, оценивая совпадение n-грамм, семантику и связность. BERTScore использует contextual embeddings для повышения корреляции с человеческой оценкой.
Практическая часть:
- Реализуйте простую модель seq2seq с attention для перевода коротких фраз.
Ответ:import torch import torch.nn as nn class Encoder(nn.Module): def __init__(self, input_size, hidden_size): super().__init__() self.embedding = nn.Embedding(input_size, hidden_size) self.gru = nn.GRU(hidden_size, hidden_size) def forward(self, x): embedded = self.embedding(x) outputs, hidden = self.gru(embedded) return outputs, hidden class Decoder(nn.Module): def __init__(self, hidden_size, output_size): super().__init__() self.embedding = nn.Embedding(output_size, hidden_size) self.attn = nn.Linear(hidden_size * 2, 1) self.gru = nn.GRU(hidden_size, hidden_size) self.out = nn.Linear(hidden_size, output_size) def forward(self, x, encoder_outputs): embedded = self.embedding(x.unsqueeze(0)) attn_weights = torch.softmax(self.attn(torch.cat([embedded.repeat(encoder_outputs.size(0),1,1), encoder_outputs], dim=2)), dim=0) context = torch.sum(attn_weights * encoder_outputs, dim=0) output, hidden = self.gru(context.unsqueeze(0)) return self.out(output.squeeze(0)), hidden # Тестирование encoder = Encoder(input_size=1000, hidden_size=256) decoder = Decoder(hidden_size=256, output_size=1000) input_seq = torch.randint(0, 1000, (10, 1)) # длина последовательности = 10, batch_size = 1 encoder_out, hidden = encoder(input_seq) output_tokens = [] decoder_input = torch.tensor(0) # SOS token for _ in range(10): decoder_output, hidden = decoder(decoder_input, encoder_out) decoder_input = decoder_output.argmax() output_tokens.append(decoder_input.item()) print("Сгенерированные токены:", output_tokens)
Экзаменационный билет №14
Теоретическая часть:
-
Что такое curriculum learning и в каких случаях его стоит применять?
Ответ: Curriculum learning — это стратегия обучения, при которой данные подаются модели в порядке возрастания сложности. Позволяет улучшить сходимость и обобщающую способность, особенно когда данные имеют иерархическую структуру или модель чувствительна к начальным условиям. -
Какие современные подходы к оптимизации графа вычислений в DL вы знаете?
Ответ: Operator fusion, layout optimization, kernel autotuning, constant folding, memory planning. Эти методы применяются в бэкендах (ONNX, TensorRT) для ускорения вывода, снижения latency и улучшения использования ресурсов GPU/CPU.
Практическая часть:
- Реализуйте экспорт модели из PyTorch в ONNX и выполните inference с помощью onnxruntime.
Ответ:import torch import torch.nn as nn import torch.onnx import onnx import onnxruntime as ort # Простая модель class Net(nn.Module): def __init__(self): super().__init__() self.lin = nn.Linear(10, 2) def forward(self, x): return self.lin(x) # Экспорт в ONNX model = Net() dummy_input = torch.randn(1, 10) torch.onnx.export(model, dummy_input, "models/simple_model.onnx", export_params=True, opset_version=10, do_constant_folding=True, input_names=['input'], output_names=['output']) # Загрузка и инференс через onnxruntime ort_session = ort.InferenceSession("models/simple_model.onnx") outputs = ort_session.run(None, {'input': dummy_input.numpy()}) print("Результат инференса:", outputs)
Экзаменационный билет №15
Теоретическая часть:
-
Что такое self-supervised learning и какие задачи он использует?
Ответ: Self-supervised learning — это подход, при котором supervisory сигнал формируется из самих данных без явной разметки. Примеры задач: masked language modeling (BERT), rotation prediction, jigsaw puzzle, contrastive learning (SimCLR, MoCo). -
Что такое NAS (Neural Architecture Search) и зачем он нужен?
Ответ: NAS — это автоматический поиск архитектуры нейронной сети с помощью алгоритмов оптимизации. Цель — найти наиболее эффективную и точную архитектуру для конкретной задачи, минимизируя участие человека в дизайне модели.
Практическая часть:
- Реализуйте простую NAS-систему с использованием случайного поиска архитектур.
Ответ:import random import torch import torch.nn as nn import torch.optim as optim def random_model(): layers = [] for _ in range(random.randint(1, 4)): layers.append(nn.Linear(128, 128)) layers.append(random.choice([nn.ReLU(), nn.Tanh(), nn.Sigmoid()])) return nn.Sequential(*layers, nn.Linear(128, 10)) # Простейший NAS best_acc = 0 for i in range(10): model = random_model() criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=0.001) # Тестовые данные x = torch.randn(100, 128) y = torch.randint(0, 10, (100,)) # Обучение for epoch in range(3): pred = model(x) loss = criterion(pred, y) optimizer.zero_grad() loss.backward() optimizer.step() acc = (pred.argmax(dim=1) == y).float().mean().item() print(f"Модель {i+1}, Accuracy: {acc:.4f}") if acc > best_acc: best_acc = acc best_model = model print("Лучшая точность:", best_acc)
Кейс №1: "Автоматизация классификации медицинских изображений в условиях несбалансированных данных"
Описание ситуации
Вы — специалист по глубокому обучению, приглашённый в небольшую частную клинику, которая хочет внедрить автоматизированное решение для анализа рентгеновских снимков грудной клетки. Цель — предварительная классификация снимков на категории: норма, пневмония и туберкулёз.
Для разработки модели предоставлены данные:
- Объём выборки: 3 000 снимков.
- Распределение классов:
- Норма: 2 400 изображений (80%),
- Пневмония: 500 изображений (16.7%),
- Туберкулёз: 100 изображений (3.3%).
Модель должна быть развернута локально на одном GPU-сервере. У клиники нет доступа к облачным вычислениям или большим вычислительным мощностям. Также отсутствует возможность сбора дополнительных данных по туберкулёзу в ближайшее время.
Текущая реализация от внутренней команды
Внутренняя команда уже обучила простую CNN на основе ResNet18, дообучив её под три класса. Они используют следующие подходы:
- Стандартный CrossEntropyLoss без весовой корректировки.
- Разделение данных: 70% обучающая, 15% валидационная, 15% тестовая.
- Аугментации: горизонтальное отражение, случайное обрезание, изменение яркости.
Результаты работы модели:
Задача
На основе описанного сценария:
- Выявите не менее трёх скрытых проблем , которые могут объяснять низкое качество распознавания туберкулёза.
- Предложите конкретные технические решения для каждой проблемы.
- Опишите, как можно ускорить вывод модели на имеющемся оборудовании без значительной потери качества.
Решение
1. Проблема: Сильный дисбаланс классов
- Признак: Класс "Туберкулёз" составляет всего 3.3% от выборки, что приводит к тому, что модель игнорирует его при обучении.
- Решение:
- Использовать взвешенную функцию потерь : указать параметр weight в CrossEntropyLoss.
- Применить oversampling для класса туберкулёза (например, с помощью WeightedRandomSampler).
- Использовать Focal Loss для снижения влияния легко классифицируемых примеров.
2. Проблема: Неэффективные аугментации
- Признак: Случайные обрезания и отражения могут ухудшать интерпретируемость важных участков легких.
- Решение:
- Заменить стандартные аугментации на медицинские: использовать CutOut, GridMask, RandomErasing.
- Применять аугментации только к миноритарному классу (например, через imgaug или albumentations).
3. Проблема: Неправильная метрика оценки
- Признак: Используется accuracy, которая не отражает реального качества по редким классам.
- Решение:
- Перейти на использование macro-F1 score как основной метрики.
- Добавить precision-recall кривые и AUC-ROC для каждого класса.
- Ввести class-wise confusion matrix для детального анализа ошибок.
4. Проблема: Высокая сложность модели
- Признак: ResNet18 может быть слишком тяжелой для сервера с одним GPU.
- Решение:
- Использовать knowledge distillation : обучить более компактную сеть (например, MobileNetV3) на выходах ResNet18.
- Применить quantization-aware training или post-training quantization для уменьшения размера модели и ускорения инференса.
- Экспортировать модель в ONNX и оптимизировать с помощью TensorRT .
Резюме
Этот кейс демонстрирует типичную ситуацию в реальной практике: ограниченные данные, дисбаланс классов, слабое понимание метрик и аппаратные ограничения. Его можно использовать как практическое задание для курса "Специалист по глубокому обучению", чтобы развить у студентов способность:
- Анализировать качество моделей в контексте бизнес-задач,
- Применять продвинутые методы обучения и регуляризации,
- Оптимизировать модели под реальные условия развёртывания.
Кейс №2: "Оптимизация производительности модели для edge-устройства в условиях ограниченного бюджета"
Описание ситуации
Вы работаете в стартапе, который разрабатывает интеллектуальную камеру для автоматического распознавания транспортных средств на парковках. Устройство должно работать автономно, без подключения к интернету и облачным сервисам. Основные требования:
- Обнаружение и классификация автомобилей (легковые, грузовые, мотоциклы, спецтехника).
- Обработка видео с камеры в реальном времени (минимум 15 FPS).
- Работа на встроенной системе с процессором ARM Cortex-A55 и GPU Mali-G52 (например, NVIDIA Jetson Nano или аналогичное устройство).
- Бюджет на обучение — 3 дня.
- Модель должна уложиться в 100 МБ памяти.
Для обучения собран датасет из 20 000 изображений (по 4 класса). Данные размечены боксами и классами. Внутренняя команда уже попробовала запустить YOLOv5s, но столкнулась с проблемами:
- Модель занимает 140 МБ.
- Производительность — менее 7 FPS на целевом устройстве.
- Некоторые объекты не обнаруживаются при плохом освещении или изменении ракурса.
Задача
На основе описанного сценария:
- Выявите не менее трёх скрытых проблем , которые могут объяснять низкую производительность и высокое потребление ресурсов.
- Предложите конкретные технические решения для каждой проблемы.
- Сформулируйте план оптимизации pipeline от обучения до развёртывания , чтобы уложиться в ограничения по скорости и памяти.
Решение
1. Проблема: Избыточная сложность модели
- Признак: YOLOv5s слишком тяжелая для целевого устройства, особенно если используется full precision и стандартная архитектура.
- Решение:
- Перейти на более легковесную архитектуру: YOLO-Nano, EfficientDet-Lite, MobileNetV3-based SSD.
- Использовать model pruning : удалить малозначимые фильтры/веса.
- Применить knowledge distillation , используя YOLO как teacher-модель.
2. Проблема: Высокая точность вычислений
- Признак: Модель использует float32, что замедляет вывод и увеличивает объём памяти.
- Решение:
- Провести post-training quantization до int8 с использованием TensorRT или OpenVINO.
- При возможности использовать quantization-aware training во время дообучения.
- Экспортировать модель в ONNX или TensorRT engine для аппаратной оптимизации.
3. Проблема: Неэффективный предиктивный pipeline
- Признак: Обработка каждого кадра в полном разрешении приводит к потере производительности.
- Решение:
- Использовать dynamic resolution input — снижать размер входного изображения при слабом сигнале или отсутствии объектов.
- Реализовать frame skipping + tracking : например, запускать детектор каждые N кадров и использовать DeepSORT для отслеживания.
- Применить edge-side preprocessing — уменьшать яркость/контраст, повышать четкость перед подачей в модель.
4. Проблема: Недостаточно адаптированный пайплайн под оборудование
- Признак: Модель не оптимизирована под конкретный чипсет (GPU/CPU).
- Решение:
- Использовать TensorRT , OpenVINO , TFLite или ONNX Runtime с hardware acceleration.
- Проверить, какие операции наиболее затратны через профайлеры (например, torch.utils.benchmark или perf в Linux).
- Использовать operator fusion и kernel autotuning для ускорения работы.
План оптимизации pipeline
Ролевая игра №1: "Проект по внедрению DL-решения в медицинское учреждение"
Цель игры
Научить участников применять навыки проектирования, разработки и внедрения решений на основе глубокого обучения в условиях реального бизнеса с ограничениями по данным, ресурсам и времени. Развить soft skills: коммуникация, работа в команде, презентация результатов, взаимодействие с заказчиком.
Формат
- Продолжительность: 3–4 академических часа.
- Форма: групповая ролевая игра (по 4–6 человек в команде).
- Участники делятся на роли внутри «проектной команды» и взаимодействуют с «заказчиком» (ведущий или группа экспертов).
Сеттинг
Вы — команда стартапа, выигравшая тендер на создание системы автоматизированного анализа МРТ головного мозга для диагностики опухолей. Заказчик — региональная клиническая больница. У вас есть 2 недели (виртуальных) до первого демо-презентационного этапа.
Клиника предоставила:
- Небольшой набор данных (всего 500 снимков: 300 без опухоли, 150 с доброкачественной опухолью, 50 с злокачественной),
- Ограниченное оборудование (GPU-сервер средней мощности),
- Строгие требования к точности модели по классу "злокачественная опухоль",
- Требование интеграции решения в существующую ИС больницы.
Роли в команде
Каждый участник получает одну из следующих ролей:
1. Проектный менеджер (Team Lead)
- Отвечает за планирование, распределение задач и контроль сроков.
- Взаимодействует с заказчиком и представляет команду на промежуточных встречах.
2. ML-инженер (Model Developer)
- Разрабатывает и обучает модель.
- Выбирает архитектуру, реализует pipeline, подбирает гиперпараметры.
3. Датасет-специалист (Data Engineer / Data Scientist)
- Обрабатывает данные: аугментация, балансировка, очистка.
- Проводит EDA и помогает формировать стратегию работы с несбалансированным датасетом.
4. Инженер по развёртыванию (MLOps Engineer)
- Отвечает за подготовку модели к production: оптимизация, export, интеграция API, тестирование производительности.
5. Эксперт по этике и безопасности (Ethics & Compliance Officer)
- Контролирует соблюдение этических норм, конфиденциальности данных, GDPR/аналогов.
- Готовит документацию по возможным рискам использования модели в медицине.
Этапы игры
Этап 1: Сбор требований и планирование (15 мин)
Команда встречается с заказчиком (ведущий), задаёт вопросы, уточняет цели, ограничения и ожидания. Делает выводы о сложности задачи и формулирует технический план.
Этап 2: Анализ данных и выбор подхода (30 мин)
Команда проводит анализ датасета, выявляет проблемы (дисбаланс, шум, малое количество данных). Принимает решение по архитектуре модели, способам регуляризации, методам аугментации.
Этап 3: Реализация и обучение модели (45 мин)
Команда реализует пайплайн: предобработка, обучение, валидация. Проблемы могут быть связаны с переобучением, медленным обучением, ошибками в коде, несовместимостью библиотек.
Этап 4: Интеграция и оптимизация (30 мин)
Модель готовится к демонстрации: экспорт, инференс, ускорение, адаптация под оборудование.
Этап 5: Презентация заказчику и обсуждение (30 мин)
Команда представляет решение: показывает метрики, рассказывает о подходах, отвечает на вопросы. Возможны непредвиденные вопросы по этике, интерпретируемости, масштабируемости.
Обучающие эффекты
- Опыт работы в условиях ограниченных данных и ресурсов.
- Практика применения методов регуляризации, transfer learning, quantization, pruning.
- Развитие soft skills: распределение ролей, управление проектом, взаимодействие с заказчиком.
- Осознание этической ответственности при работе с медицинскими данными и моделями.
Возможные проблемы и вызовы во время игры
- Данные оказались некачественными (разметка нечеткая, дубликаты, шум).
- Модель не помещается в память GPU.
- Неожиданно меняются требования заказчика на середине игры.
- Член команды уходит в off-line (симуляция реальной ситуации).
- Заказчик требует объяснить, почему модель приняла конкретное решение (интерпретируемость).
Результаты
После завершения игры участники:
- Получают обратную связь от "заказчика".
- Проходят самооценку и оценку коллег по навыкам.
- Получают рекомендации по улучшению своих подходов к разработке DL-систем.
Ролевая игра №2: "Создание персонализированной рекомендательной системы для онлайн-кинотеатра"
Цель игры
Научить участников проектировать и реализовывать масштабируемую рекомендательную систему на основе глубокого обучения, учитывая ограничения по данным, вычислительным ресурсам и бизнес-требованиям. Развить навыки работы с неявными и явными метаданными, а также взаимодействия с заказчиком в условиях быстро меняющейся среды.
Формат
- Продолжительность: 3–4 академических часа.
- Форма: групповая ролевая игра (по 4–6 человек в команде).
- Участники делятся на роли внутри «проектной команды» и взаимодействуют с «заказчиком» (ведущий или группа экспертов).
Сеттинг
Вы — команда ML-стартапа, которая получила заказ от онлайн-кинотеатра с 500 000 активных пользователей. Заказчик хочет внедрить новую систему рекомендаций, основанную на просмотренных пользователями фильмов, их оценках, времени просмотра, жанровых предпочтениях и контентных характеристиках фильмов (описания, актёры, режиссёры).
Текущая система работает на базе простой коллаборативной фильтрации, но:
- Не учитывает контентные признаки,
- Слабо справляется с cold-start пользователями и фильмами,
- Имеет низкий CTR (click-through rate) на рекомендуемые фильмы.
Заказчик хочет:
- Повысить вовлечённость и время просмотра,
- Улучшить удовлетворённость пользователей,
- Обеспечить объяснимость рекомендаций.
Роли в команде
Каждый участник получает одну из следующих ролей:
1. Проектный менеджер (Team Lead)
- Отвечает за планирование, распределение задач и контроль сроков.
- Взаимодействует с заказчиком и представляет команду на промежуточных встречах.
2. ML-инженер (Model Developer)
- Разрабатывает и обучает модель (например, Wide & Deep, Two-Tower, BERT-based).
- Выбирает loss-функцию, оптимизатор, стратегию ранжирования.
3. Датасет-специалист (Data Engineer / Data Scientist)
- Подготавливает данные: обработка категориальных признаков, создание эмбеддингов, обогащение данных.
- Реализует feature engineering и решает проблемы с missing data.
4. Инженер по развёртыванию (MLOps Engineer)
- Готовит модель к production: batch/online inference, интеграция с API, A/B тестирование.
- Настройка CI/CD pipeline для модели.
5. Эксперт по интерпретируемости (Explainability & UX Specialist)
- Разрабатывает способы объяснения рекомендаций пользователю (например, “Показано, потому что вы смотрели ‘Интерстеллар’”).
- Готовит предложения по UX-дизайну рекомендательного блока.
Этапы игры
Этап 1: Сбор требований и уточнение KPI (15 мин)
Команда встречается с заказчиком, задаёт вопросы о текущей ситуации, проблемах и ожиданиях. Определяет ключевые метрики: CTR, watch time, retention rate, NDCG, MRR.
Этап 2: Анализ данных и выбор подхода (30 мин)
Команда анализирует предоставленный датасет (синтетический или частично реальный). Выявляет проблемы: sparse user-item матрица, cold-start, шум в рейтингах. Выбирает подходящую архитектуру модели.
Этап 3: Реализация и обучение модели (45 мин)
Команда разрабатывает пайплайн: подготовка данных, обучение модели, валидация. Возможны ошибки в коде, переобучение, нехватка памяти, проблемы с embedding lookup.
Этап 4: Интеграция и A/B тестирование (30 мин)
Модель экспортируется, готовится к инференсу, тестируется производительность. Команда демонстрирует прототип и готовит план A/B тестирования.
Этап 5: Презентация заказчику и обсуждение (30 мин)
Команда представляет решение: показывает метрики, рассказывает о подходах, предлагает идеи по UX, отвечает на вопросы. Заказчик может потребовать объяснений рекомендаций или указать на возможное появление bias.
Обучающие эффекты
- Опыт создания рекомендательных систем на основе DL.
- Навыки работы с гибридными моделями (content + collaborative).
- Практика применения современных архитектур: Two-Tower, Transformer, BERT для рекомендаций.
- Развитие soft skills: управление проектом, работа в команде, презентация решения.
- Осознание важности explainability и UX в рекомендательных системах.
Возможные проблемы и вызовы во время игры
- Данные содержат ошибки или шум.
- Модель плохо работает с холодными пользователями.
- Неожиданно изменяются требования заказчика.
- Член команды уходит в off-line (симуляция реальной ситуации).
- Заказчик не понимает технические детали и просит "упростить".
Результаты
После завершения игры участники:
- Получают обратную связь от "заказчика".
- Проходят самооценку и оценку коллег по навыкам.
- Получают рекомендации по улучшению своих подходов к созданию рекомендательных систем.
Ролевая игра №3: "Создание системы обнаружения аномалий в производственных процессах на основе данных с сенсоров"
Цель игры
Научить участников проектировать и реализовывать систему обнаружения аномалий (anomaly detection) в промышленной среде, основанную на методах глубокого обучения. Развить навыки работы с временными рядами, несбалансированными данными и ограниченной разметкой. Укрепить умение взаимодействовать с техническими специалистами и бизнес-заказчиками.
Формат
- Продолжительность: 3–4 академических часа.
- Форма: групповая ролевая игра (по 4–6 человек в команде).
- Участники делятся на роли внутри «проектной команды» и взаимодействуют с «заказчиком» (ведущий или группа экспертов).
Сеттинг
Вы — команда специалистов по машинному обучению, приглашённая на завод по производству автомобильных компонентов. Завод оснащён IoT-сенсорами, которые собирают данные о температуре, давлении, вибрации, энергопотреблении и других параметрах оборудования.
Заказчик хочет внедрить автоматизированную систему обнаружения аномалий:
- Для предотвращения поломок и простоев.
- Для повышения эффективности технического обслуживания (predictive maintenance).
- Для снижения затрат на ремонт и увеличения uptime.
Исходные данные:
- Временные ряды с 100+ сенсоров с частотой 1 измерение/секунду.
- Имеется минимальная разметка (лишь 50 записей с подтвержденными аномалиями за последние 2 года).
- Оборудование для инференса: локальный сервер с GPU NVIDIA T4.
Текущая система основана на пороговых правилах и статистике, но часто выдаёт ложные срабатывания и пропускает реальные проблемы.
Роли в команде
Каждый участник получает одну из следующих ролей:
1. Проектный менеджер (Team Lead)
- Отвечает за планирование, распределение задач и контроль сроков.
- Взаимодействует с заказчиком и представляет команду на промежуточных встречах.
2. ML-инженер (Model Developer)
- Разрабатывает модель: от выбора архитектуры (LSTM, Transformer, Autoencoder, Isolation Forest, Deep SVDD) до обучения и валидации.
- Оценивает качество модели через precision, recall, F1-score и AUC-ROC.
3. Датасет-специалист (Data Engineer / Data Scientist)
- Подготавливает данные: нормализация, фичеринг, создание слайсов временного ряда.
- Проводит EDA, борется с missing values и шумом, создаёт synthetic anomalies.
4. Инженер по развёртыванию (MLOps Engineer)
- Готовит модель к production: export, оптимизация, запуск inference pipeline.
- Настройка потоковой обработки данных (streaming) и интеграция с системой мониторинга.
5. Эксперт по доменной области (Domain Expert / Industry Liaison)
- Выступает связующим звеном между технической командой и заводскими инженерами.
- Помогает интерпретировать результаты модели и адаптировать их под операционные процессы.
Этапы игры
Этап 1: Сбор требований и уточнение KPI (15 мин)
Команда встречается с заказчиком (инженером по техобслуживанию и руководителем производства), задаёт вопросы о типах аварий, текущих проблемах и ожиданиях. Определяет ключевые метрики: precision, recall, false positive rate, latency.
Этап 2: Анализ данных и выбор подхода (30 мин)
Команда анализирует предоставленный набор данных. Выявляет проблемы: несбалансированность, шум, высокая размерность, отсутствие разметки. Выбирает подходящую стратегию: self-supervised learning, semi-supervised, unsupervised anomaly detection или weak supervision.
Этап 3: Реализация и обучение модели (45 мин)
Команда разрабатывает пайплайн: подготовка данных, обучение модели, валидация. Возможны ошибки в коде, переобучение, проблемы с обработкой временных рядов, нехватка памяти.
Этап 4: Интеграция и тестирование в production-like окружении (30 мин)
Модель экспортируется, тестируется производительность, проверяется совместимость с существующей системой. Команда демонстрирует прототип и готовит план поэтапного внедрения.
Этап 5: Презентация заказчику и обсуждение (30 мин)
Команда представляет решение: показывает метрики, рассказывает о подходах, предлагает идеи по интеграции и UX для инженеров. Заказчик может потребовать объяснений, дополнительной документации или указать на возможное влияние модели на текущие процессы.
Обучающие эффекты
- Опыт создания систем обнаружения аномалий на основе DL.
- Навыки работы с временными рядами и high-dimensional data.
- Практика применения современных методов: autoencoders, transformers, deep one-class classification.
- Развитие soft skills: управление проектом, работа в команде, презентация решения.
- Умение работать с малым количеством размеченных данных и слабо формализованными требованиями.
Возможные проблемы и вызовы во время игры
- Данные содержат много шума и выбросов.
- Модель плохо работает на новых типах аномалий.
- Неожиданно изменяются условия: например, добавляется новый тип оборудования.
- Член команды уходит в off-line (симуляция реальной ситуации).
- Заказчик не доверяет модели и хочет “ручную проверку”.
Результаты
После завершения игры участники:
- Получают обратную связь от "заказчика".
- Проходят самооценку и оценку коллег по навыкам.
- Получают рекомендации по улучшению своих подходов к разработке систем обнаружения аномалий.
Ролевая игра №4: "Разработка голосового помощника для малоресурсного языка"
Цель игры
Научить участников проектировать и разрабатывать решения на основе глубокого обучения в условиях ограниченных данных, особенно когда речь идёт о малоресурсном языке. Развить навыки работы с speech-to-text (ASR), text-to-speech (TTS), intent recognition и transfer learning. Укрепить понимание этических аспектов и ограничений при работе с языками, не представленными в основных датасетах.
Формат
- Продолжительность: 3–4 академических часа.
- Форма: групповая ролевая игра (по 4–6 человек в команде).
- Участники делятся на роли внутри «проектной команды» и взаимодействуют с «заказчиком» (ведущий или группа экспертов).
Сеттинг
Вы — команда ML-инженеров из международной некоммерческой организации, которая получила грант на цифровизацию образования в отдалённых регионах. Ваша задача — создать голосового помощника, который поможет школьникам в сельской местности учить математику и естественные науки на родном языке — малоресурсном языке , у которого:
- Нет крупных датасетов речи,
- Ограниченное количество письменных материалов,
- Мало доступных предобученных моделей.
Ваш помощник должен:
- Распознавать устные вопросы на этом языке (ASR),
- Понимать интент вопроса (intent recognition),
- Генерировать ответ (QA / NLI),
- Читать ответ вслух (TTS).
Ограничения:
- Объём обучающих данных: всего около 5 часов записанной речи, 20 тысяч текстовых примеров.
- Оборудование: обучение на одном GPU, инференс — на мобильном устройстве без интернета.
- Требуется мультимодальная система, работающая в реальном времени.
Роли в команде
Каждый участник получает одну из следующих ролей:
1. Проектный менеджер (Team Lead)
- Отвечает за планирование, распределение задач и контроль сроков.
- Взаимодействует с заказчиком и представляет команду на промежуточных встречах.
2. ML-инженер (Model Developer – ASR/TTS/NLU)
- Выбирает подходящие модели: Wav2Vec 2, Whisper, FastSpeech, Tacotron, mBART и т.д.
- Реализует fine-tuning под малоресурсный язык.
- Объединяет компоненты в конвейер.
3. Датасет-специалист (Data Engineer / Linguist)
- Подготавливает данные: очистка, нормализация, аугментация.
- Занимается сбором дополнительных текстов и параллельных корпусов.
- Создаёт synthetic data и помогает в разметке.
4. Инженер по развёртыванию (MLOps Engineer)
- Экспортирует модель в формат для edge-устройств (ONNX, TFLite).
- Ускоряет вывод через quantization, pruning, distillation.
- Интегрирует ASR → Intent Recognition → TTS в единую систему.
5. Эксперт по этике и локализации (Ethics & Localization Specialist)
- Проверяет, чтобы система уважала культурные особенности и язык.
- Следит за сохранением языкового наследия.
- Готовит рекомендации по использованию ИИ в образовании и борьбе с цифровым неравенством.
Этапы игры
Этап 1: Сбор требований и уточнение KPI (15 мин)
Команда встречается с заказчиком (представителем школы и местным преподавателем). Задаёт вопросы о типичных запросах, уровне владения технологиями, доступности оборудования. Определяет ключевые метрики: accuracy ASR, intent recognition F1-score, latency, размер модели.
Этап 2: Анализ данных и выбор подхода (30 мин)
Команда анализирует предоставленные данные. Выявляет проблемы: мало данных, шум, слабое покрытие тем. Выбирает стратегию: transfer learning с multilingual модели, self-supervised pretraining, data augmentation.
Этап 3: Реализация и обучение модели (45 мин)
Команда создаёт пайплайн: подготовка данных, обучение/дообучение модели, валидация. Возможны ошибки в коде, переобучение, проблемы с совместимостью фреймворков.
Этап 4: Интеграция и оптимизация для edge-устройства (30 мин)
Модель экспортируется, тестируется производительность, проверяется совместимость с мобильным устройством. Команда демонстрирует прототип и готовит план внедрения.
Этап 5: Презентация заказчику и обсуждение (30 мин)
Команда представляет решение: показывает метрики, рассказывает о подходах, предлагает идеи по UX/UI, отвечает на вопросы. Заказчик может потребовать объяснений, дополнительной документации или указать на возможное влияние модели на уровень образования.
Обучающие эффекты
- Опыт создания решений для малоресурсных языков.
- Навыки применения transfer learning, zero-shot learning и self-supervised подходов.
- Практика использования современных архитектур: Wav2Vec 2, Whisper, BERT, mBART.
- Развитие soft skills: управление проектом, работа в команде, презентация решения.
- Осознание важности языковой справедливости и этики в AI.
Возможные проблемы и вызовы во время игры
- Данные содержат шум, диалекты и неточную транскрипцию.
- Модель плохо работает с новыми темами или выражениями.
- Неожиданно меняются требования: например, нужно добавить поддержку ещё одного языка.
- Член команды уходит в off-line (симуляция реальной ситуации).
- Заказчик не доверяет технологии и хочет “ручного подтверждения”.
Результаты
После завершения игры участники:
- Получают обратную связь от "заказчика".
- Проходят самооценку и оценку коллег по навыкам.
- Получают рекомендации по улучшению своих подходов к разработке голосовых систем.
Интеллект-карта №1: "Общий путь обучения специалиста по глубокому обучению"
Центральный узел:
Специалист по глубокому обучению
Основные ветки:
-
Математическая база
- Линейная алгебра
- Математический анализ
- Вероятность и статистика
- Оптимизация и численные методы
-
Программирование и инструменты
- Python
- PyTorch / TensorFlow
- Jupyter, Colab, DVC
- Git, Docker, CI/CD
-
Архитектуры моделей
- DNN, CNN, RNN, LSTM
- Attention, Transformers
- GAN, VAE, Diffusion Models
- Reinforcement Learning
-
Работа с данными
- Предобработка и нормализация
- Аугментация
- Feature engineering
- Работа с несбалансированными данными
-
Обучение и регуляризация
- Backpropagation
- Оптимизаторы
- BatchNorm, Dropout, L2/L1
- Early Stopping, Cross-validation
-
Развёртывание и MLOps
- Export модели (ONNX, TorchScript)
- Инференс и оптимизация
- Развертывание (Flask, FastAPI, Kubernetes)
- Мониторинг и A/B тестирование
-
Этика и ответственность
- Bias и fairness
- Объяснимость (XAI)
- Приватность и безопасность
- Этическое использование ИИ
Интеллект-карта №2: "Технологии и подходы в глубоком обучении"
Центральный узел:
Технологии и подходы в DL
Основные ветки:
-
Supervised Learning
- Image Classification
- Object Detection
- Sequence Modeling
- Speech Recognition
-
Unsupervised Learning
- Clustering
- Dimensionality Reduction
- Anomaly Detection
-
Self-Supervised & Semi-Supervised
- Contrastive Learning
- Masked Language Modeling
- Pseudo-labeling
-
Reinforcement Learning
- Q-Learning
- Policy Gradients
- Deep RL
- Multi-Agent Systems
-
Generative Modeling
- GANs
- VAEs
- Diffusion Models
- Flow-based Models
-
Transfer Learning
- Pretrained Models
- Domain Adaptation
- Few-Shot Learning
-
Edge AI & Optimization
- Quantization
- Pruning
- Knowledge Distillation
- Model Compression
Интеллект-карта №3: "Жизненный цикл проекта по глубокому обучению"
Центральный узел:
Жизненный цикл DL-проекта
Основные этапы:
-
Определение задачи
- Цели и KPI
- Бизнес-требования
- Формулировка ML-проблемы
-
Подготовка данных
- Сбор и очистка
- Разметка
- Хранение и версионирование
-
Предобработка и EDA
- Визуализация
- Анализ корреляций
- Feature Engineering
-
Выбор модели
- Архитектура
- Метрики
- Фреймворк
-
Обучение и валидация
- Train/Val/Test split
- Hyperparameter tuning
- Debugging и logging
-
Оценка и интерпретация
- Точность и надёжность
- Explainability
- Анализ ошибок
-
Развёртывание
- Export и inference
- Интеграция
- Мониторинг и логирование
-
Поддержка и обновление
- Data drift
- Retraining pipeline
- Feedback loop
1. "Deep Learning" — Иан Гудфеллоу, Яoshua Bengio, Аарон Курвилл (2016)
- Тип: Учебник / Хрестоматия
- Описание: Фундаментальный учебник по теории и практике глубокого обучения. Охватывает основные архитектуры, математику, алгоритмы, применение.
- Полезен для: Изучения базовых и продвинутых концепций, формирования теоретической базы.
2. "Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow" — Aurélien Géron (2019)
- Тип: Практическое пособие
- Описание: Практико-ориентированный учебник с примерами кода на Python. Позволяет быстро начать реализацию моделей с использованием современных фреймворков.
- Полезен для: Начала работы с TensorFlow и Keras, отработки навыков практической реализации моделей.
3. "Dive into Deep Learning" — Aston Zhang и др. (d2l.ai)
- Тип: Онлайн-учебник + интерактивное пособие
- Описание: Бесплатный ресурс с живыми ноутбуками Jupyter, реализованными на PyTorch, MXNet и TensorFlow. Содержит теорию, примеры и задачи.
- Полезен для: Самостоятельной работы, лабораторных и домашних заданий.
4. "Neural Networks and Deep Learning" — Michael Nielsen (2015)
- Тип: Учебное пособие
- Описание: Простой, но глубокий вводный курс по нейронным сетям. Представлен в виде книги с интерактивными демонстрациями.
- Полезен для: Визуального понимания принципов работы сетей, особенно при подготовке к теоретическим модулям курса.
5. "Practical Deep Learning for Coders" — Rachel Thomas et al. (fast.ai)
- Тип: Методическое пособие + курс
- Описание: Серия практических курсов и материалов, ориентированных на быстрое погружение в реальную разработку. Основной упор на практику и проекты.
- Полезен для: Развития инженерного мышления, работы с данными, развёртывания моделей.
-
Глубокое обучение: от теории к production-системам
Освойте современные методы проектирования, обучения и развёртывания моделей глубокого обучения с акцентом на промышленное применение и масштабируемость. -
Продвинутые архитектуры нейронных сетей
Изучите сложные архитектуры: Transformer, GAN, VAE, Attention-based модели и их реализацию в реальных задачах компьютерного зрения, обработки речи и NLP. -
Оптимизация моделей DL для edge-устройств
Научитесь оптимизировать и адаптировать модели под устройства с ограниченными ресурсами: mobile, IoT, embedded системы. -
Обучение без разметки: self-supervised и few-shot learning
Узнайте, как эффективно обучать модели в условиях малых данных с помощью современных подходов: contrastive learning, masked modeling и метаобучения. -
Разработка генеративных моделей: GAN, VAE, Diffusion Models
Погрузитесь в мир генеративного ИИ: создание изображений, текста и звука с использованием передовых архитектур и пайплайнов. -
Объяснимость и этика моделей глубокого обучения
Исследуйте вопросы интерпретируемости, справедливости и ответственного применения ИИ в реальном мире. -
MLOps для глубокого обучения: от разработки до production
Научитесь строить надёжные ML-пайплайны, управлять версиями данных и моделей, интегрировать модели в API и микросервисы. -
Работа с несбалансированными и зашумлёнными данными
Освойте методы работы с дефектными, редкими или предвзятыми данными — ключевые навыки реальной практики. -
Трансферное обучение и адаптация моделей
Изучите продвинутые техники transfer learning, domain adaptation и zero-shot learning для быстрого старта в новых задачах. -
Рекуррентные и трансформерные модели в обработке последовательностей
Работа с временными рядами, текстом и речью: LSTM, GRU, Transformer, BERT и их производные. Применение в машинном переводе, генерации текста и анализе сигналов. -
Компьютерное зрение: продвинутые методы и архитектуры
Изучите современные подходы к классификации, детекции, сегментации и генерации изображений с использованием CNN, Vision Transformers и multimodal систем. -
Обучение с подкреплением в задачах искусственного интеллекта
Практическое освоение RL: Q-learning, policy gradients, deep reinforcement learning и их применение в игровых средах, робототехнике и автоматизации. -
Оптимизация и ускорение вывода моделей
Изучите методы quantization, pruning, knowledge distillation и export в форматах ONNX, TensorRT, TFLite для повышения производительности. -
Надёжность и устойчивость моделей глубокого обучения
Анализ уязвимостей, защита от adversarial атак, мониторинг дрейфа данных и качества модели в production. -
Масштабируемое обучение: распределённые вычисления и большие батчи
Работа с многопроцессорными и многоузловыми системами, использование DataParallel и DistributedDataParallel, оптимизация коммуникаций. -
Автоматизация разработки моделей: AutoML и NAS
Используйте алгоритмы поиска архитектур, hyperparameter tuning и автоматической генерации решений для повышения эффективности разработки. -
Глубокое обучение в медицинской и биологической аналитике
Применение DL в задачах диагностики, анализа изображений, прогнозирования заболеваний и обработки биомедицинских данных. -
Обработка естественного языка: от BERT до LLM
Рассмотрите современные архитектуры NLP: transformers, large language models, fine-tuning, prompt engineering, retrieval-augmented generation. -
Обучение на потоковых данных и online inference
Работа с динамическими данными, реализация streaming pipeline, переподготовка моделей в реальном времени. -
Глубокие модели в задачах безопасности и контроля
Разработка решений для обнаружения аномалий, анализа угроз, защиты от фишинга и генерации безопасных данных. -
Мультимодальное обучение: объединение текста, изображения и звука
Создание и обучение моделей, работающих с несколькими типами данных: CLIP, Flamingo, multimodal transformers. -
Работа с графами и структурированными данными
Изучите Graph Neural Networks, GCN, GAT и их применение в социальных сетях, химии, знаниевых графах и финансовых системах. -
Эффективная работа с большими моделями: scaling, training и inference
Изучение методов работы с крупными моделями: ZeRO, model parallelism, offloading, sharding и использование HuggingFace Transformers. -
Федеративное обучение и защита конфиденциальности
Работа с данными в условиях ограничений по GDPR и другим нормам: federated learning, differential privacy, secure aggregation. -
Проектирование и внедрение рекомендательных систем на основе DL
Создание гибридных рекомендательных систем с использованием two-tower моделей, attention, embedding similarity и A/B тестирования.
Нет элементов для просмотра