• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Машинное обучение и основы Deep Learning

2025/2026
Учебный год
RUS
Обучение ведется на русском языке
6
Кредиты
Статус:
Курс обязательный
Когда читается:
2-й курс, 1, 2 модуль

Преподаватель

Программа дисциплины

Аннотация

Дисциплина посвящена изучению основных методов машинного обучения. Изучаемые темы можно разбить на три блока. Первый – работа с данными и предварительный анализ данных. Изучаются библиотеки языка Python для работы с табличными данными и для визуализации, обсуждаются методы предобработки данных, подготовки категориальных и текстовых данных. Второй блок – обучение с учителем. Изучаются линейные модели, решающие деревья, композиции моделей (случайный лес, градиентный бустинг и его имплементации), приложения в рекомендательных системах. Третий блок – обучение без учителя. Изучаются методы кластеризации, визуализации, понижения размерности. Все темы сопровождаются практикой на реальных данных. По итогам курса слушатель сможет сформулировать задачу машинного обучения, выбрать метрику качества, обучить модель, подобрать гиперпараметры, провести валидацию.
Цель освоения дисциплины

Цель освоения дисциплины

  • Освоить работу с инструментами разработки и анализа данных (Google Colab, локальная среда Python, виртуальные окружения, Anaconda) и уметь эффективно настраивать проектное окружение.
  • Научиться работать с базами данных в Python: подключаться к PostgreSQL, писать и выполнять SQL-запросы, использовать ORM, обрабатывать результаты в Python.
  • Освоить основы программирования на Python, включая объектно-ориентированное программирование, работу с библиотеками, структурирование кода и разработку бэкенд-сервисов на FastAPI.
  • Получить навыки подготовки и анализа данных: очистка, обработка выбросов и пропусков, создание признаков, выбор и трансформация признаков, визуализация данных.
  • Изучить ключевые алгоритмы машинного обучения и глубокого обучения, уметь обучать, тестировать и оптимизировать модели, а также применять метрики для оценки их качества.
  • Разработать и внедрить комплексные прикладные проекты — от рекомендательных систем до сервисов с использованием глубоких нейросетевых архитектур, интегрируя модели в рабочие веб-приложения с соблюдением требований по производительности и качеству.
Планируемые результаты обучения

Планируемые результаты обучения

  • Познакомимся с интерфейсом Google Colab и узнаем, как устроена эта среда.
  • Научимся создавать и запускать ячейки с кодом и текстом.
  • Разберёмся, в чём плюсы и минусы работы в Google Colab.
  • Освоим работу с панелью инструментов и другими элементами интерфейса.
  • Попробуем подключать библиотеки и использовать встроенные ИИ-инструменты.
  • Научимся загружать файлы в Colab и работать с данными из Google Диска.
  • Поймем, в чем отличие БД и СУБД и какие возможности предоставляют базы данных
  • Узнаем, как устроены базы данных, что такое сущности и отношения между ними
  • Научимся писать основные SQL-запросы и объединять таблицы через JOIN
  • Научимся подключаться к PostgreSQL через python и оперировать данными из базы данных
  • Познакомимся с понятием «класс» и философией ООП.
  • Рассмотрим основные принципы построения классов
  • Научимся создавать классы и объекты, добавлять методы
  • Научимся реализовывать наследование
  • Научимся использовать магические методы
  • Научимся импортировать встроенные и ставить сторонние библиотеки
  • Научимся устанавливать конкретные версии сторонних пакетов с помощью pip и разберем ситуации, когда необходимо фиксировать версии
  • Научимся изолировать друг от друга проекты, которые имеют разные и противоречащие зависимости
  • Познакомимся с теорией клиент-серверного взаимодействия и узнаем, какая информация передается в http-протоколе
  • Научимся отправлять запрос серверу и возвращать ответ от сервера
  • Разберемся что такое api, что такое фреймворк, REST api и fastapi
  • Научимся писать endpoint-ы с и принимать параметры для веб-сервиса на fastapi
  • Узнаем, какие существуют best practices для разработки веб-приложений
  • Познакомимся с концепцией ORM
  • Научимся работать с базой данных через SQLAlchemy
  • Поймёт, как работает веб-сервер на низком уровне: от открытия сокета до отправки ответа клиенту.
  • Сможет вручную реализовать простой REST API без фреймворка, а затем переписать его с использованием FastAPI, сравнив подходы.
  • Разберётся в процессе обработки HTTP-запроса: разбор заголовков, парсинг тела, валидация данных и формирование ответа.
  • Освоит базовые конструкции FastAPI: создание объектов приложения, объявление маршрутов с декораторами, валидация и сериализация данных через Pydantic.
  • Поймёт преимущества и ограничения ручного подхода и фреймворка, сможет обосновать выбор подхода для разных задач.
  • Сможет запускать и тестировать веб-приложения на FastAPI, понимать, как работает автодокументация и встроенная валидация.
  • Научимся делать валидацию входных данных из базы данных
  • Научимся принимать входные параметры в виде json и валидировать их.
  • Освоит проектирование структуры данных в виде Python-классов, работу с Pydantic-моделями и интеграцию с PostgreSQL через параметризованные SQL-запросы.
  • Сможет реализовать функционал извлечения, валидации и преобразования данных для API с помощью FastAPI, обеспечивая корректность и читаемость кода.
  • Научится разворачивать и документировать веб-сервис с набором эндпойнтов, соответствующих требованиям проектного задания.
  • Получим опыт установки Python локально на свой компьютер
  • Разберёмся в терминологии машинного обучения и поймём, какие задачи помогают решать модели машинного обучения.
  • Научимся выявлять признаки, на которых будет построена модель машинного обучения
  • Узнаем, с помощью каких методов можно оценить способность модели строить предсказания
  • Научимся считать функцию потерь и функционал качества
  • Узнаем, что называют одномерной и многомерной моделями линейной регрессии
  • Поняли как выводить аналитическое решение для задачи линейной регрессии на примере MSE функционала
  • Научимся находить оптимальные коэффициенты и строить модель линейной регрессии
  • Разберем понятие градиентного спуска как оптимального способа оценки параметров для любого функционала и почти любой модели
  • Узнаем, какие существуют плюсы и минусы этого метода
  • Научимся реализовывать метод градиентного спуска, правильно подбирать параметры и визуализировать обучение для простой функции
  • Узнаем, что такое недообучение и переобучение модели
  • Поймем, почему может не быть модели с хорошим качеством всюду
  • Разберем, как оценивать обобщающую способность модели с помощью метода отложенной выборки
  • Научимся прогонять модель через метод кросс-валидации
  • Практическое задание на закрепление знаний.
  • Применить регуляризацию к модели линейной регрессии для решения проблемы мультиколлинеарности
  • Автоматизированная проверка.
  • Узнаем, зачем нужно отбирать признаки
  • Разберем способы отбора признаков для модели линейной регрессии, их плюсы и минусы
  • Научимся пользоваться четырьмя способами отбора признаков: EDA и построение графиков, Lasso-регуляризация, методы обёртки, методы фильтрации
  • Научимся выявлять выбросы в данных и чистить их
  • Попробуем несколько приемов для борьбы с пропущенными значениями
  • Рассмотрим дополнительные способы кодировки категориальных фичей и узнаем, как работать с продвинутыми счётчиками, которые не будут вести к переобучению модели
  • Познакомимся с методом трансформации текстов TF-IDF и посмотрим, как выделять базовые признаки из текста
  • Ещё раз посмотрим на реальном примере, как провести разведочный анализ данных, обработать вещественные и категориальные признаки, избавиться от выбросов
  • Поймем, почему нельзя использовать кросс-валидацию для данных с временной структурой и какую валидацию использовать вместо неё
  • Попробуем отмасштабировать данные и регуляризовать с помощью классов библиотеки sklearn Познакомимся с новым приёмом — сегментацией данных
  • Узнаем, что такое задача бинарной классификации.
  • Поймем, почему линейная регрессия плохо походит для её решения.
  • Узнаем, что такое гиперплоскость и как построить наилучшую разделяющую гиперплоскость для решения задачи бинарной классификации
  • Поймем как давать вероятностную оценку вместо точной принадлежности к классу
  • Научимся строить модель логистической регрессии.
  • Посмотрим, как построить матрицу ошибок с четырьмя типами прогнозов классификации
  • Научимся считать метрики бинарной классификации precision и recall.
  • Узнаем, как комбинировать метрики (F-мера), как выбирать threshold и влиять им на метрики
  • Научимся оценивать качество работы модели для бинарной классификации не для определенного порога уверенности, а для всех
  • Научимся строить ROC и PR кривые
  • Узнаем, что такое ROC-AUC и PR-AUC и научимся считать эти метрики. Поймем, как выбирать между ними в зависимости от условий конкретной задачи
  • Узнаем, что такое калибровка вероятностей и калибровочная кривая. Узнаем как работает калибровка Платта
  • Узнаем, как построить разделяющую гиперплоскость с помощью метода опорных векторов (SVM).
  • Узнаем, как построить разделяющую гиперплоскость для линейно неразделимого случая (обобщенный SVM)
  • Поймем, что даже с SVM можем продолжать оценивать вероятности
  • Научимся запускать SVM и сравним его качество с качеством модели на основе логистической регрессии.
  • Посмотрим, в чем особенность задачи многоклассовой классификации
  • Разберем принципы работы двух основных подходов к решению этой задачи: один против многих и все против всех.
  • Узнаем про их плюсы и минусы
  • Поймем как считаются метрики качества в двух подходах: "микро усреднение" и "макро усреднение" и когда следует выбирать каждый из них
  • Запустим несколько моделей «из коробки» и сравним их качество.
  • Поговорим о способах понижения признакового пространства (отбор признаков и извлечение признаков) и поймём, какая в этом ценность
  • Разберемся, как работает PCA и какие принципы построения главных компонент
  • Разберемся, как работает T-SNE
  • Поймём, как выбирать между ними
  • Научимся использовать метод главных компонент (PCA)
  • Научимся визуализировать сложные данные
  • Рассмотрим основную идею метода k ближайших соседей (kNN), сравним его с линейными моделями, обсудим его недостатки
  • научимся улучшать качество работы алгоритма с помощью расчёта расстояний и взвешивания «соседей»
  • Научимся обучать kNN регрессор с гауссовским ядром
  • Рассмотрим принцип, лежащий в основе алгоритма решающих деревьев, поймем, как строится модель для решения задачи регрессии
  • узнаем, какие критерии качества и информативности модели
  • понаблюдаем, как влияет изменение разных гиперпараметров.
  • Научимся оценивать качество моделей на основе решающих деревьев.
  • Поймем, почему деревья легко переобучить или недообучить.
  • Узнаем важные особенности этих алгоритмов
  • Научимся работать с их гиперпараметрами решающих деревьев
  • Познакомимся с ансамблями моделей
  • Рассмотрим основные методы ансамблирования: бэггинг и стэкинг.
  • Научимся строить модели с хорошей обобщающей способностью без необходимости вручную подгонять гиперпараметры и оценивать степень переобученности алгоритмов.
  • Познакомимся со случайными лесами, метамоделями, бутстрапом и методом случайных подпространств.
  • Обучим случайный лес и убедимся в том, что качество модели почти не меняется при изменении гиперпараметров базового дерева.
  • Познакомимся с ансамблевым методом — бустинг.
  • Узнаем, из чего на самом деле складывается ошибка алгоритмов,
  • Познакомимся с понятиями смещения и разброса
  • Разберем, как это влияет на выбор той или иной модели в продакшене.
  • Познакомимся с алгоритмами, которые помогают выявлять закономерности в данных, когда «правильные ответы» заранее неизвестны,
  • Разберем идею кластеризации
  • Научимся разделять объекты по некоторым критериям схожести с помощью алгоритмов k-means и DBSCAN.
  • Поймёт постановку задачи построения рекомендательной системы, принципы работы и роль метрик (в том числе hitrate@5) в оценке качества.
  • Научится извлекать и подготавливать данные для обучения модели рекомендаций: формировать признаки пользователя, контента и истории взаимодействий.
  • Сможет обучить и протестировать базовую модель рекомендаций, оценить её качество и интерпретировать результаты в контексте улучшения системы.
  • Освоит полный цикл построения рекомендательной системы: от извлечения данных и генерации признаков до обучения и оценки модели по целевым метрикам.
  • Сможет сохранять, загружать и использовать обученную модель в сервисе, обеспечивая стабильность и согласованность признаков между обучением и предсказанием.
  • Научится оптимизировать модель и сервис под заданные ограничения по времени отклика и ресурсам, отслеживая влияние изменений на целевую метрику hitrate@5.
  • Проведем разбор некоторых вопросов с реальных собеседований и вспомним теоретические детали по пройденным темам.
  • На занятии обсудим как общие вопросы, так и точечные моменты по линейным моделям!
  • Продолжаем обсуждать вопросы с реальных собеседований и вспоминаем теоретические детали по пройденным темам.
  • На занятии обсудим вопросы, связанные с решающими деревьями, метрическими подходами и ансамблями.
  • Освежим в памяти инструмент, с которым предстоит выполнять задания (Google Colab)
  • Узнаем про новый схожий инструмент — Kaggle и зарегистрируемся в нем
  • Познакомимся с задачами, которые решаются с помощью глубинного обучения и нейронных сетей.
  • Узнаем, в чем состоит основная идея глубинного обучения на примере задачи классификации изображений
  • Поймем, как устроена архитектура нейронной сети и как создаются полносвязные слои и функция активации
  • Научимся работать с тензорами с помощью библиотеки PyTorch
  • Узнаем, как обучаются нейроные сети.
  • Разберемся в чем заключается идея градиентного спуска и какие есть методы его оптимизации.
  • Научимся собирать нейросети с помощью PyTorch, создавать оптимизаторы и обучать нейросети.
  • Научимся оценивать качество нашей нейросети с помощью функции потерь
  • Узнаем, что такое операция свертки и как задать сверточный слой
  • Познакомимся со сверточными нейронными сетями и научимся обучать полносвязную нейронную сеть для решения задачи классификации изображений.
  • Научимся улучшать качество сверточных нейронных сетей и разберемся как бороться с переобучением
  • Посмотрим, как обучать популярные архитектуры сверточных нейронных сетей и научимся использовать обученные архитектуры для задачи классификации изображений.
  • Сравним различные модели между собой.
  • Научимся решать задачу семантической сегментации и детекции объектов на изображении
  • Узнаем, как можно делать векторные представления изображений и решать задачу идентификации человека по фото.
  • Разберемся, как работает автоэнкодер и обучим собственный.
  • Узнаем, как можно делать векторные представления слов и текста. Поймём как решаются задачи классификации текста.
  • Познакомимся с рекуррентными нейронными сетями и их модификациями.
  • Разберем, как устроена архитектура "трансформер" для решения seq-2-seq задач.
  • Освоит получение эмбеддингов текстов с помощью предобученных моделей (BERT, RoBERTa, DistilBERT) и работу с их векторными представлениями.
  • Сможет интегрировать признаки из нейронных сетей в существующую рекомендательную систему и дообучать модели с учётом новых данных.
  • Научится повышать качество рекомендаций до заданного уровня (≥0.57 hitrate) с учётом ограничений по производительности и ресурсам.
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Google Colab, обзор инструмента
  • Базы данных в Python: основы
  • Классы и ООП
  • Библиотеки и виртуальное окружение
  • Backend-разработка: что это такое. Фреймворк FastAPI для прототипирования backend-сервера
  • Проект блока Python
  • Полезные вещи в разработке
  • Установка Анаконды: необязательный урок
  • Бонусный урок. Базы данных в Python: ORM
  • Вебинар "Написание веб-сервера с нуля, сравнение с FastAPI"
  • Введение в МО: каким оно бывает и каковы основные компоненты
  • Оценка качества работы моделей
  • Линейная регрессия
  • Градиентный спуск
  • Обобщающая способность модели: метод отложенной выборки. Кросс-Валидация
  • Мультиколлинеарность, регуляризация и масштабирование признаков
  • Методы отбора признаков
  • Полезные приемы при работе с данными
  • Практика: Housing Market
  • Линейная классификация: оценка вероятности
  • Матрица ошибок и основные метрики классификации
  • ROC, PR-кривые. AUC-ROC, AUC-PR. Калибровка
  • Метод опорных векторов
  • Многоклассовая классификация: one vs rest, one vs one
  • Понижение размерности признакового пространства
  • Метод K ближайших соседей: обоснование нелинейности, гиперпараметры и подбор метрики близости объектов
  • Решающее дерево: постановка задачи регрессии/классификации и гиперпараметры модели
  • Решающее дерево: проблемы с обобщающей способностью и подбор гиперпараметров
  • Композиции алгоритмов. Случайный лес
  • Градиентный бустинг. Bias-variance trade-off
  • Кластеризация
  • Вебинар: подготовка к проекту блока МО
  • Рекомендательные системы. Проект блока МО
  • Машинное обучение: классические задачи и алгоритмы I
  • Машинное обучение: классические задачи и алгоритмы II
  • Инструменты для работы над заданиями
  • Введение. Полносвязные слои. Функции активации
  • Оптимизация нейронных сетей. Метод обратного распространения ошибки
  • Сверточные нейронные сети
  • Сверточные нейронные сети. Часть II
  • Популярные архитектуры сверточных нейронных сетей. Перенос знаний
  • Детекция объектов
  • Векторные представления изображений. Распознавание лиц
  • Векторные представления слов. Рекуррентные нейронные сети
  • LSTM. Трансформер. Механизм внимания
  • Трансформер. Часть II. Улица Сезам. Проект блока ДЛ
Элементы контроля

Элементы контроля

  • блокирующий Домашнее задание к разделам (урокам) 1-46. Квиз на закрепление основных понятий уроков.
    тестовых заданий: 1 урок – 6 заданий, 2 урок – 1 задание, 5 урок – 2 задания, 11 урок – 4 задания, 12 урок – 3 задания, 13 урок – 4 задания, 14 урок – 4 задания, 15 урок – 3 задания, 16 урок – 3 задания, 18 урок – 3 задания, 22 урок – 3 задания, 23 урок – 4 задания, 24 урок – 2 задания, 25 урок – 6 заданий, 26 урок – 3 задания, 27 урок – 3 задания, 28 урок – 3 задания, 29 урок – 3 задания, 30 урок – 4 задания, 31 урок – 3 задания, 34 урок – 11 заданий, 35 урок – 11 заданий, 37 урок – 4 задания, 38 урок – 7 заданий, 39 урок – 7 заданий, 40 урок – 4 задания, 41 урок – 5 заданий, 42 урок – 5 заданий, 43 урок – 5 заданий, 44 урок – 7 заданий, 45 урок – 8 заданий.
  • блокирующий Домашнее задание к р. (урокам) 3-40. Практические задания по МО и Основам Deep Learning.
    практических задач: 1 урок – 3 задания, 2 урок – 14 заданий, 3 урок – 5 заданий, 4 урок – 9 заданий, 5 урок – 9 заданий, 9 урок – 3 задания, 11 урок – 4 задания, 12 урок – 8 заданий, 13 урок – 2 задания, 14 урок – 8 заданий, 15 урок – 2 задания, 16 урок – 5 заданий, 17 урок – 6 заданий, 18 урок – 5 заданий, 20 урок – 6 заданий, 21 урок – 11 заданий, 22 урок – 4 задания, 23 урок – 3 задания, 24 урок – 6 заданий, 25 урок – 6 заданий, 26 урок – 5 заданий, 27 урок – 3 задания, 28 урок – 3 задания, 29 урок – 6 заданий, 30 урок – 5 заданий, 31 урок – 3 задания, 37 урок – 4 задания, 38 урок – 3 задания, 39 урок – 3 задания, 40 урок – 6 заданий, 41 урок – 2 задания, 42 урок – 2 задания, 43 урок – 1 задание, 44 урок – 1 задание, 45 урок – 3 задания.
  • блокирующий Сквозной проект к р. (урокам) 6, 33, 46. Финальный ск.пр. по 3 частям: Python, МО, Deep Learning.
    3 сквозных проекта: 6 урок – 1 проект, 33 урок – 1 проект, 46 урок – 1 проект.
Промежуточная аттестация

Промежуточная аттестация

  • 2025/2026 2nd module
    Итоговая оценка соответствует сумме баллов за выполненные задания на LMS karpov.courses, приведенные к 10-балльной шкале (см. таблицу). Для каждого задания на LMS-платформе karpov.courses определён дедлайн в 14 календарных дней, после наступления которого студенту начисляется 70% от итогового балла за задание.
Список литературы

Список литературы

Рекомендуемая основная литература

  • Машинное обучение. Портфолио реальных проектов. . - 978-5-4461-1978-3 - Григорьев Алексей - 2023 - Санкт-Петербург: Питер - https://ibooks.ru/bookshelf/390208 - 390208 - iBOOKS

Рекомендуемая дополнительная литература

  • PyTorch : освещая глубокое обучение, Стивенс, Э., 2022
  • Прикладной анализ текстовых данных на Python. Машинное обучение и создание приложений обработки естественного языка - 978-5-4461-1153-4 - Бенджамин Бенгфорт, Ребекка Билбро, Тони Охеда - 2021 - Санкт-Петербург: Питер - https://ibooks.ru/bookshelf/365298 - 365298 - iBOOKS

Авторы

  • Ахмедова Гюнай Интигам кызы