勾配降下法の説明で、学習率・局所最適解・鞍点・バッチ・ミニバッチ・オンライン・エポック・イテレーションが一気に出てくる
まとめて整理したい
【疑問】エポックとイテレーションの違いは?勾配降下法・SGD・ミニバッチ・鞍点まとめ【G検定】
前提のおさらい。誤差逆伝播法で、全部の重みについて誤差の勾配が出せる。勾配降下法は、その勾配の逆向きに重みを少しずつ動かして、誤差を小さくしていくやり方
>>1
まず学習率。1歩でどれだけ動かすかの係数
を から で下ると、 は 0.6、1.08、1.464 と3に近づく
にすると 6.6、−1.32 と、3から 3.6、4.32 と離れていって発散する
>>3
谷が1つならええけど、谷がたくさんあったらどうなるん?
>>4
近くの谷の底で止まる。その谷が全体で一番低いとは限らん
全体で一番低い点が大域最適解、まわりよりは低いけど一番ではない点が局所最適解
>>5
もう1つやっかいなのが鞍点。ある向きには谷の底、別の向きには山の頂上になってる点
の原点は、勾配が (0, 0) で止まってまうけど、 の向きに動けばまだ下れる。重みの数が多いと、局所最適解より鞍点のほうがよく出てくる
勾配を何件のデータで計算するかで3つに分かれる
バッチ学習:全部のデータで勾配を出してから1回更新
オンライン学習:1件ごとに更新
ミニバッチ学習:たとえば100件ずつまとめて更新。いまはこれがふつう
>>7
確率的勾配降下法(SGD)は、ランダムに選んだ一部のデータで勾配を出して更新するやり方。もとは1件ずつの意味やけど、今はミニバッチでやるのもSGDと呼ぶことが多い
一部のデータやから勾配にゆらぎがあって、それで鞍点や浅い谷から抜け出しやすい
>>8
ゆらぐなら、全部のデータで正確に勾配を出すバッチ学習のほうがええんちゃう?
>>9
データが何百万件もあったら、1回更新するのに全部を計算せなあかんから遅い。メモリにも乗らん
ゆらぎがあっても、速く何回も更新するほうが結局早く下りられることが多い
>>7
エポックとイテレーションは数え方の違い
イテレーション:重みを1回更新すること
エポック:学習データを全部1回使いきること
1万件をミニバッチ100件で回すと、1エポックは イテレーション。10エポックなら1000イテレーション
管理人のひとこと
- 学習率 は1歩の大きさ。 を0から で下ると 0.6、1.08、1.464。 だと 6.6、−1.32 と発散する。
- 全体で一番低い点が大域最適解、近くで一番低いだけの点が局所最適解。鞍点はある向きでは谷、別の向きでは山で、 の原点が例。
- バッチ学習は全データ、オンライン学習は1件ずつ、ミニバッチ学習は一部ずつ更新。SGDはランダムな一部で勾配を出し、ゆらぎで鞍点から抜けやすい。
- イテレーションは1回の更新、エポックはデータを1周すること。1万件・ミニバッチ100件なら1エポックは100イテレーション。