Инициализация весов
Тема дорожной карты · Глубокое обучение
Инициализация весов — это важный этап подготовки нейронной сети к обучению. Начальные значения весов определяют точку старта в loss-ландшафте и могут существенно влиять на скорость и качество обучения. Неправильная инициализация может привести к проблемам, таким как симметричность, затухание или взрыв градиентов. Важно выбирать метод инициализации, который обеспечит стабильное обучение и улучшит производительность сети.
Как это работает
Инициализация весов в полностью соединённых нейронных сетях (FFN, MLP) представляет собой простую глубокую сеть, состоящую из последовательно соединённых слоёв с нелинейными активациями. Скрытые слои используются для обучения промежуточных представлений данных, что позволяет сети эффективно обрабатывать сложные функции. Глубина и ширина сети — это гиперпараметры, которые нужно настраивать для достижения оптимальных результатов.
Для стабильности обучения используются различные методы инициализации, такие как He и Xavier (Glorot) инициализации. He инициализация, также известная как Kaiming инициализация, используется для слоёв с ReLU или GELU активациями, а Xavier инициализация — для слоёв с tanh или sigmoid активациями. Оба метода масштабируют дисперсию весов по входным данным (fan-in).
В PyTorch инициализация весов осуществляется с помощью функций, таких как torch.nn.init.kaiming_normal_, а в Keras — с помощью параметра kernel_initializer='he_normal'. Современные трансформеры также используют малый масштаб инициализации и pre-norm для устойчивости в глубину.
Когда применять
Инициализация весов особенно важна при работе с полносвязными сетями (FFN, MLP), которые служат базовой моделью перед более сложными архитектурами, такими как CNN или Transformer. Для работы с табличными данными MLP часто даёт хорошие результаты, особенно когда используются качественные признаки. Внутри больших сетей MLP-головы преобразуют представления в выходные данные (классификация, регрессия).
Начальная конфигурация сети обычно включает 2-3 скрытых слоя с 64-256 единицами, и затем масштабируется по мере необходимости. Важно учитывать использование нормализации, особенно при работе с маленькими пакетами данных. При batch < 32 рекомендуется использовать LayerNorm или GroupNorm вместо BatchNorm.
Типичные ошибки
Типичные ошибки при инициализации весов включают использование глубоких и широких MLP, когда 2 слоя могут быть достаточно для обучения. Нулевая инициализация весов приводит к тому, что градиенты становятся идентичными, что делает обучение невозможным. Нормализация, такая как BatchNorm, должна использоваться с осторожностью, особенно при работе с маленькими пакетами данных. Также важно помнить, что Dropout должен быть отключен на этапе inference.