Anzeige

勾配降下法の 最適化アルゴリズム

nishio
7. Oct 2016
Anzeige

Más contenido relacionado

Presentaciones para ti(20)

Anzeige

Último(20)

勾配降下法の 最適化アルゴリズム

  1. 勾配降下法の 最適化アルゴリズム (Adagrad, Adadelta, Adam) 2016-10-07 サイボウズ・ラボ 西尾泰和
  2. このスライドの目的 • 勾配降下法はDeep Learningの学習で重要な役 割を果たす最適化手法 • Deep Leaningに限らず応用分野の広いツール • ここ数年でアルゴリズムの改良が提案されて いるのでそれについて整理する 2
  3. 勾配降下法 最適化(関数の最小値を求めること)の方法の一つ 関数が微分できることが条件 各点での微分(=勾配)をみて、一番勾配が急な方 向に降りていく* 3 * 一番原始的な「最急降下法」の場合
  4. 勾配が0の点 3通りある 4
  5. すべての軸で二回微分が負 勾配0の点から遠ざかる 方向に動くので、 この点にハマって動けな くなることは確率的には とても起こりにくい。 5
  6. すべての軸で二回微分が正 勾配0の点に近づく方向 に動き、ここに集まる。 この点が関数の定義域 全体で最小値なのかは わからないのだけど、 それは勾配法ではどう しようもないので気に しない* 6 * 対処法:焼きなまし法とか初期値を変えて何度も計算とか
  7. 二回微分の符号が異なる 関数の定義域が高次元 の場合、このパターン が圧倒的に多い。* これをうまく避けたい 7 * 10次元の時、99.8%ぐらい Identifying and attacking the saddle point problem in high-dimensional non-convex optimization https://arxiv.org/pdf/1406.2572v1.pdf
  8. Alec Radfordによる可視化 8
  9. Alec Radfordによる可視化 9
  10. 各アルゴリズム解説 • 最急降下法 • モメンタム • Nesterov accelerated gradient • Adagrad • Adadelta • Adam 10
  11. 最急降下法 1. 現在位置𝑥𝑡での勾配𝑔(𝑥𝑡)を計算 2. その勾配に学習率𝜂を掛けたもので位置を更新 11 𝑥 𝑡+1 = 𝑥 𝑡 − 𝜂𝑔(𝑥 𝑡)
  12. モメンタム アイデア「慣性を付けたらいいんじゃない?」 1. 現在位置𝑥𝑡での勾配𝑔(𝑥𝑡)に学習率を掛ける 2. 前回の更新量に0.9ぐらいの減衰率を掛ける 3. 両方使って位置を更新 12 𝑥 𝑡+1 = 𝑥 𝑡 + 𝛾(𝑥 𝑡 − 𝑥 𝑡−1) − 𝜂𝑔(𝑥 𝑡)
  13. Nesterov accelerated gradient アイデア「一歩先の地点の勾配を使おう」 13 上: モメンタム 下: NAG 青矢印が矢印根元 での勾配 図の簡略化のため 学習率や減衰率は 1にした
  14. Nesterov accelerated gradient 数式的には 𝑣𝑡 = 𝛾 𝑥𝑡 − 𝑥𝑡−1 として モメンタム 𝑥𝑡+1 = 𝑥𝑡 + 𝑣𝑡 − 𝜂𝑔(𝑥𝑡) NAG 𝑥𝑡+1 = 𝑥𝑡 + 𝑣𝑡 − 𝜂𝑔(𝑥𝑡 + 𝑣𝑡) 14
  15. Adagrad ここまでの話はいったん全部忘れて 「そもそも学習率がどの軸でも同じって おかしいんじゃないの?」 特に確率的勾配降下法と組み合わせて 使うことを考えた場合 「まれにしか観測されない特徴」 →「その軸方向の勾配が多くの場合ゼロ」 まれな特徴が観測されたときには その軸方向には大きく学習したい 15
  16. Adagrad そこで各軸方向の勾配の二乗和を溜めておいて 学習率をその平方根*で割ることで まれな特徴に対して学習率を高めにする。 学習率は他の方法と比べて10倍くらい大きくし ておく。ゼロ除算を避けるために分母に小さい値 を足す。 16 * RMS: Root mean square
  17. Adagradの問題点 勾配の二乗は常に非負なので 学習率は単調非増加。 学習初期に勾配のきついところを通ると それ以降ずっとその軸方向の学習率が 小さくなってしまう。 これでいいのか? 17
  18. Adadelta アイデア1「過去の勾配の二乗和全部を使うん じゃなくて、最近のだけ使おう」 最近n件を取っておくのはメモリ消費が大きいの で指数平滑移動平均を使う 18 ADADELTA: AN ADAPTIVE LEARNING RATE METHOD https://arxiv.org/pdf/1212.5701v1.pdf
  19. Adadelta アイデア2「単位を合わそう」 Adagradに限らず、SGDやモメンタムでも 「単位があっていない」 19
  20. 単位とは? 例えば1次元の関数fで、xの単位がメートル(m) yの単位がキログラム(kg)である場合を考える。 fの勾配の単位はもちろん kg/m SGDの更新式ではmにkg/mを足していておかし い。Adagradではkg/mをkg/mで割って無単位量 になっててやっぱりおかしい。 20
  21. ニュートン法 ニュートン法の場合は 「yの値をfの勾配で割ったもの」 をxの更新に使う。 先ほどの例なら「kg を kg/m で割ったもの」 でmの値の更新をすることになる。 これなら単位はおかしくない。 21
  22. Adadeltaの単位合わせ 「過去のxの更新差分の平均」を 「過去の勾配の平均」で割って 今の勾配を掛けたものを xの更新差分とする。→単位OK 22 * RMS: Root mean square
  23. 単位合わせのメリット 単位のあってないSGDでは関数fの最適化と fを単に10倍した関数の最適化とで 振る舞いが違う(後者が10倍大きい幅で更新する) この差を吸収するのが「学習率」なる値で 後者の関数の最適化において 更新幅が大きくなりすぎないようにするためには 10倍小さい学習率にする必要がある。 Adadeltaではyの単位が影響しないので、この目 的で学習率をチューニングする必要がない 23
  24. 学習率不要 論文中の数式、上から最急降下法、モメンタム、 Adagrad、Adadelta。Adadeltaだけ学習率ηがな いことに注目。 24
  25. Adam adaptive moment estimation 勾配の1乗を溜めこむモメンタム 勾配の2乗を溜めこむAdagrad これって要するに1次と2次のモーメント推定 じゃないか!というのがAdamのアイデア 25 ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION https://arxiv.org/pdf/1412.6980v8.pdf
  26. アルゴリズム 26
  27. 抜粋 𝑚 𝑡 ← 𝛽1 𝑚 𝑡−1 + 1 − 𝛽1 𝑔𝑡 𝑣𝑡 ← 𝛽2 𝑣𝑡−1 + 1 − 𝛽2 𝑔𝑡 2 𝜃𝑡 ← 𝜃𝑡−1 − 𝛼 𝑚 𝑡 𝑣𝑡 + 𝜖 27 mが1次のモーメント(モメンタム相当) vが2次のモーメント、これの平方を分母に置くのが Adagradの「勾配のRMSを分母に置く」に相当。 * RMS: Root mean square
  28. Adamは単位おかしい AdamはAdagradとRMSPropから派生しているの で、Adadeltaが指摘した「単位おかしい」問題は そのまま引き継いでしまっている。 28
  29. 実験 Adam著者ら「AdaDeltaよりNesterovがよい」 29
  30. Adam筆者らによる解釈 なぜNesterovがAdagradよりよいのか? CNNの実験では2次のモーメントがゼロにvanish 2次のモーメントしか使ってないAdagradは無力 1次のモーメントが収束の高速化に寄与したので はないか。 一方1次のモーメントを使っているNesterovより もさらに性能が良いのは「軸ごとの学習率」が効 いているのではないか 30
  31. 疑問点 「 CNNの実験では2次のモーメントがゼロに vanish」 それβが小さいとかαとεの比がおかしいとかじゃ ないのか……? βが小さいと過去のデータを素早く忘れすぎる。 2次のモーメントがεに比べて小さい件は、εを小 さくしてαも同率で小さくすれば済む話。 そもそも初期値依存の激しい問題で1回の実験結 果を見て議論してもアレなので初期値とパラメー タを変えて何度も実験してほしい。 31
  32. 感想 Adamはモメンタム系とAdagradの「各軸ごとの 学習率」の良いとこどりをしているが、Adadelta の「単位正しく」は取り込んでいない。 そこも取り込んだ手法が今後生まれるのかもしれ ない。 32
Anzeige