可以使用不同的方法來連接Neural Network,就可以得到不同的結構,而將所有的weights跟bias集合起來就是這個Network的參數 。接下來我會介紹連接這些神經元(Neuron)的方法。
是最常見的一種連接方式,做法是把Neuron排成一排一排,下圖中有6個Neuron,就兩個兩個一排,然後每一個Neuron都會根據訓練資料找出一組weight跟bias。經過計算藍色的Neuron的輸出如下所示。
如果我們今天都知道一個Neural Network裡面的參數,它就等於是一個function,它的輸入是一個vector,輸出是另外一個vector。而如果我們還不知道參數,只是決定好結構,就等於是在定義一個function set,也就是定義一個模型了。
下圖為整個Network的架構,這個架構layer跟layer之間,每個Neuron兩兩間都有連接,因此稱為全連接(Fully Connected),而這個架構是從 layer 1 到 2,2 到 3 由前往後傳遞,所以稱為前饋網路(Feedforward Network)。
輸入的地方稱為Input Layer,輸出的地方稱為Output Layer,而其他地方我們則稱為Hidden Layer。
至於幾層才算Deep,每個人都有不同的定義。
我們把Neuron的function稱之為Activation function,它不一定要是Sigmoid function,可以替換成其他function,現在Sigmoid function已經很少在做使用。
因此可以將整個Neural Network的運算表示成下圖所示。通常會使用矩陣去運算,因為這樣可以讓我們使用GPU加速矩陣的運算。
我們可以把Output layer之前的部分看做是一個特徵提取器(Feature Extractor),它就可以取代我們之前在做的特徵轉換(Feature transformation),所以在最後一個Hidden layer的輸出就可以當作我們新的Feature。
而Output layer就是一個Multi-calss的分類器(Classifier),所以我們會在最後一個Layer加上Softmax。
假設輸入是一個解析度 的圖片,總共有256個pixel,對機器來說它就是一個256維的vector,每一個pixel對應到一個維度,可以假設有塗黑的地方就是 1,沒有塗黑的就是 0。而輸出代表了一個機率分佈(Probability Distribution),總共有10維,就可以看成是輸出對應到每一個數字的機率。
而整個辨識手寫數字的架構就如下圖所示,你需要自己決定你的Layer跟Neuron數量。
假設有一張圖片跟它的Label,我們就可以知道它的目標vector,而我們將那張圖片當作輸入,得出一個結果,接著就跟之前我們在做Multi-calss Classification一樣,去計算預測跟實際的交叉熵(Cross entropy),那我們就是要讓Cross entropy越小越好。
於是我們將每一筆訓練資料的Cross entropy加起來,就會得到Total Loss,所以我們就是要找一個function讓Loss最小,或是找一組參數可以讓Loss最小。
梯度下降法在前面幾篇文章都有介紹過,這邊就不再贅述。