Перейти к содержимому
Ступень 22.1 Что такое машинное обучение

Задача, данные, модель, функция потерь

Из чего состоит любая задача машинного обучения — данные, модель, функция потерь и оптимизация, виды обучения, train/val/test — и где всё это живёт внутри LLM.

УРОКstage-2/2-1-ml-basics/01-what-is-ml.mdx1 ч 20 минУрок 1 из 2
После урока вы сможете
  • Разложить любую ML-задачу на четыре части — данные, модель, функцию потерь и алгоритм оптимизации
  • Отличать обучение с учителем, без учителя, самообучение и обучение с подкреплением и находить каждое в конвейере обучения LLM
  • Объяснить, зачем данные делят на train, validation и test и почему на тест смотрят один раз
  • Пересказать историю ИИ от перцептрона до DeepSeek-R1 и назвать, что менялось на каждом повороте

Откройте техотчёт (технический отчёт — статью, где компания описывает, как обучала модель) любой китайской модели — DeepSeek-V3, Qwen3, Kimi K2. Вы увидите слова «данные для обучения», «функция потерь», «валидационный loss», «обучение с подкреплением», «held-out» (отложенные данные, которых модель не видела при обучении). Это словарь машинное обучениемашинное обучениеEN machine learning (ML), и большая языковая модельбольшая языковая модель (БЯМ, LLM)EN large language model (LLM)В китайском «большая модель» («да мосин») — разговорное общее название для LLM и вообще foundation models. — просто очень большой частный случай ML. Без этого словаря статьи читаются как шифровка.

В уроке 0.0.1 вы видели ML «с высоты птичьего полёта». Теперь разберём его устройство по деталям. Вся математика, которая понадобится, уже была в ступени 1, и на каждое понятие будет ссылка на урок, где оно введено.

Хорошая новость: словарь небольшой. Любая задача — от прогноза цены квартиры до обучения DeepSeek-R1 — собирается из одних и тех же четырёх кирпичей. Разберём их, а потом увидим, что три этапа создания чат-модели соответствуют трём видам обучения, которые вы сегодня изучите.

В обычном программировании человек пишет правила: «если в письме есть слово “выигрыш” и ссылка — это спам». Такие правила быстро ломаются. Спамеры пишут «выuгрыш» латинской «u», а честные письма о лотерее попадают в спам.

Машинное обучение переворачивает схему. Мы не пишем правила, а показываем примеры с ответами: тысячи писем с пометками «спам» или «не спам». Алгоритм сам подбирает правило, которое лучше всего согласуется с примерами.

Классическое программированиеМашинное обучение
Входправила + данныеданные + ответы
Выходответыправила (обученная модель)
Кто пишет правилопрограммисталгоритм обучения

Классическое определение дал Том Митчелл (1997): программа учится на опыте E относительно задачи T и меры качества P, если её качество на T, измеренное P, растёт с опытом E. Для спам-фильтра T — сортировать письма, P — доля верных решений, E — размеченный архив писем.

Учебник «Погружение в глубокое обучение» (d2l-zh) начинает именно с этого списка. В любой задаче ML есть:

  1. Данные — примеры, на которых учимся.
  2. Модель — семейство функций fθf_\theta с настраиваемыми параметрамипараметрEN parameter θ\theta.
  3. Функция потерь (функция потерьфункция потерьEN loss function) — число, которое говорит, насколько модель ошибается.
  4. Алгоритм оптимизации — способ найти θ\theta, при которых потери минимальны.

Сначала обозначения. θ\theta («тета») — общее имя для всех настраиваемых чисел модели сразу: у прямой y=wx+by = wx + b это пара (w,b)(w, b), у LLM — миллиарды весов. fθ(x)f_\theta(x) — ответ модели с параметрами θ\theta на вход xx. Его обозначают y^\hat y («игрек с крышкой»), а правильный ответ — просто yy.

Формально: есть набор данных, датасетнабор данных, датасетEN dataset D={(xi,yi)}i=1nD = \{(x_i, y_i)\}_{i=1}^{n} — набор из nn пар «вход — правильный ответ», модель fθf_\theta и потери ℓ(y^,y)\ell(\hat y, y) («эль») — ошибка на одном примере. Обучение — это поиск

θ∗=arg⁡min⁡θ  1n∑i=1nℓ(fθ(xi), yi).\theta^* = \arg\min_\theta \; \frac{1}{n} \sum_{i=1}^{n} \ell\big(f_\theta(x_i),\, y_i\big).

Прочитаем по частям (урок 1.0.3). Для каждого кандидата θ\theta прогоняем через модель все nn примеров, считаем ошибку ℓ\ell на каждом и усредняем (1n∑\frac{1}{n}\sum — это просто среднее). arg⁡min⁡θ\arg\min_\theta устроен как arg⁡max⁡\arg\max из урока 1.0.3, только ищет минимум: «тот θ\theta, при котором это среднее минимально». Звёздочка в θ∗\theta^* означает «лучший».

Пример. Пусть ошибка на примере — квадрат разности (y^−y)2(\hat y - y)^2, а настоящие цены трёх квартир — 10, 10 и 12 млн ₽.

КандидатПредсказания y^\hat yКвадраты ошибокСреднее
θ1\theta_19, 11, 141, 1, 42
θ2\theta_210, 11, 120, 1, 00.33

У θ2\theta_2 среднее меньше, значит, он лучше. Обучение — это поиск такого кандидата, лучше которого нет.

Формула обучения выше называется минимизация эмпирического рискаминимизация эмпирического рискаEN empirical risk minimization (ERM)Подбор параметров, минимизирующих средний loss на обучающей выборке. В учебнике Ли Хана — «стратегия», одна из трёх составляющих метода. (ERM): средняя ошибка на имеющихся примерах — «эмпирический риск». Запомните её: дальше в курсе меняются только fθf_\theta (от прямой до трансформера) и ℓ\ell.

КирпичЦена квартирыЯзыковая модель (Qwen, DeepSeek)
Данныетысячи квартир: площадь, район → ценатриллионы токенов текста и кода (у DeepSeek-V3 — 14.8T)
Модельy^=w⋅x+b\hat y = w \cdot x + b, 2 параметратрансформер, миллиарды параметров
Потерисреднеквадратичная ошибкаcross-entropy следующего токена
Оптимизацияформула или градиентный спускAdamW (у Kimi K2 — MuonClip)

Каждый пример (объект) описывается набором признаковпризнакEN featureОдно измеримое свойство объекта, вход модели. «Feature engineering» — конструирование признаков. — вектором x∈Rdx \in \mathbb{R}^d, то есть списком из dd чисел (урок 1.1.1; запись ∈Rd\in \mathbb{R}^d — из урока 1.0.3). У квартиры, например, d=3d = 3: площадь, этаж, год постройки — x=(54,7,1998)x = (54, 7, 1998). То, что нужно предсказать, называется меткой или целевой переменнойметка, целевая переменная, таргетEN label / target yy: здесь это цена.

Вот четыре строки из знаменитого датасета про арбузы из китайского учебника — «Арбузной книги» Чжоу Чжихуа (подробнее — в блоке «Китайский угол» ниже). Задача: по внешнему виду понять, хороший ли арбуз.

№окраскахвостикзвук при стукеузорхороший?
1зелёнаяскрученныйгулкийчёткийда
2тёмнаяскрученныйглухойчёткийда
10зелёнаяпрямойзвонкийчёткийнет
11светлаяпрямойзвонкийразмытыйнет

Признаки бывают разными:

  • Числовые — площадь 54 м², возраст 31 год. Подаются в модель как есть (часто после нормализации, урок 2.2.1).
  • Категориальные — окраска «зелёная / тёмная / светлая». Модель умеет работать только с числами, а «зелёная» не число. Поэтому категории кодируют, например, через one-hot кодированиеone-hot кодирование (унитарный код)EN one-hot encodingВектор длины V из нулей с единицей в позиции номера токена. Все one-hot векторы попарно ортогональны. (урок 1.0.3): заводят по позиции на каждый вариант и ставят 1 на месте нужного. «Зелёная» → (1,0,0)(1, 0, 0), «тёмная» → (0,1,0)(0, 1, 0), «светлая» → (0,0,1)(0, 0, 1). Просто пронумеровать цвета 1, 2, 3 хуже: модель решит, что «светлая» втрое больше «зелёной».
  • Сырые сигналы — пиксели, звук, текст. Цветная картинка 200×200 — это 200⋅200⋅3=120 000200 \cdot 200 \cdot 3 = 120\,000 чисел. Текст сначала режут на токены и превращают в векторы (ступень 4).

Глубокое обучение ценно тем, что умеет само извлекать полезные признаки из сырых сигналов. В классическом ML признаки придумывает человек: это называется feature engineering — «инженерия признаков» (китайский термин значит то же самое).

Модель — не одна функция, а семейство функций, из которого обучение выбирает лучшую. «Все прямые y=wx+by = wx + b» — семейство с двумя параметрами. «Все трансформеры с такой-то архитектурой» — семейство с сотнями миллиардов параметров. Выбирая семейство, вы заранее решаете, какие закономерности модель вообще способна выразить. Прямая никогда не опишет синусоиду, сколько её ни учи. В «Арбузной книге» это называют пространством гипотез.

Потери переводят «насколько модель неправа» в одно число. Для чисел обычно берут квадрат ошибки (y^−y)2(\hat y - y)^2, усреднённый по примерам — среднеквадратичная ошибкасреднеквадратичная ошибка (MSE)EN mean squared error (MSE)Корень из MSE — RMSE (root mean squared error), измеряется в тех же единицах, что и целевая переменная.. Для классов естественная мера — доля ошибок, но у неё есть беда: она ступенчатая. Немного сдвинули параметры — доля ошибок не изменилась, производная равна нулю, градиентному спуску не за что зацепиться. Поэтому оптимизируют гладкую замену — перекрёстная энтропияперекрёстная энтропияEN cross-entropy из урока 1.3, а долю ошибок считают как метрику. Почему метрика и loss — разные вещи, подробно разберём в уроке 2.2.3.

Когда данные, модель и потери заданы, остаётся найти минимум. Иногда хватает формулы (линейная регрессия, урок 2.2.1). Иногда можно просто перебрать варианты — так мы сделаем в практике ниже. В нейросетях почти всегда работает градиентный спускградиентный спускEN gradient descent и его потомки из урока 1.4.1: много раз немного сдвигаем параметры в ту сторону, где потери убывают.

В обучении с учителемобучение с учителемEN supervised learningДля каждого примера известен правильный ответ (метка). SFT в LLM — тоже обучение с учителем. у каждого примера есть правильный ответ. Два главных типа задач:

  • регрессиярегрессияEN regressionЗадача предсказания числа (цены, температуры, времени). — предсказать число: цену квартиры, спрос на завтра, время доставки.
  • классификацияклассификацияEN classificationЗадача выбора одного класса из конечного набора. Предсказание следующего токена — классификация на V классов. — выбрать класс из конечного набора: спам или нет, какая цифра на картинке, на каком языке написан текст.

Классификация бывает бинарной (два класса), многоклассовой (один из многих) и многометочной (несколько меток сразу: у статьи могут быть теги «LLM» и «Китай» одновременно).

Предсказание следующего токена — это многоклассовая классификация, просто классов очень много. У Qwen3 словарь около 152 тысяч токенов. Каждый шаг генерации — выбор одного из 152 тысяч классов.

В обучении без учителяобучение без учителяEN unsupervised learningМеток нет; ищем структуру в данных — кластеры, главные направления, плотность. меток нет. Мы ищем структуру: группы похожих объектов (кластеризация), главные направления изменчивости (снижение размерности), необычные точки (поиск аномалий). Например, сгруппировать клиентов банка по поведению, не зная заранее, какие группы существуют. Этому посвящён урок 2.3.2.

Для LLM особенно важен промежуточный случай — самообучениесамообучение, самоконтролируемое обучениеEN self-supervised learningМетки берутся из самих данных (например, следующий токен текста). Так идёт предобучение LLM. (self-supervised). Меток от людей нет, но они «бесплатно» извлекаются из самих данных. Берём предложение «Карп прыгает через врата», закрываем последнее слово — и получаем пример с правильным ответом «врата». Каждый токен текста — метка для предыдущих.

Так устроено предобучение, претрейнпредобучение, претрейнEN pretraining. Никто не размечал 14.8 триллиона токенов DeepSeek-V3 вручную. Модель училась предсказывать продолжение реального текста. Именно поэтому предобучение масштабируется: в интернете гигантский запас «размеченных» данных.

В обучение с подкреплениемобучение с подкреплениемEN reinforcement learning (RL) нет правильных ответов для каждого шага. Агент (программа, которая принимает решения) действует в среде (игра, симулятор, диалог с человеком) и получает награду: +1 за победу в партии, 0 за поражение. Учиться трудно: награда приходит с опозданием, и непонятно, какой из сотни ходов был решающим. Зато так можно обучаться там, где «правильный ответ» человек не знает, но может проверить результат.

Самый громкий пример последних лет — DeepSeek-R1-Zero. Базовую модель учили решать задачи с проверяемым ответом и давали награду по простым правилам: ответ верный и формат соблюдён. Никаких образцов рассуждений не было, а длинные рассуждения с самопроверкой появились сами. Подробно — на ступени 6.

Вид обученияЧто есть в данныхСигнал для обученияПример в LLM
С учителемпары (x, y) от людейошибка относительно ySFT: «вопрос → эталонный ответ»
Без учителятолько xвнутренняя структуракластеризация эмбеддингов, дедупликация корпуса
Самообучениетолько x, метки извлекаем из xошибка предсказания скрытой частипредобучение: следующий токен
С подкреплениемсреда и награданаграда за последовательность действийRLHF, GRPO, R1-Zero

Расшифровка правой колонки. SFTобучение с учителем на инструкциях (SFT)EN supervised fine-tuning (SFT) (supervised fine-tuning) — дообучение готовой модели на парах «запрос → образцовый ответ», написанных людьми. RLHFобучение с подкреплением на основе отзывов людей (RLHF)EN reinforcement learning from human feedback (RLHF) — обучение с подкреплением, где награду выставляет модель, обученная на оценках людей. GRPOGRPO (групповая относительная оптимизация политики)EN Group Relative Policy Optimization (GRPO)PPO без критика: на промпт генерируется группа из G ответов, преимущество — (r − среднее) / std по группе. DeepSeekMath, 2024. — алгоритм RL от DeepSeek. Эмбеддинг — вектор чисел, которым модель представляет текст (урок 1.1.1), а дедупликация — удаление повторов из корпуса (так называют весь набор обучающих текстов). Все эти слова ещё вернутся со своими уроками.

flowchart LR
A["Сырой текст<br/>триллионы токенов"] --> B["Предобучение<br/>самообучение"]
B --> C["Базовая модель"]
C --> D["SFT<br/>обучение с учителем"]
D --> E["RLHF / GRPO<br/>обучение с подкреплением"]
E --> F["Чат-модель<br/>DeepSeek, Qwen, Kimi"]
Три вида обучения в одном конвейере создания чат-модели

Модель с достаточным числом параметров может просто запомнить обучающие примеры. Таблица «вопрос → ответ» имеет нулевую ошибку на этих примерах и бесполезна на любых других. Поэтому качество всегда проверяют на данных, которых модель не видела. Вот аналогия со школой:

  • Обучающая выборкаобучающая выборка (train)EN training set (train) — задачник с ответами. По нему подбирают параметры.
  • Валидационная выборкавалидационная выборка (val, dev)EN validation setНужна для выбора гиперпараметров и ранней остановки. Тест при этом не трогаем. (val, dev) — пробник. По нему выбирают гиперпараметрыгиперпараметрEN hyperparameterНастройка, которую не учат градиентом, а выбирают по валидации — степень полинома, λ, learning rate, число слоёв. (настройки, которые не подбираются обучением: степень полинома, скорость обучения, число слоёв) и архитектуру, решают, когда остановить обучение.
  • Тестовая выборкатестовая выборка (test)EN test setСмотрим на неё один раз — в самом конце, чтобы честно оценить качество. (test) — настоящий экзамен. На неё смотрят один раз, в конце.

Практические правила:

  • Перемешивайте данные перед разбиением. Если файл отсортирован по дате или классу, первые 80% будут непохожи на последние 20%.
  • Временные ряды делите по времени. Временной ряд — данные, упорядоченные по времени: продажи по дням, курс валюты по часам. Учимся на прошлом, проверяем на будущем, иначе модель «подглядывает» в будущее.
  • Группы держите целиком. Если у одного пациента 10 снимков, все 10 должны оказаться в одной выборке.
  • Пропорции. На тысячах примеров обычно делят 60/20/20 или 80/10/10. На миллионах хватает 1% на валидацию и тест — 10 000 примеров уже дают точную оценку.
  • Всегда стройте базовое решение, бейзлайнбазовое решение, бейзлайнEN baselineПростейшая модель (среднее, самый частый класс), с которой сравнивают всё остальное.: предсказывайте среднее или самый частый класс. Модель, которая не обыгрывает бейзлайн, ничему не научилась.

У LLM та же логика. Валидационный loss считают на отложенном тексте, которого не было в обучении. Роль теста играют бенчмарки, и у них есть своя беда: их задачи могут случайно попасть в обучающий корпус. Это одна из форм утечки данных — следующий урок.

Краткая история ИИ: от перцептрона до DeepSeek

Заголовок раздела «Краткая история ИИ: от перцептрона до DeepSeek»

В уроке 0.0 вы видели карту местности. Теперь посмотрим на историю глазами инженера: каждый поворот менял один из четырёх кирпичей.

ГодСобытиеЧто изменилось
1943Маккалок и Питтс — математическая модель нейронаидея модели
1956Дартмутский семинар закрепляет термин «искусственный интеллект»рождение области
1958перцептронперцептронEN perceptronМодель Фрэнка Розенблатта (1958) — линейный классификатор с пороговой активацией, предок нейросетей. Фрэнка Розенблатта — первая обучаемая нейросетьмодель + алгоритм обучения
1965–1968Алексей Ивахненко и Валентин Лапа (Киев): многослойные модели, которые строят и обучают слой за слоем, — метод группового учёта аргументов (МГУА)ранние глубокие модели
1969Минский и Пейперт «Перцептроны»: однослойная сеть не решает XOR (задачу «ответ 1, если ровно один из двух входов равен 1»). Интерес к нейросетям падает, в 1970-х наступает первая «зима ИИ»пределы модели
1980-еЭкспертные системы: правила пишут люди. Бум, потом вторая «зима»правила вместо обучения
1986Румельхарт, Хинтон, Уильямс популяризируют backprop — обратное распространение ошибки, быстрый способ посчитать градиенты всех весов сети по цепному правилу (урок 1.2.2, ступень 3)алгоритм для многослойных сетей
1995Метод опорных векторов (Кортес и Вапник) на теории Вапника — Червоненкисатеория обобщения
1997Deep Blue обыгрывает Каспарова; появляется LSTM — нейросеть для последовательностей (урок 3.4.3)шахматы взяты перебором, а не обучением
2009ImageNet (Фей-Фей Ли): миллионы размеченных картинокданные
2012AlexNet на двух GPU: ошибка top-5 около 15% против 26% у второго места (top-5: модель называет 5 вариантов, ошибка — если верного среди них нет)вычисления + модель
2015ResNet (Microsoft Research Asia, Пекин): сеть из 152 слоёвмодель
2016AlphaGo побеждает Ли Седоля 4:1обучение с подкреплением
2017Трансформер — «Attention Is All You Need»модель
2020GPT-3: 175 млрд параметров, самообучение на огромном корпусемасштаб
2022ChatGPT (30 ноября): SFT + RLHF поверх GPTдообучение под человека
2023В Китае «война ста моделей»экосистема
2024–2025DeepSeek-V3 (декабрь 2024) и R1 (январь 2025) с открытыми весами; R1 сразу вышла под лицензией MITэффективность + RL

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

Соберём все кирпичи вместе на NumPy: данные о квартирах, разбиение, бейзлайн, модель и оценку. Данные мы сгенерируем сами по правилу «цена = 0.15 · площадь + 2 млн ₽ + шум». Мы это правило знаем, а модель — нет: ей достанутся только пары «площадь → цена», и правило она должна восстановить.

Запускать код можно в Jupyter или сохранить в файл и выполнить python имя_файла.py в окружении курса (урок 0.1.2). Все функции NumPy отсюда — default_rng, uniform, normal, permutation, срезы — были в модуле 0.3. Новая только np.polyfit: готовая функция, которая подбирает прямую по точкам. Что именно она делает внутри, вы узнаете в уроке 2.2.1.

import numpy as np
rng = np.random.default_rng(0) # генератор случайных чисел с сидом 0 (урок 0.3.3)
# 1. Данные: площадь квартиры (м²) → цена (млн ₽)
n = 200
area = rng.uniform(25, 120, size=n) # признак x: 200 площадей от 25 до 120 м²
price = 0.15 * area + 2.0 + rng.normal(0, 1.5, size=n) # цель y: правило + шум (std = 1.5 млн ₽)
# 2. Разбиение train / val / test = 60 / 20 / 20 (перемешиваем!)
idx = rng.permutation(n) # номера 0..199 в случайном порядке
tr, va, te = idx[:120], idx[120:160], idx[160:] # первые 120 номеров — train, 40 — val, 40 — test
def mse(y, y_hat):
"""Среднеквадратичная ошибка: среднее от (правда − предсказание)²."""
return float(np.mean((y - y_hat) ** 2))
# 3. Бейзлайн: всегда предсказываем среднюю цену из train
baseline = price[tr].mean()
# 4. Модель y = w·x + b. «Обучение» = подбор w, b, минимизирующих MSE на train.
# np.polyfit(x, y, deg=1) находит лучшую прямую и возвращает её наклон w и сдвиг b.
w, b = np.polyfit(area[tr], price[tr], deg=1)
print(f"обучили: w = {w:.3f} млн ₽ за м², b = {b:.2f} млн ₽")
for name, part in [("train", tr), ("val", va), ("test", te)]: # оцениваем на каждой из трёх частей
print(f"{name:5s} бейзлайн MSE = {mse(price[part], baseline):6.2f} " # :6.2f — 6 символов, 2 знака
f"линейная MSE = {mse(price[part], w * area[part] + b):5.2f}")
print(f"прогноз для 60 м²: {w * 60 + b:.1f} млн ₽")

Ожидаемый вывод:

обучили: w = 0.149 млн ₽ за м², b = 2.14 млн ₽
train бейзлайн MSE = 20.81 линейная MSE = 2.06
val бейзлайн MSE = 15.18 линейная MSE = 2.82
test бейзлайн MSE = 22.25 линейная MSE = 2.88
прогноз для 60 м²: 11.0 млн ₽

Что здесь видно:

  • Модель почти точно нашла истинные параметры: w=0.149w = 0.149 вместо 0.15 и b=2.14b = 2.14 вместо 2.
  • MSE модели в 5–10 раз меньше, чем у бейзлайна. Значит, она действительно чему-то научилась.
  • На новых данных в среднем нельзя опуститься ниже ≈ 2.25: это дисперсия шума 1.521.5^2 (дисперсия — квадрат стандартного отклонения, урок 0.3.2). Шум не зависит от площади, его не предскажет никакая модель. Об этом пределе — в следующем уроке.
  • Ошибка на train (2.06) ниже, чем на val и test (2.8–2.9). Хочется сказать «модель подстроилась под train», но проверим: истинная прямая 0.15x+20.15x + 2 даёт на тех же трёх частях 2.06, 2.83 и 2.86 — почти то же самое. Значит, разрыв здесь почти целиком случайный: шум у 40 квартир val и test просто оказался крупнее среднего. Оценка ошибки по 40 примерам сама «гуляет» примерно на ±0.5. Вывод на будущее: маленькая валидация шумит, и в следующем уроке мы научимся с этим бороться (кросс-валидация).

Обучение не обязано быть градиентным спуском. Вот классификатор спелых арбузов с одним параметром — порогом частоты звука при постукивании (спелый звучит глуше). Обучение — честный перебор порогов на train.

import random
random.seed(42)
# Признак: частота звука при постукивании (Гц). Метка: 1 — спелый, 0 — нет.
# random.gauss(среднее, std) — случайное число из «колокола» (урок 1.3.1):
# спелые звучат в среднем на 160 Гц, неспелые — на 220 Гц.
ripe = [(random.gauss(160, 20), 1) for _ in range(100)] # 100 пар (частота, метка 1)
unripe = [(random.gauss(220, 25), 0) for _ in range(100)] # 100 пар (частота, метка 0)
data = ripe + unripe
random.shuffle(data) # перемешиваем, иначе train был бы почти из одних спелых
train, test = data[:150], data[150:] # 150 арбузов на обучение, 50 на проверку
def predict(x, t): # модель с одним параметром t: «спелый, если звук ниже t»
return 1 if x < t else 0
def error_rate(t, part): # функция потерь: доля ошибок (0-1 loss)
# predict(...) != y даёт True/False; sum считает True как 1, то есть число ошибок
return sum(predict(x, t) != y for x, y in part) / len(part)
# «Обучение» = перебор: ищем t, при котором ошибок на train меньше всего.
# min(..., key=...) — из урока 0.2.2: перебирает t = 100, 101, ..., 300
# и возвращает тот, у которого error_rate(t, train) наименьшая.
best_t = min(range(100, 301), key=lambda t: error_rate(t, train))
print(f"лучший порог t = {best_t} Гц")
print(f"ошибка на train: {error_rate(best_t, train):.1%}") # :.1% — в процентах с одним знаком
print(f"ошибка на test: {error_rate(best_t, test):.1%}")
лучший порог t = 185 Гц
ошибка на train: 5.3%
ошибка на test: 8.0%

Все четыре кирпича на месте: данные (150 арбузов), модель (порог tt), потери (доля ошибок), алгоритм (перебор 201 варианта). Перебор работает для одного параметра, но для миллиарда параметров нужен градиент. Поэтому в нейросетях и оптимизируют гладкую cross-entropy, а не ступенчатую долю ошибок.

Проверь себя6 вопросов
1 Бота учат играть в го. За победу он получает +1, за поражение 0, правильных ходов ему никто не показывает. Какой это вид обучения?
2 Какие из задач — классификация?Можно выбрать несколько ответов
3 Бейзлайн всегда предсказывает среднее по train, равное 4. Истинные значения в тесте: 2, 4, 6. Чему равна MSE бейзлайна? Округлите до двух знаков.
4 Вы обучили 50 вариантов модели и выбрали тот, у которого лучшая точность на тестовой выборке. Что не так?
5 Как называется вид обучения, при котором метки извлекаются из самих данных, как при предобучении LLM на следующем токене? (одно-два слова по-русски или по-английски)
6 Почему классификаторы обычно учат минимизировать cross-entropy, а не долю ошибок?
  • Любая задача ML — это данные, модель, функция потерь и оптимизация. Обучение — минимизация среднего loss на train (ERM).
  • С учителем (регрессия, классификация), без учителя, самообучение, с подкреплением. Конвейер LLM использует три из них: претрейн → SFT → RL.
  • Предсказание следующего токена — классификация на огромное число классов: у Qwen3 их ~152 тысячи.
  • Данные делят на train / validation / test; по тесту ничего не выбирают. Всегда сравнивайте модель с бейзлайном.
  • История ИИ — это рост данных и вычислений плюс модели, способные их использовать. Четыре кирпича не менялись с 1958 года.

Дальше: почему модель, идеально выучившая train, может провалиться на новых данных, — переобучение, компромисс смещения и разброса, регуляризация и утечки данных.