TGTGInsightаналитика telegramLIVE / telegram public index
← DeepSchool
DeepSchool avatar

TGINSIGHT POST

Post #46

@deep_school

DeepSchool

Просмотры4,790Количество просмотров
Опубликован27 мая27.05.2022, 13:30
Содержимое поста

Содержимое

​​Инициализируем канал постом про инициализацию весовнейросети! Основная цель выбора весов на старте — избежать затухания или взрыва градиента во время обучения. Для этого надо приравнять дисперсию выхода каждого слоя к единице. Именно это и пытаются сделать все методы инициализации. XavierGlorot предлагал несколько способов семплирования значений для W, но самый популярный: семплировать веса из равномерного распределения на отрезке ±sqrt(6)/sqrt(n1 + n2) (рис. 1), где n1 и n2 — количество нейронов на входе и выходе. Этот метод работает при симметричных функциях активации, например при tanh. Но если заменить активации на ReLU, то градиенты снова затухнут. KaimingHe в 2015 году предложил вариант инициализации при использовании ReLU: семплировать из нормального распределения с мат. ожиданием = 0 и дисперсией = 2/n1 (рис. 2), где n1 - количество нейронов в предыдущем слое. В своей статье Kaiming с соавторами показали, что 30-слойная нейросеть сходится гораздо быстрее при Kaiming инициализации, а при Xavier вообще не учится. Забавно, что вопрос: “как правильно инициализировать нейросети?” — актуален даже в 2022 году. P.S. Изучить подробнее с выводами формул можно здесь, а здесь еще есть наглядные визуализации обучения сети с разными подходами. #инициализация#xavier#kaiming