Sobes.tech
Back to questions
Middle — Senior
9

Как определить производную функции потерь для логлос и MSE?

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

Что хотят услышать интервьюеры:

Для MSE производная по предсказанию — это линейный градиент ошибки: чем дальше предсказание от цели, тем сильнее поправка. Для log loss производная выражает, как сильно нужно сдвинуть вероятность в сторону правильного класса; она особенно удобна в связке с сигмоидой. Важно уметь не только записать формулу, но и объяснить, как она используется при обучении модели.

Определение:

MSE (Mean Squared Error) для одного объекта обычно записывают как
[ L = \frac{1}{2}(y - \hat y)^2 ] Тогда производная по предсказанию (\hat y) равна: [ \frac{\partial L}{\partial \hat y} = \hat y - y ] Если без коэффициента (\frac{1}{2}), то будет: [ \frac{\partial L}{\partial \hat y} = 2(\hat y - y) ]

Log loss для бинарной классификации: [ L = -\left(y \log p + (1-y)\log(1-p)\right) ] где (p) — вероятность положительного класса. Производная по (p): [ \frac{\partial L}{\partial p} = -\frac{y}{p} + \frac{1-y}{1-p} ] Если модель использует логит (z) и сигмоиду (p=\sigma(z)), то после применения цепного правила получается очень удобный результат: [ \frac{\partial L}{\partial z} = p - y ]

Пример использования:

Для одного объекта с истинной меткой (y=1):

  • MSE при (\hat y=0.8):
    [ \frac{\partial L}{\partial \hat y} = 0.8 - 1 = -0.2 ] Значит, модель должна увеличить предсказание.

  • Log loss при (p=0.8):
    [ \frac{\partial L}{\partial z} = 0.8 - 1 = -0.2 ] Значит, модель тоже должна увеличить логит, чтобы поднять вероятность положительного класса.

import math

# MSE
y = 1.0
y_hat = 0.8
mse_grad = y_hat - y  # dL/dy_hat при L = 0.5 * (y - y_hat)^2

# Log loss по вероятности
p = 0.8
logloss_grad_p = -y / p + (1 - y) / (1 - p)

# Log loss по логиту z через сигмоиду
logloss_grad_z = p - y

print("MSE grad:", mse_grad)
print("LogLoss grad wrt p:", logloss_grad_p)
print("LogLoss grad wrt z:", logloss_grad_z)

Пояснение кода:

Код показывает три вещи.

  1. Для MSE градиент по предсказанию — это просто разница (\hat y - y).
  2. Для log loss по вероятности градиент имеет дроби и может становиться большим, если модель слишком уверена и ошибается.
  3. Если брать производную по логиту (z), а не по вероятности (p), то формула упрощается до (p - y). Именно это обычно и используется в обучении логистической регрессии и нейросетей с sigmoid + binary cross-entropy.

Ключевые моменты:

  • Для MSE производная по предсказанию: (\hat y - y) при записи с коэффициентом (\frac{1}{2}).
  • Для log loss по вероятности: (-\frac{y}{p} + \frac{1-y}{1-p}).
  • Для log loss в связке с sigmoid по логиту: (\frac{\partial L}{\partial z} = p - y).
  • Удобно помнить, что и для MSE, и для binary log loss градиент по “выходу модели” часто сводится к разности предсказания и целевого значения.
  • Log loss лучше подходит для классификации, MSE — для регрессии; у них разные интерпретации ошибки и разные свойства градиента.