一.推導LR損失函數
邏輯迴歸的函數是
fw,b(x)=σ(i∑wixi+b)
output是在0到1之間。
我們先進行一個假設,假設上面的數據都是來自於Posterior probability(後驗概率),fw,b(x)=Pw,b(C1∣x)
L(w,b)就是這個Posterior probability產生這些數據的概率,然後我們看看哪個w和b是能讓這個概率最大。
L(w,b)=fw,b(x1)fw,b(x2)(1−fw,b(x3))⋯fw,b(xN)
也就是找到一個w和b讓L(w,b)最大:w∗,b∗=argmaxw,bL(w,b)
通過等式變換
L(w,b)=fw,b(x1)fw,b(x2)(1−fw,b(x3))⋯fw,b(xN)
轉換到
−lnL(w,b)=lnfw,b(x1)+lnfw,b(x2)+ln(1−fw,b(x3))⋯
yn是class 1的時候爲1,class 2的時候爲0
−lnL(w,b)=∑n[y^nlnfw,b(xn)+(1−y^n)ln(1−fw,b(xn))]
我們可以這樣看
Distribution p p(x=1)=y^n,p(x=0)=1−y^n
Distribution q q(x=1)=f(xn),q(x=0)=1−f(xn)
我們就是通過變換得到這個形式,這個就是cross entropy,左邊是label p,右邊是預測 q,然後儘可能縮小這兩個分佈的差距 H(p,q)=−∑xp(x)ln(q(x))。
二.學習LR梯度下降
通過上面的推導,我們知道了邏輯迴歸的損失函數公式,但是我們應該如何通過這個函數來更新w和b呢。
∂wi−lnL(w,b)=n∑−[y^n∂wilnfw,b(xn)+(1−y^n)∂wiln(1−fw,b(xn))]
我們拆開分解:
前面的:
∂wi∂lnfw,b(x)=∂z∂lnfw,b(x)∂wi∂z
∂wi∂z=xi
而其中的∂z∂lnfw,b(x)是
∂z∂lnσ(z)=σ(z)1∂z∂σ(z)=(1−σ(z))
同理,後面的:
∂wi∂ln(1−fw,b(x))=∂z∂ln(1−fw,b(x))∂wi∂z
∂wi∂z=xi
∂z∂ln(1−σ(z))=−1−σ(z)1∂z∂σ(z)=−σ(z)
所以總結起來就是:
∂wi−lnL(w,b)=n∑−[y^n∂wilnfw,b(xn)+(1−y^n)∂wiln(1−fw,b(xn))]
=n∑−[y^n(1−fw,b(xn))xin−(1−y^n)fw,b(xn)xin]
=n∑−[y^n−y^nfw,b(xn)−fw,b(xn)+y^nfw,b(xn)]xin
=n∑−(y^n−fw,b(xn))xin
最後總結起來就是這樣
wi←wi−ηn∑−(y^n−fw,b(xn))xin
三.利用代碼描述梯度下降(選做)
四.Softmax原理
C1:w1,b1C2:w2,b2C3:w3,b3z1=w1⋅x+b1z2=w2⋅x+b2z3=w3⋅x+b3
softmax做的就是事情就是對z進行exponential(指數化),將exponential的結果相加,再分別用exponential的結果除以相加的結果。原本z1,z2,z3原本可以是任何值,但是做完softmax之後,就把輸出都限制在0到1之間,而且概率和是1。
如這個展示圖,y1表示x屬於類別1的概率:0.88,y2表示x屬於類別2的概率:0.12,y3表示x屬於類別3的概率:0。
Softmax的輸出就是用來估計後驗概率(Posterior Probability)
五.softmax損失函數
這個代價函數類似於上面的邏輯迴歸,一樣是用交叉熵。剩下的就是基本帶進去
I{expression}={01 if expression = false if expression =true
J(θ)=−m1[i=1∑mj=1∑kI{y(i)=j}log∑l=1keθTx(i)eθjTx(i)]
類別對應的,才納入倒損失函數中去。
六.softmax梯度下降
參考文獻
https://blog.csdn.net/google19890102/article/details/49738427