softmax與多分類


sotfmax 函數在機器學習和深度學習中有着廣泛的應用, 主要用於多分類問題。

 

softmax 函數

1. 定義

假定數組V,那么第i個元素的softmax值為

也就是該元素的指數 除以 所有元素的指數和,取指數是為了使差別更大。

於是該數組的每個元素被壓縮到(0,1),並且和為1,其實就變成了概率。在多分類問題中代表了該元素被取到的概率

例如

 

2. 感性理解

softmax可以拆開來看,一個soft,一個max,max顧名思義取最大值,數組中哪個元素最大,一定取到哪個,

然而當數組被softmax之后,變成了概率,被用來代表元素被取到的概率,那么最大的最容易被取到,而不是一定被取到,這就是soft。

其實就是強化學習中的探索率。

 

多分類的問題

1. one-hot vector

多分類的目標值通常用one-hot vector表示,為什么呢?

假定有100個類別,我們設定類別標號為1-100,有一個樣本真實標簽為100,而預測為1,你能說他們的差是99嗎?還有一個樣本真實標簽50,預測40,你能說預測的更准嗎?顯然不合理。

 

2. 詳解 softmax 解決多分類問題

假定有m個樣本,即[x1,x2,...xm],每個樣本n個屬性,即xi=[a1,a2,...an],共分為k類,yi=[0,0,...1...0],第i個位置是1,其余是0。

每類的概率Pk=P(y(k)=1),且ΣΡ=1。

用另一種方式來表示Pk=1{y=k}Pk

 

現在我們來模擬多分類過程:

首先需要搞清楚一點:分類是干啥的,輸入一個樣本x,看看他屬於哪一類,輸出是一個向量y’,表示該樣本屬於每一類的概率,假設y'=[1/2,1/4,1/4], 真實類別y=[0,1,0]

然后我們怎么辦呢?此處開始划重點

咋一想,取最大的那個概率,但是然后呢?這里最大概率對應的類別是1,而實際類別是2,貌似沒辦法往下走了,

再仔細想想,應該取真實類別對應的那個概率1/4,而且我們希望這個概率就是最大的,

這里其實可以用最小二乘的思路,真實的類別y肯定是1(真實概率),那么真實類別y中1的位置對應的輸出y’的位置的概率1/4就是我們的預測值,預測值與真實值的差就是loss,

當然我們這里采用極大似然的思路,就是讓這個概率最大,即預測盡量接近真實,(其實在這里最小二乘和極大似然是一個意思,最小二乘是減小loss,1-p,而極大似然就是讓p盡量大,最大是1)

接着再取一個樣本,就是2個樣本,我們希望這兩個樣本的預測盡量接近真實,那么就是兩個樣本的概率相乘,然后盡量大,

n個樣本呢,n個概率相乘,使這個乘積最大,這就是代價函數

 

把上述過程用數學公式來表示

設m個樣本,共k個類,yi € {1,2,3...k},每個樣本預測到的概率為P,P為一個向量,長度為k

那么每個樣本從Pt中取到的值是

 y為真實類別,當y=i時,1{y=i}為1,否則為0,Pi為預測值的第i個元素,上式的意思是當y=i時,取此時的Pi,實際上就是一個數值,求和只是唬人的。

那么m個樣本對應的代價函數是

yj是第j個樣本的真實標簽,pj是第j個樣本的輸出

然后使代價函數最大,先取log,在加負號,即求最小,除以m好求導

 這樣取log貌似不太好理解,可以這樣想,

其實這是一個循環,for j=1:m

在j給定時,Σ1{yj=i}Pj其實是一個數,這個數就是Pj中的某個,然后我們用1{}把這個數取到就行了。

 

另一種表示方式更容易理解

 

 

然后求偏導,令導數等於0,梯度下降

 

 那么,Pj是多少?此時就用到softmax了。

wx+b得到的是個數值,不是概率,這時需要用softmax轉換成概率。

 

這個式子表示樣本x被分為第j類的概率。這個Pj不是我們上面公式里的Pj,這里的Pj是一個數,公式里的是一個向量。

 

插曲 ---- 細心的人會發現兩個問題:

1. 分子上θ的下標是j,而j是類別,不是應該是樣本的屬性個數嗎?  θiX

2. 分母上求和用的l,l和j都表示類別,這里要區分開。

那么第一個問題怎么解釋?

多分類里的θ比較特殊,是一個矩陣,而邏輯回歸是個向量,因為多分類相當於是多個分類器,每個分類器有自己的模板,所以該矩陣大小為 類別數X屬性數

(圖是盜的,T表示屬性個數,k類別個數,每行代表一個類別的模板,就是上面公式中的θj

 

回到正題----下面的部分網上都有,所以盜圖了,我會備注盜圖,有些字母跟上文不太一樣,我會稍加說明。

經過softmax轉換,代價函數表示為

 (盜圖,這里i表示樣本數,j表示類別數,T表示屬性數)

然后就是求偏導了

 

首先要明確一點:

  這點比較重要

我的求導

寫的有些亂,看網上的吧

 然后梯度下降。

 

softmax 參數冗余

有空再說

 

 softmax 權重衰減

權重衰減可以解決參數冗余問題。

 

其實就是正則化,有空再說

 

softmax VS k個二分類

多分類和k個二分類哪個更好?如何選擇?取決於事物的類別是否互斥。

比如籃球、足球、台球,一個球只能屬於3種中的一種,或者你可以增設一個其他球,一個球只能屬於4種中的一種,此時用softmax多分類

比如流行歌曲、搖滾歌曲、港台歌曲,一首歌可以屬於流行,同時也可以屬於搖滾,此時用多個二分類,分別判斷是不是流行,是不是搖滾,是不是港台。

 

softmax 與 交叉熵

交叉熵的公式為 loss=-Σtv*log(pv)  true_value代表真實值,predict_value代表預測值。

讓我們再回想一下上面softmax多分類的代價函數

log左邊是真實標簽,右邊是預測標簽,這不就是交叉熵嗎?

所以softmax多分類用交叉熵作為代價函數。

 

在分類問題中,交叉熵函數已經大范圍的代替了均方誤差函數。

也就是說,在輸出為概率分布的情況下,就可以使用交叉熵函數作為理想與現實的度量。

這也就是為什么它可以作為有 Softmax 函數激活的神經網絡的損失函數。

 

softmax 與 sigmoid 的關系

有空再說


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM