2.10 m 个样本的梯度下降-深度学习-Stanford吴恩达教授
| 2.9 Logistic 回歸的梯度下降法 | 回到目錄 | 2.11 向量化 |
mmm 個(gè)樣本的梯度下降 (Gradient Descent on mmm example)
在之前的視頻中,你已經(jīng)看到如何計(jì)算導(dǎo)數(shù),以及應(yīng)用梯度下降在邏輯回歸的一個(gè)訓(xùn)練樣本上。現(xiàn)在我們想要把它應(yīng)用在 mmm 個(gè)訓(xùn)練樣本上。
首先,讓我們時(shí)刻記住有關(guān)于損失函數(shù) J(w,b)J(w,b)J(w,b) 的定義。
J(w,b)=1m∑i=1mL(a(i),y(i))J(w,b)=\frac 1m \sum_{i=1}^m L(a^{(i)},y^{(i)})J(w,b)=m1?i=1∑m?L(a(i),y(i))
當(dāng)你的算法輸出關(guān)于樣本 yyy 的 a(i)a^{(i)}a(i) , a(i)a^{(i)}a(i) 是訓(xùn)練樣本的預(yù)測(cè)值,即: σ(z(i))=σ(wTx(i)+b)\sigma(z^{(i)})=\sigma(w^Tx^{(i)}+b)σ(z(i))=σ(wTx(i)+b) 。 所以我們?cè)谇懊娴幕脽糁姓故镜氖菍?duì)于任意單個(gè)訓(xùn)練樣本,如何計(jì)算微分當(dāng)你只有一個(gè)訓(xùn)練樣本。因此, dw1,dw2dw_1,\ dw_2dw1?,?dw2? 和 dbdbdb 添上上標(biāo) iii 表示你求得的相應(yīng)的值。如果你面對(duì)的是我們?cè)谥暗幕脽糁醒菔镜哪欠N情況,但只使用了一個(gè)訓(xùn)練樣本 (x(i),y(i))(x^{(i)},y^{(i)})(x(i),y(i)) 。 現(xiàn)在你知道帶有求和的全局代價(jià)函數(shù),實(shí)際上是1到 mmm 項(xiàng)各個(gè)損失的平均。 所以它表明全局代價(jià)函數(shù)對(duì) w1w_1w1? 的微分,對(duì) w1w_1w1? 的微分也同樣是各項(xiàng)損失對(duì) w1w_1w1? 微分的平均。
但之前我們已經(jīng)演示了如何計(jì)算這項(xiàng),即之前幻燈中演示的如何對(duì)單個(gè)訓(xùn)練樣本進(jìn)行計(jì)算。所以你真正需要做的是計(jì)算這些微分,如我們?cè)谥暗挠?xùn)練樣本上做的。并且求平均,這會(huì)給你全局梯度值,你能夠把它直接應(yīng)用到梯度下降算法中。
所以這里有很多細(xì)節(jié),但讓我們把這些裝進(jìn)一個(gè)具體的算法。同時(shí)你需要一起應(yīng)用的就是邏輯回歸和梯度下降。
我們初始化
J=0,dw1=0,dw2=0,db=0J=0,dw_1=0,dw_2=0,db=0J=0,dw1?=0,dw2?=0,db=0
代碼流程:
J=0;dw1=0;dw2=0;db=0; for i = 1 to mz(i) = wx(i)+b;a(i) = sigmoid(z(i));J += -[y(i)log(a(i))+(1-y(i))log(1-a(i));dz(i) = a(i)-y(i);dw1 += x1(i)dz(i);dw2 += x2(i)dz(i);db += dz(i); J/= m; dw1/= m; dw2/= m; db/= m; w=w-alpha*dw b=b-alpha*db幻燈片上只應(yīng)用了一步梯度下降。因此你需要重復(fù)以上內(nèi)容很多次,以應(yīng)用多次梯度下降。看起來(lái)這些細(xì)節(jié)似乎很復(fù)雜,但目前不要擔(dān)心太多。希望你明白,當(dāng)你繼續(xù)嘗試并應(yīng)用這些在編程作業(yè)里,所有這些會(huì)變的更加清楚。
但這種計(jì)算中有兩個(gè)缺點(diǎn),也就是說(shuō)應(yīng)用此方法在邏輯回歸上你需要編寫兩個(gè)for循環(huán)。第一個(gè)for循環(huán)是一個(gè)小循環(huán)遍歷 mmm 個(gè)訓(xùn)練樣本,第二個(gè)for循環(huán)是一個(gè)遍歷所有特征的for循環(huán)。這個(gè)例子中我們只有2個(gè)特征,所以 nnn 等于2并且 nxn_xnx? 等于2。 但如果你有更多特征,你開(kāi)始編寫你的因此 dw1dw_1dw1? , dw2dw_2dw2? ,你有相似的計(jì)算從 dw3dw_3dw3? 一直下去到 dwndw_ndwn? 。所以看來(lái)你需要一個(gè)for循環(huán)遍歷所有 nnn 個(gè)特征。
當(dāng)你應(yīng)用深度學(xué)習(xí)算法,你會(huì)發(fā)現(xiàn)在代碼中顯式地使用for循環(huán)使你的算法很低效,同時(shí)在深度學(xué)習(xí)領(lǐng)域會(huì)有越來(lái)越大的數(shù)據(jù)集。所以能夠應(yīng)用你的算法且沒(méi)有顯式的for循環(huán)會(huì)是重要的,并且會(huì)幫助你適用于更大的數(shù)據(jù)集。所以這里有一些叫做向量化技術(shù),它可以允許你的代碼擺脫這些顯式的for循環(huán)。
我想在先于深度學(xué)習(xí)的時(shí)代,也就是深度學(xué)習(xí)興起之前,向量化是很棒的。可以使你有時(shí)候加速你的運(yùn)算,但有時(shí)候也未必能夠。但是在深度學(xué)習(xí)時(shí)代向量化,擺脫for循環(huán)已經(jīng)變得相當(dāng)重要。因?yàn)槲覀冊(cè)絹?lái)越多地訓(xùn)練非常大的數(shù)據(jù)集,因此你真的需要你的代碼變得非常高效。所以在接下來(lái)的幾個(gè)視頻中,我們會(huì)談到向量化,以及如何應(yīng)用向量化而連一個(gè)for循環(huán)都不使用。所以學(xué)習(xí)了這些,我希望你有關(guān)于如何應(yīng)用邏輯回歸,或是用于邏輯回歸的梯度下降,事情會(huì)變得更加清晰。當(dāng)你進(jìn)行編程練習(xí),但在真正做編程練習(xí)之前讓我們先談?wù)勏蛄炕H缓竽憧梢詰?yīng)用全部這些東西,應(yīng)用一個(gè)梯度下降的迭代而不使用任何for循環(huán)。
課程PPT
| 2.9 Logistic 回歸的梯度下降法 | 回到目錄 | 2.11 向量化 |
總結(jié)
以上是生活随笔為你收集整理的2.10 m 个样本的梯度下降-深度学习-Stanford吴恩达教授的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2.9 Logistic 回归的梯度下降
- 下一篇: 2.11 向量化-深度学习-Stanfo