モデルが実際にどう学習するか — 普通の勾配降下法からAdamまで
勾配クリッピングは、更新がどれだけ大きくなれるかに上限を設ける。あるバッチが巨大な勾配を生んだ場合、オプティマイザーのステップの前に、クリッピングがそれを縮小する。
クリッピングは目的関数もデータも直しはしない。ひとつの安全規則だと考えるといい。1つの極端なバッチのせいで、パラメータが損失曲面のあちこちに放り投げられるのを許してはならない、というルールだ。
エレベーターの速度調整器がちょうどよい例えだ。エレベーターは普段どおり動けるが、速度が出すぎると、危険になる前に調整器がそれを制限する。勾配クリッピングも、普通の勾配はそのまま通し、危険なスパイクだけを抑える。下の図はまさにクリップされる対象を示している。ボウルの中で点をドラッグすると、曲面が急になるにつれて勾配の矢印が伸びていくのが分かる。クリッピングはその矢印の向きを保ったまま、長さだけをcで頭打ちにする。