Яка різниця між ініціалізатором масштабності дисперсії та ініціалізатором xavier?


20

Під час впровадження ResNet Tensorflow я вважаю, що вони використовують ініціалізатор дисперсійного масштабування, а також ініціалізатор xavier є популярним. Я не маю надто багато досвіду щодо цього, що краще на практиці?


Більш детальне пояснення ініціалізації Xavier ви можете відвідати за цим посиланням: prateekvjoshi.com/2016/03/29/… Він включає належне виведення ініціалізації Xavier та інтуїцію за нею.
Хіманшу Сінгх

Відповіді:


31

Історична перспектива

Ініціалізація Ксав'є , спочатку запропонована Ксав'є Глоро та Йошуа Бенджіо в «Розумінні труднощів дресирування нейронних мереж глибокої подачі» , - це техніка ініціалізації ваг, яка намагається зробити відхилення виходів шару рівним дисперсії його входів. . Ця ідея виявилася дуже корисною на практиці. Природно, що ця ініціалізація залежить від функції активації шару. І у своїй роботі Глорот та Бенджо розглядали функцію логістичної активації сигмоїдів , що було вибором за замовчуванням на той момент.

Пізніше активація сигмоїдів була перевершена ReLu, оскільки вона дозволила вирішити проблему градієнтів, що зникають / вибухають. Отже, з'явилася нова техніка ініціалізації, яка застосувала ту саму ідею (врівноваження дисперсії активації) до цієї нової функції активації. Це було запропоновано Каймінг Хе в ін "Роботи глибоко в випрямлячі: перевершення продуктивності людського рівня за класифікацією ImageNet" , і тепер його часто називають ініціалізацією Він .

У tensorflow Ініціалізація He реалізована в variance_scaling_initializer() функції (яка, власне, є більш загальним ініціалізатором, але за замовчуванням виконує функцію He ініціалізації), тоді як ініціалізатор Xavier є логічним xavier_initializer().

Підсумок

Підводячи підсумок, головна відмінність практиків машинного навчання полягає в наступному:

  • Він ініціалізація працює краще для шарів з активацією ReLu .
  • Xavier ініціалізація працює краще для шарів з сигмоподібною активацією.

в pytorch який ініціалізатор використовується? це залежить від активації?
Чарлі Паркер

2
Привіт, для tanh()функції активації, яку функцію ініціалізації я повинен використовувати.
GoingMyWay

@GoingMyWay, відповідно до цього pytorch.org/docs/stable/… , ви можете використовувати ініціалізацію He з посиленням 5/3. Не впевнений, звідки це походить.
Підгірський

3

Варіантне масштабування - це лише узагальнення Xavier: http://tflearn.org/initializations/ . Вони обидва діють за принципом, що масштаб градієнтів повинен бути однаковим у всіх шарах. Xavier, ймовірно, безпечніше використовувати, оскільки він витримав експериментальний тест часу; спроба вибрати власні параметри для масштабування дисперсії може перешкоджати навчанню або призвести до того, що ваша мережа взагалі не заробляє.


Спасибі. Що ви маєте на увазі вибір власних параметрів для дисперсії?
Ханамічі

У реалізації TF це буде параметр коефіцієнта (який визначає відношення вхідної дисперсії до вихідної дисперсії)
liangjy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.