Зачем она нужна
Если модель предсказывает число, почти наверняка её учили, уменьшая MSE (mean squared error) — средний квадрат ошибки. Это потеря «по умолчанию» для регрессии: у неё есть точное решение для линейных моделей, гладкий градиент для нейросетей и ясный статистический смысл. Метод наименьших квадратов, который Лежандр опубликовал в 1805 году, а Гаусс в 1809-м связал с нормальным законом ошибок, — это и есть минимизация MSE.
Где она встречается:
- линейная регрессия — метод наименьших квадратов (МНК, ordinary least squares) с решением в одну формулу;
- нейросети для регрессии —
MSELossв PyTorch,"mse"в Keras; автоэнкодеры, восстанавливающие вход; - диффузионные модели — сеть учится предсказывать добавленный шум, и потеря — MSE между настоящим и предсказанным шумом;
- обучение с подкреплением — функцию ценности часто обучают на квадрате TD-ошибки;
- градиентный бустинг —
loss="squared_error": антиградиент MSE равен остатку, поэтому каждое дерево подгоняется к остаткам; - обработка сигналов и изображений — PSNR вычисляется через MSE, фильтр Калмана минимизирует ожидаемый квадрат ошибки.
MSE — среднее квадратов ошибок: $\frac1n\sum(y_i-\hat y_i)^2$. Квадрат делает потерю гладкой чашей с единственным дном, её градиент $-\frac2n(y_i-\hat y_i)$ пропорционален ошибке, а лучшая константа — среднее. Обратная сторона — квадрат раздувает большие промахи: одна ошибка в 10 весит как сто ошибок в 1, поэтому MSE чувствительна к выбросам и измеряется в квадратных единицах.
Интуиция: площадь квадратов
Слово «квадрат» здесь можно понимать буквально. Нарисуем на каждой ошибке квадрат со стороной $|e_i|$. Его площадь — $e_i^2$, а MSE — средняя площадь квадратов. Сравните с MAE, где усредняются длины отрезков: площадь растёт как квадрат стороны, поэтому большие ошибки занимают несоразмерно много места.
Ниже — сквозной пример шпаргалки: $y=(3;\,5;\,8)$, $\hat y=(2{,}5;\,5;\,10)$. Тяните синие прогнозы. На нижнем графике ошибки стоят на параболе $e^2$; MSE — средняя высота этих точек.
Ошибка $2$ больше ошибки $0{,}5$ в 4 раза, а её квадрат больше в 16 раз. Модель, обученная на MSE, поэтому «боится» крупных промахов и охотно разменивает несколько мелких ошибок на устранение одной большой. Это и достоинство (большие ошибки обычно дороже), и уязвимость (выброс в данных тоже кажется «большой ошибкой»).
Формула по косточкам
Те же четыре действия, что у MAE, только вместо модуля — квадрат.
- $y_i$
- истинное значение для объекта $i$;
- $\hat y_i$
- прогноз модели;
- $e_i=y_i-\hat y_i$
- ошибка (остаток); её знак после возведения в квадрат исчезает;
- $e_i^2$
- квадрат: неотрицателен, гладок и растёт тем быстрее, чем больше ошибка;
- $\sum e_i^2$
- сумма квадратов остатков — SSE (sum of squared errors), или RSS (residual sum of squares);
- $\frac1n$
- усреднение: MSE не зависит от размера выборки.
Почему квадрат, а не модуль? Причин три. Гладкость: у $e^2$ производная $2e$ есть везде, в том числе в нуле. Алгебра: сумма квадратов — квадратичная форма, её минимум находится решением линейной системы (нормальных уравнений). Геометрия: $\sum e_i^2$ — квадрат евклидова расстояния, и наилучший прогноз — ортогональная проекция, как в теореме Пифагора.
| $i$ | $y_i$ | $\hat y_i$ | $e_i$ | $e_i^2$ | доля в сумме |
|---|---|---|---|---|---|
| 1 | 3 | 2,5 | 0,5 | 0,25 | 5,9% |
| 2 | 5 | 5 | 0 | 0 | 0% |
| 3 | 8 | 10 | −2 | 4 | 94,1% |
| Сумма | 4,25 | 100% | |||
| Среднее (MSE) | 1,417 |
В векторной записи MSE — квадрат евклидовой нормы вектора ошибок, делённый на $n$:
Отсюда второе название — L2-потеря. Единицы MSE — квадрат единиц $y$: рубли², минуты². Чтобы вернуться к исходным единицам, извлекают корень и получают RMSE; в примере $\sqrt{1{,}417}\approx1{,}190$.
Свойства и лучшая константа
- Неотрицательность: $\mathrm{MSE}\ge0$, равенство — только при точных прогнозах.
- Квадратичный масштаб: если $y$ и $\hat y$ умножить на $k$, MSE умножится на $k^2$. Перевод рублей в тысячи рублей уменьшает MSE в миллион раз.
- Гладкость и выпуклость: MSE — квадратичная функция прогнозов; для линейной модели — квадратичная функция параметров. Если столбцы матрицы признаков (вместе со столбцом единиц для сдвига) линейно независимы, она строго выпукла, и минимум единственный.
- Разложение ошибок: $\mathrm{MSE}=\bar e^{\,2}+\operatorname{Var}(e)$ — квадрат среднего смещения плюс разброс ошибок. В примере $\bar e=-0{,}5$: $1{,}417=0{,}25+1{,}167$.
- Сравнение с MAE: $\mathrm{MSE}\ge\mathrm{MAE}^2$ (неравенство между средним квадратов и квадратом среднего). В примере: $1{,}417\ge0{,}833^2\approx0{,}694$.
Лучшая константа — среднее
Если модель отвечает одним числом $c$, MSE как функция $c$ — парабола. Раскроем скобки, прибавив и вычтя среднее $\bar y$:
Первое слагаемое от $c$ не зависит, второе неотрицательно и обращается в ноль только при $c=\bar y$. Значит, минимум MSE единственный и достигается в среднем, а его значение — дисперсия данных. Производная $2(c-\bar y)$ — прямая, пропорциональная расстоянию до среднего.
Доказательство разложения MSE(c) = Var + (c − ȳ)²
Запишем $y_i-c=(y_i-\bar y)+(\bar y-c)$ и возведём в квадрат:
Среднее слагаемое равно нулю, потому что отклонения от среднего в сумме дают ноль: $\sum(y_i-\bar y)=n\bar y-n\bar y=0$. Делим на $n$ и получаем разложение. Та же алгебра даёт формулу $\mathrm{MSE}=\bar e^{\,2}+\operatorname{Var}(e)$ и, в вероятностной версии, разложение на смещение и разброс.
Для MAE лучшая константа — медиана, и она не замечает выброс. Для MSE — среднее, которое выброс тянет за собой: одна точка, сдвинутая на $\Delta$, сдвигает среднее на $\Delta/n$, сколько бы ни было $\Delta$. На странице MAE — тот же опыт для медианы.
Производная: сила, пропорциональная ошибке
Производная квадрата — $2e$. Чем дальше прогноз от правды, тем сильнее градиент тянет его обратно, а у самого минимума сила плавно исчезает. Именно это делает MSE такой удобной для градиентного спуска.
Вывод: производная MSE по прогнозам и по параметрам
Для одного объекта $\ell=(y_i-\hat y_i)^2$. По цепному правилу, с $\partial e_i/\partial\hat y_i=-1$:
Для линейной модели $\hat y_i=wx_i+b$:
В матричной форме, $\hat y=X\theta$: $\nabla_\theta\,\mathrm{MSE}=\frac2nX^\top(X\theta-y)$, а гессиан $\frac2nX^\top X$ от $\theta$ не зависит — кривизна чаши везде одинакова.
Вторая производная по каждому прогнозу постоянна: $\partial^2\mathrm{MSE}/\partial\hat y_i^2=2/n$. Поэтому в градиентном бустинге на MSE шаг Ньютона просто равен среднему остатку в листе, а каждое новое дерево обучается на остатках $y_i-F(x_i)$.
Посмотрим на градиентный спуск для одной ошибки. Шаг $\hat y\leftarrow\hat y-\eta\,\partial e^2/\partial\hat y=\hat y+2\eta e$ превращает ошибку в $e\leftarrow(1-2\eta)\,e$. Каждый шаг умножает ошибку на одно и то же число — получается геометрическая прогрессия.
У $|e|$ производная $\pm1$ не зависит от размера ошибки, поэтому шаги с постоянным $\eta$ не укорачиваются, и спуск дрожит у минимума (см. MAE). У $e^2$ «тормоза» встроены: градиент сам уменьшается у дна, и постоянного шага достаточно для точной сходимости.
Чаша над параметрами: МНК и градиентный спуск
Возьмём прямую $\hat y=wx+b$ и пять точек: $x=(1;\,2;\,3;\,4;\,5)$, $y=(1{,}3;\,2;\,3{,}1;\,4{,}5;\,7)$. MSE как функция $(w;\,b)$ — квадратичная форма, её график — эллиптическая чаша (параболоид) с единственным дном.
Точное решение: нормальные уравнения
Приравняв градиент к нулю, получаем линейную систему — нормальные уравнения — и решение метода наименьших квадратов:
Для наших точек $w^*=1{,}39$, $b^*=-0{,}59$, $\mathrm{MSE}^*=0{,}2294$. На практике обратную матрицу не вычисляют: используют QR- или SVD-разложение (np.linalg.lstsq), а на больших данных — градиентный спуск.
Градиентный спуск и форма чаши
Скорость спуска определяет форма чаши — собственные числа гессиана $H=\frac2nX^\top X$. Вдоль крутого направления ($\lambda_{\max}$) слишком большой шаг перебрасывает через дно, вдоль пологого ($\lambda_{\min}$) спуск ползёт. Для наших данных $\lambda_{\max}=23{,}66$, $\lambda_{\min}=0{,}338$, их отношение — число обусловленности — около $70$: чаша вытянута в узкий овраг, и шаг больше $\eta_{\text{крит}}=2/\lambda_{\max}\approx0{,}0845$ ведёт к расходимости.
Почему условие сходимости — η < 2/λ_max
Для квадратичной функции градиент линеен: $\nabla\mathrm{MSE}(\theta)=H(\theta-\theta^*)$. Шаг спуска даёт
В базисе собственных векторов $H$ каждая координата умножается на $1-\eta\lambda_k$ на каждом шаге. Спуск сходится, если $|1-\eta\lambda_k|<1$ для всех $k$, то есть $0<\eta<2/\lambda_{\max}$. При $1/\lambda_{\max}<\eta<2/\lambda_{\max}$ множитель отрицателен — отсюда зигзаг поперёк оврага. Медленнее всего сходится направление $\lambda_{\min}$: даже при лучшем постоянном шаге $\eta=2/(\lambda_{\max}+\lambda_{\min})$ ошибка убывает в $(\kappa-1)/(\kappa+1)$ раз за шаг, где $\kappa=\lambda_{\max}/\lambda_{\min}$. При $\kappa=70$ это $0{,}97$ — сотни шагов; при $\kappa=2$ — $1/3$.
Стандартизируйте признаки (вычесть среднее, поделить на стандартное отклонение) — это округляет чашу и позволяет брать больший шаг. Адаптивные оптимизаторы (Adam, RMSProp) делают похожее масштабирование автоматически, но только по каждой координате отдельно: овраг, повёрнутый относительно осей, как у нас, они выпрямляют лишь частично.
Смещение и разброс
MSE на новых данных складывается из трёх частей, и это, пожалуй, самая важная формула о переобучении. Пусть $y=f(x)+\varepsilon$, шум имеет среднее $0$ и дисперсию $\sigma^2$, а модель $\hat f$ обучена на случайной выборке. Тогда ожидаемая ошибка в точке $x$:
- $\mathbb E\hat f(x)$
- средний прогноз по всем возможным обучающим выборкам;
- $\text{смещение}^2$
- насколько средняя модель промахивается мимо истины — плата за слишком простую модель;
- $\text{разброс}$
- насколько модель меняется от выборки к выборке — плата за слишком гибкую модель;
- $\sigma^2$
- неустранимый шум: его не уберёт никакая модель.
Вывод разложения
Обозначим $\bar f=\mathbb E\hat f(x)$. Шум $\varepsilon$ в новой точке не зависит от обучающей выборки, поэтому
Затем повторим приём из раздела о константе: $f-\hat f=(f-\bar f)+(\bar f-\hat f)$, и перекрёстное слагаемое исчезает, потому что $\mathbb E(\bar f-\hat f)=0$:
На рисунке те же величины усреднены по равномерной сетке $x\in[-1;\,1]$. Чётные степени для нечётной функции $\sin\pi x$ почти ничего не добавляют: смещение при $d=1$ и $d=2$ одинаковое.
Минимизировать нужно сумму, а не одно смещение. Регуляризация (гребневая регрессия, ранняя остановка, усреднение моделей) сознательно вносит смещение, чтобы сильнее уменьшить разброс, и часто снижает тестовую MSE.
Вероятностный смысл: нормальный шум
Почему именно квадрат? Классический ответ дал Гаусс (1809). Пусть $y_i=\hat y_i+\varepsilon_i$, где шум $\varepsilon_i$ независим и распределён нормально, $N(0,\sigma^2)$. Плотность одного наблюдения — колокол вокруг прогноза, а правдоподобие выборки — произведение высот колоколов в точках данных. Отрицательный логарифм правдоподобия:
При любом фиксированном $\sigma$ это возрастающая линейная функция MSE. Значит, минимизация MSE — это метод максимального правдоподобия при нормальном шуме. Минимум по $\sigma$ даёт ещё одну связь: $\hat\sigma^2=\mathrm{MSE}$. Позже (1821–1823) Гаусс дал и второе обоснование, уже без нормальности: если ошибки несмещены, некоррелированы и имеют одинаковую дисперсию, МНК-оценка имеет наименьшую дисперсию среди всех линейных несмещённых оценок (теорема Гаусса — Маркова).
Ещё одна формулировка того же факта: среди всех функций $g(x)$ ожидаемый квадрат ошибки $\mathbb E(y-g(x))^2$ минимален при $g(x)=\mathbb E[y\mid x]$. Модель, обученная на MSE, оценивает условное среднее. Если шум несимметричен или с тяжёлыми хвостами, условное среднее может плохо описывать «типичный» исход — тогда смотрят на медиану (MAE) или квантили.
Выбросы: неограниченное влияние
Обратная сторона квадрата — чувствительность к аномальным точкам. Градиент от объекта пропорционален его ошибке, поэтому далёкий выброс тянет модель тем сильнее, чем он дальше. В робастной статистике говорят, что у МНК неограниченная функция влияния и нулевая пороговая точка (breakdown point): одной точки достаточно, чтобы увести прямую сколь угодно далеко.
Что делать с выбросами, если MSE нужна:
- заменить потерю на Хьюбера: квадрат для малых ошибок и модуль для больших — гладкость MSE и ограниченное влияние MAE;
- преобразовать целевую переменную ($\log y$ для цен и доходов) — но тогда модель оценивает среднее логарифма, а не среднее $y$;
- найти и проверить выбросы по остаткам: точки с огромным $e_i^2$ видны сразу;
- использовать робастные алгоритмы подбора (RANSAC, Theil–Sen), которые обучаются на подмножествах данных.
В коде
MSE и её градиент в NumPy, точное решение МНК и проверка того, что лучшая константа — среднее:
pythonimport numpy as np
y = np.array([3.0, 5.0, 8.0])
y_hat = np.array([2.5, 5.0, 10.0])
def mse(y, y_hat):
return np.mean((y - y_hat) ** 2)
def mse_grad(y, y_hat):
# градиент по прогнозам: 2(ŷ − y) / n
return 2 * (y_hat - y) / y.size
print(mse(y, y_hat)) # 1.4166666666666667
print(mse_grad(y, y_hat)) # [-0.33333333 0. 1.33333333]
# прямая по МНК: точное решение нормальных уравнений
x = np.array([1.0, 2.0, 3.0, 4.0, 5.0])
t = np.array([1.3, 2.0, 3.1, 4.5, 7.0])
A = np.column_stack([x, np.ones_like(x)])
w, b = np.linalg.lstsq(A, t, rcond=None)[0]
print(round(w, 4), round(b, 4), round(mse(t, A @ [w, b]), 4)) # 1.39 -0.59 0.2294
# лучшая константа по MSE — среднее; MSE(c) = Var + (c − ȳ)²
data = np.array([2.0, 3.0, 5.0, 9.0, 16.0])
print(data.mean(), mse(data, data.mean()), mse(data, 12.0)) # 7.0 26.0 51.0
В PyTorch — MSELoss. Градиент по прогнозам — $2(\hat y-y)/n$; спуск с шагом $0{,}05$ по сырому признаку из рисунка 4 приходит к тому же решению МНК, но медленно: до двух знаков — примерно за 300 шагов (в листинге их 2000 с запасом):
pythonimport torch
import torch.nn as nn
y = torch.tensor([3.0, 5.0, 8.0])
y_hat = torch.tensor([2.5, 5.0, 10.0], requires_grad=True)
loss = nn.MSELoss()(y_hat, y) # то же, что ((y_hat - y) ** 2).mean()
loss.backward()
print(loss.item()) # 1.4166666269302368
print(y_hat.grad) # tensor([-0.3333, 0.0000, 1.3333])
# градиентный спуск по прямой: при η > 2/λ_max ≈ 0.0845 он разойдётся
x = torch.tensor([1.0, 2.0, 3.0, 4.0, 5.0])
t = torch.tensor([1.3, 2.0, 3.1, 4.5, 7.0])
w = torch.zeros(1, requires_grad=True)
b = torch.zeros(1, requires_grad=True)
opt = torch.optim.SGD([w, b], lr=0.05)
for step in range(2000):
opt.zero_grad()
nn.functional.mse_loss(w * x + b, t).backward()
opt.step()
print(round(w.item(), 2), round(b.item(), 2)) # 1.39 -0.59
В scikit-learn есть метрики MSE и RMSE (метод score регрессоров при этом возвращает $R^2$), LinearRegression минимизирует MSE точно, а бустинг использует её как потерю по умолчанию:
pythonimport numpy as np
from sklearn.metrics import mean_squared_error, root_mean_squared_error
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import HistGradientBoostingRegressor
print(mean_squared_error([3, 5, 8], [2.5, 5, 10])) # 1.4166666666666667
print(root_mean_squared_error([3, 5, 8], [2.5, 5, 10])) # 1.1902380714238083
X = np.array([[1.0], [2.0], [3.0], [4.0], [5.0]])
y = np.array([1.3, 2.0, 3.1, 4.5, 7.0])
lr = LinearRegression().fit(X, y) # минимизирует MSE точно
print(lr.coef_.round(4), round(lr.intercept_, 4)) # [1.39] -0.59
# бустинг на MSE: каждое дерево подгоняется к остаткам y − F(x)
gbr = HistGradientBoostingRegressor(loss="squared_error")
Учите на MSE, а в отчётах показывайте RMSE (те же единицы, что у $y$) рядом с MAE. Большой разрыв между ними — сигнал, что в ошибках есть тяжёлый хвост или выбросы.
Частые ошибки
- Читать MSE как «среднюю ошибку». MSE $=1{,}417$ в примере — это квадратные единицы; средняя ошибка порядка $\sqrt{1{,}417}\approx1{,}19$ (RMSE) или $0{,}833$ (MAE).
- MSE на данных с выбросами. Несколько аномалий утащат модель за собой (рисунок 7). Чистите данные, берите Хьюбера или MAE.
- Неотмасштабированные признаки. Вытянутая чаша — медленный спуск и маленький допустимый шаг (рисунок 4). Стандартизируйте признаки.
- Слишком большой шаг. При $\eta>2/\lambda_{\max}$ потеря растёт экспоненциально и быстро превращается в
infиnan. - MSE для классификации поверх сигмоиды. Градиент $2(p-y)\,p(1-p)$ гаснет, когда модель уверенно ошибается ($p\approx0$ при $y=1$). Для вероятностей используйте BCE или кросс-энтропию.
- Судить о модели по MSE на обучении. Низкая MSE на обучающих данных может означать запоминание шума (рисунок 5, $d=10$). Смотрите на валидацию.
Связи с другими формулами
- MAE: модуль вместо квадрата — медиана вместо среднего, устойчивость к выбросам, но излом в нуле.
- RMSE: $\sqrt{\mathrm{MSE}}$ — та же оптимальная модель, но ошибка в единицах $y$.
- Функция Хьюбера: MSE около нуля и MAE на хвостах.
- BCE: аналог MSE для вероятностей — тоже метод максимального правдоподобия, но для распределения Бернулли.
- SGD и Adam: на MSE хорошо видно, как шаг и обусловленность задачи определяют сходимость.
Итоги
1) $\mathrm{MSE}=\frac1n\sum(y_i-\hat y_i)^2$ — средняя площадь квадратов на ошибках; в примере $1{,}417$, и $94\%$ даёт одна ошибка. 2) Лучшая константа — среднее, и $\mathrm{MSE}(c)=\operatorname{Var}+(c-\bar y)^2$. 3) Градиент $-\frac2n(y_i-\hat y_i)$ пропорционален ошибке и сам гаснет у минимума. 4) Для линейной модели MSE — чаша с точным решением $(X^\top X)^{-1}X^\top y$; градиентный спуск сходится при $\eta<2/\lambda_{\max}$, скорость задаёт число обусловленности. 5) Тестовая MSE = смещение² + разброс + шум. 6) MSE — правдоподобие при нормальном шуме; модель оценивает условное среднее. 7) Цена — неограниченное влияние выбросов.