Какие проблемы возникают при инициализации весов нулями? Какие методы инициализации (Xavier, He) решают эти проблемы?

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

Короткий ответ

Что ответить на собеседовании

Инициализация весов нейронной сети нулями приводит к проблеме симметрии: все нейроны в слое начинают обучаться одинаково, получают одинаковые градиенты и обновляются одинаково. В итоге сеть не может эффективно обучаться, так как не развивается разнообразие признаков.

Подробный разбор

Ответ с пояснениями

Инициализация весов нейронной сети нулями приводит к проблеме симметрии: все нейроны в слое начинают обучаться одинаково, получают одинаковые градиенты и обновляются одинаково. В итоге сеть не может эффективно обучаться, так как не развивается разнообразие признаков.

Методы инициализации, такие как Xavier (Glorot) и He, решают эту проблему, задавая веса случайными значениями с определённым распределением и масштабом, зависящим от числа входов и выходов нейрона. Это помогает сохранить дисперсию сигналов и градиентов на каждом слое, предотвращая затухание или взрыв градиентов.

  • Инициализация Xavier подходит для активаций tanh и sigmoid. Весы выбираются из распределения с дисперсией, обратной сумме входящих и исходящих связей.
  • Инициализация He оптимизирована для ReLU-активаций, где веса масштабируются с учётом только входящих связей, что помогает лучше сохранять градиенты.

Пример инициализации весов в PyTorch с He:

import torch
import torch.nn as nn

layer = nn.Linear(in_features=256, out_features=128)
nn.init.kaiming_normal_(layer.weight, nonlinearity='relu')

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее