Пружины на весах

После этого урока ты запишешь error function с weight decay, сделаешь шаг градиентного спуска «с усадкой», выведешь штраф из Gaussian prior и объяснишь, чему равна \(\gamma\) и как её выбирают.

Десять точек: синусоида с шумом, все значения лежат между −1.5 и 1.1. Через десять точек можно провести многочлен девятой степени — у него как раз десять коэффициентов. Он пройдёт через каждую точку, ошибка на обучении ровно ноль. Теперь загляни в сами коэффициенты: −196, 123, 109, 104. Числа в сотни, чтобы описать данные размером с единицу.

Привяжи каждый коэффициент к нулю слабой пружиной. Кривая перестанет попадать точно в точки, зато на десяти новых точках ошибка упадёт с 5.99 до 1.33. Вся пружина — одно слагаемое в error function (функции ошибки): \(\gamma \sum_q w_q^2\).

Два вопроса на этот урок. Почему запрет на большие числа лечит переобучение? И почему именно квадрат: кто решил, что пружина — «правильное» наказание? К концу окажется, что этот квадрат — колокол Гаусса, с которого сняли логарифм, а жёсткость пружины задаётся отношением двух дисперсий.

Большие веса — инструмент переобучения

В уроке 17 бритва Оккама советовала: из моделей, которые одинаково хорошо объясняют данные, бери простую. В уроке 20 сложность ограничивали временем: early stopping (ранняя остановка) прерывал обучение, пока сеть не начала заучивать шум. Сегодня второй способ — ограничить сами веса. Третий, dropout, ждёт в уроке 23.

Сначала о том, чем плохи большие веса. Вернись к многочлену из задачки. Чтобы пройти через все десять шумных точек, кривой приходится резко поворачивать между ними. Резкий поворот многочлен умеет делать одним способом: взять огромные коэффициенты с разными знаками, которые почти уничтожают друг друга. Сумма получается маленькой, но стоит чуть сдвинуть \(x\) — баланс рушится, и кривая улетает.

У нейронной сети та же история, и её проще увидеть. Возьми один скрытый нейрон с одним входом: \(h = \tanh(wx)\).

1 −1 x h почти прямая

Маленький вес: \(h = \tanh(0.3x)\)

1 −1 x h ступенька

Большой вес: \(h = \tanh(10x)\)

Рис. 1. Один и тот же нейрон. С маленьким весом он работает на почти прямом участке tanh, с большим — превращается в ступеньку.

Сеть из нейронов с маленькими весами близка к линейной функции — самой простой из возможных. Из ступенек же собирается сколь угодно изломанная функция, в том числе та, что проходит через каждую шумную точку.

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

Конспект говорит то же одной фразой (стр. 164): сеть, которой позволили свободно минимизировать ошибку, может взять очень большие веса, чтобы подогнать каждую деталь. Отсюда идея: сделать большие веса дорогими.

Штраф за размер весов

У идеи «заранее ограничить модель» есть имя, и слайды начинают тему именно с него.

Regularization (регуляризация) — ограничение «свободы» модели, которое опирается на априорное предположение о ней и нужно, чтобы уменьшить переобучение. Это определение профессора (лекция 3, слайд 14): там сказано "constraining the model «freedom»", а предположение названо a-priori assumption.

У weight decay предположение такое: веса сети малы. Способ прямолинейный: к ошибке на данных прибавляют слагаемое, которое растёт вместе с весами.

Weight decay («затухание весов»), или L2 regularization (L2-регуляризация), — приём против переобучения: к error function добавляют штраф, пропорциональный сумме квадратов всех весов сети. Архитектура и число весов остаются прежними; меняется то, какие значения весов выгодны. На слайдах (лекция 3, слайды 14–15) приём называется weight decay или weights regularization; названия «L2» там нет, оно из конспекта (стр. 164).

\[ \begin{aligned} E(\vb{w}) = {} & \underbrace{\sum_{n=1}^{N} \big(t_n - g(x_n|\vb{w})\big)^2}_{\text{Fitting}} \\ & + \underbrace{\gamma \sum_{q=1}^{Q} w_q^2}_{\text{Regularization}} \end{aligned} \]
\(t_n\)
target (целевое значение) для примера \(n\)
\(g(x_n|\vb{w})\)
выход сети; первое слагаемое — Sum of Squared Errors (сумма квадратов ошибок) на training set
\(w_q\)
\(q\)-й вес: один индекс \(q\) перебирает подряд все веса \(w_{ji}^{(l)}\) всех слоёв
\(Q\)
число весов сети: \(q = 1, \dots, Q\)
\(\gamma\)
regularization parameter, он же weight decay coefficient: сила штрафа, \(\gamma \ge 0\)

В таком виде функция стоит у профессора (лекция 3, слайд 15), с теми же подписями под слагаемыми: Fitting и Regularization. Пределы суммы по весам, от \(q = 1\) до \(Q\), тоже оттуда; дальше в уроке для краткости стоит \(\sum_q\). Откуда эта сумма берётся на слайде, покажет раздел 4.

Теперь оптимизатор ищет компромисс. Вырастить вес стоит денег: большой \(w_q\) окупится, только если он уменьшает первое слагаемое сильнее, чем увеличивает второе.

w 0 wMAP wMLE штраф тянет к нулю данные тянут сюда равновесие
Рис. 2. Два растяжения, одно равновесие. Охристая пружина — штраф, синяя — ошибка на данных. Вес останавливается там, где их силы равны. Обозначения \(w_{\mathrm{MLE}}\) и \(w_{\mathrm{MAP}}\) объяснятся в разделе 4.

Пружина здесь не просто образ. Энергия пружины жёсткости \(k\), растянутой на \(w\), равна \(\tfrac{1}{2}kw^2\). Штраф \(\gamma w_q^2\) — это в точности энергия пружины жёсткости \(2\gamma\), привязавшей вес к нулю. Конспект так и пишет: оптимизатор минимизирует «both error and weight energy».

\[ E_{\mathrm{reg}}(w) = E_{\mathrm{train}}(w) + \frac{\gamma}{2}\sum_q w_q^2 \] \[ E_{\mathrm{train}}(w) = \frac{1}{N}\sum_{i=1}^{N} L\big(y_i, f(x_i; w)\big) \]

\(y_i\) — target, \(f(x_i; w)\) — выход сети.

\(t_n\) вместо \(y_i\), \(g(x_n|\vb{w})\) вместо \(f(x_i; w)\).

Ошибка — Sum of Squared Errors, без \(\frac{1}{N}\); штраф без \(\frac{1}{2}\), сумма по \(q\) от 1 до \(Q\).

Смысл один, отличается масштаб: множители \(\frac{1}{2}\) и \(\frac{1}{N}\) прячутся в \(\gamma\). Поэтому число \(\gamma\) из одного источника нельзя переносить в формулу другого, не посмотрев, как записан штраф.

Что делает \(\gamma\)

При \(\gamma = 0\) штрафа нет — обычное обучение. Маленькая \(\gamma\) почти не мешает весам расти: модель гибкая, у неё большая variance (разброс). Большая \(\gamma\) прижимает веса к нулю: модель простая, растёт bias (систематическая ошибка). Где-то между ними ошибка на новых данных минимальна.

Обрати внимание: ни один вес не удалён. Номинальная ёмкость сети — число весов — прежняя. Уменьшилась эффективная ёмкость (effective capacity): какой частью своей свободы сеть реально пользуется.

Если всё это кажется знакомым — так и есть. Для модели, линейной по весам, weight decay — это ridge regression (гребневая регрессия) из Applied Statistics, и минимум находится точно: \(\vb{w} = (X\T X + \gamma I)^{-1} X\T \vb{t}\). Многочлен линеен по своим коэффициентам, поэтому в лаборатории ниже градиентный спуск не нужен.

Лаборатория weight decay

Та самая задачка: модель \(g(x|\vb{w}) = \sum_{q=0}^{9} w_q x^q\), десять training-точек и десять validation-точек вокруг \(\sin(\pi x)\). Сверху — кривая, снизу — ошибки в зависимости от \(\gamma\) и размеры весов в логарифмической шкале (столбик до 2 — это сотни, до 0 — единицы). Обе ошибки считаются без штрафа; сам штраф показан отдельным числом.

  1. Ползунок стоит в крайнем левом положении: штрафа практически нет, и кривая проходит через все десять training-точек. Прежде чем смотреть на числа: чему равна \(E_{\mathrm{train}}\)? А \(E_{\mathrm{val}}\) — больше или меньше?
    Что должно получиться

    \(E_{\mathrm{train}} = 0.00\): десять коэффициентов на десять точек. Зато \(E_{\mathrm{val}} = 5.99\): между точками кривую носит, у левого края она взлетает до 3.2. Самый большой вес — \(w_7 = -196\), столбики доходят до сотен, плюсы и минусы идут вперемешку.

  2. Теперь медленно веди \(\gamma\) вправо: кривые ошибок рисуются по мере движения. Может ли бирюзовая \(E_{\mathrm{train}}\) хоть где-то пойти вниз? Что делает малиновая \(E_{\mathrm{val}}\)?
    Что должно получиться

    \(E_{\mathrm{train}}\) только растёт: чем сильнее штраф, тем хуже подгонка под training-точки. \(E_{\mathrm{val}}\) сначала падает — с 5.99 до 1.33 при \(\gamma \approx 5.6 \cdot 10^{-3}\), — потом растёт. Это главное, что показывает лаборатория: у ошибки на новых данных есть дно, у ошибки на обучении его нет. Поэтому \(\gamma\) выбирают по validation set. В точке дна самый большой вес равен 2.7 вместо 196, а заплачено за это ростом \(E_{\mathrm{train}}\) до 0.56.

  3. Доведи \(\gamma\) до 100. Что стало с кривой и весами? Это переобучение или недообучение?
    Что должно получиться

    Все веса меньше 0.03, кривая легла на ноль и не замечает синусоиду: \(E_{\mathrm{train}} = 4.34\), \(E_{\mathrm{val}} = 7.89\) — хуже, чем совсем без штрафа. Это недообучение, underfitting: слишком жёсткие пружины не дают выучить даже то, что в данных действительно есть.

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

    Нет. В шести выборках дно оказывается при \(\gamma\) от примерно \(2 \cdot 10^{-6}\) до 0.03. Форма U сохраняется, а положение дна зависит от данных — в том числе от шума в десяти validation-точках. Универсальной «правильной» \(\gamma\) нет, её подбирают заново для каждой задачи.

«Чем сильнее регуляризация, тем безопаснее». Нет: \(E_{\mathrm{val}}\) как функция \(\gamma\) имеет форму U. Слишком большая \(\gamma\) даёт underfitting — и на первой выборке лаборатории это оказалось хуже, чем полное отсутствие штрафа: 7.89 против 5.99.

Почему decay: каждый шаг сжимает вес

Название weight decay («затухание весов») становится понятным, если записать шаг градиентного спуска. На слайдах лекции 3 такого шага нет: там есть только сама функция ошибки (слайд 15), а шаг получается из неё дифференцированием. Производная штрафа \(\gamma w_q^2\) по \(w_q\) равна \(2\gamma w_q\), поэтому:

\[ w_q \leftarrow w_q - \eta\Big(\pd{E_{\mathrm{train}}}{w_q} + 2\gamma w_q\Big) \] \[ w_q \leftarrow \underbrace{(1 - 2\eta\gamma)}_{\text{усадка}}\, w_q - \eta\,\pd{E_{\mathrm{train}}}{w_q} \]
\(\eta\)
learning rate (шаг обучения)
\(E_{\mathrm{train}}\)
первое слагаемое: ошибка на данных, без штрафа
\(1 - 2\eta\gamma\)
множитель чуть меньше единицы

Вторая строка — это первая, в которой собраны слагаемые с \(w_q\). Она читается как два действия: сначала вес умножают на число чуть меньше единицы, потом делают обычный шаг по градиенту ошибки на данных.

1.85 1.90 1.95 2.00 w шаг: −0.05

Без штрафа: 2.00 → 1.95

1.85 1.90 1.95 2.00 w усадка: ×0.95 шаг: −0.05

Со штрафом: 2.00 → 1.90 → 1.85

Рис. 3. Один шаг для \(w = 2\), \(\partial E_{\mathrm{train}}/\partial w = 0.5\), \(\eta = 0.1\). Справа добавлен штраф с \(\gamma = 0.25\) (взята крупной, чтобы усадку было видно): множитель \(1 - 2 \cdot 0.1 \cdot 0.25 = 0.95\).

Если данные про этот вес молчат — градиент ошибки равен нулю, — остаётся одна усадка, и после \(k\) шагов от веса остаётся доля \((1 - 2\eta\gamma)^k\). Это геометрическое затухание, отсюда слово decay. При \(\eta = 0.1\), \(\gamma = 0.01\) множитель равен 0.998, и за 347 шагов вес уменьшается вдвое. Вес выживает, только если данные на каждом шаге заново за него «платят».

Производная штрафа: \(2\gamma w_q\).

Множитель усадки: \(1 - 2\eta\gamma\).

Производная штрафа: \(\gamma w_q\).

Множитель усадки: \(1 - \eta\gamma\). Половинку в штрафе ставят как раз затем, чтобы сократить двойку.

Проверь на числах \(w = 2\), \(\partial E_{\mathrm{train}}/\partial w = 0.5\), \(\eta = 0.1\), \(\gamma = 0.01\). Шаг по градиенту в обоих случаях равен \(0.1 \cdot 0.5 = 0.05\), отличается только усадка:

На экзамене сначала посмотри, как в условии записан штраф, и продифференцируй именно его. Формула шага получается в одну строку, а перепутанная двойка стоит балла.

Не все веса сжимаются одинаково

Пружины у всех весов одинаковые, а результат разный. Он зависит от того, насколько крепко данные «держат» вес.

wMLE wMAP 0 w₁ w₂ ошибка: эллипсы штраф: круги γ растёт пологое сдаётся первым
Рис. 4. Два веса. Синие эллипсы — линии равной ошибки на данных с центром в \(w_{\mathrm{MLE}}\), охристые круги — линии равного штрафа с центром в нуле. Фиолетовая линия — где оказывается решение при росте \(\gamma\). Вдоль пологого направления \(w_1\) оно уходит к нулю почти сразу, вдоль крутого \(w_2\) держится до больших \(\gamma\).

В направлении, где ошибка на данных круто растёт, пружина почти ничего не сдвигает. В пологом направлении, где данным всё равно, вес уезжает к нулю почти без сопротивления. Weight decay убирает не «всё понемногу», а в первую очередь то, что данные не подтверждают.

Насколько именно сжимается каждое направление?

Около минимума ошибка на данных похожа на чашу. Если вдоль направления \(i\) она равна \(\lambda_i (w_i - w_i^{*})^2\), где \(w_i^{*}\) — положение минимума без штрафа, а \(\lambda_i\) — крутизна, то минимум суммы со штрафом \(\gamma w_i^2\) находится из равенства нулю производной:

\[ w_i = \frac{\lambda_i}{\lambda_i + \gamma}\, w_i^{*} \]

При \(\gamma = 1\): крутое направление \(\lambda = 10\) сохраняет долю 0.91, среднее \(\lambda = 1\) — ровно половину, пологое \(\lambda = 0.1\) — всего 0.09. Это та же картина, что у ridge regression в Applied Statistics: сильнее всего сжимаются направления, вдоль которых данные почти не меняются, — главные компоненты с малой дисперсией.

И ещё одно чтение рис. 4. В точке \(w_{\mathrm{MAP}}\) эллипс ошибки касается круга штрафа. Значит, ту же точку даёт задача с ограничением: минимизировать ошибку на данных при условии \(\sum_q w_q^2 \le C\). Коэффициент \(\gamma\) в ней — множитель Лагранжа: чем больше \(\gamma\), тем меньше круг \(C\).

Ещё одно следствие квадрата. Пусть два входа несут одно и то же, и сети нужно \(w_1 + w_2 = 1\). Вариант \((1, 0)\) стоит \(1^2 + 0^2 = 1\), вариант \((0.5, 0.5)\) — вдвое дешевле: 0.5. L2 предпочитает раздать вес поровну, а не ставить всё на один вход. Конспект называет это distributed representation (распределённое представление).

Смещения \(w_0\) обычно не штрафуют: сдвиг функции вверх-вниз не делает её сложнее. Это практика, а не слайды: на слайде 15 лекции 3 штраф — сумма по всем \(Q\) весам без оговорок, и на экзамене формулу пиши так. А входы перед обучением стандартизуют (z-standardisation из Applied Statistics), иначе штраф зависит от единиц измерения: вес при входе в миллиметрах в тысячу раз меньше, чем при том же входе в метрах, и пружина его почти не заметит.

Откуда квадрат: от MLE к MAP

Пока штраф выглядит как удачный трюк. Теперь покажем, что он следует из одного предположения о весах — так же, как в уроке 15 Sum of Squared Errors следовала из предположения о шуме.

Напоминание. MLE выбирает веса, при которых наблюдаемые данные наиболее вероятны: \(\vb{w}_{\mathrm{MLE}} = \argmax_{\vb{w}} P(D|\vb{w})\). Эта формула с подписью Maximum Likelihood стоит и у профессора (лекция 3, слайд 14), с напоминанием: до сих пор максимизировали именно likelihood данных. При гауссовом шуме это то же, что минимизировать сумму квадратов ошибок. У MLE нет мнения о самих весах: огромные и крошечные для неё равноправны, лишь бы данные объяснялись.

А у тебя такое мнение часто есть. Термометр за окном в июле показывает −5 °C. Ты не поверишь: ещё до измерения известно, какие температуры в июле правдоподобны. Это знание называется prior (априорное распределение). Показание термометра — данные. Разумный вывод лежит между ними, и тем ближе к prior, чем хуже термометр.

Правило Байеса записывает это рассуждение одной строкой.

\[ P(\vb{w}|D) = \frac{P(D|\vb{w})\,P(\vb{w})}{P(D)} \]
\(P(\vb{w}|D)\)
posterior (апостериорное распределение): что мы думаем о весах после того, как увидели данные
\(P(D|\vb{w})\)
likelihood (правдоподобие): то же, что в MLE
\(P(\vb{w})\)
prior, на слайде 14 — a-priori distribution параметров: что мы думали о весах до данных
\(P(D)\)
evidence: нормировочная константа, от \(\vb{w}\) не зависит

MAP (Maximum A Posteriori, на слайде 14 — Maximum A-Posteriori) — оценка весов, при которой posterior максимален: \(\vb{w}_{\mathrm{MAP}} = \argmax_{\vb{w}} P(\vb{w}|D)\). От MLE она отличается одним множителем — prior.

На слайде 14 этот ход назван Bayesian approach (байесовский подход): он уменьшает «свободу» модели, потому что к данным добавлено предположение об априорном распределении параметров. Это то самое a-priori assumption из определения регуляризации.

Какой prior взять для весов сети? Самый простой, который говорит «веса скорее маленькие»: каждый вес независимо от других распределён нормально вокруг нуля, \(w_q \sim N(0, \sigma_w^2)\). Дисперсия \(\sigma_w^2\) — мера уверенности. Узкий колокол: «веса почти наверняка около нуля». Широкий: «могут быть и большими».

Слайд 14 обосновывает этот выбор одним наблюдением: у сетей с малыми весами обобщение лучше. Сам prior записан там сокращённо: \(P(\vb{w}) \sim N(0, \sigma_w^2)\). Слева стоит распределение, хотя нормально распределён сам вес. Читай запись слайда как \(w_q \sim N(0, \sigma_w^2)\) для каждого из \(Q\) весов независимо: именно это подставлено в произведение на слайде 15.

Сам вывод занимает на слайде 15 лекции 3 четыре строки. Ниже те же строки по порядку, а между ними — шаги, которые слайд пропускает.

  1. Строка 1 слайда. Оценка обозначена там \(\hat{\vb{w}}\): это та же \(\vb{w}_{\mathrm{MAP}}\) со слайда 14. Второе равенство — правило Байеса без знаменателя: \(P(D)\) от \(\vb{w}\) не зависит и на положение максимума не влияет.

    \[ \begin{aligned} \hat{\vb{w}} &= \argmax_{\vb{w}}\; P(\vb{w}|D) \\ &= \argmax_{\vb{w}}\; P(D|\vb{w})\,P(\vb{w}) \end{aligned} \]
  2. Likelihood. Модель данных — та же, что в уроке 15: \(t_n = g_n + \epsilon_n\) с шумом \(\epsilon_n \sim N(0, \sigma^2)\); для краткости пишем \(g_n\) вместо \(g(x_n|\vb{w})\). Шумы независимы, поэтому вероятности отдельных примеров перемножаются:

    \[ P(D|\vb{w}) = \prod_{n=1}^{N} \frac{1}{\sqrt{2\pi}\,\sigma}\; e^{-\frac{(t_n - g_n)^2}{2\sigma^2}} \]
  3. Prior. Веса независимы, каждый распределён как \(N(0, \sigma_w^2)\) — тоже произведение, по одному множителю на каждый из \(Q\) весов:

    \[ P(\vb{w}) = \prod_{q=1}^{Q} \frac{1}{\sqrt{2\pi}\,\sigma_w}\; e^{-\frac{w_q^2}{2\sigma_w^2}} \]
  4. Строка 2 слайда: оба произведения подставлены под \(\argmax\).

    \[ \begin{aligned} \hat{\vb{w}} = \argmax_{\vb{w}}\; &\prod_{n=1}^{N} \frac{1}{\sqrt{2\pi}\,\sigma}\; e^{-\frac{(t_n - g_n)^2}{2\sigma^2}} \\ {}\cdot{} &\prod_{q=1}^{Q} \frac{1}{\sqrt{2\pi}\,\sigma_w}\; e^{-\frac{w_q^2}{2\sigma_w^2}} \end{aligned} \]
  5. Логарифм. На слайде этого шага нет, он сделан молча. Логарифм монотонный: максимум остаётся на месте, а произведения превращаются в суммы. Поменяем знак и будем искать минимум. У каждого множителя экспонента даёт квадрат, а нормировка — константу:

    \[ \begin{aligned} &-\log P(D|\vb{w}) \\ &\qquad = \sum_{n=1}^{N}\frac{(t_n - g_n)^2}{2\sigma^2} + c_1 \end{aligned} \] \[ \begin{aligned} &-\log P(\vb{w}) \\ &\qquad = \sum_{q=1}^{Q}\frac{w_q^2}{2\sigma_w^2} + c_2 \end{aligned} \]

    Вот где колокол Гаусса превращается в параболу: \(-\log e^{-w^2/2\sigma_w^2} = w^2 / 2\sigma_w^2\).

  6. Строка 3 слайда. Складываем; константы \(c_1\), \(c_2\) не зависят от \(\vb{w}\) и на положение минимума не влияют — отбрасываем:

    \[ \begin{aligned} \hat{\vb{w}} = \argmin_{\vb{w}} \Big[ &\sum_{n=1}^{N}\frac{(t_n - g_n)^2}{2\sigma^2} \\ &+ \sum_{q=1}^{Q}\frac{w_q^2}{2\sigma_w^2} \Big] \end{aligned} \]
  7. Строка 4, последняя. Умножим всё на \(2\sigma^2 \gt 0\): положение минимума от умножения на положительное число не меняется.

    \[ \begin{aligned} \hat{\vb{w}} = \argmin_{\vb{w}} \Big[ &\sum_{n=1}^{N}(t_n - g_n)^2 \\ &+ \gamma\sum_{q=1}^{Q} w_q^2 \Big] \end{aligned} \]

    Это error function с weight decay: первое слагаемое на слайде подписано Fitting, второе — Regularization. Чему равна \(\gamma\), слайд не пишет. Сравни строки 3 и 4: перед штрафом стояло \(\frac{1}{2\sigma_w^2}\), умножение на \(2\sigma^2\) даёт

    \[ \gamma = \frac{\sigma^2}{\sigma_w^2} \]

Weight decay — это MAP-оценка весов с Gaussian prior \(N(0, \sigma_w^2)\); коэффициент \(\gamma = \sigma^2 / \sigma_w^2\) — дисперсия шума, делённая на дисперсию prior.

Рядом с последней строкой на слайде 15 стоит выноска: "Here it comes another loss function!!!". В уроке 15 из MLE получились Sum of Squared Errors и crossentropy; MAP дал ещё одну функцию для минимизации. Loss function в этой реплике — то же, что error function.

Прочитай \(\gamma\) как дробь. Числитель \(\sigma^2\) — насколько шумны данные: шумным данным верят меньше, и \(\gamma\) растёт. Знаменатель \(\sigma_w^2\) — насколько широк prior: узкий prior означает сильную уверенность, что веса малы, и \(\gamma\) тоже растёт. Плоский prior, \(\sigma_w \to \infty\), даёт \(\gamma \to 0\) — и MAP превращается в MLE.

А если задача — классификация?

Меняется только likelihood. В уроке 15 для двух классов \(t_n \sim Be(g_n)\), и \(-\log P(D|\vb{w})\) — это Binary Crossentropy. Обозначим её \(E_{\mathrm{CE}}\):

\[ \begin{aligned} E_{\mathrm{CE}}(\vb{w}) = {} & -\sum_{n=1}^{N} \bigl[\, t_n \log g_n \\ & \quad + (1-t_n)\log(1-g_n) \,\bigr] \end{aligned} \]

Prior и его логарифм те же, поэтому

\[ \begin{aligned} \vb{w}_{\mathrm{MAP}} = \argmin_{\vb{w}} \Big[ &E_{\mathrm{CE}}(\vb{w}) \\ &+ \frac{1}{2\sigma_w^2}\sum_{q} w_q^2 \Big] \end{aligned} \]

Дисперсии шума здесь нет вовсе: силу штрафа задаёт одна \(\sigma_w^2\). Если ошибка — crossentropy, просуммированная по примерам без \(\frac{1}{N}\), то в записи конспекта \(\frac{\gamma}{2}\sum_q w_q^2\) получается \(\gamma = 1/\sigma_w^2\). Это тот случай, когда формула со стр. 167 верна буквально. Смысл прежний: узкий prior — сильный штраф.

Компромисс на одном весе

Посмотри, как это работает для единственного веса. Модель самая простая: \(t_n = w + \epsilon_n\). Наблюдений \(N\), их среднее равно 2, значит \(w_{\mathrm{MLE}} = 2\). Минимум \(\sum_n (t_n - w)^2 + \gamma w^2\) находится приравниванием производной к нулю:

\[ w_{\mathrm{MAP}} = \frac{N}{N + \gamma}\; w_{\mathrm{MLE}} \]

Это и есть равновесие двух пружин с рис. 2: жёсткость пружины данных относится к жёсткости пружины prior как \(N\) к \(\gamma\). Какая жёстче, к той стороне вес и ближе.

Prior × likelihood = posterior

Три кривые как функции одного веса \(w\). Все приведены к высоте 1, чтобы сравнивать положение и ширину. Начальное состояние повторяет рис. 20 конспекта (стр. 168). Ширина likelihood равна \(\sigma / \sqrt{N}\): чем больше наблюдений, тем она уже.

  1. Сейчас \(w_{\mathrm{MLE}} = 2\), а \(w_{\mathrm{MAP}} = 1.385\). Сузь prior до \(\sigma_w = 0.5\). Сначала скажи: куда поедет \(w_{\mathrm{MAP}}\) и далеко ли?
    Что должно получиться

    К нулю, до 0.400. Узкий prior — жёсткая пружина: \(\gamma = 4 / 0.25 = 16\) и \(w_{\mathrm{MAP}} = \frac{4}{4 + 16} \cdot 2 = 0.4\).

  2. Верни \(\sigma_w = 1.5\) и увеличивай \(N\) до 100. Что будет с \(\gamma\)? А с \(w_{\mathrm{MAP}}\)?
    Что должно получиться

    \(\gamma = 1.78\) не меняется: числа наблюдений в ней нет. А \(w_{\mathrm{MAP}}\) подходит вплотную к \(w_{\mathrm{MLE}}\): 1.965. Likelihood сужается, и prior почти перестаёт влиять. Главный вывод виджета: MAP — компромисс между нулём и \(w_{\mathrm{MLE}}\); больше данных или шире prior — и он сдвигается к \(w_{\mathrm{MLE}}\).

  3. Поставь \(N = 4\) и переключи вид на «ошибки (−log)». Колокола превратились в параболы. Где минимум фиолетовой суммы?
    Что должно получиться

    Там же, в \(w_{\mathrm{MAP}}\): вертикальная линия не сдвинулась. Минус логарифм превращает произведение в сумму, а колокол — в параболу. После умножения на \(2\sigma^2\), как в шаге 7 вывода, prior стал штрафом \(\gamma w^2\), а likelihood — суммой квадратов ошибок. Одна картинка в двух записях.

  4. Сделай prior почти плоским: \(\sigma_w = 5\). Что осталось от регуляризации?
    Что должно получиться

    Почти ничего: \(\gamma = 0.16\), \(w_{\mathrm{MAP}} = 1.923\). В пределе \(\sigma_w \to \infty\) получается \(\gamma = 0\) и \(w_{\mathrm{MAP}} = w_{\mathrm{MLE}}\). MLE — это MAP с плоским prior.

В формуле видно то, чего не видно в самой \(\gamma\): с ростом \(N\) первое слагаемое ошибки растёт — в нём \(N\) квадратов, — а штраф остаётся прежним. Чем больше данных, тем меньше значит prior.

Prior для всех весов сразу

Весов в сети много, и prior задаётся на весь вектор \(\vb{w}\). Произведение независимых одномерных гауссиан — это многомерная гауссиана с диагональной ковариационной матрицей. Если дисперсии одинаковы, \(\Sigma = \sigma_w^2 I\), линии равной плотности — круги (в многомерном случае сферы), и

\[ -\log P(\vb{w}) = \frac{1}{2\sigma_w^2}\,\vb{w}\T\vb{w} + \text{const} \]

То есть штраф зависит только от длины вектора весов — это и есть круги на рис. 4. Конспект (стр. 170–171) разбирает и общий случай.

σ₁ = σ₂, ρ = 0 σ₁ ≠ σ₂, ρ = 0 ρ ≠ 0 weight decay
Рис. 5. Линии равной плотности prior для двух весов (по осям \(w_1\) и \(w_2\)). Слева — наш случай: одна \(\gamma\) на все веса. В центре дисперсии разные: у каждого веса или слоя своя \(\gamma\). Справа веса коррелированы (\(\rho \ne 0\)): штраф \(\vb{w}\T \Sigma^{-1} \vb{w}\) содержит произведения \(w_1 w_2\).
Как общий случай выглядит формулой?

Для двух весов ковариационная матрица и плотность prior записаны в конспекте так (стр. 170):

\[ \Sigma = \begin{bmatrix} \sigma_1^2 & \rho\,\sigma_1\sigma_2 \\ \rho\,\sigma_1\sigma_2 & \sigma_2^2 \end{bmatrix} \] \[ P(w_1, w_2) = \frac{1}{2\pi\,\abs{\Sigma}^{1/2}}\; e^{-\frac{1}{2}\vb{w}\T \Sigma^{-1} \vb{w}} \]

Здесь \(\sigma_1^2\), \(\sigma_2^2\) — дисперсии двух весов, \(\rho\) — их корреляция. При \(\rho = 0\) матрица диагональная, и плотность распадается в произведение двух одномерных гауссиан — шаг 3 вывода. Если к тому же \(\sigma_1 = \sigma_2 = \sigma_w\), получается \(\Sigma = \sigma_w^2 I\).

Почему prior именно гауссов и именно с нулевым средним?

Нулевое среднее: нет причин заранее предпочитать положительные веса отрицательным, а нулевые веса дают самую простую функцию — константу. Гауссова форма: это самый простой колокол, и его логарифм — парабола, с которой удобно работать. Другой prior дал бы другой штраф; пример будет в последнем разделе. Само убеждение «веса должны быть малы» — эмпирическое: сети с малыми весами, как правило, обобщают лучше. На слайде 14 лекции 3 оно так и подано: как наблюдение (observed), а не как теорема.

«MAP — это полноценный байесовский вывод». Нет: MAP берёт у posterior одну точку — вершину. Это по-прежнему один набор весов, как и в MLE, только выбранный с учётом prior. Полный байесовский подход усреднял бы предсказания по всему posterior.

Как выбрать γ

Формула \(\gamma = \sigma^2 / \sigma_w^2\) объясняет смысл \(\gamma\), но числа не даёт: ни дисперсию шума, ни «правильную» ширину prior никто не знает. Поэтому \(\gamma\) — hyperparameter (гиперпараметр), и выбирают её как в уроке 21: по validation set, отложенной части данных.

Почему не по training set? Потому что там ответ известен заранее. В лаборатории \(E_{\mathrm{train}}\) только росла с \(\gamma\), так что «лучшей» всегда окажется \(\gamma = 0\). По той же причине \(\gamma\) нельзя учить градиентным спуском вместе с весами.

Слайд 16 лекции 3 называет такой выбор cross-validation, а его заголовок начинается со слова Recall: это та же схема, по которой на слайде 13 выбирали число скрытых нейронов. У профессора слово cross-validation шире, чем K-fold: так он называет любое использование имеющихся данных и для обучения, и для оценки ошибки на новых данных, а одна отложенная часть (hold out) — простейший вид такой проверки (лекция 3, слайд 6). Сама процедура на слайде 16 — пять шагов.

  1. Раздели данные на training set и validation set: в них \(N_{\mathrm{TRAIN}}\) и \(N_{\mathrm{VAL}}\) примеров. Test set отложен раньше и в выборе не участвует.
  2. Для нескольких значений \(\gamma\) обучи сеть на training set, минимизируя ошибку со штрафом: \[ \begin{aligned} E_{\gamma}^{\mathrm{TRAIN}} = {} & \sum_{n=1}^{N_{\mathrm{TRAIN}}} \big(t_n - g(x_n|\vb{w})\big)^2 \\ & + \gamma \sum_{q=1}^{Q} w_q^2 \end{aligned} \]
  3. Оцени каждую обученную сеть на validation set — с весами \(\vb{w}\), найденными в шаге 2, и уже без штрафа: \[ E_{\gamma}^{\mathrm{VAL}} = \sum_{n=1}^{N_{\mathrm{VAL}}} \big(t_n - g(x_n|\vb{w})\big)^2 \]
  4. Выбери \(\gamma^*\) с лучшей, то есть наименьшей, validation error: \(\gamma^* = \argmin_{\gamma}\, E_{\gamma}^{\mathrm{VAL}}\). Это дно малиновой кривой из лаборатории.
  5. Собери все данные обратно вместе и минимизируй ошибку с выбранной \(\gamma^*\): \[ \begin{aligned} E_{\gamma^*} = {} & \sum_{n=1}^{N} \big(t_n - g(x_n|\vb{w})\big)^2 \\ & + \gamma^* \sum_{q=1}^{Q} w_q^2 \end{aligned} \] Здесь \(N = N_{\mathrm{TRAIN}} + N_{\mathrm{VAL}}\). Итоговую оценку качества даёт test set.

Осторожно с буквами. На слайде \(E_{\gamma}^{\mathrm{TRAIN}}\) — вся минимизируемая функция, вместе со штрафом. В лаборатории и в конспекте \(E_{\mathrm{train}}\) — только ошибка на данных, так что \(E_{\gamma}^{\mathrm{TRAIN}}\) слайда равна \(E_{\mathrm{train}}\) плюс число «штраф» из лаборатории. А \(E_{\gamma}^{\mathrm{VAL}}\) слайда и \(E_{\mathrm{val}}\) лаборатории — одно и то же.

Справа на слайде 16 нарисован пример. По горизонтали — значения \(\gamma\): 0.1, 1, …, 5, …, 100. По вертикали — их ошибки \(E_{0.1}^{\mathrm{VAL}}\), \(E_{1}^{\mathrm{VAL}}\), \(E_{5}^{\mathrm{VAL}}\). Точки лежат на U-образной кривой с дном при \(\gamma = 5\), и выноска выбирает \(\gamma^* = 5\). Это та же малиновая кривая, что в лаборатории. Две опечатки слайда, чтобы не унести их в ответ: "cross-validaton" в первой строке и "Chose" там, где нужен глагол choose.

Какие значения пробовать, слайд не говорит. Обычно берут логарифмическую сетку: в конспекте (стр. 171) это \(10^{-5}, 10^{-4}, \dots, 1, 10\) — семь значений, семь обучений. Сетка логарифмическая, потому что \(\gamma\) действует как множитель и интересный диапазон занимает несколько порядков: в лаборатории дно гуляло от \(10^{-6}\) до \(10^{-1.5}\), а на слайде значения идут от 0.1 до 100.

«Retrain on all data — значит на всех данных, включая test set». Нет. «All data» в конспекте (стр. 172) — это training + validation. На слайде 16 лекции 3 то же: "Put back all data together" — возвращают то, что делили в шаге 1, и сумма идёт до \(N\). Test set не участвует ни в обучении, ни в выборе \(\gamma\), иначе честной итоговой оценки не останется: по слайду 5 лекции 3 он служит только для итоговой оценки модели.

Родственники: L1 и early stopping

Квадрат — не единственный возможный штраф. L1 regularization берёт сумму модулей: \(\gamma \sum_q \abs{w_q}\). На слайдах лекции 3 его нет: он здесь для сравнения с L2. Разница в том, как штраф тянет вес к нулю.

L2 и L1: один замысел, разная тяга.
L2 (weight decay)L1
Штраф\(\gamma \sum_q w_q^2\)\(\gamma \sum_q \abs{w_q}\)
Тяга к нулю (производная)\(2\gamma w_q\): пропорциональна весу, у нуля исчезает\(\pm\gamma\): постоянная, у нуля не слабеет
Что получаетсявсе веса уменьшаются, но ровно нулём не становятсячасть весов становится ровно нулём (sparsity, разреженность)
PriorGaussianLaplace

Пружина тянет тем слабее, чем ближе вес к нулю, поэтому до самого нуля она его не дотягивает. У L1 тяга постоянная, как у гири на нитке: вес, за который данные «платят» меньше \(\gamma\), она доводит до нуля ровно. Поэтому L1 берут, когда хочется отобрать немногие важные входы, а L2 — когда нужно просто усмирить веса.

С early stopping связь ещё теснее. Обучение стартует с маленьких весов, и они растут шаг за шагом. Остановиться рано — значит не дать им уйти далеко от нуля. Weight decay держит их маленькими всё время обучения. Конспект (стр. 165) так и сравнивает: первый приём ограничивает время, второй — величину весов, и оба реализуют бритву Оккама. Для ошибки в форме чаши соответствие даже количественное, оно разобрано в уроке 20: \(\tau\) шагов с learning rate \(\eta\) действуют примерно как штраф с \(\gamma\), пропорциональной \(1/(\eta\tau)\). Мало шагов — сильная регуляризация.

Weight decay и L2-штраф — всегда одно и то же?

Для обычного градиентного спуска, в том числе mini-batch, — да: добавить к ошибке \(\gamma \sum_q w_q^2\) и умножать вес на \(1 - 2\eta\gamma\) на каждом шаге — одно и то же, это показано в разделе 3. Для адаптивных оптимизаторов вроде Adam два рецепта расходятся, поэтому существует отдельный вариант AdamW, где усадка применяется напрямую. На экзамене это не понадобится, в лабораторных — может.

Ответ на задачку

Оба вопроса из начала теперь закрыты. Почему запрет на большие числа лечит переобучение? Резкие изгибы, которыми модель заучивает шум, требуют больших весов. Штраф делает их дорогими, и модель оставляет только те веса, за которые данные действительно «платят». В лаборатории это стоило роста \(E_{\mathrm{train}}\) с 0 до 0.56 и дало падение \(E_{\mathrm{val}}\) с 5.99 до 1.33.

Почему именно квадрат? Потому что квадрат — это минус логарифм колокола Гаусса. Предположение «каждый вес распределён как \(N(0, \sigma_w^2)\)» после логарифма даёт ровно \(\gamma \sum_q w_q^2\) с \(\gamma = \sigma^2 / \sigma_w^2\). Пружина оказалась записью убеждения «веса скорее маленькие», а её жёсткость — мерой того, насколько шумным данным мы верим меньше, чем этому убеждению.

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

What is regularization? Write the maximum likelihood and the maximum a-posteriori estimates of the weights of a neural network and explain how the second one limits overfitting. Which a-priori distribution of the weights leads to weight decay, and why is it chosen?

Show model answer

Regularization constrains the freedom of the model, on the basis of an a-priori assumption on the model, in order to reduce overfitting.

Maximum likelihood chooses the weights that make the observed data most probable; nothing is assumed about the weights themselves:

\[ \vb{w}_{\mathrm{MLE}} = \argmax_{\vb{w}}\; P(D|\vb{w}) \]

The Bayesian approach reduces the freedom of the model by making an assumption on the a-priori distribution of the parameters, \(P(\vb{w})\), and by maximising the posterior instead of the likelihood (Bayes' rule; \(P(D)\) does not depend on \(\vb{w}\)):

\[ \begin{aligned} \vb{w}_{\mathrm{MAP}} &= \argmax_{\vb{w}}\; P(\vb{w}|D) \\ &= \argmax_{\vb{w}}\; P(D|\vb{w})\,P(\vb{w}) \end{aligned} \]

Weights that are improbable under the prior are selected only if the data support them strongly, so the network is no longer free to fit the noise. Weight decay assumes that the weights are small: every weight is independently distributed as \(w_q \sim N(0, \sigma_w^2)\). The motivation is empirical: neural networks with small weights are observed to generalize better.

Это содержание слайда 14 лекции 3, и ответ идёт в его порядке: определение, MLE, MAP, prior. Две типичные недоработки. Определение без слов про априорное предположение: «регуляризация борется с переобучением» называет цель, а не способ. И prior без нулевого среднего: именно ноль в \(N(0, \sigma_w^2)\) означает «веса малы».

Weight decay. (a) Write the error function that is minimised when a regression network is trained with weight decay. (b) Derive it as a Maximum A-Posteriori (MAP) estimate, stating the assumptions. (c) How is \(\gamma\) related to the variances involved? What happens when \(\sigma_w \to \infty\), and when the number of samples \(N\) grows?

Show model answer

(a) With \(\gamma \gt 0\) as the regularisation parameter and \(q = 1, \dots, Q\) indexing all the weights of the network:

\[ \begin{aligned} E(\vb{w}) = {} & \sum_{n=1}^{N} \big(t_n - g(x_n|\vb{w})\big)^2 \\ & + \gamma \sum_{q=1}^{Q} w_q^2 \end{aligned} \]

The first term is the fitting term, the second one the regularization term.

(b) Assumptions: \(t_n = g(x_n|\vb{w}) + \epsilon_n\) with independent \(\epsilon_n \sim N(0, \sigma^2)\); independent zero-mean Gaussian prior on every weight, \(w_q \sim N(0, \sigma_w^2)\). Since \(P(D)\) does not depend on \(\vb{w}\):

\[ \begin{aligned} \vb{w}_{\mathrm{MAP}} &= \argmax_{\vb{w}}\; P(\vb{w}|D) \\ &= \argmax_{\vb{w}}\; P(D|\vb{w})\,P(\vb{w}) \end{aligned} \]

Both factors are products of Gaussians, one per sample and one per weight. Writing \(g_n\) for \(g(x_n|\vb{w})\):

\[ \begin{aligned} \vb{w}_{\mathrm{MAP}} = \argmax_{\vb{w}}\; &\prod_{n=1}^{N} \frac{1}{\sqrt{2\pi}\,\sigma}\; e^{-\frac{(t_n - g_n)^2}{2\sigma^2}} \\ {}\cdot{} &\prod_{q=1}^{Q} \frac{1}{\sqrt{2\pi}\,\sigma_w}\; e^{-\frac{w_q^2}{2\sigma_w^2}} \end{aligned} \]

Taking the negative logarithm (it is monotone: products become sums, the maximum becomes a minimum) and dropping the terms that do not depend on \(\vb{w}\):

\[ \begin{aligned} \vb{w}_{\mathrm{MAP}} = \argmin_{\vb{w}} \Big[ &\sum_{n=1}^{N} \frac{(t_n - g_n)^2}{2\sigma^2} \\ &+ \sum_{q=1}^{Q} \frac{w_q^2}{2\sigma_w^2} \Big] \end{aligned} \]

Multiplying by \(2\sigma^2 \gt 0\) gives the error function of (a).

(c) \(\gamma = \sigma^2 / \sigma_w^2\): noise variance over prior variance. Noisier data or a narrower prior give a stronger regularisation. For \(\sigma_w \to \infty\) the prior is flat, \(\gamma \to 0\), and the MAP estimate coincides with the maximum likelihood estimate. \(\gamma\) does not depend on \(N\), but the fitting term is a sum of \(N\) squares while the penalty stays fixed: as \(N\) grows the data dominate the prior and the MAP estimate again approaches the maximum likelihood one.

Вывод в ответе повторяет четыре строки слайда 15 лекции 3. Чему равна \(\gamma\), там не написано: соотношение \(\gamma = \sigma^2 / \sigma_w^2\) надо уметь вывести из двух последних строк. Проверяют три вещи: что названы оба предположения (независимый гауссов шум и независимый Gaussian prior с нулевым средним), что объяснено, почему можно отбросить \(P(D)\) и взять логарифм, и что \(\gamma\) названа отношением дисперсий. Ответ «\(\gamma = 1/\sigma^2\)» из конспекта рискован: без пояснения, чья это дисперсия, он читается как «дисперсия шума в знаменателе», а это неверно.

A network is trained by gradient descent on the regularised error

\[ E_{\mathrm{reg}}(\vb{w}) = E_{\mathrm{train}}(\vb{w}) + \frac{\gamma}{2} \sum_q w_q^2 . \]

Write the update rule for one weight and compute its new value after one step, given \(w = 2\), \(\partial E_{\mathrm{train}} / \partial w = 0.5\), \(\eta = 0.1\), \(\gamma = 0.01\).

Show model answer
\[ w \leftarrow (1 - \eta\gamma)\, w - \eta\, \pd{E_{\mathrm{train}}}{w} \] \[ w = 0.999 \cdot 2 - 0.1 \cdot 0.5 = 1.948 \]

Each step first shrinks the weight by the factor \(1 - \eta\gamma\), then applies the usual gradient step: hence the name "weight decay".

Здесь штраф записан с \(\frac{\gamma}{2}\), как в конспекте, поэтому множитель равен \(1 - \eta\gamma\). С записью \(\gamma \sum_q w_q^2\), как на слайде 15 лекции 3, получилось бы \(1 - 2\eta\gamma\) и ответ 1.946. Ловушка — применить заученную формулу, не посмотрев на условие.

Describe the procedure used to select \(\gamma\). Is the penalty term included when the validation error is computed? Why can \(\gamma\) not be selected by minimising the training error?

Show model answer

\(\gamma\) is a hyperparameter and is selected by cross-validation on held-out data. Split the data into a training set and a validation set (the test set is kept aside). For different values of \(\gamma\), usually taken on a logarithmic grid such as \(10^{-5}, \dots, 10\), train on the training set by minimising the error with the penalty:

\[ \begin{aligned} E_{\gamma}^{\mathrm{TRAIN}} = {} & \sum_{n=1}^{N_{\mathrm{TRAIN}}} \big(t_n - g(x_n|\vb{w})\big)^2 \\ & + \gamma \sum_{q=1}^{Q} w_q^2 \end{aligned} \]

Evaluate each trained model on the validation set with the plain sum of squared errors, without the penalty:

\[ E_{\gamma}^{\mathrm{VAL}} = \sum_{n=1}^{N_{\mathrm{VAL}}} \big(t_n - g(x_n|\vb{w})\big)^2 \]

Choose the \(\gamma^*\) with the best (lowest) validation error, put all the data back together (training plus validation, \(N\) samples) and minimise

\[ \begin{aligned} E_{\gamma^*} = {} & \sum_{n=1}^{N} \big(t_n - g(x_n|\vb{w})\big)^2 \\ & + \gamma^* \sum_{q=1}^{Q} w_q^2 \end{aligned} \]

The performance of the final model is reported on the test set.

The penalty is a training device, not a measure of prediction quality, so it is not part of the validation error. The training error cannot be used for the selection because it is non-decreasing in \(\gamma\): it would always select \(\gamma = 0\), i.e. no regularisation.

Формулы и порядок шагов — со слайда 16 лекции 3; там же пример, в котором выбрана \(\gamma^* = 5\). Балл легко потерять в двух местах: оставляют штраф в validation error (так написано в конспекте на стр. 171 — это ошибка) и забывают про повторное обучение на объединённых данных. Фраза про test set показывает, что ты различаешь выбор модели и её оценку.

Which of the following statements about L2 weight decay are correct? Select all that apply.

  • It corresponds to MAP estimation with a zero-mean Gaussian prior on the weights. Минус логарифм гауссианы — квадрат, отсюда штраф \(\gamma \sum_q w_q^2\).
  • It reduces the number of parameters of the network. Число весов то же; уменьшается эффективная ёмкость, а не номинальная.
  • A smaller prior variance \(\sigma_w^2\) corresponds to a larger \(\gamma\). \(\gamma = \sigma^2 / \sigma_w^2\): узкий prior — жёсткая пружина.
  • It sets many weights exactly to zero. Это свойство L1. L2 сжимает пропорционально и до нуля не доводит.
  • If the regularised error is minimised exactly, increasing \(\gamma\) cannot decrease the sum of squared errors on the training set. Больший штраф сильнее отвлекает от подгонки: бирюзовая кривая в лаборатории только растёт.
  • \(\gamma\) can be learned by gradient descent together with the weights, by minimising the training error. На training set оптимум всегда \(\gamma = 0\); её выбирают по validation set.
Show model answer

Correct: the first, the third and the fifth. Weight decay is MAP with a Gaussian prior \(N(0, \sigma_w^2)\) and \(\gamma = \sigma^2 / \sigma_w^2\); it keeps all the weights but shrinks them, so the fit to the training data can only get worse as \(\gamma\) grows. Exact zeros are produced by L1, and \(\gamma\) is a hyperparameter chosen on validation data.

В вопросах «select all» каждое утверждение проверяется отдельно. Типичная ошибка — отметить «exactly to zero»: слово exactly превращает верную мысль «веса уменьшаются» в неверную.

A model with a single weight: \(t_n = w + \epsilon_n\), \(\epsilon_n \sim N(0, \sigma^2)\) with \(\sigma^2 = 4\). There are \(N = 4\) observations with sample mean 2. The prior is \(w \sim N(0, \sigma_w^2)\) with \(\sigma_w^2 = 2.25\). Compute \(w_{\mathrm{MAP}}\).

Show model answer

\(\gamma = \sigma^2 / \sigma_w^2 = 4 / 2.25 = 1.778\). Minimising \(\sum_n (t_n - w)^2 + \gamma w^2\):

\[ -2 \sum_n (t_n - w) + 2\gamma w = 0 \] \[ w_{\mathrm{MAP}} = \frac{\sum_n t_n}{N + \gamma} = \frac{8}{4 + 1.778} = 1.385 \]

The maximum likelihood estimate is the sample mean, 2; the prior pulls it towards zero.

Это числа с рис. 20 конспекта. Проверяют, что ты умеешь довести MAP до числа: сначала \(\gamma\) как отношение дисперсий, потом производная. Быстрая самопроверка: ответ обязан лежать между 0 и \(w_{\mathrm{MLE}} = 2\).

Проверь себя

Дисперсию prior \(\sigma_w^2\) уменьшили в 4 раза, шум данных не изменился. Что произошло с \(\gamma\)?

  • Уменьшилась в 4 раза Наоборот: \(\sigma_w^2\) стоит в знаменателе. Узкий prior — сильная уверенность, что веса малы.
  • Увеличилась в 4 раза \(\gamma = \sigma^2 / \sigma_w^2\): знаменатель стал в 4 раза меньше, пружина — в 4 раза жёстче.
  • Увеличилась в 2 раза Так было бы, если бы в формуле стояло \(\sigma_w\), а не \(\sigma_w^2\).
  • Не изменилась Не изменилась бы, если бы во столько же раз уменьшили и дисперсию шума.

Что верно про выбор \(\gamma\)? Отметь все правильные утверждения.

  • Кандидатов берут на логарифмической сетке \(\gamma\) действует как множитель; интересный диапазон — несколько порядков.
  • Ошибку на validation set считают без штрафа Штраф — инструмент обучения, а не мера качества предсказаний: в \(E_{\gamma}^{\mathrm{VAL}}\) на слайде 16 лекции 3 его нет.
  • Берут ту \(\gamma\), при которой ошибка на training set минимальна Она минимальна всегда при \(\gamma = 0\): так регуляризацию никогда не выберешь.
  • После выбора \(\gamma^*\) сеть обучают заново на training + validation Гиперпараметр уже выбран, и данные validation set можно вернуть в обучение.
  • Двух-трёх лучших кандидатов сравнивают на test set и берут победителя Тогда test set участвует в выборе, и его оценка перестаёт быть честной.

Картинка для памяти: бирюзовая кривая только растёт, у малиновой есть дно.

Штраф записан как \(\gamma \sum_q w_q^2\), \(\eta = 0.1\), \(\gamma = 0.05\). На какое число вес умножается на каждом шаге до вычитания градиента ошибки?

  • 0.995 Это \(1 - \eta\gamma\) — множитель для штрафа, записанного с \(\frac{\gamma}{2}\).
  • 0.99 Производная штрафа равна \(2\gamma w_q\), поэтому множитель \(1 - 2\eta\gamma = 1 - 0.01\).
  • 0.95 Это \(1 - \gamma\): забыт learning rate.
  • 0.9 Это \(1 - \eta\): забыта сама \(\gamma\).

Два входа сети несут одну и ту же информацию, и для ответа нужно \(w_1 + w_2 = 1\). Какой вариант выберет обучение с L2-штрафом?

  • \((1,\ 0)\) Штраф \(1^2 + 0^2 = 1\) — вдвое дороже, чем при равном дележе.
  • \((0.5,\ 0.5)\) Штраф \(0.25 + 0.25 = 0.5\) — минимум при условии \(w_1 + w_2 = 1\).
  • \((2,\ -1)\) Штраф \(4 + 1 = 5\): большие веса разных знаков — самое дорогое решение.
  • Ему всё равно: сумма одна и та же Всё равно было бы L1 для первых двух вариантов: \(\abs{1} + \abs{0} = \abs{0.5} + \abs{0.5}\). Квадрат их различает.

Ошибка записана как на слайде 15 лекции 3: Sum of Squared Errors плюс \(\gamma \sum_q w_q^2\). Данных стало в 25 раз больше, шум и prior те же. Что изменилось?

  • \(\gamma\) уменьшилась в 25 раз В \(\gamma = \sigma^2 / \sigma_w^2\) числа наблюдений нет.
  • \(\gamma\) та же, но решение сдвинулось к \(\vb{w}_{\mathrm{MLE}}\) Сумма квадратов ошибок выросла примерно в 25 раз, штраф остался прежним: его относительный вес упал.
  • Ничего: \(\gamma\) та же, значит и решение то же Решение зависит от соотношения двух слагаемых, а первое выросло.
  • Решение сдвинулось к нулю Наоборот: больше данных — увереннее likelihood, слабее влияние prior.

Почему L1 делает часть весов ровно нулевыми, а L2 — нет?

  • У L2 тяга к нулю пропорциональна весу и около нуля исчезает, у L1 она постоянна Производные: \(2\gamma w_q\) против \(\pm\gamma\). Постоянная тяга доводит слабый вес до нуля, исчезающая — нет.
  • L1 штрафует сильнее при любых весах При \(\abs{w_q} \gt 1\) квадрат больше модуля: там сильнее L2.
  • L2 действует только на большие веса L2 сжимает все веса, каждый — пропорционально его величине.
  • L1 — это Gaussian prior с меньшей дисперсией Меньшая дисперсия даёт тот же L2 с большей \(\gamma\). L1 соответствует другому prior — Laplace.

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

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