← Назад к вопросам

Какие метрики используешь для Loss?

2.0 Middle🔥 201 комментариев
#Глубокое обучение#Метрики и оценка моделей

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Метрики для Loss в машинном обучении

Loss функция (функция потерь) измеряет несоответствие между предсказанными и истинными значениями. Выбор правильной функции потерь критичен для качества обучения модели.

Для задач регрессии

Mean Squared Error (MSE) — средний квадрат ошибок. Часто используется при обучении нейросетей. Больше штрафует большие ошибки, так что чувствительна к выбросам. Формула: MSE = (1/n) * Σ(y_i - ŷ_i)²

Mean Absolute Error (MAE) — средняя абсолютная ошибка. Менее чувствительна к выбросам, чем MSE. Используется когда нужна устойчивость. MAE = (1/n) * Σ|y_i - ŷ_i|

Root Mean Squared Error (RMSE) — квадратный корень из MSE. Интерпретируется в исходных единицах измерения. RMSE = √MSE

Huber Loss — комбинация MSE и MAE. Сочетает преимущества обеих: квадратичная для малых ошибок, линейная для больших. Хороша при наличии выбросов.

import torch
import torch.nn as nn

# MSE Loss
mse_loss = nn.MSELoss()
loss = mse_loss(predictions, targets)

# MAE Loss
mae_loss = nn.L1Loss()
loss = mae_loss(predictions, targets)

# Huber Loss
huber_loss = nn.HuberLoss()
loss = huber_loss(predictions, targets)

Для задач классификации

Binary Cross-Entropy (BCE) — используется для бинарной классификации. Штрафует неуверенные предсказания. BCE = -(y*log(ŷ) + (1-y)*log(1-ŷ))

Categorical Cross-Entropy — для мультиклассовой классификации. Работает с вероятностями классов.

Focal Loss — разработана для работы с дисбалансом классов. Фокусируется на сложных примерах, игнорируя легкие.

import torch.nn as nn

# Binary Cross-Entropy
bce_loss = nn.BCEWithLogitsLoss()  # комбинирует sigmoid + BCE
loss = bce_loss(predictions, targets)

# Cross-Entropy (многоклассовая)
ce_loss = nn.CrossEntropyLoss()
loss = ce_loss(predictions, targets)

# Focal Loss (из libraries)
from torch.nn import functional as F
# Можно реализовать вручную или использовать готовые реализации

Специализированные Loss функции

Triplet Loss — для задач метрического обучения (similarity learning). Минимизирует расстояние между похожими примерами и максимизирует между разными.

Contrastive Loss — для контрастивного обучения. Учит модель различать похожие и непохожие пары данных.

Cosine Similarity Loss — для задач, где важна ориентация векторов, а не их величина. Используется в рекомендационных системах.

Практический выбор Loss функции

Регрессия:

  • Нет выбросов → MSE
  • Есть выбросы → MAE или Huber Loss
  • Нужна интерпретируемость → RMSE

Классификация:

  • Сбалансированные классы → Cross-Entropy
  • Дисбаланс классов → Focal Loss или взвешенная Cross-Entropy
  • Бинарная классификация → Binary Cross-Entropy

Специальные задачи:

  • Similarity/Ranking → Triplet Loss
  • Embedding learning → Contrastive Loss
  • NLP embedding → Cosine Similarity Loss

Регуляризация в Loss

Часто добавляют регуляризацию к основной функции потерь:

# L2 регуляризация (Ridge)
total_loss = mse_loss + lambda * sum(param**2 for param in model.parameters())

# L1 регуляризация (Lasso)
total_loss = mse_loss + lambda * sum(abs(param) for param in model.parameters())

Ключевые правила

  • Выбирайте Loss в зависимости от типа задачи (регрессия vs классификация)
  • Учитывайте распределение данных (выбросы, дисбаланс классов)
  • Мониторьте Loss во время обучения (должен падать)
  • Экспериментируйте с разными Loss функциями для вашей задачи