第十八節邏輯回歸之交叉熵損失函數梯度求解過程(3)
上一節中,我們講解了交叉熵損失函數的概念,目标是要找到使得損失函數最小的那組θ,也就是l(θ)最大,即預測出來的結果在訓練集上全部正确的概率最大。那我們怎麼樣找到我們的最優解呢?上節中提出用梯度下降法求解,本節的話我們對其具體細節展開。
先來看下我們用梯度下降求解最優解,想要通過梯度下降優化L(θ)到最小值需要幾步?
第一步,随機産生w,随機到0附近會比較好一點,w随機到0附近就意味着不管用L1還是L2正則的時候,可以使w的整體比較小。L1和L2正則同樣可以用到邏輯回歸裡面去,來使得邏輯回歸的損失函數obj相對比較小,然後使得我們模型具有推廣能力和泛化能力。其實任何算法,都可以去使用L1和L2來提高模型的泛化能力,本質上就是減少模型的複雜度。所以以後未來碰到任何的算法,w在随機的過程當中,我們最好用期望為0的正态分布,來随機産生n 1個w。
第二步是求梯度,對于邏輯回歸來說,如果用SGD求梯度,我們得用交叉熵的損失函數來得到它的導函數,然後才可以知道某一個值的時候它的梯度是多少。
它本質是一階泰勒展開近似。第四步是判斷收斂,其實就是第二第三步循環往複來執行。
四步裡面第二步求解交叉熵損失函數的導函數求得其梯度是最關鍵的。我們對其展開來說。我們再來看下我們的目标函數:
把負号提出來再加上1/m就是:
至于求導梯度時為什麼要加-1/m,可以參考第六節梯度下降之從單元函數理解梯度下降過程(1)
我們要對損失函數裡每個w求偏導,也就是對每一部分求偏導。w在pi裡面,pi=1/(1 e-w^Tx),也可寫成h(θ)x。上面可拆成左右兩部分求導,先對左半部分yi*log pi求導,我們是對wj即(θj)求偏導,跟yi沒關系,因為(lnx)'=1/x ,并且log pi是複合函數,需要對裡外分别求導,即:
後半部分同理複合函數求導,
即 :
又因為
求導結果為
而p(xi;w) 實際上就是關于θ的函數,可以寫成h(θ)x。所以
左右兩部分求導結合起來後損失函數表示成:
hθ(x)=1/(1 e-θ^Tx),是關于θ^Tx的Sigmoid函數.所以可以用g(θTx)表示,所以損失函數推導部分又可以寫成:
又因為(1/x)'=-1/x2,(ex)'= ex,(-z)'=-1,所以
實際上展開就是:
好吧看到這是不是 很暈眩,實際上耐心下來,跟着我的思路去走,就會很好理解上面的公式。我們繼續吧,很快就結束了,也快大功告成了。我們對
上面展開後的公式繼續展開,整理即:
因為z就是θTx,hθ(x)=1/(1 e-θ^Tx)是關于θ^Tx的Sigmoid函數.同樣可以用g(θTx)表示。所以上面
展開後的公式最後可以表示成:
所以損失函數可以推導成:
而θTx就是θ1x1 θ2x2 …… θjxj …… θnxn,如果對θj求偏導,隻剩xj。即
xij這種表達方式大家應該已經習慣了,因為i代表第i行,j代表第j列,因為損失函數前面有一個加和符号,所以它實際上還是每一行的事。接下來就是把損失函數式子拆開,正負相消即:
最後一步是把前面的負号放進去得到的。到此我們推導成功,擦擦汗,真不容易!!!。
它就是邏輯回歸的導函數,你會發現它推導之後和mse的導函數是一樣的,都是(hθ(x)-y)*xj這種形式。隻不過在多元線性回歸的時候,hθ(x)是wTx,在邏輯回歸裡面,hθ(x)是1/(1 e-θTx)。hθ(x)不一樣,但是整體形式一樣。所以這也是它叫邏輯回歸的一個很大原因。
有了邏輯回歸損失函數推出來的導函數,我們用梯度下降求解的時候,我們就可以把第三步中的
這一部分算出來了。隻要給我一組w,或者θ,w0一直到wn。有了θ,x,y,xj,我就可以把導數求出來。有了導數,繼而求得梯度。然後就可以用梯度下降公式去求解了。
下一節中我們講解邏輯回歸的優化。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!