AIの学習は「損失を最小化する」って説明されるけど
何がどう動いて小さくなってるのか、さっぱりわからん
【疑問】「損失を小さくするように学習する」って、具体的に何をどう動かしてるん?【AI】
>>1
損失は、予測と正解のずれを1つの数にまとめたもの。数を当てる問題なら、ずれの2乗の平均(平均二乗誤差)がよく使われる
予測 、正解 なら
>>2
分類のときは?
>>3
交差エントロピー。正解のクラスにつけた確率 を使って
なら約0.105、 なら約0.693、 なら約4.61。正解に低い確率をつけるほど、大きく罰せられる
>>4
分類なら、正解率を直接上げるように学習したらええやん。わざわざ別の数を作る意味ある?
>>5
正解率は、パラメータを少し動かしてもほとんど変わらん。予測が入れかわる境目でいきなり変わるだけ
変わらんと、どっちに動かせばよくなるかの手がかりがない
交差エントロピーは確率が少し上がれば少し下がるから、動かす向きがいつでもわかる
>>6
交差エントロピーって、統計の最尤推定と似てるな
>>7
同じもの。データ全体の交差エントロピーの合計を最小にするのは、正解の確率の積(尤度)の対数を最大にするのと同じ
で、どうやって小さくするん
>>9
勾配降下法。損失をパラメータで微分した値(勾配)を求めて、その逆向きに少しだけ動かす
は学習率で、1回にどれだけ動かすか
>>10
数字で1回やってみて
>>11
にする。一番小さくなるのは 。勾配は
、 から始めると、 は0.6、1.08、1.464 と近づいていく
3までの距離は1回ごとに 倍になって、10回で
>>12
学習率を大きくしたら、早く着くんちゃうの
>>13
大きすぎると行きすぎる。 やと、距離の倍率が で
は6.6、、8.18、 と、3をまたいで行ったり来たりしながら離れていく
逆に と小さすぎると、1000回やっても3まで約0.41残る
実際のモデルはパラメータが何億もあるやろ。それ全部を微分するん
>>15
する。パラメータ1個ずつの偏微分を並べたベクトルが勾配で、層をさかのぼりながら効率よく計算する(誤差逆伝播法)
全部のパラメータを、それぞれの勾配の逆向きに同時に動かす
>>16
softmax と交差エントロピーを組み合わせたときの勾配はどうなるん
>>17
きれいな形になる。softmax に入れる前の値 で微分すると
は正解なら1、それ以外は0。 で正解が2番目なら、 で、勾配は約
で1回動かすと になって、正解の確率は0.245から約0.551に、損失は約1.41から約0.60に下がる
データが何十億件もあったら、勾配を1回計算するだけで大変やろ
>>19
だから全部ではなく、ランダムに選んだ一部(ミニバッチ)で勾配を計算して動かす(確率的勾配降下法)
勾配は少しぶれるけど、1回が軽いからたくさん回せる。BERT の事前学習なら、1回に256文ずつ使ってる
>>20
学習率は、ずっと同じ値なん?
>>21
パラメータごとに歩幅を自動で調整する方法がよく使われる。代表が Adam(Kingma と Ba、2014年に arXiv 公開)
勾配とその2乗の移動平均を使って歩幅を決める。論文が勧める初期設定は 、、、
損失をとことん0まで下げたら、最強のモデルになるやろ
>>23
ならん。下げてるのは学習に使ったデータでの損失やから、そのデータを丸暗記しても0に近づく(過学習)
本当に知りたいのは、見たことのないデータでの成績。だから学習に使わない検証用データで、損失や正解率を別に確かめる
損失は「ずれを1つの数にしたもの」で、勾配の逆向きに少しずつ動かして下げる。学習率と、見てないデータでの確認が大事なんやな
管理人のひとこと
- 損失は予測と正解のずれを1つの数にしたもの。数を当てるなら平均二乗誤差、分類なら交差エントロピー ( で約0.105、 で約4.61)。交差エントロピーの最小化は最尤推定と同じ。
- 正解率は少し動かしても変わらず動かす向きがわからないので、なめらかに変わる損失を使う。
- 勾配降下法は 。 で なら距離が1回ごとに0.8倍になり、 では発散する。
- softmax+交差エントロピーの勾配は 。勾配は誤差逆伝播法で計算し、ミニバッチで近似する。Adam はパラメータごとに歩幅を調整する(初期設定 など)。
- 学習データでの損失を0にしても、見たことのないデータでよいとは限らない(過学習)。検証用データで確かめる。