2020-5-12 吳恩達-NN&DL-w4 深層NN(4.3 覈對矩陣的維數,4.4 爲什麼使用深層表示-因爲淺層就需要巨量單元數)

1.視頻網站:mooc慕課https://mooc.study.163.com/university/deeplearning_ai#/c
2.詳細筆記網站(中文):http://www.ai-start.com/dl2017/
3.github課件+作業+答案:https://github.com/stormstone/deeplearning.ai

4.3 覈對矩陣的維數 Getting your matrix dimensions right

當實現深度NN的時候,一個常用的檢查代碼是否有錯的方法就是覈對一遍算法中矩陣的維數。

在這裏插入圖片描述

上圖,5層NN,4個隱層,1個輸出層,L=5。
前面課程中已經介紹過,從輸入特徵開始,分別表示爲第0,1,2,3,4,5層。
每層的單元數用n[l]表示

  • n[0]=2
  • n[1]=3
  • n[2]=5
  • n[3]=4
  • n[4]=2
  • n[5]=1

實現正向傳播過程,單訓練樣本情況第一步

z[1]=W[1]x+b[1]z^{[1]}=W^{[1]}x+b^{[1]}

  • 輸入特徵x有2個,所以維度是(n[0],1),2x1
  • 第一層激活函數向量z維度是(n[1],1),3x1

先忽略偏置項b。要符合上面2個向量維度,根據矩陣乘法法則,W[1]維度必須是 3x2,即 (n[1],n[0])

依次類推,可以歸納出 第L層的W[l]的維度是 (n[l],n[l-1])
例如:

  • 第二層W[2]的維度是(n[2],n[1]),5x3。
  • 第三層W[3]的維度是(n[3],n[2]),4x5。
  • 第四層W[4]的維度是(n[4],n[3]),2x4。
  • 第五層W[5]的維度是(n[5],n[4]),1x2。

再來看偏置項b,很顯然,根據向量加法法則,第一層因爲z[1]是3x1,那麼b[1]也必須是3x1。
依次類推,可以歸納出 第L層的b[l]的維度是 (n[l],1)

總結一下,第L層的向量W和b的維度爲

W[l]:(n[l],n[l1])W^{[l]}: (n^{[l]},n^{[l-1]})
b[l]:(n[l],1)b^{[l]}: (n^{[l]},1)
反向傳播中,dw和W的維度應該相同,db和b的維度應該系統
dW[l]:(n[l],n[l1])dW^{[l]}: (n^{[l]},n^{[l-1]})
db[l]:(n[l],1)db^{[l]}: (n^{[l]},1)

訓練集向量化以後

Z[1]=W[1]X+b[1]Z^{[1]}=W^{[1]}X+b^{[1]}

其中矩陣Z是把z向量從左到右橫向疊起來。
Z[1]=[z[1](1)z[1](2)z[1](3)z[1](m)]Z^{[1]}= \left[ \begin{array}{c} \vdots &\vdots & \vdots & \vdots & \vdots\\ z^{[1](1)} & z^{[1](2)} & z^{[1](3)} & \vdots & z^{[1](m)}\\ \vdots &\vdots & \vdots & \vdots & \vdots\\ \end{array} \right]

所以Z[1]Z^{[1]}的維度不再是(n[1],1),3x1,而是(n[1],m),m是訓練集大小。
X的維度不再是(n[0],1),2x1,而是把所有訓練樣本水平堆疊在一起,所以維度是(n[0],m),m是訓練集大小。

按照上面單個樣本時候的推導方式,先忽略偏置項b,根據矩陣乘法法則,此時W[1]W^{[1]}的維度不變,依然是(n[1],n[0])。

最後再看偏置項b,根據矩陣加法法則,b[1]b^{[1]}的維度是(n[1],m)。

總結一下,Z和A矩陣的維度爲
Z[l],A[l]:(n[l],m)Z^{[l]},A^{[l]}:(n^{[l]},m)

同樣,反向傳播過程dZ和dA的維度,保持與Z和A一致
dZ[l],dA[l]:(n[l],m)dZ^{[l]},dA^{[l]}:(n^{[l]},m)
提醒一下:在你做深度NN的反向傳播時,一定要確認所有的矩陣維數是前後一致的,可以大大提高代碼通過率。

4.4 爲什麼使用深層表示 Why deep representations?

深度NN能解決好多問題。我們並不需要很大的NN,但是得有深度,得有比較多的隱藏層,這是爲什麼呢?

1-人臉識別

以人臉識別爲例。瞭解相關知識參見鏈接

當你輸入一張臉部的照片,可以把深度NN的第一層,當成一個特徵探測器或者邊緣探測器。
在這裏插入圖片描述

觀察上圖,我們可以把每個要識別的特徵(右下角的每個小方塊)當做第一層一個隱藏單元。
例如

  • 第一行第一列,會去找照片中"|"的邊緣特徵
  • 第四行第五列,會去找照片中"—"的邊緣特徵

人臉識別使用的是卷積NN,如果想了解爲什麼小方塊(或者說要識別的特徵)是這麼表示的,可以查找相關資料深入瞭解。

我們把NN的第一層(特徵)當作看圖,去找這張照片的各個邊緣。
把這許多的邊緣結合在一起,就可以開始檢測人臉的不同部分,也就是NN的第二層的每個單元。
在這裏插入圖片描述

我們可以把照片裏組成邊緣的像素們放在一起看,然後它可以把被探測到的邊緣組合成面部的不同部分(右下角圖中的各個小方塊),每個不同部分(每個小方塊)就是第二層的一個單元。
例如,

  • 通過第一層的幾個特徵得到了第二層的一個單元-眼睛的某個部分,也就是右下角圖的第一行第一列
  • 通過第一層的幾個特徵得到了第二層的另一個單元-鼻子的某個部分,也就是右下角圖的第一行第三列

最後再把這些部分放在一起,比如鼻子眼睛下巴,就可以識別或是探測不同的人臉,也就是NN的第三層的每個單元。
在這裏插入圖片描述

所以你可以考慮用NN網絡的前幾層來探測(學習)簡單的功能,比如邊緣。然後在NN的後面幾層把它們結合在一起,這樣就能夠學習更多複雜的功能。

有一個技術性的細節需要理解的是,邊緣探測器其實相對來說都是針對照片中非常小塊的面積。就像下圖中的每一塊,都是很小的區域。
在這裏插入圖片描述

面部探測器就會針對於大一些的區域,如下圖。在這裏插入圖片描述

主要的概念是:一般你會從比較小的細節入手,比如邊緣,然後再一步步到更大更復雜的區域,比如一隻眼睛或是一個鼻子,再把眼睛鼻子裝一塊組成更復雜的部分。

這種從簡單到複雜的金字塔狀表示方法或者組成方法,也可以應用在圖像或者人臉識別以外其他類型的數據上。

2-語音識別系統

語音識別系統需要解決的就是如何可視化語音。

比如你輸入一個音頻片段,那麼NN的第一層可能就會去先開始試着探測比較低層次的音頻波形的一些特徵,例如:音調是變高了還是低了,分辨白噪音,噝噝噝的聲音,或者音調。可以選擇這些相對程度比較低的波形特徵low level audio waveform features,然後把這些波形組合在一起就能去探測聲音的基本單元。
在這裏插入圖片描述

在語言學中有個概念叫做音位phonemes,比如說單詞ca,c的發音,“嗑”就是一個音位,a的發音“啊”是個音位,t的發音“特”也是個音位,有了基本的聲音單元以後,組合起來,你就能識別音頻當中的單詞words,單詞再組合起來就能識別詞組,再到完整的句子sentences。

深度NN的這許多隱藏層中,前幾層能學習一些低層次的簡單特徵,等到後幾層,就能把簡單的特徵結合起來,去探測更加複雜的東西。

比如(學習)你錄在音頻裏的單詞、詞組或是句子,然後就能運行語音識別了。
在這裏插入圖片描述

上圖中,我們計算前的幾層,就是相對簡單的輸入函數,比如圖像單元的邊緣之類的。到網絡中的深層時,你實際上就能做很多複雜的事,比如探測面部或是探測單詞、短語或是句子。

有些人喜歡把深度神經網絡和人類大腦做類比,這些神經科學家覺得人的大腦也是先探測簡單的東西,比如你眼睛看得到的邊緣,然後組合起來才能探測複雜的物體,比如臉。

這種深度學習和人類大腦的比較,有時候比較危險。但是不可否認的是,我們對大腦運作機制的認識很有價值。有可能大腦就是先從簡單的東西,比如邊緣着手,再組合成一個完整的複雜物體,這類簡單到複雜的過程,同樣也是其他一些深度學習的靈感來源

**3-電路理論 circuit theory **

概念

  • Small L-layer:隱藏單元的數量相對較少
  • Deep NN:隱藏層數目比較多
    在這裏插入圖片描述

在非正式的情況下,函數都可以用相對較小,但很深(層數多)的NN來計算。
但是如果你用淺一些的NN計算同樣的函數,也就是說在我們不能用很多隱藏層時,你會需要 成指數增長的單元數量 才能達到同樣的計算結果。

假設你想要對輸入特徵計算異或或是奇偶性,假設你有x個特徵,

y=x1XORx2XORx3......xny=x_1XORx_2XORx_3......x_n

在這裏插入圖片描述

上圖左邊是異或樹圖,採用了多隱層。深度是O(log(n))。節點的數量不會很大,也就是不需要太多的門去計算異或。

上圖右邊採用的是單隱層,此時節點數就是呈指數增長。因爲你需要窮舉2n種可能的配置。隱藏單元數量是2n-1,複雜度是O(2n)。

很多數學函數用深度網絡計算比淺網絡要容易得多

“深度學習”這個名字以前就表示有很多隱藏層的NN。

再次重複以前提到過的經驗

開始解決一個新問題時,通常從邏輯迴歸開始,再試試一到兩個隱層,把隱藏層數量當作參數、超參數一樣去調試,這樣去找比較合適的深度。

近幾年以來,有一些人會趨向於使用非常非常深邃的神經網絡,比如好幾打的層數,某些問題中只有這種網絡纔是最佳模型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章