機器學習:Deeplearning.ai筆記——logistic迴歸梯度下降法

機器學習 技術 銀桑的AI智能 銀桑的AI智能 2017-10-07

機器學習:Deeplearning.ai筆記——logistic迴歸梯度下降法

回顧logistic損失函數

機器學習:Deeplearning.ai筆記——logistic迴歸梯度下降法

上圖是logistic迴歸的一般形式,其中L(a,y)是loss function,具體原因如下圖,詳情可看我之前寫的其他文章。

機器學習:Deeplearning.ai筆記——logistic迴歸梯度下降法

單樣本的梯度下降

機器學習:Deeplearning.ai筆記——logistic迴歸梯度下降法

要想計算損失函數L的導數,首先我們要向前一步計算損失函數的導數,即求”da”=dL(a,y)/da,即對a求偏導數。根據logx導數為1/x,結果為-y/a+(1-y)/(1-a)。現在求得關於變量a的導數,現在可以向後計算一步求”dz”,”dz”=dL(a,y)/dz,計算過程如下:

機器學習:Deeplearning.ai筆記——logistic迴歸梯度下降法

其中,左邊-y/a+(1-y)/(1-a)部分已經在之前計算了,右邊部分為邏輯迴歸映射函數a=1/(1+e^(-z)),求導後得a*(1-a)。這就是反向求導的”鏈式法則”。

特別地:

機器學習:Deeplearning.ai筆記——logistic迴歸梯度下降法


所以,在更新w1,w2,b時:

機器學習:Deeplearning.ai筆記——logistic迴歸梯度下降法

機器學習:Deeplearning.ai筆記——logistic迴歸梯度下降法

以上就是單個樣本實例一次梯度更新步驟和整個流程的演算圖。

m樣本的梯度下降

當然這只是單個樣本情況下,對於m個實例,全局成本函數(cost function)是一個求和結果,實際上是1到m項損失函數(loss function)和的平均數。

機器學習:Deeplearning.ai筆記——logistic迴歸梯度下降法

在上述反向求導中,我們已經知道損失函數(loss function)單個樣本如何更新w1,w2以及b。那麼如何計算m個樣本的反向求導呢?很簡單,在成本函數(cost function)中,只需對每個樣本進行以上步驟得到各項參數的梯度值後加總求平均,就會得到各項參數的全局梯度值。

具體算法

機器學習:Deeplearning.ai筆記——logistic迴歸梯度下降法

如上圖所示,初始化J=0,dw1=0,dw2=0,db=0,for循環遍歷訓練集,訓練集的個數為m,同時計算相應的每個訓練樣本的導數,然後把它們加起來求平均,求得該批次樣本的梯度值。最後利用圖中右側公式,對w1,w2,b進行更新,即完成了一次梯度下降。

通過不斷重複梯度下降算法,中止條件如下:

1.迭代次數達到限制次數;

2.訓練集中無可供更新的樣本集;

3.loss不再下降或反而上升。

總結

對於梯度下降算法,有批量梯度下降法(Batch Gradient Descent),隨機梯度下降法(Stochastic Gradient Descent)和梯度下降法(Gradient Descent)。

以上解析的是批量梯度下降法。即用了一些小樣本來近似全部的樣本,其本質就是我1個指不定不太準,那我用個30個或50個樣本那比隨機的要準不少了吧,而且批量的話還是非常可以反映樣本的一個分佈情況的。

隨機梯度下降:由於多了隨機兩個字,也就是說我隨機用樣本中的一個例子來近似我所有的樣本,來調整θ,因而隨機梯度下降是會帶來一定的問題,因為計算得到的並不是準確的一個梯度,容易陷入到局部最優解中。

梯度下降:在原始的梯度下降中,對於θ的更新所有的樣本都有貢獻,也就是參與調整θ,其計算得到的是一個標準梯度。理論上來說一次更新的幅度是比較大的。在樣本不多的情況下,收斂的速度會更快。

機器學習:Deeplearning.ai筆記——logistic迴歸梯度下降法

相關推薦

推薦中...