ソフトマックスは「数値を確率に変える関数」って説明されるけど
確率にしたいだけなら、全部足して割ればええやん。なんで exp を挟むん
【疑問】ソフトマックス関数って、なんで「exp してから割る」なん?そのまま割合にしたらあかんの?【AI】
>>1
定義はこれ
なら、約 になる
>>2
足して割るだけなら で、だいたい同じやん
>>3
この例はたまたま全部0以上やから、それっぽくなるだけ
やと、足して割ると と で、1を超えたりマイナスになったりする
なら合計が0で、割り算すらできない。 はどんな でも正やから、softmax ならいつも0と1の間で、合計1になる
>>4
exp を使うと、他にもいいことあるん?
>>5
全部に同じ数を足しても結果が変わらん。効くのは差だけ
も と同じ約
>>6
それ、実際に役に立つん
>>7
計算機で必要になる。 はふつうの小数(倍精度)で表せる範囲を超えて無限大になって、無限大÷無限大で計算が壊れる
先に一番大きい値を引いて のようにしてから計算すれば、結果は同じで、あふれない
差が1違うと、確率はどれくらい違うん
>>9
2つの出力の比は差だけで決まる
差が1なら約2.72倍、2なら約7.39倍、5なら約148倍。差が少し広がるだけで、確率は一気に偏る
温度っていうのが出てくるのは?
>>11
全部を温度 で割ってから softmax に通す。Hinton らの論文(2015年)では、 はふつう1で、大きくすると確率がなだらかになる、と書いてる
で計算すると
:約
:約
:約
>>12
CLIP のスレで、類似度を100倍してから softmax に通してたのも同じこと?
>>13
同じ。100倍するのは、温度 で割るのと同じ
値を大きく引き伸ばすほど、一番大きいものに確率が集中する
選択肢が2つやったら、どうなるん
>>15
シグモイド関数(ロジスティック関数)と同じになる
なら約0.818。2択の分類で出てくるシグモイドは、softmax の特別な場合
なんで「ソフト」マックスって呼ぶん
>>17
一番大きいものだけを1、残りを0にする(argmax)の、なめらかな版やから
を10倍して にすると、約 でほぼ argmax と同じになる
なめらかやから、少しずつパラメータを動かす学習に使える
言語モデルの「次の単語の確率」も softmax で出してるん?
>>19
そう。語彙の数だけ値を出して、softmax で確率にする。BERT なら隠した単語を当てるときに、3万トークンの語彙全体で softmax を取ってる
>>20
確率として出てくるんなら、その数字がそのままモデルの自信として信用できるやろ
>>21
そうとは限らない。softmax は合計1になるように変換してるだけで、出てきた数字が「正解する確率」と一致する保証はない
Guo らの論文(2017年)では、110層の ResNet の予測の自信(確率)の平均が、実際の正解率よりかなり高かった(自信過剰)と報告してる
対策として、学習のあとで温度 を1つだけ調整する方法(温度スケーリング)がよく効いた、とも書いてる
exp で正にして、合計で割る。差だけが効いて、温度で偏り方を変えられる。出てきた確率をそのまま信じすぎたらあかんのやな
管理人のひとこと
- softmax は 。exp で必ず正にしてから合計で割るので、値がマイナスでも0と1の間で合計1になる。 は約 。
- 全部に同じ数を足しても結果は同じで、効くのは差だけ(比は )。計算では最大値を引いてからやるとあふれない。
- 温度 で割ると偏り方が変わる( で約0.867、 で約0.506)。CLIP の100倍は と同じ。2択ならシグモイドと同じ形、値を大きく引き伸ばすと argmax に近づく。
- softmax の出力は合計1にしただけで、正解する確率と一致するとは限らない。現代の深いネットワークは自信過剰になりやすく、温度スケーリングで直せることが多い(Guo ら、2017年)。