В чем разница между инициализатором масштабирования дисперсии и инициализатором xavier?


20

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


Для более подробного объяснения инициализации Ксавьера, вы можете посетить эту ссылку: prateekvjoshi.com/2016/03/29/… Она включает в себя правильную деривацию инициализации Ксавье и его интуицию.
Химаншу Сингх

Ответы:


31

Историческая перспектива

Инициализация Ксавье , первоначально предложенная Ксавье Глоротом и Йошуа Бенжио в статье «Понимание сложности обучения глубоких нейронных сетей с прямой связью» , является техникой инициализации весов, которая пытается сделать дисперсию выходных данных слоя равной дисперсии его входных данных. , Эта идея оказалась очень полезной на практике. Естественно, эта инициализация зависит от функции активации слоя. И в своей работе Глорот и Бенжио рассмотрели функцию активации логистической сигмоиды , которая была выбором по умолчанию в тот момент.

Позднее ReLu превзошла активацию сигмовидной кишки, поскольку она позволила решить проблему исчезающих / взрывных градиентов. Следовательно, появился новый метод инициализации, который применил ту же идею (балансирование дисперсии активации) к этой новой функции активации. Он был предложен Каймингом Хе в статье «Углубление в выпрямители: превосходя человеческий уровень по классификации ImageNet» , и теперь его часто называют инициализацией He .

В тензорном потоке инициализация He реализована в variance_scaling_initializer()функции (которая на самом деле является более общим инициализатором, но по умолчанию выполняет инициализацию He), тогда как инициализатор Xavier логически xavier_initializer().

Резюме

Таким образом, основное различие для практиков машинного обучения заключается в следующем:

  • Инициализация лучше работает для слоев с активацией ReLu .
  • Инициализация Xavier работает лучше для слоев с сигмовидной активацией.

в pytorch какая инициализация используется? это зависит от активации?
Чарли Паркер

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

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

3

Дисперсионное масштабирование - это всего лишь обобщение Ксавье: http://tflearn.org/initializations/ . Они оба работают по принципу, что масштаб градиентов должен быть одинаковым во всех слоях. Ксавье, вероятно, безопаснее использовать, поскольку он выдержал экспериментальную проверку временем; Попытка выбрать собственные параметры для дисперсионного масштабирования может помешать обучению или привести к тому, что ваша сеть вообще не заработает.


Благодарю. Что вы имеете в виду выбрать свои собственные параметры для дисперсии?
Ханамичи

В реализации TF это будет фактор-параметр (который определяет отношение входной дисперсии к выходной дисперсии)
liangjy
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.