В чем преимущество усеченного нормального распределения при инициализации весов в нейронной сети?

13

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

Рекомендация, которую я видел в разных местах (например, в учебнике MNIST от TensorFlow ), заключается в использовании усеченного нормального распределения с использованием стандартного отклонения , гдеN- количество входов в данный нейронный слой.1NN

Я считаю, что стандартная формула отклонения гарантирует, что обратные градиенты не растворяются и не усиливаются слишком быстро. Но я не знаю, почему мы используем усеченное нормальное распределение, а не обычное нормальное распределение. Это чтобы избежать редких выбросов?

MiniQuark
источник
Можете ли вы указать источник этой рекомендации и / или прямую цитату?
Тим
+ Тим Хороший вопрос, я добавил ссылку на пример. Я полагаю, что я также видел эту рекомендацию в статье о хороших методах нейронной сети (хотя не могу найти ее).
MiniQuark

Ответы:

13

Я думаю, что это о насыщении нейронов. Подумайте о том, что у вас есть функция активации, например, сигмовидная.

введите описание изображения здесь

Если ваш весовой коэффициент принимает значение> = 2 или <= - 2, ваш нейрон не будет учиться. Таким образом, если вы урежете свое нормальное распределение, у вас не будет этой проблемы (по крайней мере, из-за инициализации), исходя из вашей дисперсии. Я думаю, вот почему, лучше использовать усеченный нормальный в целом.

Гюнгёр Баса
источник
Да, это имеет смысл, спасибо. Я думаю, что вы имели в виду "значение> = 2", а не 1.
MiniQuark
да, это должно быть значение> = 2
Güngör Basa
4

Преимущество использования усеченного нормального распределения заключается в предотвращении генерации «мертвых нейронов» из-за используемых relu_logits , что объясняется здесь .

Обычно следует инициализировать веса с небольшим количеством шума для нарушения симметрии и для предотвращения 0 градиентов. Поскольку мы используем нейроны ReLU, хорошей практикой является их инициализация со слегка положительным начальным смещением, чтобы избежать «мертвых нейронов».

Лернер Чжан
источник
Я не уверен, как использование truncated_normal предотвратит мертвые нейроны: это не добавит «слегка положительного начального смещения». Можете ли вы уточнить?
MiniQuark
1
потому что обратное распространение будет обновлять только «живые» нейроны, с некоторым ненулевым вкладом в распространение
Джейсон