【がくしゅうりつ】

学習率 とは?

最終更新:
💡 更新の歩幅を調節するつまみ

勾配降下法などで、パラメーターの更新量を調節する設定値。基本的な勾配降下法では、勾配に学習率を掛けて更新します。大き過ぎると不安定になり、小さ過ぎると進みが遅くなる場合があり、モデルやデータに合わせて選びます。

📌 このページのポイント
更新の歩幅を調節する基本の更新量:学習率 × 勾配小さ過ぎる場合損失更新回数改善が遅いことも条件に合う場合損失更新回数早く改善することも大き過ぎると、不安定になることも
基本的な勾配降下法と損失の推移を示す模式図。実測値ではありません。同じ学習率でも勾配が違えば更新量は変わり、収束が保証されるわけではありません。
ひよこ ひよこ
学習率は、1回で動かす距離そのもの?
ペンギン先生 ペンギン先生
基本的な勾配降下法では、学習率を勾配に掛けて更新量を決めるよ。勾配は損失が増える方向と変化の大きさを表すので、その反対へ進む。学習率が同じでも勾配が変われば更新量は変わるんだ。
ひよこ ひよこ
大きくすれば、早く学習できる?
ペンギン先生 ペンギン先生
大き過ぎると谷を飛び越えるように、損失が上下したり増え続けたりすることがある。反対に小さ過ぎると、改善に多くの更新が必要になることもあるよ。小さい値なら必ず最適解に着く、という保証もないんだ。
ひよこ ひよこ
よい値は、どうやって選ぶの?
ペンギン先生 ペンギン先生
モデル、データ、最適化の方法、バッチサイズによって違うよ。候補を変えて試し、学習中の損失だけでなく、学習に使っていないデータでの結果も比較する。全部に使える正解の値があるわけではないんだ。
ひよこ ひよこ
Adamなら、自分で決めなくてよい?
ペンギン先生 ペンギン先生
Adamは過去の勾配から更新の大きさを調整するけれど、学習率の設定も使うよ。例えばPyTorchのAdamの既定値は0.001。でも、どの学習でもその値でうまくいくという意味ではない。損失や検証結果を見て調整しよう。
ひよこ ひよこ
学習中に、値を変えることもある?
ペンギン先生 ペンギン先生
あるよ。スケジューラーで決めた進み方に沿って変える。最初は小さく始めて上げるウォームアップや、コサインの曲線に沿って下げる区間を作る方法などがあるんだ。必要性や変え方は学習の条件に合わせて選ぼう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「学習率」って出てきたら「学習でパラメーターを動かす歩幅を調節する値」と思えばだいたいOK!
📖 おまけ:英語の意味
「Learning Rate」 = 学習率
💬 Learningは学習、Rateは率。学習でパラメーターを更新するとき、その変化の大きさを調節する値だよ。

参考資料

← 用語集にもどる