Loss Function
Функция потерь оценивает расхождение между предсказаниями модели и эталонными значениями, а при обучении это расхождение минимизируется. Здесь ты узнаешь о распространённых функциях потерь и о том, когда применять каждую.
Функция потерь измеряет расхождение между предсказаниями модели и эталонными метками в её обучающих данных, сводя ошибку к одному числу, которое должно быть как можно меньше. Обучение нейронной сети заключается в изменении весов модели, чтобы минимизировать это число. «Функция затрат» и «целевая функция» — распространённые синонимы, хотя в некоторых источниках «потерями» называют ошибку на одном примере, а «затратами» — среднее значение по батчу или набору данных.
Как функция потерь управляет обучением#
Для каждого батча данных обучение повторяет один и тот же цикл. Модель строит предсказания, функция потерь оценивает их относительно меток, а обратное распространение ошибки вычисляет градиент функции потерь по каждому весу. Затем оптимизатор, например стохастический градиентный спуск (SGD) или оптимизатор Adam, делает небольшой шаг для каждого веса против направления его градиента; размер шага задаёт скорость обучения. Поскольку этот процесс основан на градиентах, функция потерь должна быть дифференцируема почти всюду. Графики потерь на обучающей и валидационной выборках после каждой эпохи — стандартный способ отслеживать обучение: рост потерь на валидации при продолжающемся снижении потерь на обучении — классический признак переобучения.
Распространённые функции потерь#
Выбор функции потерь зависит от предсказаний модели; большинство стандартных вариантов доступно в таких фреймворках, как PyTorch:
- Среднеквадратичная ошибка (MSE): Среднее значение квадратов разностей между предсказанными и истинными значениями; применяется в регрессии. Возведение в квадрат делает крупные ошибки преобладающими, поэтому выбросы сильно влияют на результат.
- Средняя абсолютная ошибка (L1) и функция потерь Хьюбера: Функции потерь для регрессии, которые линейно растут при больших ошибках и поэтому меньше чувствительны к выбросам. Функция потерь Хьюбера квадратична при малых ошибках и линейна при ошибках выше заданного порога.
- Кросс-энтропия: Стандартная функция потерь для классификации изображений, вычисляемая по вероятностям softmax для взаимоисключающих классов.
- Бинарная кросс-энтропия (BCE): Оценивает каждый класс как отдельный ответ «да» или «нет» с помощью сигмоиды. Она подходит для многометочных задач и оценок классов в детекторах.
- Фокальная функция потерь: Вариант кросс-энтропии, который снижает вес простых примеров, чтобы при сильном дисбалансе классов обучение определяли редкие сложные примеры.
- Функции потерь на основе IoU: Функции потерь регрессии рамок, построенные на основе пересечения над объединением (IoU); такие варианты, как DIoU и CIoU, добавляют штрафы за расстояние между центрами, а CIoU — ещё и за соотношение сторон.
- Функция потерь Dice: Функция потерь на основе перекрытия для сегментации изображений, которая остаётся информативной, даже если передний план занимает лишь малую часть пикселей.
- Контрастивные функции потерь: Функции потерь для контрастивного обучения, которые сближают совпадающие пары в пространстве эмбеддингов и отдаляют несовпадающие.
Кросс-энтропия использует отрицательный логарифм вероятности, присвоенной истинному классу: уверенная ошибка обходится намного дороже неуверенной, а уверенный правильный ответ — почти ничего. В примере с CrossEntropyLoss в PyTorch показан эффект на двух предсказаниях с одинаковой уверенностью:
import torch
from torch import nn
# CrossEntropyLoss applies softmax to raw scores (logits) internally
loss_fn = nn.CrossEntropyLoss()
# Logits for 3 classes; the true class is index 0
target = torch.tensor([0])
confident_right = torch.tensor([[4.0, 0.5, -1.0]])
confident_wrong = torch.tensor([[-1.0, 4.0, 0.5]])
print(f"Confident and right: {loss_fn(confident_right, target).item():.4f}")
print(f"Confident and wrong: {loss_fn(confident_wrong, target).item():.4f}")Уверенное правильное предсказание даёт потерю 0.0363, а та же уверенность, присвоенная неверному классу, — 5.0363, то есть примерно в 139 раз больше.
Комбинированные функции потерь при обнаружении объектов#
Модели обнаружения объектов предсказывают, где находится каждый объект и что это за объект, поэтому функция потерь при обучении представляет собой взвешенную сумму нескольких слагаемых. YOLO26 объединяет функцию потерь рамок CIoU, функцию классификации BCE и функцию потерь L1 для нормализованных расстояний рамок, которая заменяет Distribution Focal Loss из предыдущих моделей YOLO. Вес каждого слагаемого задают аргументы обучения box, cls и dfl (значения по умолчанию — 7.5, 0.5 и 1.5). Кроме того, Progressive Loss по мере обучения переносит вес с головы «один ко многим» на голову «один к одному», используемую для инференса без NMS.
Функция потерь и смежные понятия#
- Метрики оценки: Такие метрики, как точность и средняя точность (mAP), оценивают производительность с точки зрения, важной для людей, но большинство метрик меняется дискретными скачками и не даёт градиентов. При обучении минимизируют дифференцируемую функцию потерь как приближение к этим метрикам.
- Регуляризация: Штрафные слагаемые, добавляемые к функции потерь, чтобы ограничить сложность модели. При L2-регуляризации к функции потерь прибавляется заданный множитель суммы квадратов весов, что побуждает оптимизатор выбирать меньшие веса, которые лучше обобщают данные.
- Функция вознаграждения: Целевая функция в обучении с подкреплением, где агент максимизирует суммарное вознаграждение вместо минимизации потерь; таким образом, вознаграждение играет роль функции потерь с обратным знаком.










