標籤:
程程
連結:https://zhuanlan.zhihu.com/p/21432547
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
深度學習大講堂致力於推送人工智慧,深度學習方面的最新技術,產品以及活動。請關注我們的知乎專欄!
一.DL基礎理論
本頁PPT給出了本節內容概要,我們從MCP神經元模型開始,首先回顧全串連層、卷積層等基礎結構單元,Sigmoid等啟用函數,Softmax等損失函數,以及感知機、MLP等傳統網路結構。接下來,將介紹網路訓練方法,包括BP、Mini-batch SGD和LR Policy。最後我們會介紹深度網路訓練中的兩個理論問題:梯度消失和梯度溢出。
MCP神經元模型提出於1943年,可以看作是人工神經網路研究的起點。MCP是作者名字的縮寫。MCP模型中包括多個輸入參數和權重、內積運算和二值啟用函數等人工神經網路的基礎要素。MCP模型的提出甚至早於1946年第一台電腦的發明。
在MCP神經元模型的基礎上,我們可以得到全串連結構。輸入層神經元和輸入層神經兩兩相連,故名全串連。全串連層實際上是內積運算,我們也給出了全串連層前向和後向計算的公式。
下面我們介紹卷積層,卷積是深度網路的重要結構單元之一。我們給出了2D卷積的連續和離散形式,注意卷積核需要做中心翻轉。在Caffe實現中,卷積核假設已經翻轉,所以卷積運算可以看作當前視窗和卷積核的一個內積(不考慮bias項),我們給出了一個卷積運算的示意。
與全串連層相比,卷積層的輸出神經元只和部分輸入層神經元串連,同時相同響應圖內,不同空間位置共用卷積核參數,因此卷積層大大降低了要學習的參數數量。
Caffe當中,為了避免卷積運算中頻繁的記憶體訪問和過深的循序嵌套,對卷積運算進行了以下加速:通過Im2Col操作一次取出所有的patch並組成矩陣,與kernel矩陣做乘法運算直接得到卷積結果。
有卷積就有反卷積,反卷積是卷積的逆運算,實現了訊號的複原。在全卷積網路中,反卷積層實現了映像的上採樣,從而得到如輸入映像大小相同的輸出。
Pooling層一般配合卷積層使用,可以獲得特徵的不變性。常見的Pooling操作有max pooling、mean pooling和隨機pooling。其中max pooling取最大值,mean pooling取均值,隨機pooling按響應值的大小依機率選擇。
啟用函數一般用於卷積層和全串連層之後,啟用函數是深度網路非線性主要來源。常見的啟用函數Sigmoid, 雙曲正切,ReLU(生物啟發,克服了梯度消失問題), PReLU(alpha可學習), ELU和maxout。 其中PReLU和ELU都是ReLU的改進。
Dropout由Hinton組提出於2012年,Dropout隨機將比例為p的神經元輸出設定為0,是一種避免深度網路過擬合的隨機正則化策略,同時Dropout也可以看作是一種隱式的模型整合。
Batch Normalization提出於2015年,通過逐層尺度歸一(零均值方差歸一,scale和shift),BN避免了梯度消失和梯度溢出。BN可以加速收斂5x~20x, 作為一種正則化技術也提高了泛化能力。
下面我們介紹損失函數:用於單標籤分類問題的Softmax損失函數,用於實值迴歸問題的歐式損失函數,用於多標籤分類的Sigmoid交叉熵損失和用於深度測度學習的Contrastive損失。
下面我們介紹傳統網路結構。1957年,Rosenblatt提出了感知機模型。最早感知機模型用於解決二分類問題,在MCP模型的基礎上增加了一個損失函數。隨後,感知機也被擴充到多分類問題和迴歸問題,成為解決機器學習問題的一個通用學習器。
1969年,Minsky在一本名為感知機的專著中指出,感知機不能解決XOR問題,從而宣告了感知機甚至人工神經網路研究的死刑,造成了NN長達十幾年的寒冬,這也是NN研究的第一次寒冬。遺憾的是,Rosenblatt 1971年死於意外,沒有等到春天的到來(是Rosenblatt的墓碑)。
1986年之後,隨著誤差反向傳導演算法的再次發明並在Nature上發表,多層感知機和卷積神經網路成為NN研究新亮點。然而由於多層網路訓練困難:梯度消失問題,訓練資料和計算資源不足,NN研究在20世紀末再次進入寒冬,這段時間更為流行的方法包括決策樹,SVM等,八卦一下,NN研究曾長期是一門“顯學”,SVM引用次數最多的那篇文章的題目叫Support Vector Network。
2006年,NN的研究迎來轉機,Hinton、Bengio等人經過跨世紀的努力,提出了通過分層無監督預訓練的策略來解決多層網路收斂困難的問題,深度學習也因此得名。
下面我們介紹最佳化方法。首先誤差反向傳導,實際上在1974年,Webos在其博士論文中就提出來BP的思想,今天我們廣為使用的BP演算法則由Hinton等人“重新”發明於1986年。
有了BP演算法傳遞的梯度,基於梯度下降方法,就可以對網路參數進行更新。梯度下降方法的缺點是速度慢且資料量大的時候記憶體不足,隨機梯度下降方法的缺點是方差大導致損失函數震蕩嚴重。兩者折中的Mini-batch SGD,我們也給出了基於Mini-batch SGD的NN訓練流程。
進一步的,在Mini-batch SGD中,有兩個關鍵技術細節:weight decay和momentum. Weight decay是一種避免過擬合的正則化手段,而Momentum通過對曆史梯度的moving average來避免陷入局部最優。
Learning rate的控制是網路收斂的關鍵,Caffe中支援四種策略,其中使用較多的是step和polynomial。
下面我介紹網路訓練中的兩個理論問題。首先是梯度消失,梯度消失的主要原因是sigmoid啟用函數“糟糕”的解析性質,一階梯度的取值範圍是[0,1/4],梯度向下傳導一次最少會減小1/4,隨著深度的增加,梯度傳導的過程中不斷減小從而引發所謂的“梯度消失”問題。
為瞭解決梯度消失問題,學術界提出了多種策略,例如,LSTM中的選擇性記憶和遺忘機制,Hinton等提出的無監督pre-train方法,新的啟用函數ReLU, 輔助損失函數和Batch Normalization.
除了梯度消失之外,梯度溢出也是深度網路訓練中的一個常見問題,例如Softmax損失變成86.33並且保持不變,這是因為梯度溢出導致網路參數NAN。梯度溢出的根本原因是網路參數初始化的尺度不平衡問題。PPT中展示了一個例子,W2的初始值是0.01,梯度卻達到10^4。
為瞭解決這個問題,Bengio等人提出了Xavier初始化策略,其基本思想是保持網路的尺度不變。
二. CNN結構演化
下面我們介紹CNN的結構演化。
曆史奔流向前,往事並不如煙。所示是我總結的CNN結構演化的曆史,起點是神經認知機模型,已經出現了卷積結構,但是第一個CNN模型誕生於1989年,1998年誕生了LeNet。隨著ReLU和dropout的提出,以及GPU和大資料帶來的曆史機遇,CNN在12年迎來了曆史突破。12年之後,CNN的演化路徑可以總結為四條:1)更深的網路,2)增強卷積模的功能以及上訴兩種思路的融合,3)從分類到檢測,4)增加新的功能模組。
首先,我們介紹CNN的早期探索,1962年,Hubel和Wiesel提出了視覺皮層的功能模型,從簡單細胞到複雜細胞再到超複雜細胞。受此啟發,1980年,神經認知及提出,簡單細胞被實現為卷積,複雜細胞被實現為pooling。
神經認知機採用自組織的方式進行無監督的卷積核訓練,因此並不是CNN(通過BP端到端訓練)。
第一個CNN模型誕生於1989年,發明人LeCun。需要指出的是,從誕生的第一天起,CNN內建deep屬性。
LeCun同時研究了四個問題,這也是文章中留下的四枚彩蛋,其中問題3)和Xavier初始化之間有神秘的聯絡。
1998年,LeCun提出LeNet,並成功應用於美國手寫數字識別。但很快,CNN的鋒芒被SVM和手工設計的局部特徵蓋過。
曆史的轉折在2012年到來,AlexNet, 在當年的ImageNet映像分類競賽中,top-5錯誤率比上一年的冠軍下降了十個百分點。AlexNet的成功既得益研究者的自我奮鬥:Relu和Dropout的提出, 也是大歷史進程的結果:大資料訓練和GPU並行計算。
2012年之後,CNN朝著不同方向演化。
第二條演化路徑,增強卷積模組的功能。
13年底,顏水成老師組提出了NIN結構,並於2014年取得了ILSVRC物體檢測競賽的冠軍。
在NIN的基礎上,Google於2014年提出了GoogLeNet(Inception V1),並隨後改進出Inception V3和V4。
Residual Net可以看作是前兩條演化路徑的整合。何凱明等人發現,單純增加深度會導致網路退化,例如CIFAR-10資料集,網路從20層到56層效能反而會下降。為此ResNet中引入了一個shortcut結構,將輸入跳層傳遞與卷積的結果相加。ReNet可以訓練深達152層的網路,是15年ILSVRC不依賴外部資料的物體檢測與物體識別競賽的雙料冠軍。
進一步的,Google將Inception結構與Residual Net結合,提出了Inception-Residual Net結構,實驗表明,雖然採用Inception V4結構能夠得到與ResNet可比的效能,但是殘差結構能夠加速收斂1倍以上。
2016年初,何凱明等提出了恒等映射深度殘差網路,通過去掉Addition操作後的ReLU操作,殘差項跨層可加,損失層的梯度可以直接傳到任意一層,使得1001層網路的訓練成為可能,並在CIFAR-10上取得了4.92%的錯誤率,重新整理了state-of-the-art。
第三條演化路徑:從物體識別到物體檢測。
R-CNN的缺點是速度慢,Fast R-CNN是R-CNN和SPP Pooling的融合,這樣每張映像只需要通過卷積網路一次同時支援端到端訓練而不需要儲存中間結果。
Faster R-CNN支援多類物體的同時檢測而只需要一個網路,目前基於Faster R-CNN的行人與車輛檢測技術是汽車進階輔助駕駛系統的關鍵技術之一。
第四條演化路徑:增加新的功能模組。
本節介紹三個工作:反卷積層、ST-Net和CNN與RNN/LSTM的混合架構。
【Valse首發】CNN的近期進展與實用技巧(上)