【深度学习】sigmoid - 二次代价函数 - 交叉熵 - logistic回归 - softmax
1. sigmoid函數(shù):σ(z) = 1/(1+e^(-z))
sigmoid函數(shù)有個性質(zhì):σ'(z) =σ(z) * ( 1 - σ(z) )?
sigmoid函數(shù)一般是作為每層的激活函數(shù),而下邊的幾種是代價函數(shù)。
2. 所有樣本的二次代價函數(shù):C=1/2 *Σ (y - a)^2,這里的激活函數(shù)也使用了sigmoid函數(shù)
二次代價函數(shù)存在當(dāng)結(jié)果明顯錯誤時,學(xué)習(xí)卻很慢的問題,如,當(dāng)輸出趨近于1,而標(biāo)簽為0時候,即出現(xiàn)明顯錯誤時,其導(dǎo)數(shù)卻趨近于0,使得學(xué)習(xí)反而很慢。注意:sigmoid函數(shù)的輸出在(0,1),而輸入?yún)s在(負(fù)無窮,正無窮)。
3. ?交叉熵適用于二分類和多分類的代價函數(shù),它改進(jìn)了二次代價函數(shù)的缺點(diǎn)。交叉熵對梯度的更新不需要對sigmoid函數(shù)求導(dǎo),權(quán)重的學(xué)習(xí)速度只受到 σ(z)-y 的控制,即輸出與標(biāo)簽的誤差的控制,而與sigmoid函數(shù)的導(dǎo)數(shù)無關(guān)。
?
logistic成本函數(shù):J(w,b)=-1/m *Σ[y(i)log(a(i))+(1-y(i))log(1-a(i))],即對m個樣本求和后再平均,Σ是求和符號 ,i是第i個樣本?
softmax成本函數(shù):J(w,b)=-1/m *ΣΣ1{ y^(i)} *log exp(z)/Σexp(z),其中第一個求和符是對(i=1~m),第二個求和符是對(j=1~k),
最后一個分母上的求和符是對k輸出神經(jīng)元的exp(z)求和。
https://blog.csdn.net/u014313009/article/details/51045303
- 交叉熵中的a激活值必須是由sigmoid函數(shù)得到的,因?yàn)?- a,所以a必須在0~1之間,一般只有sigmoid函數(shù)才會得到(0,1)之間的值。別想tanh,tanh的范圍在(-1,1)之間。
- 單輸出神經(jīng)元的所有樣本的代價函數(shù):C = -1/n*Σ[y * lna + ( 1 - y)*ln( 1 - a ) ) ]
4. logistic回歸的代價函數(shù)就是交叉熵
P( Y=1|x ) =?e^(wx+b)/(1+e^-(wx+b) )????? ? -----定義
????????????????=1/(1+e^-(wx+b) ),即sigmoid函數(shù)。
P( Y=0|x ) =?1/(1+e^(wx+b) )
其中,P( Y=1|x )+P( Y=0|x )=0;并且P( Y=1|x )表示給定輸入特征x,求Y=1時的概率。至于到底這兩個式子可否交換,我個人覺得是不可以的,因?yàn)?和1是標(biāo)簽,這里涉及到使用交叉熵的問題,因?yàn)榻徊骒貢玫綐?biāo)簽0和1,如果交換的話交叉熵式子也需要變化一下,所以就別亂寫了,按照規(guī)定的寫就行。
logistic回歸【比較】這兩個條件概率值的大小,將給定的輸入實(shí)例(或輸入特征)分到概率值較大的那一類。
?
- 講解logistic回歸時候,用到了似然函數(shù)推出交叉熵。
- 統(tǒng)計學(xué)中,似然函數(shù)是一種關(guān)于統(tǒng)計模型參數(shù)的函數(shù)。給定輸出x時,關(guān)于參數(shù)θ的似然函數(shù)L(θ|x)(在數(shù)值上)等于給定參數(shù)θ后變量X的概率:L(θ|x)=P(X=x|θ)。看不懂似然函數(shù)就跳過吧,真混亂。
- 因此,似然函數(shù)為L(x|y)=P(Y=y|x),似然函數(shù)就是分類為1和分類為0的各個樣本的概率之積。可看課本統(tǒng)計學(xué)習(xí)方法P79。
5. softmax函數(shù)是用于多分類,且該函數(shù)一般用在最后一層,即輸出層,并且不是使用sigmoid函數(shù)來獲得輸出。前面的激活函數(shù)用不用sigmoid函數(shù)不作要求。
a=e^(z) / ( Σ?e^(z) )
輸出的激活值加起來正好為1。
對于多分類問題,例如我們的年齡分為5類,并且人工編碼為0、1、2、3、4,因?yàn)檩敵鲋凳?維的特征,因此我們需要人工做onehot encoding分別編碼為00001、00010、00100、01000、10000,才可以作為這個函數(shù)的輸入。理論上我們不做onehot encoding也可以,做成和為1的概率分布也可以,但需要保證是和為1。
6.重點(diǎn)來了
cs231n講的softmax的交叉熵?fù)p失函數(shù)是: 一個樣本的loss = -?log(p),其中p是預(yù)測的正確類別的概率。那么所有樣本的
loss = -1/m*Σlog(p),? 對所有樣本求和后取平均。
這和第3條講的一個道理,不沖突。
下面再重新復(fù)述以便第三條:
【【【
softmax成本函數(shù):
J(w,b)=-1/m *ΣΣ1{ y^(i)} *log exp(z)/Σexp(z),其中第一個求和符是對(i=1~m),第二個求和符是對(j=1~k),
最后一個分母上的求和符是對k輸出神經(jīng)元的exp(z)求和。
】】】
解析:Σ1{ y^(i)} *log exp(z)/Σexp(z)就是log(p),其中p是預(yù)測的正確類別的概率。因?yàn)闃颖菊_類別的標(biāo)簽為1,不正確類別的標(biāo)簽都為0,說到底就是Σ1{ y^(i)} *log exp(z)/Σexp(z)只有一項(xiàng)不為0,其余各項(xiàng)都為0,因?yàn)檎_類別只有一個。
因此softmax的交叉熵?fù)p失函數(shù)可以寫作:loss = -1/m*Σlog(p),? 對所有樣本求和后取平均,p是預(yù)測的正確類別的概率,簡單明了
?
下面再說說logistic的交叉熵?fù)p失函數(shù):J(w,b)=-1/m *Σ[y(i)log(a(i))+(1-y(i))log(1-a(i))],i是第i個樣本?
我覺得寫成J(w,b)=-1/m *Σ[y(i)log(p(i))+(1-y(i))log(1-p(i))]更合適,i是第i個樣本 ,y(i)表示第i個樣本的標(biāo)簽,是標(biāo)簽,不是預(yù)測值。
其實(shí)logistic和softmax的交叉熵?fù)p失函數(shù)一個原理:可想象成logistic的輸出有兩個神經(jīng)元(因?yàn)槭嵌诸?#xff09;。對于某個樣本,其logistic交叉熵?fù)p失函數(shù)為 - y*log(p),p表示正確類別的概率。
因?yàn)槎诸愔挥袃蓚€類別,所以兩個標(biāo)簽分別為1和0,但是并不表示正確類別的標(biāo)簽為1,錯誤類別的標(biāo)簽為0,因?yàn)槊總€樣本的標(biāo)簽也可以是1,也可以是0。
假如正確類別為0(即標(biāo)簽為0),預(yù)測為0(即預(yù)測正確)的概率為p,則損失為-log(p),而在logistic中規(guī)定了p(y=1|x)為p(i),
p(y=0|x) 為1-p(i),這里的1-p(i)就是預(yù)測正確的概率p.
假如正確類別為1(即標(biāo)簽為1),預(yù)測為1(即預(yù)測正確)的概率為p,則損失為-log(p),而在logistic中規(guī)定了p(y=1|x)為p(i),
p(y=0|x) 為1-p(i),這里的p(i)就是預(yù)測正確的概率p.
因此logistci的交叉熵?fù)p失函數(shù)J(w,b)=-1/m *Σ[y(i)log(p(i)) + (1-y(i))log(1-p(i))]? ?和softmax的交叉熵?fù)p失函數(shù)?loss= -1/m*Σlog(p)都是一個原理,即 - log(正確類別的概率)?
?
softmax和logistic的用法上的不同在于:
logistic相當(dāng)于只有輸入層、單隱層神經(jīng)元,和兩個神經(jīng)元的輸出層,即結(jié)構(gòu)特別簡單,輸入直接和權(quán)重相乘之后,加上偏置,再進(jìn)行sigmoid激活函數(shù)激活,就得到了輸出層的兩個概率值,分別表示兩個類別的概率。
而softmax通常用在多層神經(jīng)網(wǎng)絡(luò)的的最后一層,中間經(jīng)過了多次運(yùn)算和激活,最后的類別不止兩類。
?
總結(jié)
以上是生活随笔為你收集整理的【深度学习】sigmoid - 二次代价函数 - 交叉熵 - logistic回归 - softmax的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【深度学习】全连接层的作用
- 下一篇: 【深度学习】单位高斯化