Exploding gradient
Это важно, потому что почти все современные модели — от переводчиков до распознавания речи — учатся через обратное распространение ошибки. Смысл метода в том, что ошибка передаётся с последнего слоя к первому, и по пути каждый слой получает свою порцию обновления. Если на каком-то шаге эти порции неожиданно разрастаются, весь процесс ломается.
Интуитивно это похоже на эхо в горах: вы кричите, звук отражается от скал и возвращается к вам снова. Если каждый отскок чуть-чуть усиливает звук, то через пару повторений вы уже не слышите собственного крика, а вокруг стоит оглушительный грохот. В сети градиент проходит через десятки слоёв, и если на каждом шаге умножается на число, хоть немного большее единицы, то к началу пути он превращается в лавину. Числа выходят за пределы памяти компьютера, и веса обновляются так круто, что модель теряет все ранее выученные закономерности.
Классический пример — рекуррентная нейросеть, предсказывающая следующую букву в тексте. При взрыве градиента её веса «перескакивают» через оптимальную область, и сеть вместо осмысленного текста начинает печатать бессмысленные повторы или вести себя так, будто отказывается учиться.
Чтобы этого не случалось, разработчики применяют обрезку градиентов: если значение превышает порог, его просто искусственно ограничивают. Также помогают аккуратная инициализация весов и специальные архитектуры. Взрывной градиент напоминает, что даже самая умная сеть — это хрупкая система, требующая точной настройки.
Поделиться