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

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

Решаемая проблема

Нейросети моделируют сложные нелинейные зависимости, вследствие чего рельеф функции потерь может быть сложным и подверженным резким изменениям, как показано на рисунке [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}

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

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

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

Поэтому лучше использовать адаптивную обрезку градиента (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% от их нормы.

Однако порог оказывается единый как для весов, изменяющихся как в большом, так и в небольшом диапазоне. Поэтому лучше работает адаптивное ограничение градиента для каждого веса 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.