Бритва Оккама

После этого урока ты по двум числам — ошибке на обучающих точках и ошибке на новых — отличишь underfitting от overfitting и разложишь ошибку модели на bias, variance и шум.

1953 год. У теории физика Фримена Дайсона четыре свободных параметра. Энрико Ферми её отвергает и цитирует своего друга Джона фон Неймана: "With four parameters I can fit an elephant" — с четырьмя параметрами я подгоню слона, а с пятью заставлю его махать хоботом.

Это не просто острота. В 2010 году трое физиков в самом деле нарисовали слона четырьмя комплексными параметрами и напечатали его в American Journal of Physics.

Теперь загадка. Урок 12 закончился теоремой, которой мы радовались: сеть с достаточным числом нейронов приблизит любую непрерывную функцию. Параметров у неё не четыре, а тысячи. Почему то, что для теоремы достоинство, для Ферми — приговор? И как отличить модель, которая поняла закономерность, от модели, которая подогнала слона?

Сеть, которая может всё, выучит и шум

Урок 12 выдал сети лицензию на всё: Feed Forward Neural Network с одним скрытым слоем — universal approximator. Третья лекция открывается слайдом с тем же заголовком, "Neural Networks are Universal Approximators", и той же цитатой (лекция 3, слайд 2): Universal approximation theorem (Kurt Hornik, 1991) повторена слово в слово, а оговорки под ней переписаны. Сначала "Regardless of what function we are learning; a single layer can do it …", затем три продолжения:

Первые два «but» разобраны в уроке 12. Третье в лекции 2 звучало иначе: "The layer may have to be unfeasibly large and may fail to learn and generalize" (лекция 2, слайд 20). Теперь от него осталось главное слово — generalize: хорошо работать на точках, которых при обучении не было. Вся третья глава — про это одно слово.

Начнём с того, из чего сделаны данные. Обучающие точки — не сама закономерность. Это закономерность плюс случайные отклонения:

\[ t_n = f(x_n) + \epsilon_n \]
\(t_n\)
target: то, что измерили
\(f\)
истинная функция — закономерность, которую хочется выучить и которую никто не видит. У профессора это target function (лекция 3, слайд 3), в конспекте — true function
\(\epsilon_n\)
шум (noise): случайная добавка со средним 0 и дисперсией \(\sigma^2\)

Сеть получает только числа \(t_n\). Где в каждом из них закономерность, а где случайность, не подписано. Жёсткая модель шум пропустит: ей нечем под него изогнуться. Гибкая модель умеет изобразить что угодно — значит, изобразит и шум.

мимо формы ловит шум underfitting good fit overfitting степень 1 степень 3 степень 12
Рис. 1. Одни и те же 15 точек и три полинома: степени 1, 3 и 12. Пунктир — истинная функция \(\sin x\), от которой точки отклонены шумом. Справа кривая попала почти в каждую точку и ради этого ушла от пунктира.

У двух крайних случаев есть имена. На экзамене они нужны по-английски.

Underfitting (недообучение) — модель слишком проста для структуры данных. Ошибка велика уже на обучающих точках и поэтому велика на новых.

Overfitting (переобучение) — модель выучила не только закономерность, но и шум обучающих точек. На них ошибка очень мала, на новых данных — велика.

У профессора оба определения сжаты до двух подписей к картинке (лекция 3, слайд 3): "Too simple models Underfit the data ..." и "Too complex models Overfit the data and do not Generalize". Во второй подписи два утверждения сразу: модель подогнала обучающие данные и при этом не обобщает. Сама картинка со слайда — на рис. 2 в следующем разделе.

Диагноз ставят по двум числам, а не по одному.
РежимTraining errorНа новых данных
underfittingвысокаявысокая
good fitнизкаячуть выше
overfittingочень низкаявысокая

Конспект сравнивает overfitting с зубрёжкой: кто заучил ответы к прошлогодним задачам, решит их блестяще и провалится на новых. Underfitting — другая беда: тема не понята вовсе, плохо и на старых задачах, и на новых.

Что именно срезает бритва

Из рис. 1 напрашивается правило, которое связывают с именем Уильяма Оккама. У профессора оно стоит сразу под тремя «but», на латыни и рядом с портретом автора (лекция 3, слайд 2): "Entia non sunt multiplicanda praeter necessitatem", подпись — William of Ockham (c 1285 – 1349). Перевод: «не следует умножать сущности без необходимости». Больше про Оккама на слайде ничего нет: что фраза значит для моделей, договаривает конспект (стр. 124 и 126).

Бритва Оккама (Ockham's razor) в машинном обучении: из моделей, которые объясняют обучающие данные, выбирай наименее сложную, которая всё ещё хорошо работает на новых данных.

«Бритва Оккама велит брать модель попроще». Нет: самую простую из тех, что объясняют данные. Прямая на рис. 1 проще всех и не объясняет ничего. Бритва срезает лишнюю сложность, а не нужную.

Underfitting — не всегда маленькая сеть

У сети причин для underfitting больше, чем у полинома. Конспект перечисляет пять:

«Training error высокая — значит, сети не хватает нейронов». Только первая причина из пяти — про размер. Вторая и третья — про оптимизацию: сеть могла бы выучить данные, но gradient descent до этого не дошёл. Прежде чем добавлять слои, посмотри, падает ли ещё ошибка.

Две ошибки: на своих точках и на новых

У каждой модели на рис. 1 есть две разные ошибки. Одну мы умеем считать. Другая нам на самом деле нужна.

\[ \hat E_{\text{train}} = \frac{1}{N}\sum_{n=1}^{N}\bigl(t_n - g(x_n|\vb{w})\bigr)^2 \] \[ E = \E_{x,t}\Bigl[\bigl(t - g(x|\vb{w})\bigr)^2\Bigr] \]
\(\hat E_{\text{train}}\)
training error: средний квадрат ошибки на \(N\) обучающих точках. Это число у нас есть
\(E\)
generalization error, она же true error: ожидаемая ошибка на новой точке \((x, t)\) из того же источника данных. Это число нам нужно
\(g(x|\vb{w})\)
выход сети с весами \(\vb{w}\); в конспекте он записан как \(f(x; w)\)

Посчитать \(E\) нельзя: для этого нужны все возможные точки. Её можно только оценить по точкам, которых модель не видела. Такую оценку называют test error, и ей посвящён следующий урок. Пока вопрос проще: когда маленькая \(\hat E_{\text{train}}\) обещает маленькую \(E\)?

Inductive hypothesis (индуктивная гипотеза), слово в слово со слайда (лекция 3, слайд 3): "A solution approximating the target function over a sufficiently large set of training examples will also approximate it over unobserved examples".

По-русски: решение, которое приближает целевую функцию на достаточно большом наборе обучающих примеров, будет приближать её и на примерах, которых оно не видело. В символах урока: при достаточно большом \(N\) маленькая \(\hat E_{\text{train}}\) обещает маленькую \(E\). Конспект (стр. 128) пишет ещё короче: \(\hat E_{\text{train}} \approx E\).

Три слова слайда в обозначениях урока. Solution — найденная модель \(g(x|\vb{w})\): сеть с весами, которые выдало обучение. Target function — истинная функция \(f\); не путай её с target \(t_n\), одним измеренным значением. Unobserved examples — новые точки, которых не было среди обучающих; их же называют unseen data.

Под гипотезой на том же слайде две картинки. Это не украшение: они показывают два способа не выполнить её условие.

M1(x) M2(x) y x не гнётся

"Too simple models Underfit the data ..."

Mn(x) M2(x) y x через все точки

"Too complex models Overfit the data and do not Generalize"

Рис. 2. Картинка слайда "Model Complexity" (лекция 3, слайд 3), точки схематичные; под панелями — слова профессора из облачков. Кружки — обучающие примеры, ось \(y\) слайда — наш target \(t\). Слева прямая \(M_1(x)\) не может изогнуться и идёт мимо формы точек. Справа \(M_n(x)\) проходит через каждую, ради этого мечется между ними, а у краёв уходит за рамку. Точечная парабола \(M_2(x)\) на обеих панелях одна и та же.

Обозначения \(M_1\), \(M_2\), \(M_n\) слайд не расшифровывает. По форме кривых индекс читается как степень полинома — та же ручка сложности, что на рис. 1. \(M_1\) — наша степень 1. \(M_2\) — модель подходящей сложности; на рис. 1 это степень 3, потому что там закономерность — синус, а не парабола. \(M_n\) — степень настолько высокая, что кривая проходит через каждую точку: на рис. 2 для девяти точек это степень 8, в лаборатории ниже для пятнадцати — степень 14. Истинной функции на слайде нет вовсе: её никто не видит, видны только кружки.

Теперь приложи к рис. 2 гипотезу. Прямая \(M_1\) не приближает даже обучающие примеры: посылка не выполнена, и обещать про новые точки нечего. Это underfitting. У \(M_n\) ошибка на обучающих примерах нулевая, но девять точек для модели с девятью коэффициентами — не "sufficiently large set". Посылка снова не выполнена, и вывод не сбывается: между точками кривая уходит от закономерности. Это overfitting. Параболе \(M_2\) с тремя коэффициентами тех же девяти точек хватает.

Отсюда и заголовок слайда — "Model Complexity": хватит ли примеров, зависит от сложности модели, которую по ним подгоняют.

Без этой гипотезы учиться на примерах бессмысленно. На слайде её условие умещается в два слова — "sufficiently large". Конспект (стр. 128) называет три условия, и каждое может сломаться:

Откуда третье условие? Если бы веса выбрали заранее, не глядя на данные, \(\hat E_{\text{train}}\) была бы честной оценкой \(E\): среднее по выборке сходится к ожиданию. Но веса выбраны как раз так, чтобы \(\hat E_{\text{train}}\) стала как можно меньше — на этих самых точках. Число, по которому оптимизировали, перестаёт быть честным измерением. Насколько оно занижено, зависит от того, сколько у модели свободы.

Из Applied Statistics это знакомо: \(R^2\) на обучающих данных не убывает, сколько регрессоров ни добавляй, — потому и придумали adjusted \(R^2\). Теперь посмотри на то же самое вживую.

Лаборатория: степень полинома и две ошибки

Пунктир — истинная функция \(\sin x\). Бирюзовые точки — 15 измерений \(t_n = \sin x_n + \epsilon_n\) с \(\sigma = 0.3\). Фиолетовая кривая — полином степени \(d\), подогнанный по ним минимизацией Sum of Squared Errors; степень играет роль числа нейронов. Малиновая заливка — расхождение модели с истиной. Ошибка на новых данных посчитана точно: средний квадрат этого расхождения по всему отрезку плюс \(\sigma^2\). На нижнем графике — обе ошибки для всех степеней сразу.

  1. Сначала предскажи: при какой степени training error будет наименьшей? А ошибка на новых данных? Теперь веди ползунок от 1 до 14.
    Что должно получиться

    Training error не растёт ни на одном шаге: от 0.279 до 0.000. При степени 14 у полинома 15 коэффициентов на 15 точек, и он проходит через каждую. Ошибка на новых данных минимальна при степени 3 (0.107), а при степени 14 превышает 120. Это главное, что показывает виджет: модель с лучшей training error — худшая на новых данных, поэтому выбирать сложность по training error нельзя.

  2. На нижнем графике найди степень, с которой бирюзовая кривая уходит под пунктир «шум \(\sigma^2\)». Что это значит?
    Что должно получиться

    Со степени 5: 0.065 при уровне шума 0.09. Сама \(\sin x\), то есть идеальная модель, даёт на этих 15 точках ошибку 0.089: точки отклонены от неё шумом. Ошибка заметно ниже этого уровня означает, что модель подстроилась под сами отклонения. А малиновая кривая под пунктир не опускается никогда.

  3. Поставь степень 12 и несколько раз нажми «Новая выборка»: точки \(x\) те же, шум новый. Что меняется сильнее — кривая или training error? Повтори для степени 1.
    Что должно получиться

    При степени 12 кривая каждый раз другая, особенно у краёв. Training error при этом остаётся крошечной (в первых двадцати выборках не больше 0.03), а ошибка на новых данных скачет от 0.3 до 3 и больше. При степени 1 прямая почти не двигается, и ошибка на новых данных держится около 0.3: от 0.29 до 0.37. Training error у прямой гуляет от 0.1 до 0.4, но это не модель меняется: число посчитано всего по 15 шумным точкам. Гибкая модель зависит от того, какая выборка ей досталась. В следующем разделе это свойство получит имя variance.

  4. Нажимай «Новая выборка» и следи за жёлтой отметкой минимума на нижнем графике. Окажется ли лучшей степень 1 или 14?
    Что должно получиться

    Нет. На 2000 разных выборок лучшей оказывается степень 3 в 61 % случаев, степень 5 — в 29 %, остальное приходится на 4, 6 и изредка 7. Левый край высоко, дно, правый край улетает — эта форма сохраняется всегда.

Почему training error не может вырасти? Полином степени \(d + 1\) умеет всё, что умеет полином степени \(d\): достаточно обнулить старший коэффициент. Значит, лучшая подгонка в большем семействе не хуже. С сетью так же: добавь скрытый нейрон с нулевым выходным весом — получится прежняя функция. Поэтому training error годится, чтобы подбирать веса, и не годится, чтобы выбирать сложность.

Training error с ростом сложности только падает; ошибка на новых данных сначала падает, потом растёт.

«Обучающие и тестовые данные из одного распределения — значит, \(E_{\text{test}} \approx E_{\text{train}}\)». Так выглядит формула (53) конспекта на стр. 130, и в таком виде она обещает лишнее. В лаборатории обе ошибки считаются по данным из одного источника — та же функция, тот же отрезок, тот же шум — при любой степени, но при степени 14 одна равна нулю, другая больше 120. Одно распределение — условие необходимое, а не достаточное: ещё нужно, чтобы точек было много по сравнению с гибкостью модели.

Что считается сложностью у сети

В лаборатории ручка сложности одна — степень. У сети их несколько, и конспект называет их общий результат словом capacity (ёмкость): способность модели подстроиться под данные.

К списку стоит добавить две ручки, которые не меняют архитектуру, но меняют эффективную гибкость: величину весов (её ограничивает weight decay, урок 22) и время обучения (early stopping, урок 20). Большая сеть, остановленная рано, ведёт себя как более простая.

Из чего состоит ошибка на новых данных

Третий опыт в лаборатории показал странную вещь: гибкая модель на другой выборке — уже другая модель. Сделаем из этого наблюдения формулу. Мысленный эксперимент такой: одну и ту же модель обучают много раз, каждый раз на новой обучающей выборке \(D\) из того же источника.

выборка A выборка B

Жёсткая модель: степень 1

выборка A выборка B

Гибкая модель: степень 12

Рис. 3. Две выборки из одного источника (кружки и крестики) и модель, обученная на каждой: сплошная линия — на A, точечная — на B. У жёсткой модели две прямые отличаются мало, и обе далеки от пунктира. У гибкой кривые в середине держатся около пунктира, но друг на друга не похожи.

Теперь зафиксируем одну точку \(x\) и спросим у каждой обученной модели её ответ в этой точке. Ответы разные, потому что выборки разные. У этого облака ответов есть центр и есть разброс — больше нам ничего не понадобится.

\[ \bar g(x) = \E_D\bigl[g_D(x)\bigr] \] \[ \text{Bias}(x) = \bar g(x) - f(x) \] \[ \text{Var}(x) = \E_D\Bigl[\bigl(g_D(x) - \bar g(x)\bigr)^2\Bigr] \]
\(g_D(x)\)
ответ модели, обученной на выборке \(D\), то есть \(g(x|\vb{w}_D)\); в конспекте \(\hat f(x)\)
\(\E_D\)
среднее по всем возможным обучающим выборкам — не по точкам \(x\) и не по эпохам
\(\bar g(x)\)
средний ответ, «средняя модель»
\(f(x)\)
истинная функция

Bias — систематическая ошибка: насколько средняя модель промахивается мимо истины. Он велик, когда модели не хватает гибкости, и новыми данными не лечится.

Variance — чувствительность к выборке: насколько ответ прыгает, когда обучающие точки заменяют другими из того же источника. Она велика, когда модель подстраивается под шум.

Noise \(\sigma^2\) — разброс самих измерений вокруг \(f(x)\). От модели он не зависит, поэтому его называют irreducible error.

Bias — куда модель целится в среднем; variance — насколько дрожит её рука.

«Bias — это тот самый \(w_0\)». Слово то же, вещь другая. В главе 2 bias был весом \(w_0\), смещением одного нейрона. Здесь bias — свойство всей модели: систематический промах её среднего ответа.

Три выстрела в одну точку

Посчитаем на числах. В точке \(x_0\) истинное значение \(f(x_0) = 2.0\), шум измерений \(\sigma^2 = 0.25\). Есть три модели разной гибкости. Каждую обучили на трёх выборках и записали её ответ в \(x_0\): жёсткая ответила 1.0, 1.4 и 1.2; средняя — 1.7, 2.2 и 1.8; гибкая — 1.0, 3.2 и 1.8.

истина f(x₀) = 2.0 bias variance три выборки жёсткая средняя гибкая 1.0 1.5 2.0 2.5 3.0 ответ в x₀
Рис. 4. Каждая точка — ответ модели, обученной на одной из трёх выборок; вертикальная чёрточка — среднее трёх ответов. У жёсткой модели ответы кучные, но среднее далеко от истины: это bias. У гибкой среднее точно на истине, но ответы разбросаны: это variance.

Для средней модели, шаг за шагом:

\[ \bar g = \frac{1.7 + 2.2 + 1.8}{3} = 1.9 \] \[ \text{Bias}^2 = (1.9 - 2.0)^2 = 0.01 \] \[ \text{Var} = \frac{0.2^2 + 0.3^2 + 0.1^2}{3} = 0.047 \]
Те же три модели в числах. Сумма — это \(\text{Bias}^2 + \text{Var} + \sigma^2\) с \(\sigma^2 = 0.25\): ожидаемая квадратичная ошибка на новом измерении в \(x_0\).
Модель\(\bar g\)\(\text{Bias}^2\)\(\text{Var}\)Сумма
жёсткая1.20.6400.0270.917
средняя1.90.0100.0470.307
гибкая2.00.0000.8271.077

В variance делят на число выборок, а не на «число минус один»: это среднее по определению, а не несмещённая оценка из Applied Statistics. Проверка для средней модели: средний квадрат отклонения ответов от истины \((0.3^2 + 0.2^2 + 0.2^2)/3 = 0.057\) — ровно \(0.010 + 0.047\).

Выигрывает средняя модель, хотя у неё нет рекорда ни по одному слагаемому. Последний столбец получен простым сложением, и это не приём для примера, а точное равенство.

\[ \begin{gathered} \E\bigl[(t - g_D(x))^2\bigr] = \\ \text{Bias}^2(x) + \text{Var}(x) + \sigma^2 \end{gathered} \]
слева
ожидаемая квадратичная ошибка в точке \(x\) на новом измерении \(t = f(x) + \epsilon\); усреднение по обучающим выборкам \(D\) и по шуму \(\epsilon\)
в конспекте
та же формула записана с \(y\) вместо \(t\) и \(\hat f(x)\) вместо \(g_D(x)\) и не говорит, по чему берётся ожидание

Конспект даёт формулу без вывода. Вывод короткий, и в нём всего два приёма: «добавить и вычесть» и «среднее от отклонения равно нулю».

  1. Новое измерение — это закон плюс шум. Чтобы не тащить аргумент, пишем \(f\), \(g_D\), \(\bar g\) вместо значений в точке \(x\). Ошибка модели на новой точке:

    \[ t - g_D = (f - g_D) + \epsilon \]
  2. Возводим в квадрат и берём ожидание. Получаются три слагаемых:

    \[ \begin{aligned} \E\bigl[(t - g_D)^2\bigr] = {} & \E\bigl[(f - g_D)^2\bigr] \\ & + 2\,\E\bigl[\epsilon\,(f - g_D)\bigr] \\ & + \E\bigl[\epsilon^2\bigr] \end{aligned} \]
  3. Шум нового измерения не зависит от обучающей выборки и в среднем равен нулю. Поэтому среднее произведения распадается на произведение средних и исчезает, а \(\E[\epsilon^2]\) — это дисперсия шума:

    \[ \E\bigl[\epsilon\,(f - g_D)\bigr] = \E[\epsilon]\cdot\E[f - g_D] = 0 \] \[ \E\bigl[\epsilon^2\bigr] = \sigma^2 \]
  4. Осталось первое слагаемое. Добавим и вычтем средний ответ \(\bar g\):

    \[ f - g_D = (f - \bar g) + (\bar g - g_D) \]

    Первая скобка — число: от выборки она не зависит. Вторая — отклонение модели от собственного среднего.

  5. Снова квадрат и ожидание по \(D\). Перекрёстный член исчезает, потому что \(\E_D[\bar g - g_D] = \bar g - \bar g = 0\) по определению \(\bar g\):

    \[ \begin{aligned} \E_D\bigl[(f - g_D)^2\bigr] = {} & (f - \bar g)^2 \\ & + \E_D\bigl[(g_D - \bar g)^2\bigr] \end{aligned} \]
  6. Собираем всё вместе и узнаём определения:

    \[ \begin{gathered} \E\bigl[(t - g_D)^2\bigr] = \underbrace{(\bar g - f)^2}_{\text{Bias}^2} \\ {} + \underbrace{\E_D\bigl[(g_D - \bar g)^2\bigr]}_{\text{Var}} + \underbrace{\sigma^2}_{\text{noise}} \end{gathered} \]

    Ни одно слагаемое не отрицательно, и ни одно не превращается в другое: это три независимых источника ошибки.

«Variance — это шум в данных». Шум \(\sigma^2\) — свойство данных, от модели он не зависит. Variance — свойство модели: насколько сильно она этот шум усиливает. Во второй лаборатории (она в следующем разделе) при одном и том же \(\sigma^2 = 0.09\) у прямой variance равна 0.012, а у полинома степени 12 — 1.02.

Trade-off: что двигает оптимум

В таблице про три выстрела bias и variance двигались в противоположные стороны. Это не совпадение, а типичная картина, и у неё есть имя: bias–variance trade-off. Посмотри на него в той же задаче с полиномами.

Тридцать выборок сразу: bias и variance

Тот же источник данных, но модель обучена на 30 разных выборках: 30 тонких кривых. Жирная кривая — средняя модель \(\bar g(x)\) по всем возможным выборкам; заливка между ней и пунктиром — bias. Толщина фиолетового пучка — variance. Числа под графиком усреднены по \(x\) и посчитаны точно, а не по этим 30 кривым. Нижний график — те же слагаемые для всех степеней: \(\text{Bias}^2\) (охристая заливка), variance (треугольники), уровень шума (пунктир) и их сумма (малиновые точки).

  1. Степень 1. Предскажи, что больше: \(\text{Bias}^2\) или variance? А при степени 12? Проверь ползунком.
    Что должно получиться

    Степень 1: \(\text{Bias}^2 = 0.199\), variance 0.012. Пучок тонкий, но весь мимо пунктира. Степень 12: \(\text{Bias}^2 = 0.000\), variance 1.024. Средняя кривая лежит на пунктире, а отдельные разлетаются. Главное в виджете: с ростом сложности \(\text{Bias}^2\) падает, variance растёт, и у их суммы есть минимум посередине.

  2. Найди степень с наименьшей суммой. Равны ли там \(\text{Bias}^2\) и variance?
    Что должно получиться

    Степень 3: \(0.005 + 0.022 + 0.090 = 0.117\). Слагаемые не равны: variance почти в пять раз больше. Оптимум — там, где минимальна сумма, а не там, где слагаемые сравнялись.

  3. Поставь степень 9 и увеличивай \(N\) с 15 до 60. Какое слагаемое изменится? Куда сдвинется минимум?
    Что должно получиться

    Только variance: 0.072 → 0.019, пучок сжимается. \(\text{Bias}^2\) и шум не меняются. Минимум суммы переезжает со степени 3 на степень 5: чем больше данных, тем более сложную модель можно себе позволить.

  4. Верни \(N = 15\) и поставь степень 14: сумма около 195. Не трогая степень, уменьшай \(\sigma\) до нуля. Что останется от ошибки?
    Что должно получиться

    Ничего: все четыре числа под графиком равны 0.000. Variance пропорциональна \(\sigma^2\): в этом виджете точки \(x\) фиксированы, и выборки отличаются только шумом. Без шума полином проходит через 15 точных значений \(\sin x\) и воспроизводит её. Overfitting — это подгонка под шум: нет шума — нечего подгонять.

Итог двух лабораторий помещается в таблицу. В конспекте это Table 1; здесь в ней заменено одно слово.

Сложность модели, bias и variance.
СложностьBiasVariance
низкая (underfitting)высокийнизкая
оптимальнаяумеренныйумеренная
высокая (overfitting)низкийвысокая

«Оптимум — там, где bias и variance сравнялись». Так легко прочитать подпись к Table 1 на стр. 130 конспекта: "The optimal model complexity is where bias and variance are balanced", и в самой таблице в строке оптимума дважды стоит Balanced. Равенства в оптимуме нет: оптимум — это минимум суммы \(\text{Bias}^2 + \text{Var}\). Во второй лаборатории при оптимальной степени 3 слагаемые равны 0.005 и 0.022: разница почти в пять раз. Уравновешены в минимуме не сами слагаемые, а их изменения: следующий шаг сложности убавляет \(\text{Bias}^2\) меньше, чем прибавляет variance. Поэтому в таблице выше вместо Balanced стоит «умеренный».

Три ручки помимо сложности

Третий и четвёртый опыты показали, что сложность — не единственное, от чего зависит overfitting. Вот полный список с направлениями.

Что происходит, когда растёт одна величина. Параметры — это нейроны, слои, степень полинома. Шум, кроме variance, поднимает и неустранимый пол \(\sigma^2\).
Что растёт\(\text{Bias}^2\)\(\text{Var}\)Overfitting
параметрыпадаетрастётсильнее
данные \(N\)—падаетслабее
шум \(\sigma^2\)—растётсильнее
регуляризациярастётпадаетслабее

Вторая строка — главная практическая новость: variance убывает примерно как \(1/N\). Поэтому одна и та же сеть на маленьком датасете переобучается, а на большом нет. Последняя строка — план следующих уроков: early stopping (урок 20), weight decay (урок 22) и dropout (урок 23) в умеренной дозе покупают большое снижение variance ценой небольшого bias. Перестараться тоже можно: слишком сильная регуляризация — четвёртая причина underfitting из списка в первом разделе.

test error training error ошибка 0 0.1 0.2 0.3 0.4 0.5 1 3 5 7 9 11 шум σ² оптимум обе высокие разрыв растёт ← underfitting степень полинома overfitting →
Рис. 5. Те же полиномы,\(N = 15\), \(\sigma = 0.3\); обе ошибки усреднены по всем возможным выборкам. Training error падает почти до нуля: 0.012 при степени 12 и ровно 0 при степени 14. Test error — ожидаемая ошибка на новых данных — минимальна при степени 3, ниже пунктира шума не опускается, а справа уходит за рамку: при степени 12 это уже 1.11.

«Оптимум — там, где кривые пересекаются». На рис. 16 конспекта (стр. 131) training error сначала нарисована выше test error, кривые пересекаются, и отметка оптимума стоит рядом с пересечением. Это случайность нарисованных шумных кривых. Оптимум — минимум test-кривой, как и сказано в подписи к тому рисунку; на рис. 5 кривые не пересекаются вовсе.

У сети есть ещё одна ось сложности — время обучения: чем дольше идёт gradient descent, тем точнее подогнаны обучающие точки. Поэтому рис. 5 повторяется с эпохами по горизонтали. Такой график есть на стр. 126 конспекта, и на нём основан early stopping из урока 20.

Всегда ли больше параметров — больше overfitting?

Нет. Во-первых, эффективную сложность задаёт не только число параметров: регуляризация и ранняя остановка удерживают и большую сеть. Во-вторых, у очень больших сетей наблюдают double descent: за пиком ошибка на новых данных снова снижается. Это за пределами конспекта и на экзамен не выносится. Знать и уметь объяснить нужно классическую U-образную кривую.

Вернёмся к слону

Теперь слова фон Неймана читаются как утверждение о training error. Четыре параметра проходят через четыре точки. Пятнадцать — через пятнадцать: в первой лаборатории это степень 14. Сеть из урока 12 — через сколько угодно. Согласие с точками, под которые модель подгоняли, — не довод: при достаточном числе параметров оно гарантировано заранее.

Universal approximation theorem и бритва Оккама отвечают на разные вопросы. Теорема — про то, что сеть может представить. Бритва — про то, что сеть выучит из \(N\) шумных точек. Гибкость снижает bias, но платят за неё variance, и тем дороже, чем меньше данных и чем больше в них шума. Отсюда и приговор Ферми: достоинство теоремы становится недостатком ровно тогда, когда свободы у модели больше, чем могут удержать данные.

А довод — это ошибка на точках, которые в подгонке не участвовали. Весь остаток главы 3 — инструменты: как такую ошибку честно измерить (уроки 18–19) и как удержать variance, не вернув bias (уроки 20–23).

Слона, кстати, можно посмотреть: рисунок 2010 года и вся история собраны в статье Von Neumann's elephant.

В формате экзамена

Define underfitting and overfitting. How do you recognize each of them from the training error and the error on unseen data?

Show model answer

Underfitting: the model is too simple (or not trained enough) to capture the structure of the data. Both the training error and the error on unseen data are high.

Overfitting: the model is too complex for the available data: it fits the random noise of the training set in addition to the underlying pattern, so it does not generalize. The training error is very low, while the error on unseen data is much higher.

As model complexity grows, the training error keeps decreasing, whereas the error on unseen data first decreases and then increases. The best complexity is at the minimum of the error on unseen (validation) data.

Проверяют три вещи: в каждом определении названы обе ошибки; в определении overfitting есть слово noise; сказано, что диагноз требует данных, не участвовавших в обучении. Ответ «overfitting — когда ошибка на тесте большая» — половина балла: то же верно для underfitting. Формулировки профессора (лекция 3, слайд 3) стоит помнить дословно: "Too simple models Underfit the data ..." и "Too complex models Overfit the data and do not Generalize".

State the inductive hypothesis on which learning from examples relies. Under which conditions can it be trusted, and what makes it fail?

Show model answer

A solution approximating the target function over a sufficiently large set of training examples will also approximate it over unobserved examples. In terms of errors: with enough training examples, a small training error implies a small expected (true) error, \(\hat E_{\text{train}} \approx E\).

It can be trusted when (i) training examples and unobserved examples are i.i.d. samples from the same distribution, (ii) the training set is sufficiently large compared with the complexity of the model, and (iii) the model captures the underlying structure rather than the noise.

It fails under distribution shift, with a small dataset, and with a model that is too complex for the data. The weights are chosen to minimize the error on those very training points, so the training error is an optimistic estimate of the true error, and the gap grows with model complexity: overfitting.

Баллы — за само утверждение и за условия. Первая фраза ответа — дословно со слайда (лекция 3, слайд 3); её опорные слова — target function, sufficiently large set, unobserved examples. Не называй это inductive bias: так делает конспект (стр. 128 и 130), а на слайде стоит только Inductive Hypothesis. Inductive bias — другое понятие: предпочтения самого алгоритма, например бритва Оккама.

A feed-forward neural network with one hidden layer is a universal approximator. Explain why this does not guarantee good generalization, and what Ockham's razor suggests.

Show model answer

The theorem is an existence statement about what the network can represent: with enough hidden units it can approximate any continuous (more generally, measurable) function on a compact set to any desired degree of accuracy (Hornik, 1991). A single layer can do it, but it doesn't mean we can find the necessary weights, an exponential number of hidden units may be required, and it might be useless in practice if it does not generalize. The theorem says nothing about what is learned from a finite, noisy training set.

A model that can represent anything can also represent the noise in the training targets, so a very low training error can be reached without learning the underlying function: overfitting.

Ockham's razor, "Entia non sunt multiplicanda praeter necessitatem" (entities must not be multiplied beyond necessity): among the models that explain the training data, prefer the least complex one that still generalizes. In practice: select the model on held-out data, limit the number of units, or regularize (weight decay, early stopping, dropout).

Экзаменатор ждёт противопоставления «represent — learn» и слова noise. Частая ошибка — пересказать теорему и остановиться: вопрос не о ней, а о том, чего она не обещает. У профессора теорема, три «but» и латинская фраза Оккама стоят на одном слайде (лекция 3, слайд 2); первая половина вопроса — это третье «but»: "… but it might be useless in practice if it does not generalize!"

At a query point \(x_0\) the true function value is \(f(x_0) = 2.0\) and the noise variance is \(0.25\). The same model is trained on three different training sets and predicts \(1.7\), \(2.2\) and \(1.8\) at \(x_0\). Treating these three runs as the expectation over training sets, compute the expected squared error on a new noisy target at \(x_0\).

Show model answer

Mean prediction, squared bias and variance over the three training sets:

\[ \bar g = \frac{1.7 + 2.2 + 1.8}{3} = 1.9 \] \[ \text{Bias}^2 = (1.9 - 2.0)^2 = 0.01 \] \[ \text{Var} = \frac{0.04 + 0.09 + 0.01}{3} = 0.0467 \]

Expected squared error = bias² + variance + noise:

\[ 0.01 + 0.0467 + 0.25 = 0.307 \]

Две ловушки: забыть прибавить шум (получится 0.057) и поделить в variance на 2 вместо 3 (получится 0.33). Обе дают ответ вне допуска.

Write the bias–variance decomposition of the expected squared error at a point \(x\). Define each term, state what the expectations are taken over, and say how the terms change with model complexity.

Show model answer

Let \(t = f(x) + \epsilon\), where the noise \(\epsilon\) has zero mean and variance \(\sigma^2\) and is independent of the training set. Let \(g_D\) be the model trained on training set \(D\), and \(\bar g(x) = \E_D[g_D(x)]\) its average prediction. Then

\[ \begin{gathered} \E\bigl[(t - g_D(x))^2\bigr] = \bigl(\bar g(x) - f(x)\bigr)^2 \\ {} + \E_D\bigl[(g_D(x) - \bar g(x))^2\bigr] + \sigma^2 . \end{gathered} \]

The expectations are taken over training sets \(D\) (and over the noise of the new target).

Bias²: systematic error of the average model; high for models that are too simple. Variance: sensitivity of the prediction to the particular training set; high for models that are too flexible. Noise \(\sigma^2\): irreducible, independent of the model.

Increasing complexity lowers the bias and raises the variance, so the expected error is U-shaped; the best complexity minimizes bias² + variance. More training data reduces the variance only.

Полный балл — за квадрат у bias, за третье слагаемое и за фразу «over training sets». Если на экзамене просят вывод, хватит двух шагов из степпера: отделить шум и добавить-вычесть \(\bar g\).

A network clearly overfits: its training error is 0.01 and its validation error is 0.30. Which of the following are expected to reduce the variance term? Select all that apply.

  • Collecting more training data Variance убывает примерно как 1/N; bias при этом не меняется.
  • Reducing the number of hidden neurons Меньше capacity — меньше variance, ценой некоторого bias.
  • Adding weight decay Регуляризация ограничивает эффективную сложность.
  • Training for more epochs Дольше учить — точнее подгонять обучающие точки вместе с шумом: variance растёт.
  • Adding one more hidden layer Больше параметров — больше capacity: bias не выше, variance выше.
Show model answer

More data, fewer hidden neurons and weight decay. The other two options increase the effective complexity of the model and therefore its variance.

Вопрос проверяет, что ты связываешь overfitting именно с variance и помнишь четыре строки таблицы из раздела про trade-off.

Four networks with \(J\) hidden neurons are trained on the same data. The noise variance of the targets is about 0.09. Which one do you select?

\(J\)Training MSEValidation MSE
20.280.30
50.100.11
200.040.15
1000.000.58
  • \(J = 2\) Обе ошибки высокие и почти равны: underfitting.
  • \(J = 5\) Минимальная validation MSE, и обе ошибки близки к уровню шума 0.09.
  • \(J = 20\) Training MSE уже вдвое ниже уровня шума, validation пошла вверх: начало overfitting.
  • \(J = 100\) Нулевая training MSE на шумных данных — признак того, что шум выучен.
Show model answer

\(J = 5\): it has the lowest validation error, and both of its errors are close to the noise level. \(J = 2\) underfits (both errors high), \(J = 20\) and \(J = 100\) overfit (training error well below the noise level, growing gap).

Выбирают по validation, а не по training error. Уровень шума в условии — подсказка: training MSE заметно ниже него означает подгонку под шум.

Проверь себя

Сеть обучена. Training error 0.25, ошибка на отложенных данных 0.27, шум в данных оценивают в 0.05. Что это?

  • Underfitting Обе ошибки высокие, близкие друг к другу и далеко выше уровня шума: закономерность не поймана.
  • Overfitting Для него нужен разрыв: на обучающих точках мало, на новых много. Здесь разрыва почти нет.
  • Хорошая модель Хорошая модель подошла бы к уровню шума, то есть к 0.05, а не к 0.25.
  • По двум числам сказать нельзя Как раз можно: диагноз ставят по этой паре чисел, сверяя её с уровнем шума.

Что такое variance в bias–variance decomposition?

  • Дисперсия шума в данных Это отдельное слагаемое \(\sigma^2\): оно не зависит от модели.
  • Разброс ответа модели в точке \(x\) при замене обучающей выборки Ожидание в определении берётся по обучающим выборкам \(D\).
  • Разброс training error от эпохи к эпохе Эпохи тут ни при чём: меняется выборка, а не момент обучения.
  • Разброс ответов модели по разным точкам \(x\) Точка \(x\) зафиксирована. Модель, которая отвечает по-разному в разных точках, просто не константа.

Модель переобучается. Что из перечисленного ослабит overfitting?

  • Собрать больше обучающих данных Variance убывает примерно как \(1/N\).
  • Уменьшить число скрытых нейронов Меньше параметров — меньше свободы подгонять шум.
  • Добавить регуляризацию Небольшой рост bias в обмен на заметное падение variance.
  • Получить измерения с меньшим шумом Variance пропорциональна \(\sigma^2\): меньше шума — нечего подгонять.
  • Учить дольше, пока training error не станет нулём Нулевая training error на шумных данных и есть overfitting.
  • Добавить скрытый слой Это увеличивает capacity, а значит, и variance.

Четыре верных ответа — это четыре строки таблицы из раздела про trade-off, прочитанные в сторону уменьшения variance.

Где находится оптимальная сложность модели?

  • Там, где \(\text{Bias}^2 = \text{Var}\) Во второй лаборатории в оптимуме слагаемые равны 0.005 и 0.022.
  • Там, где минимальна training error Она минимальна у самой сложной модели — худшей на новых данных.
  • Там, где минимальна сумма \(\text{Bias}^2 + \text{Var}\) Шум от сложности не зависит, так что это же и минимум ошибки на новых данных.
  • Там, где пересекаются кривые training и test error В среднем эти кривые не пересекаются: training error лежит ниже.

Обучающих точек стало в четыре раза больше, модель та же. Что произойдёт со слагаемыми ошибки?

  • \(\text{Bias}^2\) уменьшится Bias — свойство семейства моделей: прямая не станет гибче от новых точек.
  • Variance уменьшится, остальное не изменится Больше точек — модель слабее реагирует на шум каждой из них.
  • Шум \(\sigma^2\) уменьшится Новые точки измерены с тем же шумом; он неустраним.
  • Уменьшатся все три Только variance. Поэтому при большом \(N\) выгодна более сложная модель.

Следствие: с ростом \(N\) оптимум сдвигается к более сложным моделям — во второй лаборатории со степени 3 на степень 5.

Полином степени 14 прошёл через все 15 обучающих точек, training error равна нулю. Что это говорит о модели?

  • Закономерность найдена точно Точки содержат шум; пройти через них — значит воспроизвести и его.
  • В данных нет шума Шум есть, просто модель его выучила.
  • Ничего: 15 коэффициентов проходят через любые 15 точек Согласие, гарантированное заранее, не довод. Это и есть слон фон Неймана.
  • У модели большой bias Наоборот: bias мал, велика variance.

Унести с собой

Что посмотреть и почитать