1.深層神經網絡
深層神經網絡其實就是包含更多的隱藏層神經網絡。下圖分別列舉了邏輯迴歸、1個隱藏層的神經網絡、2個隱藏層的神經網絡和5個隱藏層的神經網絡它們的模型結構。
命名規則上,一般只參考隱藏層個數和輸出層。例如,上圖中的邏輯迴歸又叫1 layer NN,1個隱藏層的神經網絡叫做2 layer NN,2個隱藏層的神經網絡叫做3 layer NN,以此類推。如果是L-layer NN,則包含了L-1個隱藏層,最後的L層是輸出層。
2.深層網絡中的前向傳播
對於第層 ,其正向傳播過程的和可以表示爲(此處是m個樣本向量化的形式):
也就是X。向量化也就是將所有訓練樣本寫成列向量,從左到右疊起來。對上式採用for循環計算每層的激活函數等,並且層間計算無法避免使用for循環進行計算。
3.覈對矩陣的維數
對於單個訓練樣本,輸入x的維度是,神經網絡的參數和的維度分別是:
其中,和分別是第層和第層的神經元個數。,表示輸入層特徵個數。
反向傳播過程中,和的維度分別與和相同。
正向傳播過程中,和的維度均爲,且和的維度分別與和相同。
對於m個樣本,輸入矩陣X的維度是。需要注意的是和的維度與只有單個樣本是相同的。但在運算中,由於python的廣播性質且的每一列都是一樣的,會被當作矩陣進行運算。
和的維度分別與和相同。和的維度均爲,且和的維度分別與和相同。
4.爲什麼使用深層表示
下圖爲人臉識別的例子。經過訓練,神經網絡第一層從原始圖片中提取出人臉的輪廓與邊緣,即邊緣檢測。每個神經元得到一些邊緣信息。第二層將前一層的邊緣進行組合,組合成人臉的一些局部特徵,比如眼睛、鼻子、嘴巴等。再往後面,將這些局部特徵組合起來,融合成人臉的模樣。隨着層數由淺到深,神經網絡提取的特徵也是從邊緣到局部特徵再到整體,由簡單到複雜。可見,如果隱藏層足夠多,那麼能夠提取的特徵就越豐富、越複雜,模型的準確率就會越高。
語音識別模型也是這個道理。淺層的神經元能夠檢測一些簡單的音調,然後較深的神經元能夠檢測出基本的音素,更深的神經元就能夠檢測出單詞信息。如果網絡夠深,還能對短語、句子進行檢測。神經網絡從左到右,神經元提取的特徵從簡單到複雜。特徵複雜度與神經網絡層數成正相關。特徵越來越複雜,功能也越來越強大。
下面的例子是使用電路理論,計算邏輯輸出:
,表示異或。如果使用深度網絡,深度網絡的結構是每層將前一層的兩兩單元進行異或,到最後是一個輸出,神經網絡層數爲,不包含輸入層。層數被計爲隱藏層數+1。輸入層不計在層數內,輸出層需要計算。總共使用n-1個神經元。
如果不用深層網絡,僅僅使用單個隱藏層,那麼需要的神經元個數將是指數級別那麼大。需要個神經元。
處理同一邏輯問題,深層網絡所需的神經元個數比淺層網絡要少很多。這也是深層神經網絡的優點之一。但是,對實際問題進行建模時,儘量先選擇層數少的神經網絡模型,對於比較複雜的問題,再使用較深的神經網絡模型。
5.搭建深層神經網絡塊
第層的流程塊圖如下:
對於正向傳播來說,輸入是,輸出是,參數是、,緩存變量是;
對於反向傳播來說,輸入是,輸出是、、,參數是、。
神經網絡所有層,整體的流程塊圖正向傳播過程和反向傳播過程如下所示:
6.前向和反向傳播
首先是正向傳播過程,令層數爲第層,輸入是,輸出是,緩存變量是。其表達式如下:
m個訓練樣本,向量化形式爲:
反向傳播過程,輸入是,輸出是、、。其表達式如下:
由上述四個公式可以推出:
該式反映了與的遞推關係。
m個訓練樣本,向量化形式爲:
最後一點細節:
7.參數VS超參數
該部分介紹神經網絡中的參數(parameters)和超參數(hyperparameters)的概念。
神經網絡中的參數就是、。而超參數則是例如學習速率,訓練迭代次數N,神經網絡層數L,各層神經元個數,激活函數等。之所以叫做超參數的原因是它們決定了參數和的值。
如何設置最優的超參數是一個比較困難的、需要經驗知識的問題。通常的做法是選擇超參數一定範圍內的值,分別代入神經網絡進行訓練,測試cost function隨着迭代次數增加的變化,根據結果選擇cost function最小時對應的超參數值。這類似於validation的方法。
8.這和大腦有什麼關係?
神經網絡實際上可以分成兩個部分:正向傳播過程和反向傳播過程。神經網絡的每個神經元採用激活函數的方式,類似於感知機模型。這種模型與人腦神經元是類似的,可以說是一種非常簡化的人腦神經元模型。如下圖所示,人腦神經元可分爲樹突、細胞體、軸突三部分。樹突接收外界電刺激信號(類比神經網絡中神經元輸入),傳遞給細胞體進行處理(類比神經網絡中神經元激活函數運算),最後由軸突傳遞給下一個神經元(類比神經網絡中神經元輸出)。
但人腦學習的機理至今尚未弄清楚,如今我們儘量減少人腦和深度學習工具的對比。