Перейти к основному содержимому

Обрезка градиента

Неустойчивость оптимизации

Нейросети моделируют сложные нелинейные зависимости, вследствие чего рельеф функции потерь может быть сложным и подверженным резким изменениям, что может приводить к неустойчивой оптимизации весов как показано на рисунке [1]:

Для стабилизации обучения приходится снижать шаг обучения, замедляя его. Хотелось бы уменьшать сдвиг не постоянно, а только в областях резкого изменения функции, что достигается методом обрезки градиента.

Обрезка градиента

Обрезка градиента (gradient clipping, [1]) - популярная процедура, повышающая стабильность и скорость обучения нейросетей. Поскольку при изменчивом ландшафте функции потерь могут возникать большие по норме градиенты, то перед каждым обновлением весов в методе стохастического градиентного спуска норма градиента сравнивается с некоторым порогом λ>0\lambda>0. Если норма меньше порога, то веса обновляются как обычно, а если больше - то норма градиента обрезается порогом λ\lambda перед обновлением весов:

w{wεwL(y^i,yi),если wL(y^i,yi)<λwελwL(y^i,yi)wL(y^i,yi),если wL(y^i,yi)λ\mathbf{w}\to\begin{cases} \mathbf{w}-\varepsilon\nabla_{\mathbf{w}}\mathcal{L}(\widehat{y}_{i},y_{i}), & \text{если }\left\lVert \nabla_{\mathbf{w}}\mathcal{L}(\widehat{y}_{i},y_{i})\right\rVert <\lambda\\ \mathbf{w}-\varepsilon\lambda\frac{\nabla_{\mathbf{w}}\mathcal{L}(\widehat{y}_{i},y_{i})}{\left\lVert \nabla_{\mathbf{w}}\mathcal{L}(\widehat{y}_{i},y_{i})\right\rVert }, & \text{если }\left\lVert \nabla_{\mathbf{w}}\mathcal{L}(\widehat{y}_{i},y_{i})\right\rVert \ge\lambda \end{cases}

Этот приём позволил существенно повысить стабильность и скорость настройки рекуррентных нейронных сетей, в которых из-за многократно повторяемых слоёв с одинаковыми весами проблема нестабильных градиентов стоит особенно остро.

Адаптивная обрезка градиента

Также можно использовать адаптивную обрезку градиента (adaptive gradient clipping, [2]):

w{wεwL(y^i,yi),если wL(y^i,yi)/w<λwελwwL(y^i,yi)wL(y^i,yi),если wL(y^i,yi)/wλ\mathbf{w}\to\begin{cases} \mathbf{w}-\varepsilon\nabla_{\mathbf{w}}\mathcal{L}(\widehat{y}_{i}, y_{i}), & \text{если }\left\lVert \nabla_{\mathbf{w}}\mathcal{L}(\widehat{y}_{i},y_{i})\right\rVert /\left\Vert \mathbf{w}\right\Vert <\lambda\\ \mathbf{w}-\varepsilon\lambda\left\Vert \mathbf{w}\right\Vert \frac{\nabla_{\mathbf{w}}\mathcal{L}(\widehat{y}_{i},y_{i})}{\left\lVert \nabla_{\mathbf{w}}\mathcal{L}(\mathbf{\widehat{y}_{i}},y_{i})\right\rVert }, & \text{если }\left\lVert \nabla_{\mathbf{w}}\mathcal{L}(\widehat{y}_{i},y_{i})\right\rVert /\left\Vert \mathbf{w}\right\Vert \ge\lambda \end{cases}

В этом случае гораздо проще и интуитивнее задать порог λ\lambda, который теперь соответствует не максимальному абсолютному изменению весов, а их максимальному относительному изменению.

Например, мы можем задать ограничение, что на каждой итерации оптимизации веса не должны меняться больше, чем на 10% от их нормы.

Проблемой остаётся необходимость выбора единого порога λ\lambda, который не будет оптимальным для всех весов, поскольку часть из них изменяются в широком диапазоне значений, а другая часть - в узком. Поэтому лучше работает адаптивное ограничение градиента для каждого веса wiw_i (и его градиента) в отдельности:

wi{wiεwiL(y^i,yi),если wiL(y^i,yi)/wi<λwiελwiwiL(y^i,yi)wiL(y^i,yi),если wiL(y^i,yi)/wiλw_{i}\to\begin{cases} w_{i}-\varepsilon\nabla_{w_{i}}\mathcal{L}(\widehat{y}_{i},y_{i}), & \text{если }\left| \nabla_{w_{i}}\mathcal{L}(\widehat{y}_{i},y_{i})\right| /\left| w_{i}\right| ^{*}<\lambda\\ w_{i}-\varepsilon\lambda\left| w_{i}\right| ^{*}\frac{\nabla_{w_{i}}\mathcal{L}(\widehat{y}_{i},y_{i})}{\left| \nabla_{w_{i}}\mathcal{L}(\widehat{y}_{i},y_{i})\right| }, & \text{если }\left| \nabla_{w_{i}}\mathcal{L}(\widehat{y}_{i},y_{i})\right| /\left| w_{i}\right| ^{*}\ge\lambda \end{cases}

В формуле wi=max(wi,ν)\left| w_{i}\right| ^{*}=\max\left(\left| w_{i}\right| ,\nu\right) , а ν=103\nu=10^{-3} - гиперпараметр для исключения деления на ноль.

В работе [2] замена батч-нормализации адаптивным ограничением градиента позволила обучить сеть ResNet быстрее и повысить качество её прогнозов.

Литература

  1. Pascanu R., Mikolov T., Bengio Y. On the difficulty of training recurrent neural networks //International conference on machine learning. – Pmlr, 2013. – С. 1310-1318.
  2. Brock A. et al. High-performance large-scale image recognition without normalization //International conference on machine learning. – PMLR, 2021. – С. 1059-1071.