読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】エポックとイテレーションの違いは?勾配降下法・SGD・ミニバッチ・鞍点まとめ【G検定】

11レスカテゴリ:AI・機械学習
1: 名無しさん

勾配降下法の説明で、学習率・局所最適解・鞍点・バッチ・ミニバッチ・オンライン・エポック・イテレーションが一気に出てくる
まとめて整理したい

2: 名無しさん

前提のおさらい。誤差逆伝播法で、全部の重みについて誤差の勾配が出せる。勾配降下法は、その勾配の逆向きに重みを少しずつ動かして、誤差を小さくしていくやり方

3: 名無しさん

>>1
まず学習率。1歩でどれだけ動かすかの係数

を から で下ると、 は 0.6、1.08、1.464 と3に近づく
にすると 6.6、−1.32 と、3から 3.6、4.32 と離れていって発散する

4: 名無しさん

>>3
谷が1つならええけど、谷がたくさんあったらどうなるん?

5: 名無しさん

>>4
近くの谷の底で止まる。その谷が全体で一番低いとは限らん
全体で一番低い点が大域最適解、まわりよりは低いけど一番ではない点が局所最適解

6: 名無しさん

>>5
もう1つやっかいなのが鞍点。ある向きには谷の底、別の向きには山の頂上になってる点
の原点は、勾配が (0, 0) で止まってまうけど、 の向きに動けばまだ下れる。重みの数が多いと、局所最適解より鞍点のほうがよく出てくる

7: 名無しさん

勾配を何件のデータで計算するかで3つに分かれる
バッチ学習:全部のデータで勾配を出してから1回更新
オンライン学習:1件ごとに更新
ミニバッチ学習:たとえば100件ずつまとめて更新。いまはこれがふつう

8: 名無しさん

>>7
確率的勾配降下法(SGD)は、ランダムに選んだ一部のデータで勾配を出して更新するやり方。もとは1件ずつの意味やけど、今はミニバッチでやるのもSGDと呼ぶことが多い
一部のデータやから勾配にゆらぎがあって、それで鞍点や浅い谷から抜け出しやすい

9: 名無しさん

>>8
ゆらぐなら、全部のデータで正確に勾配を出すバッチ学習のほうがええんちゃう?

10: 名無しさん

>>9
データが何百万件もあったら、1回更新するのに全部を計算せなあかんから遅い。メモリにも乗らん
ゆらぎがあっても、速く何回も更新するほうが結局早く下りられることが多い

11: 名無しさん

>>7
エポックとイテレーションは数え方の違い
イテレーション:重みを1回更新すること
エポック:学習データを全部1回使いきること
1万件をミニバッチ100件で回すと、1エポックは イテレーション。10エポックなら1000イテレーション

管理人のひとこと