參考:
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:
刪除部分節點