吴恩达老师深度学习视频课笔记:多隐含层神经网络公式推导(二分类)
????????多隱含層神經(jīng)網(wǎng)絡(luò)的推導(dǎo)步驟非常類似于單隱含層神經(jīng)網(wǎng)絡(luò)的步驟,只不過是多重復(fù)幾遍。
????? ? 關(guān)于單隱含層神經(jīng)網(wǎng)絡(luò)公式的推導(dǎo)可以參考:?http://blog.csdn.net/fengbingchun/article/details/79370310?
????????邏輯回歸是一個淺層模型(shadow model),或稱單層神經(jīng)網(wǎng)絡(luò);單隱含層神經(jīng)網(wǎng)絡(luò)是一個雙層神經(jīng)網(wǎng)絡(luò)。當我們數(shù)神經(jīng)網(wǎng)絡(luò)有幾層的時候,我們不能把輸入層數(shù)進去,只算上隱含層和輸出層的數(shù)量。
???????符號約定:L:表示神經(jīng)網(wǎng)絡(luò)的層數(shù);n[l]:第l層上節(jié)點(單元)的數(shù)量,如n[1]表示第一個隱含層單元數(shù)量;輸入層作為第0層,即n[0]表示輸入層單元數(shù)量;a[l]:表示第l層中的激活函數(shù);a[l]=g[l](z[l]);w[l]:表示第l層中的權(quán)值,即在a[l]中計算z[l]值的權(quán)重;b[l]:表示第l層中的偏置,即計算z[l]值的偏置項;x:輸入特征,x也是第0層的激活函數(shù),即a[0]=x;最后一層的激活函數(shù)a[L]=y’(或稱y hat),即a[L]等于預(yù)測輸出;
????????正向傳播(單個樣本):第1層到第L層(也就是從輸入層到輸出層的整個神經(jīng)網(wǎng)絡(luò))
????????????????z[1]=w[1]*x+b[1];// x=a[0](輸入特征向量x也是第0層的激活函數(shù))
????????????????a[1]=g[1](z[1]);
????????????????z[2]=w[2]*a[1]+b[2];
????????????????a[2]=g[2](z[2]);
????????????????… …
????????????????z[L]=w[L]*a[L-1]+b[L];
????????????????a[L]=g[L](z[L]);
????????正向傳播基本規(guī)律公式:
????????????????z[l]=w[l]*a[l-1]+b[l];
????????????????a[l]=g[l](z[l]);
??????? 反向傳播基本規(guī)律公式:
??????? ????????dz[l]=da[l]*g[l]’(z[l]);
??????? ????????dw[l]=dz[l]*a[l-1];
??????? ????????db[l]=dz[l];
??????? ????????da[l-1]=w[l]T*dz[l];
??????? 各層矩陣w、b維數(shù)的確定:
???????????????? ????w[l]的維度必須是:(n[l],n[l-1]);其中n[0]=nx,即輸入特征x的長度,x的維度是(n[0],1);
???????????????????? b[l]的維度一般是:(n[l],1);
??????? z[l]和a[l]矩陣的維度應(yīng)該是相等的(a[L]=g[L](z[L]));dz[l]和z[l]的維度是相等的;da[l]和a[l]的維度是相等的。
??????? 在反向傳播中,dw[l]的維度應(yīng)該和w[l]的維度相同,即為(n[l],n[l-1]);db[l]的維度應(yīng)該和b[l]的維度相同,即(n[l],1)。
??????? 深度神經(jīng)網(wǎng)絡(luò)(deep neural network)很好用的原因:
????????假如你在建一個人臉識別或人臉檢測系統(tǒng),深度神經(jīng)網(wǎng)絡(luò)所做的事就是:當你輸入一張臉部的照片,然后你可以把深度神經(jīng)網(wǎng)絡(luò)的第1層當成一個特征檢測器或邊緣檢測器,例如在第1層創(chuàng)建一個大概有20個隱層單元的深度神經(jīng)網(wǎng)絡(luò),隱層單元就是下圖的這些小方塊,一個小方塊就是一個隱層單元,它會去找這張照片里的垂直或水平邊緣的方向等,即第1層去找這張照片的各個邊緣;然后它可以把檢測到的邊緣組合成面部的不同部分,比如說,可能有一個神經(jīng)元會去找眼睛的部分,另外還有別的在找鼻子的部分,然后把這些許多的邊緣結(jié)合在一起,就可以開始檢測人臉的不同部分;最后再把這些部分放在一起,比如鼻子、眼睛、下巴,就是識別或檢測不同的人臉。你可以直覺上把這種神經(jīng)網(wǎng)絡(luò)的前幾層當做檢測簡單的函數(shù),比如邊緣,之后把它們跟后幾層結(jié)合在一起,那么總體上就能學(xué)習(xí)更多復(fù)雜的函數(shù)。邊緣(edge)檢測器其實相對來說都是針對照片中非常小塊的面積;面部檢測器就會針對于大一些的區(qū)域。一般的概念是,一般會從比較小的細節(jié)入手,比如邊緣,然后在一步步到更大更復(fù)雜的區(qū)域,比如一只眼睛或是一個鼻子;再把眼睛鼻子裝一塊組成更復(fù)雜的部分。這種從簡單到復(fù)雜的金字塔狀表示方法或者組成方法,也可以應(yīng)用在圖像或者人臉識別以外的其它數(shù)據(jù)上。
????????參數(shù)和超參數(shù)(hyper parameters):參數(shù)包括各層的w和b。學(xué)習(xí)率α、梯度下降法中的迭代次數(shù)、隱含層數(shù)、各隱含層的單元數(shù)、激活函數(shù)的選擇,這些都需要自己來設(shè)置,這些數(shù)字實際上控制了最終參數(shù)w和b的值。所以它們被稱為超參數(shù)。因為這些超參數(shù)在某種程度上決定了最終得到的w和b。
????????今天的深度學(xué)習(xí)應(yīng)用領(lǐng)域,還是很經(jīng)驗性的過程:
????????機器學(xué)習(xí)里的復(fù)雜性是來源于數(shù)據(jù)本身而不是一行行的代碼。
????? ? GitHub:?https://github.com/fengbingchun/NN_Test?
總結(jié)
以上是生活随笔為你收集整理的吴恩达老师深度学习视频课笔记:多隐含层神经网络公式推导(二分类)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV3.3中K-Means聚类接
- 下一篇: K-均值聚类(K-Means) C++代