參考:

http://blog.csdn.net/iamrichardwhite/article/details/51089199

一、神經網路的發展歷史

五六十年代,提出感知機

八十年代,提出多層感知機,也就是神經網路,神經網路的層數直接決定了它對現實的刻畫能力。

但是,多層神經網路帶來了一些問題:

優化函式越來越容易陷入區域性最優解

梯度消失現象更加嚴重

06年,Hinton利用預訓練方法緩解了區域性最優解問題,將隱含層推動到了7層,神經網路有了真正意義上的深度,解開了深度學習DNN的熱潮。近期出現的高速公路網路和深度殘差學習進一步避免了梯度消失,達到了前所未有的100多層。

二、CNN的提出:卷積神經網路

全連線DNN中引數數量膨脹,不僅容易過擬合,還容易陷入區域性最優。對此,提出CNN,通過卷積核作為中介,取代全連線來連線相鄰的兩層。同一個卷積核在所有影象內共享,影象通過卷積操作後仍然保留原來的位置關係。CNN模型限制了引數的個數並且挖掘了局部結構的這個特點。

三、RNN的提出:迴圈神經網路

全連線DNN無法對時間序列上的變化進行建模,但樣本出現的時間順序對於自然語言處理、語音識別、手寫體識別等應用非常重要,所以提出了RNN。

RNN中,神經元的輸出可以再下一個時間戳直接作用到自身。但同時在時間軸上出現了梯度消失現象,引入長短時記憶單元LSTM,通過門的開關實現時間上的記憶功能,並防止梯度消失。

為了利用未來的資訊,引入雙向RNN、雙向LSTM,同時利用歷史和未來的資訊。

四、CNN的典型代表:LeNet5

目標問題:手寫體識別

輸入層:32*32

C1:卷積層,6個特徵圖,每個和輸入中的5*5的鄰域相連,特徵圖大小28*28,每個卷及神經元引數數目:5*5+1=26,25個unit引數和1個bias引數,連線數目(5*5+1)*6*(28*28)=122,304個,因為引數共享,所以總的引數為(5*5+1)*6=156個。

S2:下采樣層,6個14*14的特徵圖,每個圖的每個單元和C1中的2*2鄰域相連,不重疊。

C3:卷積層,16個卷積核,得到16個特徵圖,每個大小10*10,每個特徵圖的每個神經元和S2中的某三層中5*5鄰域相連

S4:下采樣層,由16個5*5大小的特徵圖構成,每個單元與C3中的2*2鄰域相連線

C5:卷積層,120個神經單元,和C5全連線

F6:全連線層,84個單元,和C5全相連

輸出層:歐式徑向基函式

五、CNN反向傳播的三種情況

卷積層後是一個pooling層:

mean-pooling:等值複製

max-pooling:在前向傳播中記錄最大值的位置

pooling層後是一個卷積層:

先對卷積層中對應的殘差圖進行擴充

擴充後的矩陣與對應的核進行卷積

矩陣求和

卷積層與前一層連線方式未定:

定義卷積核與前一層特徵圖之間的連線強度,可表示為另一個值的softmax函式,通過加入規則化項加強洗屬性

六、著名實現

Alex Net

ZF Net

GoogLeNet

VGGNet

ResNet

七、過擬合和正則化

兩種正則化方法:

penalizing weights:

l1-norm/l2-norm

weights/embedding

dropout:

刪除部分節點