Программа хэндбука по машинному обучению

ЧерновикМатериалы дорабатываются и будут дополняться.

Автор: Алексей Чернуха

Для школьников 10–11 классов. Введение и 30 основных тем: 10 в первой главе и по 5 в остальных. Для начала нужны основы Python и школьная математика.

Результаты обучения: постановка задачи, сравнение моделей, обучение небольшой нейросети, применение готовых моделей и объяснение устройства знакомых архитектур.

0. Введение

Jupyter или Colab, открытие и сохранение ноутбука, загрузка данных, выполнение ячеек, чтение сообщений об ошибках и перезапуск примера. Самопроверка по Python и математике.

Результат: подготовленная среда и готовность к первому эксперименту. Введение не входит в 30 основных тем.

1. Классическое машинное обучение

10 тем. Результат: самостоятельное решение небольшой табличной задачи и обоснованный выбор способа проверки модели.

Таблица 1 — Темы и практика главы «Классическое машинное обучение»
№ Тема и содержание Практика и проверяемый результат
1.1 От задачи к первому эксперименту. Какие задачи решает ML, что такое признаки и правильные ответы. Простое начальное предсказание, средняя ошибка и доля верных ответов. Проверка на новых данных. По таблице предсказать всем объектам одно число или класс. Сравнить среднее и медиану для числового ответа; объяснить, какую ошибку измеряем.
1.2 Ближайшие соседи и масштаб признаков. Предсказываем ответ по похожим примерам. Разберём, как искать ближайших соседей и почему метры и сантиметры могут изменить результат модели. По здоровью и магической силе персонажа предсказать его класс. Сравнить способы измерять расстояние, число соседей и результат до и после нормализации. Дополнительно: реализация KNN.
1.3 Линейная регрессия и обучение параметров. Учимся предсказывать число с помощью прямой и нескольких признаков. Будем понемногу менять коэффициенты модели, чтобы она ошибалась меньше. Подобрать коэффициенты прямой по шумным наблюдениям. Нарисовать предсказания и ошибки, проверить один шаг обучения и сравнить результат с постоянным ответом.
1.4 Решающие деревья. Как принимать решение с помощью цепочки простых вопросов. Построим небольшое дерево и посмотрим, почему слишком большое дерево может ошибаться на новых примерах. Нарисовать дерево для маленькой таблицы, затем сравнить библиотечные деревья разной глубины. Дополнительно: реализация решающего пня.
1.5 Кластеризация и K-means. Как найти группы похожих объектов, если правильные ответы заранее неизвестны. Научимся распределять точки по группам и двигать их центры. Вручную выполнить два шага группировки точек и сравнить разные начальные центры. Дополнительно: реализация K-means и Rand index.
1.6 Логистическая регрессия и вероятностный ответ. Как модель оценивает вероятность ответа: например, является ли письмо спамом. Посмотрим, как из вероятности получить решение и что меняется при выборе порога. Сравнить логистическую регрессию и дерево на одном разбиении. Показать, как порог меняет ошибки.
1.7 Признаки, переобучение и регуляризация. Какие сведения об объекте помогают предсказывать ответ. Разберём, почему модель иногда заучивает примеры, и попробуем упростить её, чтобы лучше работать с новыми данными. Добавить признак в знакомую модель, сравнить ошибки на старых и новых данных. Проверить, помогает ли ограничение сложности модели.
1.8 Честная оценка качества. Как понять, хорошо ли работает модель. Какие ошибки важнее для задачи, как выбирать настройки и зачем отделять обучение от итоговой проверки. Посчитать ошибки на небольшой таблице ответов. Проверить модель на нескольких разбиениях и сравнить результаты. Найти утечку, когда фотографии одного листа попали и в обучение, и в тест. Дополнительно: ROC-AUC.
1.9 Ансамбли и случайный лес. Почему несколько моделей вместе могут работать лучше одной. Объединим ответы разных деревьев и познакомимся со случайным лесом. Сравнить дерево и лес на одних разбиениях. Усреднить прогнозы. Дополнительно: stacking с out-of-fold прогнозами.
1.10 Градиентный бустинг и табличная задача целиком. Строим модели по очереди: каждая следующая помогает исправить ошибки предыдущих. Применим бустинг к небольшой таблице и сравним его с уже знакомыми методами. Проследить один шаг бустинга вручную и собрать библиотечное решение. Сравнить с линейной моделью и лесом, зафиксировать настройки и выполнить финальную проверку.

2. Основы глубокого обучения

5 тем. Результат: понимание прямого прохода и шага обучения нейросети, основных способов обработки изображений и текста.

Таблица 2 — Темы и практика главы «Основы глубокого обучения»
№ Тема и содержание Практика и проверяемый результат
2.1 От линейной модели к нейросети. Из чего состоит нейросеть: нейроны, связи и слои. На маленьком примере проследим путь от входных чисел до ответа и поймём, зачем сети несколько слоёв. Выполнить прямой проход маленькой сети вручную и собрать MLP для нелинейной задачи. Проверить формы входа и выхода.
2.2 Первое обучение нейросети. Обучим небольшую сеть распознавать цифры. Проследим, как она делает предсказание, измеряет ошибку и меняет веса, чтобы постепенно отвечать точнее. Обучить MLP на небольшом наборе цифр. Различить backward() и обновление весов, показать уменьшение ошибки и независимую оценку.
2.3 Свёртки и устройство CNN. Как сеть замечает края, линии и другие детали изображения. Вручную проведём маленький фильтр по картинке и разберём, как из таких фильтров собирается сеть. Посчитать маленькую свёртку вручную, проследить формы слоёв и сравнить число параметров CNN и MLP.
2.4 Эмбеддинги и представление текста. Как представить слова в виде наборов чисел. Посмотрим, почему слова с похожим окружением получают похожие представления, и попробуем найти слова-соседи. Построить соседей слов по векторам и показать, как контекст меняет представление. Крошечный опыт word2vec иллюстрирует механизм; для осмысленных соседей нужны подготовленные представления.
2.5 Внимание и трансформер. Как сеть учитывает связи между словами и выбирает важные части текста. На маленьком примере разберём внимание и увидим, как трансформер продолжает текст. Посчитать взвешенную сумму для двух слов и показать, почему при продолжении текста нельзя подсматривать следующие слова. Несколько голов внимания — дополнительное чтение.

3. Нейросети на практике

5 тем. Результат: умение загрузить готовую модель, подготовить свои данные, запустить инференс — получение ответа — и проверить результат. Используем готовые веса без дообучения.

Таблица 3 — Темы и практика главы «Нейросети на практике»
№ Тема и содержание Практика и проверяемый результат
3.1 Распознаём изображения готовой моделью. Загрузим обученный классификатор, подготовим фотографию и прочитаем несколько самых вероятных ответов. Посмотрим, какие классы модель умеет различать и на каких снимках ошибается. Запустить модель на своих фотографиях. Проверить влияние обрезки и освещения, разобрать несколько ошибок. Сохранить название модели и способ подготовки изображений.
3.2 Находим объекты на изображении. Запустим готовые модели для поиска объектов и выделения их областей. Научимся читать рамки, классы, оценки уверенности и маски. Найти объекты на фотографии и выделить их маски. Изменить порог уверенности, сравнить пропуски и лишние обнаружения.
3.3 Работаем с текстом готовой моделью. Попробуем готовый классификатор и модель для получения эмбеддингов текста. Проверим, какие языки и виды текстов они поддерживают. Определить тональность коротких русских текстов и найти близкие по смыслу фразы. Проверить отрицание и неоднозначные примеры; отдельно исследовать работу с белорусским текстом.
3.4 Генерируем текст языковой моделью. Загрузим небольшую готовую модель и получим продолжение текста. Посмотрим, как запрос, длина ответа и настройки генерации меняют результат. Сравнить ответы на несколько запросов при одинаковых весах. Проверить факты в ответах, найти выдуманные сведения и повторить запуск с сохранёнными настройками.
3.5 Ищем изображения по описанию. Используем CLIP для поиска картинки по тексту и выбора класса из своих описаний. Посмотрим, как формулировка влияет на результат. Собрать небольшой поиск по своей коллекции изображений. Сравнить несколько описаний, разобрать ошибки и оформить мини-проект с воспроизводимым запуском.

4. Как учатся нейросети

5 тем. Результат: умение объяснить устройство моделей из главы 3 и задачи, на которых они обучались. Разбираем архитектуры на схемах и небольших опытах.

Таблица 4 — Темы и практика главы «Как учатся нейросети»
№ Тема и содержание Практика и проверяемый результат
4.1 Как CNN и ResNet распознают изображения. Проследим путь от картинки через карты признаков к классу. Разберём остаточную связь в ResNet и узнаем, как готовые признаки используют при переносе обучения. Посмотреть карты признаков модели из 3.1 и нарисовать её основные блоки. Обучить только небольшой классификатор поверх готовых признаков; объяснить, какие веса менялись.
4.2 Как сеть предсказывает рамки и маски. Разберём, откуда у детектора берутся координаты объектов. На примере U-Net посмотрим, как сеть уменьшает изображение, собирает признаки и восстанавливает карту классов по пикселям. Нарисовать пути данных в детекторе и U-Net, отметить их выходы и нужную разметку. На маленьком примере сопоставить рамку и маску с правильным ответом.
4.3 Как текстовый энкодер понимает контекст. Разберём токенизацию, внимание и блоки трансформера на примере BERT. Посмотрим, как восстановление скрытых слов помогает получить представления для разных текстовых задач. Проследить формы данных от токенов до эмбеддинга и класса. Сравнить представление слова в двух фразах и запустить восстановление пропущенного слова.
4.4 Как языковая модель продолжает текст. Разберём трансформер-декодер, запрет подсматривать будущие токены и обучение предсказанию следующего токена. Свяжем эти шаги с генерацией из 3.4. На короткой фразе подготовить входы и правильные следующие токены. Проследить генерацию по одному токену и объяснить, чем запуск готовой модели отличается от изменения её весов.
4.5 Как CLIP связывает изображения и текст. Разберём два энкодера и общее пространство эмбеддингов. Посмотрим, как обучение на парах «картинка — описание» сближает подходящие пары и отделяет неподходящие. Построить таблицу сходства для нескольких картинок и подписей, отметить правильные пары. Объяснить поиск из 3.5 и проверить влияние неверных подписей на маленьком учебном примере.

5. Математика ИИ

5 тем для углублённого изучения. Геометрия данных, матричные разложения и математические основы обучения. Каждая тема связывает вычисления с поведением знакомых моделей.

Таблица 5 — Темы и практика главы «Математика ИИ»
№ Тема и содержание Практика и проверяемый результат
5.1 SVD и низкоранговое приближение. Разложение матрицы на простые составляющие, сингулярные векторы и числа. Выбор числа составляющих и ошибка приближения. Сжатие изображений и скрытые факторы в рекомендациях. Разложить небольшую матрицу и восстановить её. Сжать изображение, оставляя разное число составляющих, и сравнить ошибку восстановления с объёмом хранения. Дополнительно: факторизация таблицы пользовательских оценок с пропусками.
5.2 PCA через SVD: геометрия данных. Центрирование таблицы признаков и применение SVD из 5.1. Правые сингулярные векторы задают главные направления, а сингулярные числа связаны с дисперсией вдоль них. Проекция, объяснённая дисперсия и потеря информации. Сжать двумерные данные до одной координаты через SVD, затем применить PCA к эмбеддингам. Сравнить объяснённую дисперсию и ошибку восстановления с библиотечным PCA. Объяснить, почему красивая проекция не доказывает качество классификации.
5.3 Геометрия больших размерностей. Проклятие размерности, влияние лишних признаков на расстояния, длина и направление векторов. Косинусная близость эмбеддингов. Сравнить расстояния между случайными точками в 2, 20 и 200 измерениях. Добавить шумовые признаки в KNN и измерить изменение качества. Сравнить поиск по расстоянию и по углу между векторами.
5.4 Матричное дифференцирование и backpropagation. Градиент по вектору и матрице, якобиан, цепное правило для нескольких слоёв. Формы тензоров в формулах обучения. Вывести матричный градиент ошибки линейной регрессии, затем градиенты небольшого полносвязного слоя. Проверить формы и сравнить результат с autograd.
5.5 Геометрия оптимизации. Линии уровня, выпуклость, локальные и глобальные минимумы. Кривизна, матрица Гессе и обусловленность: почему по оврагу спускаться труднее, чем по круглой чаше. Сравнить траектории градиентного спуска для двух квадратичных функций. Найти допустимый размер шага и показать, как масштабирование координат меняет скорость сходимости.

Необходимые знания

Таблица 6 — Необходимые знания для изучения учебника
Когда Что нужно знать
Перед 1.1 Функции Python, списки и словари, чтение CSV; среднее и доли.
Перед 1.2–1.3 Массивы, индексация, векторы, расстояния и чтение графика прямой.
По ходу главы 1 Таблицы, графики, fit/predict, конвейеры; логарифм и базовая вероятность к 1.6.
Перед главой 2 Тензоры и формы, autograd, Dataset/DataLoader, режимы модели; композиция функций и смысл производной.
Перед главой 3 Формы тензоров, загрузка данных и режим оценки; чтение предсказаний и простых метрик.
Перед главой 4 Прямой проход и шаг обучения, свёртки, эмбеддинги и внимание из главы 2; опыт запуска готовых моделей из главы 3.
Перед 5.1 Матричное произведение, ортогональность, проекции и ранг.
Перед 5.2 SVD и приближение меньшего ранга из 5.1; среднее и дисперсия.
Перед 5.3 Расстояния, скалярное произведение, норма вектора, среднее и разброс значений.
Перед 5.4–5.5 Матричное произведение, производная, градиент и цепное правило.