Шпаргалка формул нейросетей · Потери — регрессия

MSE: среднеквадратичная ошибка

Главная функция потерь регрессии и основа метода наименьших квадратов. Разбираем MSE по косточкам: буквальные квадраты на ошибках, почему её минимизирует среднее, производная 2e и чаша над параметрами модели, критический шаг градиентного спуска, разложение на смещение и разброс, связь с нормальным шумом и чувствительность к выбросам.

Javharbek Abdulatipov · 35 мин чтения
$$\mathrm{MSE}=\frac{1}{n}\sum_{i=1}^{n}\bigl(y_i-\hat{y}_i\bigr)^2$$

Зачем она нужна

Если модель предсказывает число, почти наверняка её учили, уменьшая 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 — средняя высота этих точек.

Рисунок 1. Квадраты ошибок сквозного примера. Площади $0{,}25$, $0$ и $4$, сумма $4{,}25$, $\mathrm{MSE}=4{,}25/3\approx1{,}417$. Третий квадрат — $94\%$ всей площади. Поставьте третий прогноз на $8$ — MSE упадёт до $0{,}25/3\approx0{,}083$.
Что заметить

Ошибка $2$ больше ошибки $0{,}5$ в 4 раза, а её квадрат больше в 16 раз. Модель, обученная на MSE, поэтому «боится» крупных промахов и охотно разменивает несколько мелких ошибок на устранение одной большой. Это и достоинство (большие ошибки обычно дороже), и уязвимость (выброс в данных тоже кажется «большой ошибкой»).

Формула по косточкам

Те же четыре действия, что у MAE, только вместо модуля — квадрат.

$$\underbrace{y_i-\hat y_i}_{\text{ошибка }e_i}\;\longrightarrow\;\underbrace{e_i^2}_{\text{площадь}}\;\longrightarrow\;\underbrace{\sum_{i=1}^{n}e_i^2}_{\text{SSE}}\;\longrightarrow\;\underbrace{\frac1n\sum_{i=1}^{n}e_i^2}_{\text{MSE}}$$
$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$доля в сумме
132,50,50,255,9%
255000%
3810−2494,1%
Сумма4,25100%
Среднее (MSE)1,417

В векторной записи MSE — квадрат евклидовой нормы вектора ошибок, делённый на $n$:

$$\mathrm{MSE}(y,\hat y)=\frac{1}{n}\,\bigl\|y-\hat y\bigr\|_2^2,\qquad \mathrm{RMSE}=\sqrt{\mathrm{MSE}}$$

Отсюда второе название — 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$:

$$\mathrm{MSE}(c)=\frac1n\sum_{i=1}^{n}(y_i-c)^2=\underbrace{\frac1n\sum_{i=1}^{n}(y_i-\bar y)^2}_{\operatorname{Var}(y)}+\;(c-\bar y)^2$$

Первое слагаемое от $c$ не зависит, второе неотрицательно и обращается в ноль только при $c=\bar y$. Значит, минимум MSE единственный и достигается в среднем, а его значение — дисперсия данных. Производная $2(c-\bar y)$ — прямая, пропорциональная расстоянию до среднего.

Рисунок 2. $\mathrm{MSE}(c)$ для выборки $(2;\,3;\,5;\,9;\,16)$ и её производная. Среднее $\bar y=7$, минимум $\operatorname{Var}=26$. При $c=12$: $\mathrm{MSE}=26+(12-7)^2=51$, производная $2\cdot5=10$. Медиана $5$ даёт $30$ — для MSE она хуже среднего. Включите выброс ($16\to40$): среднее уезжает в $11{,}8$, дисперсия вырастает до $204{,}56$, а медиана остаётся $5$.
Доказательство разложения MSE(c) = Var + (c − ȳ)²

Запишем $y_i-c=(y_i-\bar y)+(\bar y-c)$ и возведём в квадрат:

$$\sum_{i=1}^{n}(y_i-c)^2=\sum_{i=1}^{n}(y_i-\bar y)^2+2(\bar y-c)\sum_{i=1}^{n}(y_i-\bar y)+n(\bar y-c)^2$$

Среднее слагаемое равно нулю, потому что отклонения от среднего в сумме дают ноль: $\sum(y_i-\bar y)=n\bar y-n\bar y=0$. Делим на $n$ и получаем разложение. Та же алгебра даёт формулу $\mathrm{MSE}=\bar e^{\,2}+\operatorname{Var}(e)$ и, в вероятностной версии, разложение на смещение и разброс.

Сравните с MAE

Для 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$:

$$\frac{\partial\,\mathrm{MSE}}{\partial\hat y_i}=\frac1n\cdot2e_i\cdot(-1)=-\frac{2}{n}\bigl(y_i-\hat y_i\bigr)$$

Для линейной модели $\hat y_i=wx_i+b$:

$$\frac{\partial\,\mathrm{MSE}}{\partial w}=-\frac2n\sum_{i=1}^{n}e_i\,x_i,\qquad \frac{\partial\,\mathrm{MSE}}{\partial b}=-\frac2n\sum_{i=1}^{n}e_i$$

В матричной форме, $\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)$.

$$\frac{\partial\,\mathrm{MSE}}{\partial\hat y_i}=-\frac{2}{n}\bigl(y_i-\hat y_i\bigr)$$

Посмотрим на градиентный спуск для одной ошибки. Шаг $\hat y\leftarrow\hat y-\eta\,\partial e^2/\partial\hat y=\hat y+2\eta e$ превращает ошибку в $e\leftarrow(1-2\eta)\,e$. Каждый шаг умножает ошибку на одно и то же число — получается геометрическая прогрессия.

Рисунок 3. Слева — парабола $e^2$, касательная в стартовой точке и шаги спуска; справа — производная $2e$: длины синих отрезков, то есть градиенты, убывают вместе с ошибкой. При $e_0=2{,}5$ и $\eta=0{,}3$ множитель $1-2\eta=0{,}4$: ошибки $1$, $0{,}4$, $0{,}16$. Меняйте шаг: при $\eta<0{,}5$ ошибка убывает монотонно, при $\eta=0{,}5$ исчезает за один шаг, при $0{,}5<\eta<1$ — с колебаниями, при $\eta=1$ качается вечно, при $\eta>1$ растёт.
Сравните с MAE

У $|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)$ — квадратичная форма, её график — эллиптическая чаша (параболоид) с единственным дном.

Точное решение: нормальные уравнения

Приравняв градиент к нулю, получаем линейную систему — нормальные уравнения — и решение метода наименьших квадратов:

$$X^\top X\,\theta=X^\top y\quad\Longrightarrow\quad\theta^*=(X^\top X)^{-1}X^\top y;\qquad w^*=\frac{\operatorname{Cov}(x,y)}{\operatorname{Var}(x)},\quad b^*=\bar y-w^*\bar x$$

Для наших точек $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$ ведёт к расходимости.

Рисунок 4. Слева — чаша $\mathrm{MSE}(w,b)$ (её можно вращать), справа — вид сверху и превышение над минимумом в логарифмическом масштабе. Старт — прямая $y=3$, $\eta=0{,}05$. За 150 шагов спуск проходит овраг лишь до превышения $1{,}5\cdot10^{-2}$; при $\eta=0{,}09$ он разлетается. Переключитесь на центрированный признак $x-\bar x$: гессиан становится диагональным ($\lambda=4$ и $2$), число обусловленности падает до $2$, допустимый шаг растёт до $0{,}5$, и при том же $\eta=0{,}05$ превышение меньше $10^{-6}$ уже на 61-м шаге, а при $\eta=0{,}2$ — на 13-м.
Почему условие сходимости — η < 2/λ_max

Для квадратичной функции градиент линеен: $\nabla\mathrm{MSE}(\theta)=H(\theta-\theta^*)$. Шаг спуска даёт

$$\theta_{t+1}-\theta^*=(I-\eta H)(\theta_t-\theta^*)\quad\Longrightarrow\quad\theta_t-\theta^*=(I-\eta H)^t(\theta_0-\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\bigl[(y-\hat f(x))^2\bigr]=\underbrace{\bigl(f(x)-\mathbb E\hat f(x)\bigr)^2}_{\text{смещение}^2}+\underbrace{\mathbb E\bigl[(\hat f(x)-\mathbb E\hat f(x))^2\bigr]}_{\text{разброс}}+\underbrace{\sigma^2}_{\text{шум}}$$
$\mathbb E\hat f(x)$
средний прогноз по всем возможным обучающим выборкам;
$\text{смещение}^2$
насколько средняя модель промахивается мимо истины — плата за слишком простую модель;
$\text{разброс}$
насколько модель меняется от выборки к выборке — плата за слишком гибкую модель;
$\sigma^2$
неустранимый шум: его не уберёт никакая модель.
Рисунок 5. Истина $f(x)=\sin\pi x$, 15 точек с шумом $\sigma=0{,}3$, 200 разных обучающих выборок, полиномы степени $d$. Прямая ($d=1$) смещена: $0{,}204+0{,}012+0{,}09=0{,}306$. При $d=3$ — минимум ожидаемой ошибки: $0{,}005+0{,}025+0{,}09=0{,}120$. При $d=10$ смещение почти не меняется ($0{,}005$), но разброс взлетает до $0{,}777$, и тестовая MSE — $0{,}872$, хотя MSE на обучении всего $0{,}022$ — меньше самого шума $\sigma^2=0{,}09$: модель запоминает шум.
Вывод разложения

Обозначим $\bar f=\mathbb E\hat f(x)$. Шум $\varepsilon$ в новой точке не зависит от обучающей выборки, поэтому

$$\mathbb E(y-\hat f)^2=\mathbb E(f+\varepsilon-\hat f)^2=\sigma^2+\mathbb E(f-\hat f)^2$$

Затем повторим приём из раздела о константе: $f-\hat f=(f-\bar f)+(\bar f-\hat f)$, и перекрёстное слагаемое исчезает, потому что $\mathbb E(\bar f-\hat f)=0$:

$$\mathbb E(f-\hat f)^2=(f-\bar f)^2+\mathbb E(\hat f-\bar f)^2$$

На рисунке те же величины усреднены по равномерной сетке $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)$. Плотность одного наблюдения — колокол вокруг прогноза, а правдоподобие выборки — произведение высот колоколов в точках данных. Отрицательный логарифм правдоподобия:

$$-\ln L=\frac n2\ln(2\pi\sigma^2)+\frac{1}{2\sigma^2}\sum_{i=1}^{n}\bigl(y_i-\hat y_i\bigr)^2=\frac n2\ln(2\pi\sigma^2)+\frac{n}{2\sigma^2}\,\mathrm{MSE}$$

При любом фиксированном $\sigma$ это возрастающая линейная функция MSE. Значит, минимизация MSE — это метод максимального правдоподобия при нормальном шуме. Минимум по $\sigma$ даёт ещё одну связь: $\hat\sigma^2=\mathrm{MSE}$. Позже (1821–1823) Гаусс дал и второе обоснование, уже без нормальности: если ошибки несмещены, некоррелированы и имеют одинаковую дисперсию, МНК-оценка имеет наименьшую дисперсию среди всех линейных несмещённых оценок (теорема Гаусса — Маркова).

Рисунок 6. Слева — прямая и нормальные колокола $N(\hat y_i,\sigma^2)$ вокруг неё; оранжевые отрезки — высоты колоколов в точках данных, то есть вклад каждой точки в правдоподобие. Справа — $-\ln L$ как функция MSE при текущем $\sigma$: это прямая. Для $w=1$, $b=0{,}5$, $\sigma=0{,}6$: $\mathrm{MSE}=0{,}540$, $-\ln L=5{,}791$; МНК-прямая (красная точка) с $\mathrm{MSE}=0{,}229$ даёт $-\ln L=3{,}634$. Лучшая $\sigma$ для текущей прямой — $\sqrt{0{,}54}\approx0{,}735$.

Ещё одна формулировка того же факта: среди всех функций $g(x)$ ожидаемый квадрат ошибки $\mathbb E(y-g(x))^2$ минимален при $g(x)=\mathbb E[y\mid x]$. Модель, обученная на MSE, оценивает условное среднее. Если шум несимметричен или с тяжёлыми хвостами, условное среднее может плохо описывать «типичный» исход — тогда смотрят на медиану (MAE) или квантили.

Выбросы: неограниченное влияние

Обратная сторона квадрата — чувствительность к аномальным точкам. Градиент от объекта пропорционален его ошибке, поэтому далёкий выброс тянет модель тем сильнее, чем он дальше. В робастной статистике говорят, что у МНК неограниченная функция влияния и нулевая пороговая точка (breakdown point): одной точки достаточно, чтобы увести прямую сколь угодно далеко.

Рисунок 7. Десять точек вокруг $y=1+0{,}5x$ и выброс в $x=9$. При выбросе в $y=0$ наклон прямой MSE падает до $0{,}291$, а сам выброс даёт $74\%$ суммы квадратов. Справа — наклон как функция высоты выброса: у MSE это прямая (каждая единица высоты меняет наклон на $0{,}0375$, от $0{,}104$ при $y=-5$ до $0{,}779$ при $y=13$), у MAE наклон остаётся между $0{,}438$ и $0{,}514$.

Что делать с выбросами, если 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. Большой разрыв между ними — сигнал, что в ошибках есть тяжёлый хвост или выбросы.

Частые ошибки

  1. Читать MSE как «среднюю ошибку». MSE $=1{,}417$ в примере — это квадратные единицы; средняя ошибка порядка $\sqrt{1{,}417}\approx1{,}19$ (RMSE) или $0{,}833$ (MAE).
  2. MSE на данных с выбросами. Несколько аномалий утащат модель за собой (рисунок 7). Чистите данные, берите Хьюбера или MAE.
  3. Неотмасштабированные признаки. Вытянутая чаша — медленный спуск и маленький допустимый шаг (рисунок 4). Стандартизируйте признаки.
  4. Слишком большой шаг. При $\eta>2/\lambda_{\max}$ потеря растёт экспоненциально и быстро превращается в inf и nan.
  5. MSE для классификации поверх сигмоиды. Градиент $2(p-y)\,p(1-p)$ гаснет, когда модель уверенно ошибается ($p\approx0$ при $y=1$). Для вероятностей используйте BCE или кросс-энтропию.
  6. Судить о модели по 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) Цена — неограниченное влияние выбросов.

Проверь себя

1. $y=(1;\,4;\,6)$, $\hat y=(2;\,4;\,3)$. Чему равна MSE?
2. Какая константа минимизирует MSE для выборки $(1;\,2;\,3;\,10;\,50)$?
3. Чему равна $\partial\,\mathrm{MSE}/\partial\hat y_i$?
4. Собственные числа гессиана MSE равны $4$ и $2$. При каких постоянных шагах $\eta>0$ градиентный спуск сходится?
5. Минимизация MSE совпадает с методом максимального правдоподобия, если шум распределён…