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

【疑問】ソフトマックス関数って、なんで「exp してから割る」なん?そのまま割合にしたらあかんの?【AI】

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

ソフトマックスは「数値を確率に変える関数」って説明されるけど
確率にしたいだけなら、全部足して割ればええやん。なんで exp を挟むん

2: 名無しさん

>>1
定義はこれ

なら、約 になる

3: 名無しさん

>>2
足して割るだけなら で、だいたい同じやん

4: 名無しさん

>>3
この例はたまたま全部0以上やから、それっぽくなるだけ
やと、足して割ると と で、1を超えたりマイナスになったりする
なら合計が0で、割り算すらできない。 はどんな でも正やから、softmax ならいつも0と1の間で、合計1になる

5: 名無しさん

>>4
exp を使うと、他にもいいことあるん?

6: 名無しさん

>>5
全部に同じ数を足しても結果が変わらん。効くのは差だけ

も と同じ約

7: 名無しさん

>>6
それ、実際に役に立つん

8: 名無しさん

>>7
計算機で必要になる。 はふつうの小数(倍精度)で表せる範囲を超えて無限大になって、無限大÷無限大で計算が壊れる
先に一番大きい値を引いて のようにしてから計算すれば、結果は同じで、あふれない

9: 名無しさん

差が1違うと、確率はどれくらい違うん

10: 名無しさん

>>9
2つの出力の比は差だけで決まる

差が1なら約2.72倍、2なら約7.39倍、5なら約148倍。差が少し広がるだけで、確率は一気に偏る

11: 名無しさん

温度っていうのが出てくるのは?

12: 名無しさん

>>11
全部を温度 で割ってから softmax に通す。Hinton らの論文(2015年)では、 はふつう1で、大きくすると確率がなだらかになる、と書いてる
で計算すると
:約
:約
:約

13: 名無しさん

>>12
CLIP のスレで、類似度を100倍してから softmax に通してたのも同じこと?

14: 名無しさん

>>13
同じ。100倍するのは、温度 で割るのと同じ
値を大きく引き伸ばすほど、一番大きいものに確率が集中する

15: 名無しさん

選択肢が2つやったら、どうなるん

16: 名無しさん

>>15
シグモイド関数(ロジスティック関数)と同じになる

なら約0.818。2択の分類で出てくるシグモイドは、softmax の特別な場合

17: 名無しさん

なんで「ソフト」マックスって呼ぶん

18: 名無しさん

>>17
一番大きいものだけを1、残りを0にする(argmax)の、なめらかな版やから
を10倍して にすると、約 でほぼ argmax と同じになる
なめらかやから、少しずつパラメータを動かす学習に使える

19: 名無しさん

言語モデルの「次の単語の確率」も softmax で出してるん?

20: 名無しさん

>>19
そう。語彙の数だけ値を出して、softmax で確率にする。BERT なら隠した単語を当てるときに、3万トークンの語彙全体で softmax を取ってる

21: 名無しさん

>>20
確率として出てくるんなら、その数字がそのままモデルの自信として信用できるやろ

22: 名無しさん

>>21
そうとは限らない。softmax は合計1になるように変換してるだけで、出てきた数字が「正解する確率」と一致する保証はない
Guo らの論文(2017年)では、110層の ResNet の予測の自信(確率)の平均が、実際の正解率よりかなり高かった(自信過剰)と報告してる
対策として、学習のあとで温度 を1つだけ調整する方法(温度スケーリング)がよく効いた、とも書いてる

23: 名無しさん

exp で正にして、合計で割る。差だけが効いて、温度で偏り方を変えられる。出てきた確率をそのまま信じすぎたらあかんのやな

管理人のひとこと