Какие метрики используешь для Loss?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Метрики для 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 функциями для вашей задачи