Gradient clipping
В глубоких сетях градиенты часто растут экспоненциально при обратном распространении — это «взрыв градиента». Без клиппирования обучение нестабильно: веса скачут, потери растут. Ограничитель скорости не даёт сделать гигантский шаг, поэтому трансформеры и рекуррентные сети становятся обучаемыми.
Интуитивно: толкаете тележку с хрупким грузом. Слишком сильный толчок разобьёт груз — механизм ограничивает силу. В нейросети: вычисляем градиент, проверяем его норму. Если она выше порога, умножаем все компоненты на коэффициент, чтобы норма стала равна порогу. Направление неизменно, но шаг безопасен.
Пример: при обучении GPT на огромных текстах редкие слова и длинные зависимости вызывают резкие градиенты. Без клиппирования модель забывает грамматику и выдаёт бессмыслицу, с ним — обучение стабильно, потеря снижается. В PyTorch и TensorFlow это параметры clipnorm или clipvalue.
Итог: клиппирование — простой и необходимый регулятор, спасающий нейросети от взрыва градиента. Без него современные глубокие модели практически невозможно обучить.
Поделиться