1. FCNN 全連接神經網絡
全連接神經網絡(FCNN, Fully Connected Neural Network)是最樸素的神經網絡,其參數最多,計算量最大。一般可用下圖表示:
網絡由若干層組成,第一層爲輸入層(Input Layers),最後一層爲輸出層(Output Layers),中間爲隱藏層(Hidden Layers)。每一層都以前一層的輸出作爲輸入,再經過計算輸出到下一級。每一個圓圈爲一個神經元,內部爲如下的計算組合:
① z = wx + b,最小化損失函數,其中 w 爲權值,b 爲偏置
② f(z) = 1 / e ^ (-z),激勵函數(Activation Function),將輸出值域壓縮至 (0, 1),即數據歸一化
神經網絡的訓練是有監督的學習,對於輸入值 X,有着與之對應的實際值 Y,而輸出值 Y' 與實際值 Y 之間的損失 Loss 即反向傳播的內容。整個網絡的訓練過程就是不斷縮小 Loss 的過程。
2. 點積
對於兩個向量 u = [u1, u2, ..., un], v = [v1, v2, ... vn],其點積爲:
u · v = u1 * v1 + u2 * v2 + ... + un * vn。
3. 卷積
對於兩個離散信號 f, g,其卷積結果爲一個信號倒序後在不同位置和另一個信號中一段相同長度的部分求點積的集合。
假設前者信號爲 f,後者爲 g,則 f 又被稱爲卷積核(Kernel)。f 和 g 可以交換,結果不會變化。
下面爲一個一維信號求卷積的例子,其中卷積核信號 f 爲 [1, 2, 1],倒置後仍爲 [1, 2, 1],信號 g 爲 [1, 2, 3, 0, 1, 0]。
其中,在信號 g 前後分別加上 2 個 0,它們被稱爲零填充(Zero Padding)。
卷積核每次移動的距離叫做步長(Stride),本例步長爲 1。
卷積有三種類型,設卷積核信號 f 長度爲 n,待卷積信號 g 長度爲 m,有:
① Valid
不對信號 g 進行零填充而求卷積,即卷積核起初與待卷積信號由左對齊至右對齊,卷積長度爲 m - n + 1;
② Same
對信號 g 的邊緣共添加 n - 1 個 0,使得卷積結果與信號 g 長度一致,即 m;
③ Full
對信號 g 的邊緣再添加 n - 1 個 0,使得卷積核能夠劃過的位置最大,即由卷積核右邊緣與待卷積信號左邊緣對齊至卷積核左邊緣與待卷積信號右邊緣對齊,卷積長度爲 m + n - 1。
二維卷積同理。
4. CNN 卷積神經網絡
FCNN 用於所有層級之間都是全部相連的,結構複雜,收斂緩慢,效率很低,會處理大量的冗餘數據。而 CNN 是解決效率問題的一種辦法。
卷積神經網絡(CNN, Convolutional Neural Network),相比 FCNN 結構增加了卷積層(Convolutional Layers),池化層(Pooling Layers),輸出層由全連接層和 Softmax 層構成。
① 卷積層
卷積層至少有 1 層,之間爲局部連接,且權值共享,大幅減少了 (w, b) 的數量,加快訓練速度。卷積層的作用,簡單來說就是通過壓縮提純,來提取特徵。
對於 CNN 而言,權值 w 即卷積核。
在卷積核之後一般會加上一個叫做線性整流函數(ReLU, Rectified Linear Unit)的激勵函數,在全連接網絡中使用的是 sigmoid 激勵函數。
② 池化層
一般來說,卷積層後面都會加上一個池化層,它是對卷積層的進一步特徵抽樣,用於壓縮數據與參數量,減小過擬合(overfitting)。其具體操作與卷積層基本相同,但只取對應位置的最大值與平均值(最大池化、平均池化)。
池化過程強調特徵不變性。比如在圖像處理時,一張狗狗的圖像被縮小一倍後我們還能看出這是一隻狗狗,那麼說明這種圖像在壓縮時保留了狗狗的特徵,而移除了無關緊要的信息。
下圖爲一個池化的例子,卷積核大小爲 2 * 2,步長 stride = 2,採用最大池化法,得到如下結果。
5. 超參數
超參數指在開始學習過程之前設置值的參數,而不是通過訓練得到的參數數據。通常情況下,需要對超參數進行優化,給學習機選擇一組最優超參數,以提高學習的性能和效果。
過擬合(Overfitting),指爲了得到一致假設而使假設變得過度嚴格,其反義詞爲欠擬合。如下圖所示。
一個更貼近生活的理解是,高中生 kk 刷了一大堆理綜的題目,他對那些做過的題滾瓜爛熟,但一到考試碰到類似卻不同的題一臉懵逼,也可以認爲是一種過擬合。
對於卷積神經網絡,過擬合一般指經過訓練得到的超參數與訓練數據集匹配度過高,而測試數據集的結果精確度遠低於訓練數據集。
正則化:
C 爲當前神經網絡的損失,C0 爲之前的損失,a 爲懲罰因子。
優化器(Optimizer):
略
學習率(Learning Rate):
激勵函數(Activation Function):
激勵函數的作用是讓神經網絡模型能夠逼近非線性函數。
① Sigmoid 函數
② Softmax
③ ReLU 線性整流函數
損失函數
其他超參數
epoch
BatchSize
卷積神經網絡的常用框架:
① TensorFlow,Google 開發的深度學習框架
② Torch,Facebook 卷積神經網絡工具包,還有專用於 Python 的 PyTorch
③ Caffe,不太瞭解
參考:
https://zhuanlan.zhihu.com/p/107822685
https://www.cnblogs.com/skyfsm/p/6790245.html
https://blog.csdn.net/weixin_38145317/article/details/89310404