【おもみげんすい】

重み減衰(Weight Decay) とは?

最終更新:
💡 学習の更新に、重みを縮める成分を加える

学習時のパラメータ更新に、重みをゼロへ近づける成分を加える正則化手法。通常のSGDでは係数を対応させたL2正則化と等価だが、Adamなどでは異なる。AdamWは損失の勾配による更新と重み減衰を分けて扱う。

📌 このページのポイント
減衰成分だけを取り出した例 減衰の前 0.9倍した後 4 -2 w₁ w₂ 3.6 -1.8 w₁ w₂ × 0.9 正負どちらも、ゼロへ近づく 実際は、勾配による更新も加わる 毎回小さくなる・過学習を防ぐ保証はない
0.9は説明用の縮小率で、推奨設定値ではありません。L2の損失項とは一律に同じではなく、通常のSGDで係数を対応させる場合に等価です。AdamWは減衰を分けて扱います。
ひよこ ひよこ
Weight Decayって、重みを小さくすること?
ペンギン先生 ペンギン先生
学習の更新に、重みをゼロへ近づける成分を加えることだよ。例えば減衰だけなら4を3.6、-2を-1.8へ縮めるイメージ。ただし実際には損失の勾配による更新もあるので、毎回全ての重みが小さくなるわけではないんだ。
ひよこ ひよこ
小さくすれば必ず過学習を防げる?
ペンギン先生 ペンギン先生
保証はできないよ。学習を制約して、未知のデータへの汎化を改善することを目指す手法なんだ。重みの大きさだけで過学習かどうかは判断できないので、学習に使わないデータで性能を確認しよう。
ひよこ ひよこ
L2正則化と同じって聞いたけど?
ペンギン先生 ペンギン先生
L2正則化は、重みの二乗和に係数を掛けて損失に加える方法だよ。通常のSGDなら学習率と係数を対応させると重み減衰と等価になる。ただしAdamのような適応的な更新では同じにならないんだ。
ひよこ ひよこ
AdamWは何が違うの?
ペンギン先生 ペンギン先生
損失の勾配から計算する更新と、重みを縮める更新を分けて扱うよ。減衰を勾配の移動平均などへ混ぜない方式なんだ。AdamWでも、使えば必ず性能が上がるわけではないので、係数や学習率を評価しながら調整するよ。
ひよこ ひよこ
係数はどれくらいにすればいい?
ペンギン先生 ペンギン先生
全てのモデルに共通の最適値はないよ。ツールのweight_decayの定義や学習率との関係、対象のパラメータ群を確認し、検証データで選ぶんだ。強すぎる制約で学習がうまく進まない場合もあるので、デフォルト値を正解と決め付けないようにしよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Weight Decay」って出てきたら「学習の更新に重みを縮める成分を加える正則化」と思えればだいたいOK!
📖 おまけ:英語の意味
「Weight Decay」 = 重み減衰
💬 Weightは「重み」、Decayは「減衰」。学習の更新に重みを縮める成分を加えることと結び付けると覚えやすいね

参考資料

← 用語集にもどる