Копейкин у Гоголя ждёт помощи от начальства, а Петербург соблазняет его витринами. Арбуз такой огромный, что рассказчик сравнивает его с дилижансом. На одной стороне — семга и арбуз, на другой — очередное «завтра». Разницу между ожиданием и тем, что получилось, герой чувствует отлично.

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

Фраза «не угадала» вмещает и лишнее яблоко, и грузовик, который зря пригнали к единственной яблоне. Для обучения модели нужно более подробное сообщение: насколько разошлись прогноз и известный вес. Его и получим из наших записей.

Что измеряет функция потерь

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

Именно это делает функция потерь: задаёт правило, по которому прогнозы сравнивают с известными значениями. Английское название — loss function, а получившееся число часто называют просто loss.

Сами по себе три и пять килограммов ещё ничего не говорят об ошибке. Нужны прогнозы, которые мы с ними сравним. В нашем примере вариант A ожидал два и семь килограммов, вариант B — три и шесть.

Известные сборы 3 и 5 кг; прогноз A — 2 и 7 кг, прогноз B — 3 и 6 кг. Схема исходных данных. В обоих вариантах проверяются одни и те же два сбора.

Теперь найдём разницу как «прогноз минус фактический вес». У A получится −1 в первый день и +2 во второй. У B — 0 и +1.

Минус показывает недооценку, плюс — переоценку. Это полезные сведения о направлении, но для размера ошибки важны ещё и расстояния до правильных значений.

Почему плюсы и минусы могут спрятать промах

Если сложить остатки A как обычные числа, выйдет −1+2=1. Между тем один промах был на килограмм, другой — на два. Число один уже не похоже на полный рассказ о двух попытках.

Ещё яснее это видно на отдельной паре ошибок −1 и +1. Сумма равна нулю, хотя оба прогноза ошиблись. На весах оба промаха остались, а на бумаге килограммы устроили взаимную амнистию. Первый недобор простил второй перебор.

Поэтому для нашего счёта функция потерь должна учитывать величину отклонения без взаимного погашения знаков. Покажем два простых способа: взять модуль или возвести разницу в квадрат. Принцип и формулы разобраны в уроке Google о loss.

Модуль — это расстояние без знака: от −1 остаётся 1, от +2 — 2. Квадрат тоже убирает знак, но одновременно меняет вклад большой ошибки: один в квадрате равен одному, два в квадрате — четырём.

Первый счёт: средний промах в килограммах

Сначала возьмём расстояния без знака и найдём их среднее. Для A они равны 1 и 2. Складываем их и делим на число сборов:

MAE(A) = (1 + 2) / 2 = 1,5 кг.

Такую величину называют средней абсолютной ошибкой, сокращённо MAE. Фраза «в среднем промах на полтора килограмма» уже понятна человеку с корзиной.

Для B расстояния — 0 и 1. Первое значение совпало с действительным весом, второе оказалось на килограмм больше:

MAE(B) = (0 + 1) / 2 = 0,5 кг.

На этих двух примерах B точнее по выбранному правилу. Мы сравнили одинаковые сборы в одинаковых единицах. Такая функция потерь позволяет сохранить оба промаха, даже если их знаки разные.

На бумаге это три строки: известный вес, прогноз, расстояние между ними. Затем среднее — сумма двух расстояний, поделённая на два сбора. Так любой итог легко проверить, начиная с конкретной корзины.

Второй счёт: большая ошибка получает больший вес

Теперь для каждого отклонения найдём квадрат. У A ошибки −1 и +2 превращаются в 1 и 4. Затем снова усредняем:

MSE(A) = (1 + 4) / 2 = 2,5 кг².

Это средняя квадратичная ошибка, сокращённо MSE. У этой функции потерь другой способ учитывать отклонения: двойной по размеру промах вносит в сумму квадратов вчетверо больше.

Для B получаем квадраты 0 и 1:

MSE(B) = (0 + 1) / 2 = 0,5 кг².

Функция потерь на примере A: модули 1 и 2 дают MAE 1,5 кг, квадраты 1 и 4 дают MSE 2,5 кг². Два правила для одних остатков. У средней квадратичной ошибки единицы тоже возводятся в квадрат.

Не превращайте 2,5 кг² в сообщение «яблок оказалось на два с половиной килограмма меньше». Это результат вычисления квадратов, у него другая единица. Для разговора о среднем размере промаха MAE в килограммах читается непосредственно.

Равные числа 0,5 у B тоже не означают, что два способа стали одним. В блокноте нужно сохранить оба названия и обе единицы: MAE 0,5 кг, MSE 0,5 кг². Иначе через неделю в блокноте останутся две одинаковые половинки. Яблоки к тому времени съедят, а единицы придётся разыскивать.

Сверим весь расчёт в одной таблице

Что считаем Вариант A Вариант B
Прогнозы, кг 2; 7 3; 6
Известные значения, кг 3; 5 3; 5
Остатки «прогноз минус факт», кг −1; +2 0; +1
Модули остатков, кг 1; 2 0; 1
Квадраты остатков, кг² 1; 4 0; 1
MAE, кг 1,5 0,5
MSE, кг² 2,5 0,5

Эта таблица — готовая опора для разговора с ИИ. Если хочется пройти расчёт с объяснением, откройте DeepSeek и вставьте такой запрос:

Помоги мне разобраться, зачем при обучении модели нужна функция потерь. Есть два известных значения: 3 и 5 кг. Прогноз A: 2 и 7 кг, прогноз B: 3 и 6 кг. Сначала попроси меня посчитать остатки «прогноз минус факт» и дождись ответа. Потом по одному шагу проверь MAE и MSE, не теряя единицы кг и кг². Если ошибусь со знаком или делением на два, покажи конкретное место. После расчёта объясни разницу между числом ошибки и изменением параметров модели.

Можно остаться в ChatGPT или Claude, если вы уже ими пользуетесь. Два ряда чисел и понятная просьба здесь полезнее большого задания «расскажи всё машинное обучение».

Попробуйте пройти первую строку сами и только потом показать её помощнику. Если A предсказал 2 кг при фактических 3, откуда взялся −1? Если перейти к квадрату, что произойдёт со знаком? По таким маленьким ответам видно, на каком действии понадобилось объяснение.

Как число участвует в обучении

Когда модель обучается, она делает прогнозы, их сравнивают с известными ответами, а функция потерь выдаёт число ошибки. Дальше отдельный способ обновления меняет внутренние параметры модели.

Представьте маленькое табло с числом ошибки. Оно показывает, как сработала нынешняя настройка. Для следующей попытки ещё требуется способ решить, какие параметры и в какую сторону двигать. На табло видно 2,5. Было бы удобно повернуть ручку «угадывать лучше», но у модели есть конкретные параметры и отдельное правило их изменения.

Один из таких способов — градиентный спуск. Он использует изменение функции при изменении параметров и делает шаги в сторону уменьшения ошибки. Последовательность показана в уроке Google о градиентном спуске.

Получить прогноз, сравнить с известным значением, посчитать ошибку, изменить параметры и повторить. Схема обучения. Проверка на новых примерах стоит отдельно от расчёта на текущем наборе.

Таким образом, функция потерь и правило обновления выполняют разные части работы. Одна оценивает получившееся, другое помогает изменить модель. После изменения снова делают прогноз и считают ошибку выбранным способом. Снижение числа имеет смысл читать вместе с этим правилом: что именно сравнивали и на каких известных примерах. Сменить сам способ подсчёта посреди сравнения — значит сменить вопрос.

Если интересно, что представляет собой изменяемый вес, можно перейти к объяснению весов нейросети на маленьком примере. Там рассматривается само вычисление выхода; здесь мы разобрали, как оценить его расхождение с известным ответом.

Почему правило выбирают под задачу

Одна функция потерь может сильнее выделять большие промахи, другая — давать более прямое представление о среднем расстоянии. Этот выбор влияет на то, какие отклонения будут особенно важны при обучении.

В нашем счёте MSE делает промах на два килограмма заметнее по отношению к промаху на один. Для прогноза может быть существенно, насколько больно обходится редкий крупный промах по сравнению с несколькими мелкими. MAE сохраняет удобный разговор о среднем расстоянии в килограммах.

Сами формулы среднего модуля и среднего квадрата можно также сверить в документации PyTorch: L1Loss и MSELoss. Для нашего ручного опыта устанавливать библиотеку не нужно.

Здесь важно сравнивать варианты одним и тем же способом на одном наборе примеров. MAE одного варианта и MSE другого отвечают на разные вопросы, поэтому просто выбрать меньшее из этих двух чисел не получится.

Наша функция потерь посчитана на двух известных сборах. Следующий сбор принесёт новый фактический вес. Сравните с ним заранее полученный прогноз и снова посчитайте ошибку. Тогда появится отдельная запись о новом примере. Два первых сбора остаются тем набором, на котором мы научились считать.

Несколько вопросов о числе ошибки

MAE и MSE всегда дадут одинаковый выбор?

В нашем примере B лучше по обоим правилам. На других наборах распределение промахов может различаться: один вариант делает много небольших ошибок, другой — редко, но сильно промахивается. Квадрат и модуль учтут эту разницу по-своему. Выбирая функцию потерь, одновременно выбирают, чему уделить больше внимания.

Почему квадрат иногда меньше самой ошибки?

Для чисел между нулём и единицей квадрат численно меньше: например, 0,5 × 0,5 = 0,25. Значение имеет соотношение вкладов и выбранная единица. У нас ошибки 1 и 2 кг дали квадраты 1 и 4 кг², поэтому большой промах выделился сильнее.

Можно ли по низкому loss доверять любому ответу чата?

Число относится к конкретному способу оценки, данным и задаче обучения. Наш расчёт вообще посвящён двум числовым прогнозам яблок. Для конкретного ответа чата нужно оценивать содержание ответа и его основания. Функция потерь из этого примера не сообщает, верно ли чат пересказал книгу.

Что оставить у себя после упражнения?

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

Корзины остаются, туман уходит

Теперь у нас есть два понятных способа измерить промах. Для A получились MAE 1,5 кг и MSE 2,5 кг², для B — по 0,5 в соответствующих единицах. За каждым числом видна короткая цепочка действий.

В «Первопроходцах» можно постепенно разбирать подобные вопросы с ИИ, пробовать приёмы на своих задачах и задавать вопросы. Раз в две недели проходят эфиры, проектные работы лично проверяет Никита. Условия участия ведут к продолжению практики.

Гоголевский арбуз размером с дилижанс остаётся в витрине. Наши яблоки уже можно отправлять в пирог: расхождения записаны, два способа счёта понятны. И у фразы «модель стала ошибаться меньше» появился точный вопрос: как это посчитали?