学習率とモメンタム

PyTorchで学ぶIntroduction to Deep Learning

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

SGD による重み更新

  • ニューラルネットの学習=最適化問題の解決。

確率的勾配降下法 (SGD) オプティマイザ

sgd = optim.SGD(model.parameters(), lr=0.01, momentum=0.95)
  • 引数は2つ:
    • learning rate: ステップ幅を制御
    • momentum: 慣性を加えて停滞を回避
PyTorchで学ぶIntroduction to Deep Learning

学習率の影響:最適な学習率

最適な学習率の例

  • 勾配が小さくなると、ゼロ付近でステップ幅が減少
PyTorchで学ぶIntroduction to Deep Learning

学習率の影響:小さい学習率

小さい学習率の例

PyTorchで学ぶIntroduction to Deep Learning

学習率の影響:大きい学習率

大きすぎる学習率の例

PyTorchで学ぶIntroduction to Deep Learning

凸関数と非凸関数

これは凸関数です。

凸関数の例

これは非凸関数です。

非凸関数の例

  • 損失関数は非凸
PyTorchで学ぶIntroduction to Deep Learning

モメンタムなし

  • lr = 0.01 momentum = 0、100ステップ後に x = -1.23y = -0.14 の最小値を発見

最適化手法が局所最小にハマっている例

PyTorchで学ぶIntroduction to Deep Learning

モメンタムあり

  • lr = 0.01 momentum = 0.9、100ステップ後に x = 0.92y = -2.04 の最小値を発見

モメンタムありの最適化の例

PyTorchで学ぶIntroduction to Deep Learning

まとめ

$$

学習率 モメンタム
ステップ幅を制御 慣性を制御
高すぎる → 性能低下 局所最小からの脱出を支援
低すぎる → 学習が遅い 小さすぎる → 最適化が停滞
典型範囲: 0.01 ($10^{-2}$) ~ 0.0001 ($10^{-4}$) 典型範囲: 0.85~0.99
PyTorchで学ぶIntroduction to Deep Learning

Ayo berlatih!

PyTorchで学ぶIntroduction to Deep Learning

Preparing Video For Download...