Инициализация весов: метод Xavier и He

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


Метод Xavier (Glorot)

Метод Xavier предложен для сетей с функциями активации, такими как tanh или логистическая сигмоида, где важно сохранять дисперсию сигналов на входе и выходе каждого слоя примерно одинаковой. Смысл подхода заключается в выборе весов из случайного распределения с дисперсией, зависящей от числа нейронов на входе и выходе слоя.

Формулы для распределения весов:

  1. Для нормального распределения (Gaussian):

[ W (0, )]

  1. Для равномерного распределения (Uniform):

[ W U]

где ( n_ ) — число входов нейрона, ( n_ ) — число выходов.

Применение в Synaptic:

Synaptic по умолчанию инициализирует веса небольшими случайными числами, но библиотека позволяет вручную задавать веса через свойства Neuron или Layer. Для реализации Xavier можно создать функцию, которая пересчитывает веса после создания сети:

function xavierInit(layer) {
    const n_in = layer.list[0].connections.inputs.length;
    const n_out = layer.list.length;
    const limit = Math.sqrt(6 / (n_in + n_out));
    
    layer.list.forEach(neuron => {
        for (let key in neuron.connections.inputs) {
            neuron.connections.inputs[key].weight = Math.random() * 2 * limit - limit;
        }
    });
}

Эта функция перебирает все нейроны слоя и присваивает случайные веса в диапазоне, рассчитанном по методу Xavier.


Метод He

Метод He (He et al.) был предложен специально для сетей с ReLU-подобными функциями активации, где отрицательные значения обнуляются, а дисперсия активностей уменьшается. Инициализация по He масштабирует веса так, чтобы компенсировать это снижение дисперсии.

Формула для нормального распределения:

[ W (0, )]

Для равномерного распределения:

[ W U]

Здесь используется только число входов ( n_ ), без учета числа выходов.

Применение в Synaptic:

function heInit(layer) {
    const n_in = layer.list[0].connections.inputs.length;
    const limit = Math.sqrt(6 / n_in);
    
    layer.list.forEach(neuron => {
        for (let key in neuron.connections.inputs) {
            neuron.connections.inputs[key].weight = Math.random() * 2 * limit - limit;
        }
    });
}

Такой подход обеспечивает, что значения на выходах слоя ReLU сохраняют достаточную дисперсию и позволяют градиенту корректно проходить через слои.


Сравнение Xavier и He

Метод Подходит для функций активации Расчет дисперсии Замечания
Xavier tanh, sigmoid () Универсален для гладких функций активации
He ReLU, Leaky ReLU () Специально для ReLU, сохраняет дисперсию активаций

Использование неподходящего метода инициализации может привести к медленной сходимости или проблемам с градиентами. Например, применение Xavier для ReLU часто приводит к уменьшению дисперсии на последующих слоях, что замедляет обучение.


Практические советы для Synaptic

  • Веса можно задавать перед обучением, чтобы избежать неустойчивости на начальных эпохах.
  • Для сложных сетей с несколькими скрытыми слоями рекомендуется применять метод соответствующий активации каждого слоя.
  • Для больших слоев с сотнями нейронов стоит использовать нормальное распределение, а для небольших сетей можно ограничиться равномерным.
  • После инициализации полезно проверить распределение весов и выходных сигналов для каждого слоя, чтобы убедиться, что дисперсия соответствует ожиданиям.

Правильная инициализация весов — фундамент эффективного обучения нейронных сетей. Методы Xavier и He обеспечивают сохранение дисперсии сигналов, ускоряют обучение и предотвращают проблемы с градиентами, делая Synaptic гибкой платформой для экспериментов с различными архитектурами и функциями активации.