【深度學習最精煉中文講義】前饋與卷積神經(jīng)網(wǎng)絡詳解,復旦邱錫鵬老師《神經(jīng)網(wǎng)絡與深度學習》報告分享02(附報告pdf下載)
【導讀】復旦大學副教授、博士生導師、開源自然語言處理工具FudanNLP的主要開發(fā)者邱錫鵬(http://nlp.fudan.edu.cn/xpqiu/)老師撰寫的《神經(jīng)網(wǎng)絡與深度學習》書冊,是國內(nèi)為數(shù)不多的深度學習中文基礎教程之一,每一章都是干貨,非常精煉。邱老師在今年中國中文信息學會《前沿技術(shù)講習班》做了題為《深度學習基礎》的精彩報告,報告非常精彩,深入淺出地介紹了神經(jīng)網(wǎng)絡與深度學習的一系列相關知識,基本上圍繞著邱老師的《神經(jīng)網(wǎng)絡與深度學習》一書進行講解。專知希望把如此精華知識資料分發(fā)給更多AI從業(yè)者,為此,專知特別聯(lián)系了邱老師,獲得他的授權(quán)同意分享。邱老師特意做了最新更新版本,非常感謝邱老師!專知內(nèi)容組圍繞邱老師的講義slides,進行了解讀,請大家查看,并多交流指正! 此外,請查看本文末尾,可下載最新神經(jīng)網(wǎng)絡與深度學習的slide。
既昨天給大家?guī)砹?/strong>復旦邱錫鵬老師《神經(jīng)網(wǎng)絡與深度學習》講義報告分享01,今天繼續(xù)為大家?guī)砘A模型這一部分。
邱老師的報告內(nèi)容分為三個部分:
【特此注明】本報告材料獲邱錫鵬老師授權(quán)發(fā)布,由于筆者能力有限,本篇所有備注皆為專知內(nèi)容組成員通過根據(jù)報告記錄和PPT內(nèi)容自行補全,不代表邱錫鵬老師本人的立場與觀點。
邱老師個人主頁: http://nlp.fudan.edu.cn/xpqiu/
課程Github主頁:https://nndl.github.io/
神經(jīng)網(wǎng)絡與深度學習
深度學習(Deep Learning, DL)是指如何從數(shù)據(jù)中學習一個“深度模型”的問題,是機器學習的一個子問題。通過構(gòu)建具有一定“深度”的模型,可以讓模型來自動學習好的特征表示(從底層特征,到中層特征,再到高層特征),從而最終提升預測或識別的準確性。
深度學習的主要目的是從數(shù)據(jù)中自動學習到有效的特征,即表示學習。
深度學習技術(shù)在一定程度上可以看作是一個表示學習技術(shù),通過多層的非線性轉(zhuǎn)換,把原始數(shù)據(jù)變成為更高層次、更抽象的表示。這些學習到的表示可以替代人工設計的特征,從避免“特征工程”。
傳統(tǒng)機器學習模型主要關注于分類或預測,這類機器學習模型稱為淺層模型,或淺層學習。淺層學習的一個重要特點是不涉及特征學習,其特征主要靠人工經(jīng)驗或特征轉(zhuǎn)換方法來抽取。
因此深度學習可以等價于 表示學習+淺層學習 這兩部分。
與“淺層”學習不同,深度學習需要解決的關鍵問題是貢獻度分配問題(CreditAssignment Problem),即一個系統(tǒng)中不同的組件(Components)對最終系統(tǒng)輸出結(jié)果的貢獻或影響。
要提高一種表示方法的表示能力,其關鍵是構(gòu)建具有一定深度的多層次特征表示。一個深層結(jié)構(gòu)的優(yōu)點是可以增加特征的重用性,從而指數(shù)級地增加表示能力。
此外,從底層特征開始,一般需要多步非線性轉(zhuǎn)換才能得到較為抽象的高層語義特征。
因此,表示學習可以看作是一種深度學習。所謂“深度”是指原始數(shù)據(jù)進行非線性特征轉(zhuǎn)換的次數(shù)。
下面開始介紹神經(jīng)網(wǎng)絡
這是最早是作為一種主要的連接主義模型。
連接主義的神經(jīng)網(wǎng)絡有著多種多樣的網(wǎng)絡結(jié)構(gòu)以及學習方法,雖然早期模型強調(diào)模型的生物可解釋性(biological plausibility),但后期更關注于對某種特定認知能力的模擬,比如物體識別、語言理解等。尤其在引入改進其學習能力之后,神經(jīng)網(wǎng)絡也越來越多地應用在各種模式識別任務上。隨著訓練數(shù)據(jù)的增多以及(并行)計算能力的增強,神經(jīng)網(wǎng)絡在很多模式識別任務上已經(jīng)取得了很大的突破,特別是語音、圖像等感知信號的處理上,表現(xiàn)出了卓越的學習能力。
生物學家在20世紀初就發(fā)現(xiàn)了生物神經(jīng)元的結(jié)構(gòu)。一個生物神經(jīng)元通常具有多個樹突和一條軸突。樹突用來接受信息,軸突用來發(fā)送信息。當神經(jīng)元所獲得的輸入信號的積累超過某個閾值時,它就處于興奮狀態(tài),產(chǎn)生電脈沖。軸突尾端有許多末梢可以給其他個神經(jīng)元的樹突產(chǎn)生連接(突觸),并將電脈沖信號傳遞給其它神經(jīng)元。
人工神經(jīng)元(artificialneuron),簡稱神經(jīng)元(neuron),是構(gòu)成神經(jīng)網(wǎng)絡的基本單元,其主要是模擬生物神經(jīng)元的結(jié)構(gòu)和特性,接受一組輸入信號并產(chǎn)出輸出。
1943年,心理學家McCulloch和數(shù)學家Pitts根據(jù)生物神經(jīng)元的結(jié)構(gòu),提出了一種非常簡單的神經(jīng)元模型。根據(jù)兩位學者命名為M-P神經(jīng)元,M-P神經(jīng)元模型中,激活函數(shù) f 為 0或 1的階躍函數(shù)。
人工神經(jīng)網(wǎng)絡主要由大量的神經(jīng)元以及他們之間的有向鏈接構(gòu)成。主要需要考慮下面三個方面:
常用的神經(jīng)網(wǎng)絡結(jié)構(gòu)包括前饋網(wǎng)絡,反饋網(wǎng)絡,記憶網(wǎng)絡。
在前饋神經(jīng)網(wǎng)絡中,各神經(jīng)元分別屬于不同的層。每一層的神經(jīng)元可以接收前一層神經(jīng)元的信號,并產(chǎn)生信號輸出到下一層。第一層叫輸入層,最后一層叫輸出層,其它中間層叫做隱藏層。整個網(wǎng)絡中無反饋,信號從輸入層向輸出層單向傳播,可用一個有向無環(huán)圖表示。
反饋神經(jīng)網(wǎng)絡神經(jīng)元不僅可以接收其他神經(jīng)元的信號,也可以接收自己的反饋信號,可用一個完備的無向圖表示。和前饋網(wǎng)絡相比,反饋網(wǎng)絡在不同時刻具有不同的狀態(tài),具有記憶功能,因此反饋網(wǎng)絡可以看作一個程序,也具有更強的計算能力。主要采用Hebb學習規(guī)則,一般情況下計算的收斂速度很快。
記憶網(wǎng)絡在前饋網(wǎng)絡或反饋網(wǎng)絡的基礎上,引入一組記憶單元,用來保存中間狀態(tài)。同時,根據(jù)一定的取址、讀寫機制,來增強網(wǎng)絡能力。和反饋網(wǎng)絡相比,記憶網(wǎng)絡具有更強的記憶功能。
神經(jīng)網(wǎng)絡是重要的機器學習技術(shù),是深度學習的基礎。其要解決的問題是貢獻度分配問題。
重要:深度學習天然不是神經(jīng)網(wǎng)絡,但神經(jīng)網(wǎng)絡天然是深度學習!
深層神經(jīng)網(wǎng)絡面臨一系列的問題,包括參數(shù)過多、非凸優(yōu)化問題、梯度消失問題、下層參數(shù)比較難調(diào)、參數(shù)難以解釋問題。
其訓練也需要更多的數(shù)據(jù)、更多的資源同時要有收斂性強的優(yōu)化算法。
下面聊聊神經(jīng)網(wǎng)絡的簡史。
第一階段:(模型的提出1943年~1969年)
1943 年,傳奇人物麥卡洛可(McCulloch)和皮茨(Pitts)就發(fā)表了模擬神經(jīng)網(wǎng)絡的原創(chuàng)文章。
1947 年圖靈就已經(jīng)闡述了如何對機器學習的結(jié)果進行檢查的方法,而且這一方法是很有遠見和可操作性的。1948年圖靈在論文中描述了一種“B型圖靈機”。
神經(jīng)網(wǎng)絡研究的另一個突破是在1958 年。康奈爾大學的實驗心理學家弗蘭克·羅森布拉特(Frank Rosenblatt)在一臺IBM-704 計算機上模擬實現(xiàn)了一種他發(fā)明的叫作“感知機”(Perceptron)的神經(jīng)網(wǎng)絡模型。
第二階段:(冰河期1969年~1983年)
1969年,Marvin Minsky出版《感知機》一書,并和Seymour Papert發(fā)現(xiàn)了神經(jīng)網(wǎng)絡中的兩個重大缺陷:第一是基本感知機無法處理異或問題;第二,當時的計算機計算能力不足以用來處理大型神經(jīng)網(wǎng)絡,此后一段時間神經(jīng)網(wǎng)絡的研究一度停滯不前。
1974年哈佛大學博士Paul Werbos在博士論文中提出了用誤差反向傳導來訓練人工神經(jīng)網(wǎng)絡有效地解決了異或回路問題,使訓練多層神經(jīng)網(wǎng)絡成為可能,但是并未受到重視。
第三階段:(復興時期1983年~1995年)
1984年GeoffreyHinton提出 Boltzman機模型。
1986 年,魯姆哈特(DavidRumelhart)和麥克萊蘭(McCelland)等幾名學者提出的BP 神經(jīng)網(wǎng)絡是神經(jīng)網(wǎng)絡發(fā)展史上的里程碑。
1986年, GeoffreyHinton等人將引入到多層感知器。
1989年, Yann LeCun在將反向傳播算法引入了卷積神經(jīng)網(wǎng)絡,并在手寫體數(shù)字識別上取得了很大的成功。
第四階段:(流行度降低1995年~2006年)
支持向量機和其它更簡單的算法(如線性分類器)的流行程度逐步超過了神經(jīng)網(wǎng)絡。
第五階段:(崛起時期2006后)
2006年,Geoffrey Hinton 發(fā)表一篇文章,經(jīng)過他改進的算法能夠?qū)ζ邔踊蚋鄬拥纳疃壬窠?jīng)網(wǎng)絡進行訓練,這讓計算機可以漸進地進行學習。隨著層次的增加,學習的精確性得到提升,同時該技術(shù)還極大地推動了非監(jiān)督學習的發(fā)展,讓機器具備“自學”的能力。
在AI 領域,
語音識別:
在語音識別領域,深度學習用深層模型替換聲學模型中的混合高斯模型(GaussianMixture Model, GMM),獲得了相對30%左右的錯誤率降低;
圖像識別:
在圖像識別領域,通過構(gòu)造深度卷積神經(jīng)網(wǎng)絡(CNN),將Top5錯誤率由26%大幅降低至15%,又通過加大加深網(wǎng)絡結(jié)構(gòu),進一步降低到11%;
自然語言處理:
在自然語言處理領域,深度學習基本獲得了與其他方法水平相當?shù)慕Y(jié)果,但可以免去繁瑣的特征提取步驟。可以說到目前為止,深度學習是最接近人類大腦的智能學習方法。
在三個DEEP 中,Deep Blue, Deep QA , Deep Learning.
IBM 的深藍Deep Blue 國際象棋系統(tǒng)在 1997 年擊敗了世界冠軍 Garry Kasparov(Hsu, 2002)。
Deep QA系統(tǒng)是自動問答系統(tǒng),要預先搜集各個領域的材料,其嘗試去理解問題,搞清楚問題到底在問什么;同時做一些初步的分析來決定選擇哪種方法來應對這個問題。
Deep Learning是機器學習中一種基于對數(shù)據(jù)進行表征學習的方法。觀測值(例如一幅圖像)可以使用多種方式來表示,如每個像素強度值的向量,或者更抽象地表示成一系列邊、特定形狀的區(qū)域等。而使用某些特定的表示方法更容易從實例中學習任務(例如,人臉識別或)。
在深度學習領域,上面幾個都是國際上比較知名的研究機構(gòu)和學者。
下面開始介紹前饋神經(jīng)網(wǎng)絡
首先介紹一下激活函數(shù),
為了增強網(wǎng)絡的表達能力以及學習能力,一般使用連續(xù)非線性激活函數(shù)(activationfunction)。因為連續(xù)非線性激活函數(shù)可導,所以可以用最優(yōu)化的方法來學習網(wǎng)絡參數(shù)。
左圖是Logistic 函數(shù), Logistic函數(shù)可以看成是一個“擠壓”函數(shù),把一個實數(shù)域的輸入“擠壓”到 (0, 1)。當輸入值在 0附近時, sigmoid型函數(shù)近似為線性函數(shù);當輸入值靠近兩端時,對輸入進行抑制。輸入越小,越接近于 0;輸入越大,越接近于 1。
右圖是tanh函數(shù)
左邊是 ReLU 和 Softplus 函數(shù), 右邊是PReLU函數(shù)。
采用 ReLU的神經(jīng)網(wǎng)絡只需要進行加、乘和比較的操作,計算上也更加高效。此外, rectifier 函數(shù)被認為有生物上的解釋性。
這是常見激活函數(shù)和其相關導數(shù)。
上圖是·一個網(wǎng)絡結(jié)構(gòu)圖,在前饋神經(jīng)網(wǎng)絡中,各神經(jīng)元分別屬于不同的層。每一層的神經(jīng)元可以接收前一層神經(jīng)元的信號,并產(chǎn)生信號輸出到下一層。第一層叫輸入層,最后一層叫輸出層,其它中間層叫做隱藏層。整個網(wǎng)絡中無反饋,信號從輸入層向輸出層單向傳播,可用一個有向無環(huán)圖表示。
這是一些符號標記。
前饋神經(jīng)網(wǎng)絡通過下面的公式進行傳播,逐層進行傳播。
前饋網(wǎng)絡可以用一個有向無環(huán)路圖表示。前饋網(wǎng)絡可以看作一個函數(shù),通過簡單非線性函數(shù)的多次復合,實現(xiàn)輸入空間到輸出空間的復雜映射。這種網(wǎng)絡結(jié)構(gòu)簡單,易于實現(xiàn)。
神經(jīng)網(wǎng)絡在某種程度上可以作為一個“萬能”(universal)函數(shù)來使用,因此神經(jīng)網(wǎng)絡的使用可以十分靈活,可以用來進行復雜的特征轉(zhuǎn)換,或逼近一個復雜的條件分布。
在機器學習中,輸入樣本的特征對分類器的影響很大。以監(jiān)督學習為例,好的特征可以極大提高分類器的性能。
對于二分類問題,logistic回歸分類器可以看成神經(jīng)網(wǎng)絡的最后一層。也就是說,網(wǎng)絡的最后一層只用一個神經(jīng)元,并且其激活函數(shù)為logistic函數(shù)。網(wǎng)絡的輸出可以直接可以作為兩個類別的后驗概率。
對于多分類問題,使用 softmax回歸分類器,相當于網(wǎng)絡最后一層設置 C 個神經(jīng)元,其輸出經(jīng)過 softmax 函數(shù)進行歸一化后可以作為每個類的后驗概率。
在多分類時,使用交叉熵損失函數(shù),來進行模型的優(yōu)化。
用梯度下降法對交叉熵損失函數(shù)進行參數(shù)學習,計算損失函數(shù)對參數(shù)的偏導數(shù),通過鏈式法則逐一對每個參數(shù)進行求偏導效率比較低。
在神經(jīng)網(wǎng)絡的訓練中經(jīng)常使用反向傳播算法來計算高效地梯度。
反向傳播算法的是訓練神經(jīng)網(wǎng)絡,如果神經(jīng)網(wǎng)絡只有一個一層,通過梯度下降可以直接調(diào)整這一層的weight,但如果有多層,需要調(diào)整各個層次的weight,所以就需要鏈式求導法則求出各個層的梯度。
可以通過鏈式反則來逐層向前推進,
用誤差項來表示第l層的神經(jīng)元對最終誤差的影響,也反映了最終的輸出對第l層的神經(jīng)元對最終誤差的敏感程度。
第 l 層的誤差項可以通過第 l + 1層的誤差項計算得到,這就是誤差的反向傳播。反向傳播算法的含義是:第 l層的一個神經(jīng)元的誤差項(或敏感性)是所有與該神經(jīng)元相連的第 l+ 1層的神經(jīng)元的誤差項的權(quán)重和。然后,再乘上該神經(jīng)元激活函數(shù)的梯度。
在計算出每一層的誤差項之后,我們就可以得到每一層參數(shù)的梯度。因此,基于誤差反向傳播算法(backpropagation, BP)的前饋神經(jīng)網(wǎng)絡訓練過程可以分為以下三步:
誤差從輸出層反向傳播時,在每一層都要乘以該層的激活函數(shù)的導數(shù)。
我們可以看到,sigmoid 型函數(shù)導數(shù)的值域都小于 1。并且由于 sigmoid 型函數(shù)的飽和性,飽和區(qū)的導數(shù)更是接近于 0。這樣,誤差經(jīng)過每一層傳遞都會不斷衰減。當網(wǎng)絡層數(shù)很深時,梯度就會不停的衰減,甚至消失,使得整個網(wǎng)絡很難訓練。這就是所謂的梯度消失問題(VanishingGradient Problem),也叫梯度彌散問題。
在深層神經(jīng)網(wǎng)絡中,減輕梯度消失問題的方法有很多種。一種有效的方式是使用導數(shù)比較大的激活函數(shù),比如ReLU等。這樣誤差可以很好地傳播,訓練速度得到了很大的提高。
神經(jīng)網(wǎng)絡是基于感知機的擴展,而深度神經(jīng)網(wǎng)絡(DNN)可以理解為有很多隱藏層的神經(jīng)網(wǎng)絡。
這個很多其實也沒有什么度量標準, 多層神經(jīng)網(wǎng)絡和深度神經(jīng)網(wǎng)絡DNN其實也是指的一個東西,當然,DNN有時也叫做多層感知機(Multi-Layer perceptron,MLP)。
在深度神經(jīng)網(wǎng)絡中相鄰兩層之間的任一神經(jīng)元相連,DNN看起來很復雜,但是局部來講還是和感知機一樣的,包含一個線性關系和一個激活函數(shù)。
下面開始介紹卷積神經(jīng)網(wǎng)絡。
卷積神經(jīng)網(wǎng)絡與傳統(tǒng)的全連接網(wǎng)絡最大的區(qū)別是,它的結(jié)構(gòu)基于一個假設,即輸入數(shù)據(jù)是圖像,基于該假設,我們就向結(jié)構(gòu)中添加了一些特有的性質(zhì)。這些特有屬性使得前向傳播函數(shù)實現(xiàn)起來更高效,并且大幅度降低了網(wǎng)絡中參數(shù)的數(shù)量。
這三種特性一個非常重要的共同點就是可以大幅減少權(quán)重參數(shù)。減少參數(shù)的結(jié)果是我們可以設計更深表達能力更強的網(wǎng)絡。
卷積層的參數(shù)是有一些可學習的濾波器集合構(gòu)成的。每個濾波器在空間上(寬度和高度)都比較小,但是深度和輸入數(shù)據(jù)一致。
在每個卷積層上,我們會有一整個集合的濾波器,每個都會生成一個不同的二維激活圖。將這些激活映射在深度方向上層疊起來就生成了輸出數(shù)據(jù)。
例子中卷積核為[-1, 0,1],輸出向量的第一個值-1來自卷積核與與對應輸出層的乘積 -1 = -1*1 + 0*1 + 2*2
零填充(zero padding)是在輸入向量兩端進行補零。圖中給出了輸入的兩端各補一個零后的卷積示例。假設卷積層的輸入神經(jīng)元個數(shù)為n,卷積大小為m,步長(stride)為s,輸入神經(jīng)元兩端各填補 p個零(zero padding),那么該卷積層的神經(jīng)元數(shù)量為 (n ? m + 2p)/s + 1。
零填充有一個良好性質(zhì),即可以控制輸出數(shù)據(jù)體的空間尺寸(最常用的是用來保持輸入數(shù)據(jù)體在空間上的尺寸,這樣輸入和輸出的寬高都相等)。
卷積層的作用是提取一個局部區(qū)域的特征,不同的卷積核相當于不同的特征提取器。上一節(jié)中描述的卷積層的神經(jīng)元和全連接網(wǎng)絡一樣都是一維結(jié)構(gòu)。既然卷積網(wǎng)絡主要應用在圖像處理上,而圖像為兩維結(jié)構(gòu),因此為了更充分地利用圖像的局部信息,通常將神經(jīng)元組織為三維結(jié)構(gòu)的神經(jīng)層,其大小為寬度 M×高度N×深度D,有D 個M × N 大小的特征映射構(gòu)成。圖中現(xiàn)實的尺寸為5x5x1 也就是深度為1,長寬為5
可以看出來卷積操作可以看成對原始圖片的某種映射操作,比如提取花的輪廓特征等。
從圖中可以非常直觀的看出來卷積操作可以極大地減少參數(shù)。
特征映射(feature map)為一幅圖像(或其它特征映射)在經(jīng)過卷積提取到的特征,每個特征映射可以作為一類抽取的圖像特征。為了卷積網(wǎng)絡的表示能力,可以在每一層使用多個不同的特征映射,以更好地表示圖像的特征。
在輸入層,特征映射就是圖像本身。如果是灰度圖像,就是有一個特征映射,深度D = 1;如果是彩色圖像,分別有RGB三個顏色通道的特征映射,輸入層深度D= 3。
卷積層中從輸入特征映射組X到輸出特征映射Yp 的計算示例。
這是卷積層的運行演示。因為3D數(shù)據(jù)難以可視化,所以所有的數(shù)據(jù)(輸入數(shù)據(jù)體是藍色,權(quán)重數(shù)據(jù)體是紅色,輸出數(shù)據(jù)體是綠色)都采取將深度切片按照列的方式排列展現(xiàn)。輸入數(shù)據(jù)體的尺寸是5x5x3,卷積層參數(shù)K=2,F=3,S=2,P=1。就是說,有2個濾波器,濾波器的尺寸是3*3,它們的步長是2.因此,輸出數(shù)據(jù)體的空間尺寸是(5-3+2)/2+1=3。注意輸入數(shù)據(jù)體使用了零填充P=1,所以輸入數(shù)據(jù)體外邊緣一圈都是0。下面的例子在綠色的輸出激活數(shù)據(jù)上循環(huán)演示,展示了其中每個元素都是先通過藍色的輸入數(shù)據(jù)和紅色的濾波器逐元素相乘,然后求其總和,最后加上偏差得來。
特征映射(feature map)為一幅圖像(或其它特征映射)在經(jīng)過卷積提取到的特征,每個特征映射可以作為一類抽取的圖像特征。為了卷積網(wǎng)絡的表示能力,可以在每一層使用多個不同的特征映射,以更好地表示圖像的特征。
常用的匯聚函數(shù)有兩種:1. 最大匯聚(maximum pooling):一般是取一個區(qū)域內(nèi)所有神經(jīng)元的最大值。平均匯聚(mean pooling):一般是取區(qū)域內(nèi)所有神經(jīng)元的平均值。
典型的的卷積網(wǎng)絡結(jié)構(gòu)通常由多個卷積核匯聚結(jié)構(gòu)組成。
卷積網(wǎng)絡的層次結(jié)構(gòu)也是不斷地提取原始圖像特征的過程,從底層四的邊緣特征逐漸到結(jié)構(gòu)特征。
這是識別車輛的一個層級網(wǎng)絡結(jié)構(gòu)。
下面開始介紹典型的網(wǎng)絡結(jié)構(gòu)。
不計輸入層,LeNet-5共有7層,每一層的結(jié)構(gòu)為:
1. 輸入層:輸入圖像大小為32 × 32 = 1024。
2. C1層是卷積層,使用6個5 × 5的濾波器,得到6組大小為28 × 28 = 784 的特征映射。因此,C1層的神經(jīng)元數(shù)量為6× 784 = 4, 704,可訓練參數(shù)數(shù)量為6× 25 + 6 = 156,連接數(shù)為156× 784 = 122, 304(包括偏置在內(nèi),下同)。
3. S2層為匯聚層,采樣窗口為2×2,使用平均匯聚,并使用一個非線性函數(shù)。神經(jīng)元個數(shù)為 6 × 14 × 14 = 1, 176,可訓練參數(shù)數(shù)量為 6× (1 + 1) = 12,連接數(shù)為6× 196 × (4 + 1) = 5, 880。
4. C3層為卷積層。LeNet-5中用一個連接表來定義輸入和輸出特征映射之間的依賴關系,如圖5.11所示,共使用60個5 × 5的濾波器,得到16組大小第105頁。為10× 10的特征映射。神經(jīng)元數(shù)量為16 × 100 = 1, 600,可訓練參數(shù)數(shù)量為(60× 25 + 16 = 1, 516,連接數(shù)為100× 1, 516× = 151, 600。
5. S4層是一個匯聚層,采樣窗口為2× 2,得到16個5 × 5大小的特征映射,可訓練參數(shù)數(shù)量為16 × 2 = 32,連接數(shù)為16 × (4 + 1) = 2000。
6. C5層是一個卷積層,使用120 × 16 = 1, 920個5 × 5的濾波器,得到120組大小為1 × 1的特征映射。C5層的神經(jīng)元數(shù)量為120,可訓練參數(shù)數(shù)量為1,920 × 25 + 120 = 48, 120,連接數(shù)為120× (16 × 25 + 1) = 48, 120。
7. F6層是一個全連接層,有84個神經(jīng)元,可訓練參數(shù)數(shù)量為84×(120+1) = 10, 164。連接數(shù)和可訓練參數(shù)個數(shù)相同,為10,164。
8. 輸出層:輸出層由10個歐氏徑向基函數(shù)(Radial Basis Function,RBF)函數(shù)組成。這里不再詳述。
在ImageNet數(shù)據(jù)集上的圖像分類比賽結(jié)果??梢钥吹?2之后每一年的最差結(jié)果都能達到上年的最好結(jié)果。
AlexNet[Krizhevsky et al., 2012]是第一個現(xiàn)代深度卷積網(wǎng)絡模型,其首次使用了很多現(xiàn)代深度卷積網(wǎng)絡的一些技術(shù)方法,比如使用GPU 進行并行訓練,采用了ReLU作為非線性激活函數(shù),使用Dropout防止過擬合,使用數(shù)據(jù)增強來提高模型準確率等。AlexNet贏得了2012年ImageNet圖像分類競賽的冠軍。 AlexNet的結(jié)構(gòu)包括5個卷積層、3個全連接層和1個softmax 層。因為網(wǎng)絡規(guī)模超出了當時的單個GPU的內(nèi)存限制,AlexNet將網(wǎng)絡拆為兩半,分別放在兩個GPU上,GPU間只在某些層(比如第3層)進行通訊。
在卷積層中如何選擇合適的卷積核大小是一個十分關鍵的問題。Inception 模塊采取的方法是同時使用1× 1、3 × 3、5 × 5的卷積核,并將得到的特征映射拼接起來作為輸入特征映射。圖中給出了v1版本的inception模塊,采用了4 組平行的特征抽取方式,分別為1 × 1、3 × 3、5 × 5的卷積核3× 3的最大匯聚。同時,為了提高計算效率,減少參數(shù)數(shù)量,inception模塊在進行3 × 3、5 × 5的卷積前,先進行一次1 × 1的卷積來減少輸入特征映射的深度。如果輸入特征映射之間存在冗余信息,1× 1的卷積相當于先進行一次特征抽取。
Inception網(wǎng)絡最早的v1版本是非常著名的GoogLeNet[Szegedy et al., 2015] (如圖5.14),并贏得了2014年ImageNet圖像分類競賽的冠軍。
Inception網(wǎng)絡有多個改進版本。其中比較有代表性的有Inceptionv3版本 [Szegedy et al., 2016],用多層的小卷積核來替換大的卷積核,以減少計算量和參數(shù)量。具體包括(1)使用兩層3× 3的卷積來替換v1中的5 × 5的卷;(2)使用連續(xù)的n × 1和1 × n來替換n × n的卷積。Inception v3版本同時也引入了標簽平滑以及批量歸一化等優(yōu)化方法進行訓練。
殘差網(wǎng)絡(residual network,ResNet)是通過給非線性的卷積層增加直連邊的方式來提高信息的傳播效率。殘差網(wǎng)絡的思想并不局限與卷積神經(jīng)網(wǎng)絡。
殘差單元由多個級聯(lián)的(等長)卷積層和一個跨層的直連邊組成,再經(jīng)過ReLU激活后得到輸出。殘差網(wǎng)絡就是將很多個殘差單元串聯(lián)起來構(gòu)成的一個非常深的網(wǎng)絡。
AlphaGo的前兩個網(wǎng)絡都是通過從KGS圍棋服務器上獲得的3000萬個人類高手的對決棋盤狀態(tài)(Position)進行有監(jiān)督學習得到的。輸入是棋盤狀態(tài),輸出是人類高手的下一步走子位置。監(jiān)督學習的策略網(wǎng)絡使用了13層的深度卷積神經(jīng)網(wǎng)絡。
Krizhevsky等學習到的濾波器例子。這96個濾波器的尺寸都是[11x11x3],在一個深度切片中,每個濾波器都被55x55個神經(jīng)元共享。注意參數(shù)共享的假設是有道理的:如果在圖像某些地方探測到一個水平的邊界是很重要的,那么在其他一些地方也會同樣是有用的,這是因為圖像結(jié)構(gòu)具有平移不變性。所以在卷積層的輸出數(shù)據(jù)體的55x55個不同位置中,就沒有必要重新學習去探測一個水平邊界了。
N-Gram是一種基于統(tǒng)計語言模型的算法。它的基本思想是將文本里面的內(nèi)容按照字節(jié)進行大小為N的滑動窗口操作,形成了長度是N的字節(jié)片段序列。
我們把文本序列中的每個詞用一個向量表示,則文本序列也可以表示成圖像那樣的二維形式。卷積核的跨度一般都是詞向量的維度。
在把文本表示成為二維結(jié)構(gòu)后可以用同樣的卷積核匯聚層交替結(jié)構(gòu)來形成卷積網(wǎng)絡結(jié)構(gòu)實現(xiàn)對文本的建模。
輸入層是一個表示句子的矩陣,每一行是word2vec詞向量。接著是由若干個濾波器組成的卷積層,然后是最大池化層,最后是softmax分類器。該論文也嘗試了兩種不同形式的通道,分別是靜態(tài)和動態(tài)詞向量,其中一個通道在訓練時動態(tài)調(diào)整而另一個不變。
跟的上圖類似的結(jié)構(gòu),但更復雜一些,用于學習整個文本序列的向量表示。
第二部分的深度學習基礎模型部分——前饋神經(jīng)網(wǎng)絡和卷積神經(jīng)網(wǎng)絡結(jié)束了,敬請期待下一期的深度學習部分-基礎模型剩余部分。
特別提示-邱老師深度學習slide-part2下載:
請關注專知公眾號
轉(zhuǎn)載請注明來自浙江中液機械設備有限公司 ,本文標題:《【深度學習最精煉中文講義】前饋與卷積神經(jīng)網(wǎng)絡詳解,復旦邱錫鵬老師《神經(jīng)網(wǎng)絡與深度學習》報告分享02(附報告pdf下載)》
還沒有評論,來說兩句吧...