Разве инициализация весов на 0 не была бы лучшей идеей? Таким образом, веса смогут быстрее находить свои значения (положительные или отрицательные)?
Как нарушение симметрии ускоряет обучение?
Если вы инициализируете все веса равными нулю, тогда все нейроны всех слоев будут выполнять одинаковые вычисления, давая одинаковый результат и делая всю глубокую сеть бесполезной . Если веса равны нулю, сложность всей глубокой сети будет такой же, как у отдельного нейрона, и прогнозы будут не лучше случайных.
Узлы, которые расположены бок о бок в скрытом слое, подключенном к одним и тем же входам, должны иметь разные веса, чтобы алгоритм обучения обновлял веса.
Сделав веса ненулевыми (но близкими к 0, например, 0,1 и т. Д.), Алгоритм изучит веса на следующих итерациях и не застрянет. Таким образом происходит нарушение симметрии.
- Есть ли какая-то другая философия, лежащая в основе рандомизации весов, кроме надежды на то, что они будут близки к своим оптимальным значениям при инициализации?
Алгоритмы стохастической оптимизации, такие как стохастический градиентный спуск, используют случайность при выборе начальной точки для поиска и в прогрессии поиска.
Развитие поиска или обучения нейронной сети известно как конвергенция. Обнаружение неоптимального решения или локальных оптимумов приводит к преждевременной конвергенции.
Вместо того, чтобы полагаться на один локальный оптимум, если вы запустите свой алгоритм несколько раз с разными случайными весами, есть лучшая возможность найти глобальные оптимумы, не застревая на локальных оптимумах.
После 2015 года, благодаря достижениям в исследованиях машинного обучения, He-et-al Initializatio n вводится вместо случайной инициализации.
w=np.random.randn(layer_size[l],layer_size[l-1])*np.sqrt(2/layer_size[l-1])
Веса по-прежнему случайны, но различаются по диапазону в зависимости от размера предыдущего слоя нейронов.
Таким образом, ненулевые случайные веса помогают нам
- Выйди из локальных оптимумов
- Нарушение симметрии
- Достичь глобального оптимума в дальнейших итерациях