2.9 Logistic 回归的梯度下降法-深度学习-Stanford吴恩达教授
| 2.8 計算圖的導數計算 | 回到目錄 | 2.10 m 個樣本的梯度下降 |
Logistic 回歸的梯度下降法 (Logistic Regression Gradient Descent)
本節我們討論怎樣通過計算偏導數來實現邏輯回歸的梯度下降算法。它的關鍵點是幾個重要公式,其作用是用來實現邏輯回歸中梯度下降算法。但是在本節視頻中,我將使用計算圖對梯度下降算法進行計算。我必須要承認的是,使用計算圖來計算邏輯回歸的梯度下降算法有點大材小用了。但是,我認為以這個例子作為開始來講解,可以使你更好的理解背后的思想。從而在討論神經網絡時,你可以更深刻而全面地理解神經網絡。接下來讓我們開始學習邏輯回歸的梯度下降算法。
假設樣本只有兩個特征 x1x_1x1? 和 x2x_2x2? ,為了計算 zzz ,我們需要輸入參數 w1w_1w1? 、 w2w_2w2? 和 bbb ,除此之外還有特征值 x1x_1x1? 和 x2x_2x2? 。因此 zzz 的計算公式為: z=w1x1+w2x2+bz=w_1x_1+w_2x_2+bz=w1?x1?+w2?x2?+b 回想一下邏輯回歸的公式定義如下: y^=a=σ(z)\hat{y}=a=\sigma(z)y^?=a=σ(z) 其中 z=wT+b,σ(z)=11+e?zz=w^T+b,\ \sigma(z)=\frac{1}{1+e^{-z}}z=wT+b,?σ(z)=1+e?z1? 損失函數: L(y^(i),y(i))=?y(i)log?y^(i)?(1?y(i))log?(1?y^(i))L(\hat{y}^{(i)},y^{(i)})=-y^{(i)}\log\hat{y}^{(i)}-(1-y^{(i)})\log(1-\hat{y}^{(i)})L(y^?(i),y(i))=?y(i)logy^?(i)?(1?y(i))log(1?y^?(i)) 代價函數: J(w,b)=1m∑imL(y^(i),y(i))J(w,b)=\frac1m\sum_i^mL(\hat{y}^{(i)},y^{(i)})J(w,b)=m1?∑im?L(y^?(i),y(i)) 假設現在只考慮單個樣本的情況,單個樣本的代價函數定義如下: L(a,y)=?(ylog?(a)+(1?y)log?(1?a))L(a,y)=-(y\log(a)+(1-y)\log(1-a))L(a,y)=?(ylog(a)+(1?y)log(1?a)) 其中 aaa 是邏輯回歸的輸出, yyy 是樣本的標簽值。現在讓我們畫出表示這個計算的計算圖。 這里先復習下梯度下降法, www 和 bbb 的修正量可以表達如下:
w:=w?α?J(w,b)?w,b:=b?α?J(w,b)?bw:=w-\alpha \frac{\partial J(w,b)}{\partial w},\quad b:=b-\alpha \frac{\partial J(w,b)}{\partial b}w:=w?α?w?J(w,b)?,b:=b?α?b?J(w,b)?
如圖:在這個公式的外側畫上長方形。然后計算: y^=a=σ(z)\hat{y}=a=\sigma(z)y^?=a=σ(z) 也就是計算圖的下一步。最后計算損失函數 L(a,y)L(a,y)L(a,y) 。 有了計算圖,我就不需要再寫出公式了。因此,為了使得邏輯回歸中最小化代價函數 L(a,y)L(a,y)L(a,y) ,我們需要做的僅僅是修改參數 www 和 bbb 的值。前面我們已經講解了如何在單個訓練樣本上計算代價函數的前向步驟。現在讓我們來討論通過反向計算出導數。 因為我們想要計算出的代價函數 L(a,y)L(a,y)L(a,y) 的導數,首先我們需要反向計算出代價函數 L(a,y)L(a,y)L(a,y) 關于 aaa 的導數,在編寫代碼時,你只需要用 dadada 來表示 dL(a,y)da\frac{dL(a,y)}{da}dadL(a,y)? 。 通過微積分得到: dL(a,y)da=?y/a+(1?y)/(1?a)\frac{dL(a,y)}{da}=-y/a+(1-y)/(1-a)dadL(a,y)?=?y/a+(1?y)/(1?a) 如果你不熟悉微積分,也不必太擔心,我們會列出本課程涉及的所有求導公式。那么如果你非常熟悉微積分,我們鼓勵你主動推導前面介紹的代價函數的求導公式,使用微積分直接求出 L(a,y)L(a,y)L(a,y) 關于變量 aaa 的導數。如果你不太了解微積分,也不用太擔心。現在我們已經計算出 dadada ,也就是最終輸出結果的導數。 現在可以再反向一步,在編寫Python代碼時,你只需要用 dzdzdz 來表示代價函數 LLL 關于 zzz 的導數 dLdz\frac{dL}{dz}dzdL? ,也可以寫成 dL(a,y)dz\frac{dL(a,y)}{dz}dzdL(a,y)? ,這兩種寫法都是正確的。 dLdz=a?y\frac{dL}{dz}=a-ydzdL?=a?y 。 因為 dL(a,y)dz=dLdz=(dLda)?(dadz)\frac{dL(a,y)}{dz}=\frac{dL}{dz}=(\frac{dL}{da})\cdot(\frac{da}{dz})dzdL(a,y)?=dzdL?=(dadL?)?(dzda?) , 并且 dadz=a(˙1?a)\frac{da}{dz}=a\dot(1-a)dzda?=a(˙?1?a) , 而 dLda=(?ya+(1?y)(1?a))\frac{dL}{da}=(-\frac ya+\frac{(1-y)}{(1-a)})dadL?=(?ay?+(1?a)(1?y)?) ,因此將這兩項相乘,得到:
dz=dL(a,y)dz=dLdz=(dLda)?(dadz)=(?ya+(1?y)(1?a))?a(1?a)=a?ydz=\frac{dL(a,y)}{dz}=\frac{dL}{dz}=(\frac{dL}{da})\cdot(\frac{da}{dz})=(-\frac ya+\frac{(1-y)}{(1-a)})\cdot a(1-a)=a-ydz=dzdL(a,y)?=dzdL?=(dadL?)?(dzda?)=(?ay?+(1?a)(1?y)?)?a(1?a)=a?y
視頻中為了簡化推導過程,假設 nxn_xnx? 這個推導的過程就是我之前提到過的鏈式法則。如果你對微積分熟悉,放心地去推導整個求導過程,如果不熟悉微積分,你只需要知道 dz=(a?y)dz=(a-y)dz=(a?y) 已經計算好了。
現在進行最后一步反向推導,也就是計算 www 和 bbb 變化對代價函數 LLL 的影響,特別地,可以用: dw1=1m∑imx1(i)(a(i)?y(i))dw_1=\frac1m\sum_i^mx_1^{(i)}(a^{(i)}-y^{(i)}) dw1?=m1?i∑m?x1(i)?(a(i)?y(i))dw2=1m∑imx2(i)(a(i)?y(i))dw_2=\frac1m\sum_i^mx_2^{(i)}(a^{(i)}-y^{(i)}) dw2?=m1?i∑m?x2(i)?(a(i)?y(i))db=1m∑im(a(i)?y(i))db=\frac1m\sum_i^m(a^{(i)}-y^{(i)})db=m1?i∑m?(a(i)?y(i)) 視頻中, dw1dw_1dw1? 表示 ?L?w1=x1?dz\frac{\partial L}{\partial w_1}=x_1\cdot dz?w1??L?=x1??dz ,dw2dw_2dw2? 表示 ?L?w2=x2?dz\frac{\partial L}{\partial w_2}=x_2\cdot dz?w2??L?=x2??dz , db=dzdb = dzdb=dz 。 因此,關于單個樣本的梯度下降算法,你所需要做的就是如下的事情: 使用公式 dz=(a?y)dz=(a-y)dz=(a?y) 計算 dzdzdz , 使用 dw1=x1?dzdw_1=x_1 \cdot dzdw1?=x1??dz 計算 dw1dw_1dw1? , 計算 dw2=x2?dzdw_2=x_2 \cdot dzdw2?=x2??dz 計算 dw2dw_2dw2? , db=dzdb=dzdb=dz 計算 dbdbdb ,然后: 更新 w1=w1?αdw1w_1=w_1-\alpha\ dw_1w1?=w1??α?dw1? , 更新 w2=w2?αdw2w_2=w_2-\alpha\ dw_2w2?=w2??α?dw2? , 更新 b=b?αdbb=b-\alpha\ dbb=b?α?db 。 這就是關于單個樣本實例的梯度下降算法中參數更新一次的步驟。
現在你已經知道了怎樣計算導數,并且實現針對單個訓練樣本的邏輯回歸的梯度下降算法。但是,訓練邏輯回歸模型不僅僅只有一個訓練樣本,而是有 mmm 個訓練樣本的整個訓練集。因此在下一節視頻中,我們將這些思想應用到整個訓練樣本集中,而不僅僅只是單個樣本上。
課程PPT
| 2.8 計算圖的導數計算 | 回到目錄 | 2.10 m 個樣本的梯度下降 |
總結
以上是生活随笔為你收集整理的2.9 Logistic 回归的梯度下降法-深度学习-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.7 计算图-深度学习-Stanfor
- 下一篇: 2.10 m 个样本的梯度下降-深度学习