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

【疑問】「損失を小さくするように学習する」って、具体的に何をどう動かしてるん?【AI】

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

AIの学習は「損失を最小化する」って説明されるけど
何がどう動いて小さくなってるのか、さっぱりわからん

2: 名無しさん

>>1
損失は、予測と正解のずれを1つの数にまとめたもの。数を当てる問題なら、ずれの2乗の平均(平均二乗誤差)がよく使われる
予測 、正解 なら

3: 名無しさん

>>2
分類のときは?

4: 名無しさん

>>3
交差エントロピー。正解のクラスにつけた確率 を使って

なら約0.105、 なら約0.693、 なら約4.61。正解に低い確率をつけるほど、大きく罰せられる

5: 名無しさん

>>4
分類なら、正解率を直接上げるように学習したらええやん。わざわざ別の数を作る意味ある?

6: 名無しさん

>>5
正解率は、パラメータを少し動かしてもほとんど変わらん。予測が入れかわる境目でいきなり変わるだけ
変わらんと、どっちに動かせばよくなるかの手がかりがない
交差エントロピーは確率が少し上がれば少し下がるから、動かす向きがいつでもわかる

7: 名無しさん

>>6
交差エントロピーって、統計の最尤推定と似てるな

8: 名無しさん

>>7
同じもの。データ全体の交差エントロピーの合計を最小にするのは、正解の確率の積(尤度)の対数を最大にするのと同じ

9: 名無しさん

で、どうやって小さくするん

10: 名無しさん

>>9
勾配降下法。損失をパラメータで微分した値(勾配)を求めて、その逆向きに少しだけ動かす

は学習率で、1回にどれだけ動かすか

11: 名無しさん

>>10
数字で1回やってみて

12: 名無しさん

>>11
にする。一番小さくなるのは 。勾配は
、 から始めると、 は0.6、1.08、1.464 と近づいていく
3までの距離は1回ごとに 倍になって、10回で

13: 名無しさん

>>12
学習率を大きくしたら、早く着くんちゃうの

14: 名無しさん

>>13
大きすぎると行きすぎる。 やと、距離の倍率が で
は6.6、、8.18、 と、3をまたいで行ったり来たりしながら離れていく
逆に と小さすぎると、1000回やっても3まで約0.41残る

15: 名無しさん

実際のモデルはパラメータが何億もあるやろ。それ全部を微分するん

16: 名無しさん

>>15
する。パラメータ1個ずつの偏微分を並べたベクトルが勾配で、層をさかのぼりながら効率よく計算する(誤差逆伝播法)
全部のパラメータを、それぞれの勾配の逆向きに同時に動かす

17: 名無しさん

>>16
softmax と交差エントロピーを組み合わせたときの勾配はどうなるん

18: 名無しさん

>>17
きれいな形になる。softmax に入れる前の値 で微分すると

は正解なら1、それ以外は0。 で正解が2番目なら、 で、勾配は約
で1回動かすと になって、正解の確率は0.245から約0.551に、損失は約1.41から約0.60に下がる

19: 名無しさん

データが何十億件もあったら、勾配を1回計算するだけで大変やろ

20: 名無しさん

>>19
だから全部ではなく、ランダムに選んだ一部(ミニバッチ)で勾配を計算して動かす(確率的勾配降下法)
勾配は少しぶれるけど、1回が軽いからたくさん回せる。BERT の事前学習なら、1回に256文ずつ使ってる

21: 名無しさん

>>20
学習率は、ずっと同じ値なん?

22: 名無しさん

>>21
パラメータごとに歩幅を自動で調整する方法がよく使われる。代表が Adam(Kingma と Ba、2014年に arXiv 公開)
勾配とその2乗の移動平均を使って歩幅を決める。論文が勧める初期設定は 、、、

23: 名無しさん

損失をとことん0まで下げたら、最強のモデルになるやろ

24: 名無しさん

>>23
ならん。下げてるのは学習に使ったデータでの損失やから、そのデータを丸暗記しても0に近づく(過学習)
本当に知りたいのは、見たことのないデータでの成績。だから学習に使わない検証用データで、損失や正解率を別に確かめる

25: 名無しさん

損失は「ずれを1つの数にしたもの」で、勾配の逆向きに少しずつ動かして下げる。学習率と、見てないデータでの確認が大事なんやな

管理人のひとこと