Затухание градиента
Объясню интуитивно. Представьте длинную цепочку людей, передающих шёпотом сообщение от последнего к первому. Каждый, пересказывая, немного искажает и приглушает звук. К началу цепочки сообщение превращается в едва различимый шёпот — если вообще доходит. В нейросети при обучении ошибка передаётся обратно через каждый слой, и на каждом шаге умножается на веса связей. Если эти веса, как часто бывает, меньше единицы, то после десятков слоёв сигнал уменьшается до ничтожных величин. Первые слои перестают получать корректные «указания», как им меняться, и их обучение замирает.
Классический пример — распознавание рукописных цифр в старой сети с тремя десятками скрытых слоёв. Если веса инициализированы слишком малыми, то первые слои, отвечающие за выделение простых линий и изгибов, остаются фактически неизменными после сотен эпох обучения, тогда как последние слои адаптируются. В итоге сеть выдаёт случайные догадки, а точность не растёт. Именно для борьбы с затуханием были придуманы ReLU, нормализация и остаточные блоки, которые позволяют градиенту «перепрыгивать» через слои.
Вывод: затухание градиента — тихий убийца глубокого обучения, который делает первые слои бесполезными. Сегодня его успешно обходят, но это напоминание: в нейросетях важно не только увеличивать слои, но и следить за тем, чтобы поток обучения не затухал раньше времени.
Поделиться