Машинное обучение: методы регуляризации

Как не допустить, чтобы нейронная сеть стала настолько хорошей, что стала плохой.

Достаточно сложная нейронная сеть может дать ~ 100% точность данных, на которых она была обучена, но значительную ошибку на незнакомых/проверочных данных. Когда это происходит, сеть подгоняет обучающие данные. Это означает, что он делает прогнозы, которые слишком сильно привязаны к функциям, которые он изучил при обучении, но которые не обязательно коррелируют с ожидаемыми результатами.

Одним из способов ограничения переобучения является использование процесса, называемого регуляризация. Регуляризация обычно работает, наказывая нейронную сеть за сложность. Чем менее сложная, но точная модель, тем ниже стоимость.

Я объясню некоторые распространенные методы регуляризации. Если вы здесь только ради интуиции, не стесняйтесь пропускать разделы «технические пояснения».

Регуляризация L1 и L2

Интуиция

Чтобы улучшить свою задачу, нейронной сети нужно «сказать», делает ли она правильные прогнозы или нет, и если нет, то насколько они далеки от этого. Степень ошибочности называется стоимостью и рассчитывается с помощью функции стоимости.

Регуляризация L1 и L2 работает путем добавления дополнительных затрат к функции затрат. Эта дополнительная стоимость пропорциональна весу сети. Если веса распределены слишком широко, стоимость возрастет, а процесс обучения будет иметь тенденцию влиять на веса в сторону центрального значения.

Техническое объяснение

Регуляризация L1 использует норму L1 в качестве штрафа, который определяется как сумма абсолютных значений весов. Если W является вектором весов n, норма L1 W определяется как:

||W||₁ = |w1| + |w2| + … +|wn|

Регуляризация L2 использует норму L2, которая представляет собой квадратный корень из суммы квадратов весов:

||W||₂ = (w1² + w2² + … +wn²)

На практике нет необходимости извлекать квадратный корень, он просто увеличивает вычислительную сложность без какой-либо выгоды для функции стоимости, поэтому вместо этого используется квадрат нормы L2:

||W||₂² = w1² + w2² + … +wn² = W · Wᵀ

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

Таким образом, функция стоимости с регуляризацией будет использовать некоторое отношение нормы L1 или L2, контролируемое параметром регуляризации (гиперпараметр, обычно обозначаемый λ), который определяет степень применения регуляризации. .

Формула для функции стоимости с использованием нормализации L2:

Стоимость + λ / 2м · ||Вт||₂²

где m — количество обучающих примеров.

[Зачем делить на 2 м?]

Выбывать

Интуиция

Еще один способ уменьшить сложность — уменьшить количество узлов в сети. Именно этого и добивается отсев. Dropout — это метод случайного отключения узлов во время обучения, который эффективно заставляет сеть вести себя как система простых сетей, а не как одна чрезмерно сложная сеть. Выпадение можно настроить с помощью гиперпараметра, определяющего вероятность «выпадения» нейрона.

Техническое объяснение

Увеличение данных

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

Техническое объяснение

Ранняя остановка

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

Техническое объяснение

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