Deep Neural Network
本周課程涉及到的知識(shí)點(diǎn)有:
- Deep neural network 的架構(gòu)
- Deep neural network 上的正向傳播和反向傳播
- Parameters 以及 Hyperparameters的概念
Deep neural network 的架構(gòu)
終于我們開始進(jìn)入了深度神經(jīng)網(wǎng)絡(luò)的世界咪橙。不過(guò)如果跟著前面的課程學(xué)下來(lái)會(huì)發(fā)現(xiàn)其實(shí)這沒有什么更多的新知識(shí),只是把單層神經(jīng)網(wǎng)絡(luò)擴(kuò)展到多層而已桶至。下圖給出了一個(gè)典型的神經(jīng)網(wǎng)絡(luò)陕贮,有一個(gè)輸入層黔宛,三個(gè)隱藏層以及一個(gè)輸出層剩愧。
可以看到這個(gè)結(jié)構(gòu)和之前一節(jié)課學(xué)的shallow network 沒有什么本質(zhì)的區(qū)別,只是多了幾個(gè)隱藏層髓考。問(wèn)題是為何多用加幾個(gè)隱藏層就可以顯著的提高神經(jīng)網(wǎng)絡(luò)的性能呢影暴?下圖給出了一個(gè)例子襟己,比如說(shuō)我們要做一個(gè)人臉識(shí)別的應(yīng)用。那么第一層網(wǎng)絡(luò)一般會(huì)學(xué)習(xí)一些比較淺顯的feature, 例如點(diǎn)厦画,劃疮茄,邊線等等。然后第二層會(huì)把第一層的輸出結(jié)合起來(lái)學(xué)習(xí)一些更加復(fù)雜的feature,比如鼻子眼睛的形狀根暑。然后第三層可以進(jìn)一步把這些局部結(jié)構(gòu)組合在一起形成人臉的整體判斷力试。
總結(jié)一下就是多個(gè)隱藏層給予了神經(jīng)網(wǎng)絡(luò)從抽象到具體,從細(xì)節(jié)局部到整體的學(xué)習(xí)能力购裙。這使得我們無(wú)需去深入研究如何構(gòu)造復(fù)雜的feature, 直接采用raw feature往往就能取得很好的性能懂版。
深度神經(jīng)網(wǎng)絡(luò)的計(jì)算過(guò)程也和之前的大同小異,下圖給出了一個(gè)總結(jié):
我們首先還是初始化每層的參數(shù) W 和 b , 然后對(duì)每層先進(jìn)行l(wèi)inear 計(jì)算躏率, 隨后通過(guò)activation function (通常選擇ReLU)得到下一層的輸入躯畴。通過(guò)最后一層的activation function為sigmoid函數(shù)我們得到一個(gè)最終的概率(比如圖像是貓的概率)民鼓。我們通過(guò)把最終的輸出和已經(jīng)標(biāo)記的ground truth比較得到當(dāng)前神經(jīng)網(wǎng)絡(luò)的 cost 是多少。隨后我們通過(guò)反向傳播更新每層的參數(shù) W 和 b 來(lái)最小化這個(gè)cost 蓬抄。在多次循環(huán)之后我們最終收斂得到了一個(gè)最優(yōu)化的 W 和 b丰嘉,即可以輸出和真實(shí)判斷最接近的判斷結(jié)果。
從這個(gè)總結(jié)可以看出嚷缭,深度神經(jīng)網(wǎng)絡(luò)的關(guān)鍵概括起來(lái)還是正向傳播計(jì)算輸出饮亏,反向傳播更新參數(shù)。下面我們來(lái)具體看一看這兩個(gè)過(guò)程阅爽。
Deep neural network 上的正向傳播和反向傳播
下面這個(gè)草圖給出了第L層的正向傳播和反向傳播的計(jì)算路幸。
注意草圖中采用了小寫的 a 和 z 來(lái)代表一個(gè)training data, 然而在實(shí)際計(jì)算中我們通常同時(shí)處理 m 個(gè)training data,因此用大寫的 A 和 Z 來(lái)表示。在下面的筆記中我們一律采用大寫付翁。
正向傳播: 所謂的正向傳播也就是拿前一層是輸入 A[L-1] (其中 A[0] 即為原始輸入數(shù)據(jù)), 乘以 W[L] 加上 b[L] 得到 Z[L]简肴,然后再把 Z[L] 丟到激活函數(shù)中計(jì)算得到 A[L] 的過(guò)程。計(jì)算如下所示:
[圖片上傳失敗...(image-2ecb53-1511717398961)]
[圖片上傳失敗...(image-9ada96-1511717398961)]%20=%20g(W{[l]}A{[l-1]}%20+b^{[l]})$)
注意g(*)也就是激活函數(shù)百侧,一般Hidden layer我們用ReLU, 而最后的輸出層用sigmoid (二元分類)或者softmax(多元分類)
反向傳播: 反向傳播用來(lái)計(jì)算最后cost function對(duì)每個(gè)參數(shù)的梯度砰识,也就是 dW[L] 和 db[L] , 為了計(jì)算這個(gè)我們首先要計(jì)算cost function對(duì)每層計(jì)算出來(lái)的 z[L] 和 a[L] 的梯度,計(jì)算公式如下所示:
[圖片上傳失敗...(image-69c1c9-1511717398961)]%20\tag{11}$$)
[圖片上傳失敗...(image-6065ef-1511717398961)]
[圖片上傳失敗...(image-c0a874-1511717398961)]
[圖片上傳失敗...(image-6253f3-1511717398961)]}$$)
這個(gè)過(guò)程咋一看令人非常崩潰佣渴,我們來(lái)捋一下辫狼。
- 首先在計(jì)算出 A[L] 也就是最后輸出之后,我們可以計(jì)算得到dA[L] 辛润。如果采取sigmoid function 那么就是 dA[L] = -Y/A[L] - (1-Y)/(1-A[L])
- 通過(guò) dA[L] 和 Z[L]計(jì)算 dZ[L]
- 通過(guò) dZ[L] 和 W[L] 計(jì)算 dA[L-1]
- 通過(guò) dZ[L] 和 A[L-1] 計(jì)算 dW[L]
- 通過(guò) dZ[L] 計(jì)算 db[L]
注意這個(gè)過(guò)程中我們其實(shí)感興趣的就是 dW[L] 和 db[L] , 而別的都是一些中間變量膨处。注意加粗的 Z[L], W[L] 和 A[L-1] 都是forward propagation的中間結(jié)果。因此我們?cè)谟?jì)算forward propagation的時(shí)候需要把它們緩存下來(lái)來(lái)計(jì)算反向梯度频蛔。
下圖給出了完整的正向傳播和反向傳播的流程:
再次強(qiáng)調(diào)一遍灵迫,其中 A[0] 對(duì)應(yīng)原始輸入,這也就是我們無(wú)需再計(jì)算 dA[0] 了-畢竟我們的目的是更新 dW 和 db. 更新公式也就是我們熟悉的gradient descent (底部的綠色公式)晦溪。
Parameters 以及 Hyperparameters的概念
所謂的Parameters 指的是每層的 W[L] 和 b[L]瀑粥, 這些參數(shù)是神經(jīng)網(wǎng)絡(luò)需要去不斷更新優(yōu)化來(lái)讓最后的prediction結(jié)果逼近真實(shí)情況的。而Hyperparameters指的則是learning rate, 神經(jīng)網(wǎng)絡(luò)的Hidden layer的層數(shù)三圆,每層的neuron 的個(gè)數(shù)等等狞换。這些參數(shù)無(wú)需更新,然而需要我們初始化舟肉,并且往往初始化的結(jié)果決定了最后訓(xùn)練出來(lái)的Parameters (W[L] 和 b[L])的好壞修噪。因此我們把它們稱之為Hyperparameters。
最后路媚,Hyperparameters的設(shè)置會(huì)對(duì)神經(jīng)網(wǎng)絡(luò)的結(jié)果產(chǎn)生不可估量的影響黄琼。因此如何調(diào)整合適的hyperparameters也是deep learning里一種非常重要的技能。在下一個(gè)系列的課程中整慎,我們會(huì)深入看看如何一些讓deep learning工作的更好的調(diào)整hyperparameters的經(jīng)驗(yàn)方法脏款。
總結(jié)
到這里其實(shí)最deep learning的基本原理就已經(jīng)介紹完了围苫。可以看出其中并沒有什么特別玄妙高深的知識(shí)撤师,其過(guò)程概括起來(lái)無(wú)非是利用正向傳播計(jì)算cost剂府,反向傳播計(jì)算梯度, 以及梯度下降算法來(lái)優(yōu)化網(wǎng)絡(luò)參數(shù)剃盾。問(wèn)題是在于現(xiàn)在還沒有一個(gè)數(shù)學(xué)模型來(lái)概括在deep learning的過(guò)程中到底發(fā)生了什么腺占,各個(gè)參數(shù)到底是如何變化的。因此獲得良好的deep learning的性能我們需要不斷的嘗試各種不同的初始化參數(shù)痒谴。下面我們會(huì)介紹一些實(shí)際應(yīng)用中能讓deep learning效果更好的一些技巧以及更復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)(CNN & RNN)衰伯。