Считается ли добавление случайных шумов к скрытым слоям регуляризацией? В чем разница между этим и добавлением отсева и нормализации партии?


Ответ 1:

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

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

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

РЕДАКТИРОВАТЬ: Поскольку вопрос упоминал BatchNorm, я хотел бы отметить, что BatchNorm действительно не используется для регуляризации. То есть BatchNorm не сглаживает стоимость. Вместо этого добавляется BatchNorm для улучшения производительности обратного распространения. По сути, он предотвращает слишком большой или маленький обратный градиент за счет изменения масштаба и повторного центрирования; как метод, он имеет более глубокие связи с методами оптимизации второго порядка, которые пытаются моделировать кривизну поверхности затрат. Как я уже упоминал выше, BatchNorm также можно использовать для гарантии правильности относительного масштабирования, если вы собираетесь добавить случайный шум к нейронным действиям.


Ответ 2:

Я бы посчитал это уловкой оптимизации, а не регуляризацией.

Эффект должен быть эквивалентен эффекту стохастичности в SGD.

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

Добавление слабого случайного шума к весам приведет к тому же результату. [Подсказка: градиентный спуск также добавляет вес в каждую итерацию!]


Ответ 3:

РЕДАКТИРОВАТЬ:

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

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

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