Чи додавання випадкового шуму до прихованих шарів вважається регуляризацією? Яка різниця між тим, що робити це, і додаванням відсіву та нормалізації партії?


Відповідь 1:

Так, додавання випадкового шуму до прихованих шарів - це регуляризація точно так само, як і випадання. Ключова інтуїція тут полягає в тому, що якщо нейронна реакція на кожному шарі шумна, то тренування повинні підганяти ваги до окремих категорій із зазором, більшим за шум. Таким чином, у тестовий час, коли шум відсутній, класифікація повинна бути більш стійкою. Це дуже схоже на те, як працює класифікація максимальної маржі, і всі ми знаємо, наскільки успішними були методи максимальної маржинації (наприклад, Support Vector Machines). Вам потрібно бути обережним, щоб переконатися, що шум не переповнює сигнал.

Випадання вважається методом регуляризації, оскільки він здійснює моделювання усереднення. Тобто, під час тренінгу модель у конкретний момент часу фактично є розподілом вірогідності по класу нейронних мережних моделей, в яких ваги фіксовані, але будь-який з нейронів у моделі може бути відсутнім. Загальна ймовірність кожної нейронної мережі визначається індивідуальною ймовірністю того, чи певний нейрон присутній або відсутній. Це регуляризація, оскільки вона в середньому перевищує ухил кожного з примірників, вирівнюючи функцію витрат.

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

EDIT: Оскільки в питанні згадується BatchNorm, я хотів би зазначити, що BatchNorm насправді не використовується для регуляризації. Тобто, BatchNorm не згладжує вартість. Натомість додано BatchNorm, щоб покращити продуктивність зворотного розповсюдження. По суті, він утримує градієнт заднього розповсюдження від отримання занадто великого або малого розміру та перегляду. як техніка вона має більш глибокі зв’язки з методами оптимізації другого порядку, які намагаються моделювати кривизну поверхні витрат. Як я вже згадував вище, BatchNorm також може бути використаний для гарантування правильності відносного масштабування, якщо ви збираєтеся додавати випадковий шум до нейронних дій.


Відповідь 2:

Я вважаю це оптимізаційним трюком більше, ніж регуляризація.

Ефект повинен бути еквівалентний ефекту стохастичності в SGD.

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

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


Відповідь 3:

Редагувати:

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

Випадання випадковим чином вимикає певну частку вузлів у прихованому шарі на кожному проході. Це покращує мережу, оскільки вона змушує її навчитися розпізнавати одні й ті ж візерунки кількома способами, що призводить до кращої моделі.

Пакетна нормалізація - це те, коли ви приймаєте вхідні дані до шару та переконуєтесь, що вони нормалізуються між 0 та 1. Це допомагає мережі навчатися краще, тому що градієнт пристойний є більш послідовним та рівним. Таким чином ви уникаєте стрибати навколо мінімумів, оскільки ваш градієнт занадто великий.