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

Как это уменьшает ошибку обобщения и помогает регуляризации, потому что, насколько я знаю, регуляризация - это то, что напрямую связано со сложностью нашей модели.

Как это связано со сложностью обученной модели?

1
Shivam suhane 29 Дек 2019 в 11:38

2 ответа

Почему это предотвращает переоснащение?

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

Почему это помогает при обобщении?

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

Выходной шум

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

Типичные функции потерь (например, кросс-энтропия) дадут очень большой штраф за неправильные прогнозы, если они сделаны с высокой степенью уверенности. Во время переобучения сеть находит множество идеальных предикторов (сложная модель начнет запоминать каждый обучающий ввод). Веса будут настроены для неограниченного увеличения уверенности. Добавление шума к выходным данным предотвращает это, обучая сеть тому, что она никогда не сможет делать предсказания с высокой степенью достоверности. Это смягчит высокие штрафы за ошибки, допущенные в наборе для проверки. Это также предотвратит деструктивные обновления веса, которые только добавили ложной уверенности.

2
maxy 30 Дек 2019 в 01:52

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

Краткий ответ - да, и @ maxy правильно указывает, почему. И я предполагаю, что вы имели в виду добавление шума к входным данным модели, а не к выходным данным вашей модели, хотя такие методы также могут быть использованы (тема для другого обсуждения).

Как это уменьшает ошибку обобщения и помогает регуляризации, потому что, насколько я знаю, регуляризация - это то, что напрямую связано со сложностью нашей модели.

Это может помочь, а может и не помочь в обобщении, случай экстремального шума уже упоминался в вышеупомянутом ответе.

Связь преобразований данных нейронной сетью и обобщением

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

manifold

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

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

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

Наконец, предполагается, что test и train происходят из одного (или, по крайней мере, очень похожего) распределения. Когда мы узнаем о лучшем распределении train по шуму, шансы понять test также увеличиваются, поэтому обычно это помогает обобщению.

Как это связано со сложностью обученной модели?

Сложность пространства функций

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

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

Сложность модели

Этот не изменяется шумом, так как архитектура предопределена. Только веса являются более "разумными" (например, в крайнем случае, весовые коэффициенты не имеют значений 1000 или -1000, так как они означают слишком высокую дисперсию для одной функции), как на самом деле описано выше.

1
Szymon Maszke 29 Дек 2019 в 17:32
Я имею в виду именно добавление шума к выходам, а не к входам. Я полностью понимаю, почему добавление шума к входам имеет смысл.
 – 
Shivam suhane
29 Дек 2019 в 19:29