勾配クリッピングは、ニューラルネットワークの学習時に発生する勾配爆発を防ぐため、算出された勾配の大きさに閾値を設けて制限する技術です。過度に大きな勾配を切り詰めることで、パラメータの更新を安定させ、学習を正常に収束させることができます。
勾配クリッピングとは
一言でいうと勾配クリッピングとは、ディープラーニングの学習において、勾配の値が大きくなりすぎて計算が不安定になるのを防ぐための安全装置です。
詳しく解説
ディープラーニングの学習では、誤差逆伝播法を用いてパラメータを調整しますが、層が深くなるRNNなどのモデルでは、勾配が指数関数的に増大する「勾配爆発」が起きることがあります。勾配爆発が発生すると、パラメータが過大な値に更新され、損失関数の値が発散して計算が不可能になります。勾配クリッピングは、あらかじめ設定した閾値を超えた勾配を強制的に一定の大きさへ切り詰める(クリップする)ことで、この発散を防ぎます。代表的な手法として、勾配のノルム(全体の大きさ)を計算してスケーリングする方法や、勾配の各要素の絶対値を直接制限する方法があります。
具体例・使われ方
自然言語処理で広く使われるRNN(再帰型ニューラルネットワーク)やLSTMの学習時に、長い時系列データを扱うと勾配爆発が起きやすくなります。そのため、モデルの学習スクリプトに勾配クリッピングを組み込み、安定したパラメータ更新を実現します。
似た用語との違い
学習が不安定になる現象として「勾配消失」が挙げられますが、勾配消失は勾配がゼロに近くなり学習が進まなくなる問題であり、大きくなりすぎる勾配を抑える勾配クリッピングとは逆の課題に対処するものです。
注意点
閾値を小さくしすぎると、本来必要な勾配の情報まで削られてしまい、学習の速度や精度が低下するトレードオフがあります。そのため、モデルのアーキテクチャやデータセットに応じた適切な閾値のチューニングが必要です。