【がくしゅうりつ】

学習率 とは?

💡 山を下りるときの「歩幅を決めるつまみ」
📌 このページのポイント
学習率の大小による収束の違い 学習率: 小さい 損失 学習回数 ゆっくり確実に収束 △ 時間がかかる 適切な学習率 損失 学習回数 効率よく収束 ◎ 最適なバランス 学習率が大きすぎると → 損失が振動・発散して収束しない 最適解を飛び越えてしまう
学習率のイメージ
ひよこ ひよこ

学習率って大きい方が早く学習できていいんじゃないの?

ペンギン先生 ペンギン先生

一見そう思えるけど、大きすぎると「谷底を目指してジャンプしたら谷の反対側の山に飛び出してしまう」状態になるんだ。損失が下がるどころか増えたり、あちこち飛び跳ねて全然収束しなくなる。かといって小さすぎると学習に何万回もかかって効率が悪いんだよ。

ひよこ ひよこ

正しい学習率ってどうやって見つけるの?

ペンギン先生 ペンギン先生

ざっくりした方法は「0.1, 0.01, 0.001, 0.0001」のように10分の1ずつ変えてどれが一番学習が進むか試すんだ。最近はAdamのような最適化アルゴリズムが学習率を自動で調整してくれるから、初期値を0.001に設定しておくだけでも多くの場合はうまくいくよ。

ひよこ ひよこ

学習が進むにつれて学習率を変えるって聞いたけど?

ペンギン先生 ペンギン先生

「学習率スケジューラー」という仕組みがあって、最初は大きな歩幅で谷に向かって進み、近づいたら小さな歩幅で細かく調整する、という戦略だよ。ウォームアップ(最初はゆっくり始めて徐々に上げる)とコサインアニーリング(波のように下げていく)が代表的だね。

ひよこ ひよこ

学習率が違うと同じデータでも全然違う結果になるって本当?

ペンギン先生 ペンギン先生

本当だよ。さらに難しいのが「学習率とバッチサイズはセットで考える必要がある」ということ。バッチサイズを2倍にしたら学習率も2倍にする「線形スケーリング則」がよく知られているけど、実はこれが完全に正しいのは一定の条件下だけで、非常に大きなバッチサイズでは崩れることがある。大規模モデルの学習では「学習率 × バッチサイズ × ウォームアップ期間」の組み合わせを慎重に設計することが性能を左右する、経験と知識が必要な職人芸なんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「学習率」って出てきたら「AIが1回の学習でどれだけパラメーターを更新するかを決める重要な設定値のことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Learning Rate」 = 学習の速さ・割合
💬 パラメーターを「どのくらいの速さで(Rate)学習させるか(Learning)」を決める値だよ
← 用語集にもどる