При инициализации весов соединений в нейронной сети с прямой связью важно инициализировать их случайным образом, чтобы избежать любых симметрий, которые алгоритм обучения не сможет нарушить.
Рекомендация, которую я видел в разных местах (например, в учебнике MNIST от TensorFlow ), заключается в использовании усеченного нормального распределения с использованием стандартного отклонения , гдеN- количество входов в данный нейронный слой.
Я считаю, что стандартная формула отклонения гарантирует, что обратные градиенты не растворяются и не усиливаются слишком быстро. Но я не знаю, почему мы используем усеченное нормальное распределение, а не обычное нормальное распределение. Это чтобы избежать редких выбросов?
Ответы:
Я думаю, что это о насыщении нейронов. Подумайте о том, что у вас есть функция активации, например, сигмовидная.
Если ваш весовой коэффициент принимает значение> = 2 или <= - 2, ваш нейрон не будет учиться. Таким образом, если вы урежете свое нормальное распределение, у вас не будет этой проблемы (по крайней мере, из-за инициализации), исходя из вашей дисперсии. Я думаю, вот почему, лучше использовать усеченный нормальный в целом.
источник
Преимущество использования усеченного нормального распределения заключается в предотвращении генерации «мертвых нейронов» из-за используемых relu_logits , что объясняется здесь .
источник