Начальные веса (Initial Weights)
Что такое Начальные веса (Initial Weights)?
Начальные веса — это значения параметров (весов) нейронов в искусственной нейронной сети, заданные до начала процесса обучения.
Представьте, что вы собираете сложный конструктор, но у вас нет инструкции. Первые несколько шагов вы делаете «на глаз» — располагаете базовые детали в предположительно верных позициях. Эти исходные позиции — аналог начальных весов в нейросети. Они не идеальны, но дают отправную точку для дальнейшей сборки (обучения).
История и проблемы инициализации весов
Исторически вопрос инициализации весов стал актуален с развитием многослойных сетей в 1980–1990‑х годах. Ранние подходы часто использовали полностью случайные значения, что нередко приводило к проблемам:
- взрывающемуся или затухающему градиенту (gradient explosion/vanishing);
- медленной сходимости;
- застреванию в локальных минимумах.
В 1991 году Йошуа Бенжио и другие исследователи начали активно изучать, как инициализация влияет на обучение. Позже появились более продуманные методы, например:
- инициализация Ксавье (Xavier/Glorot initialization, 2010) — учитывает размер входного и выходного слоёв, чтобы стабилизировать дисперсию сигналов;
- инициализация Хе (He initialization, 2015) — оптимизирована для сетей с ReLU‑активациями.
Чем отличается от смежных понятий
- веса после обучения — это уже оптимизированные значения, полученные в результате обратного распространения ошибки;
- гиперпараметры — задают условия обучения (скорость обучения, регуляризация), а не начальные значения весов.
Примеры использования
- в свёрточных сетях (CNN) для классификации изображений начальные веса свёточных фильтров задаются по методу Хе;
- в рекуррентных сетях (RNN) часто применяют ортогональную инициализацию, чтобы стабилизировать обучение во времени;
- в трансформерах (Transformer) начальные веса линейных слоёв обычно инициализируются по методу Ксавье или его вариациям.
Популярные реализации
- в TensorFlow и Keras:
tf.keras.initializers.GlorotUniform(),tf.keras.initializers.HeNormal(); - в PyTorch:
torch.nn.init.xavier_uniform_(),torch.nn.init.kaiming_normal_().
