你所不了解的深度神經網路

點擊標題下「非同步圖書」可快速關注

深度神經網路的定義

這個領域正面臨著快速的變化,每天我們都能聽到DNN被用於解決新的問題,比如計算機視覺、自動駕駛、語音識別和文本理解等。

出於實踐的角度,我們這兒所說的深度學習和深度神經網路是指深度超過幾個相似層的神經網路結構,一般能夠到達幾十層,或者是由一些複雜的模塊組合而成。

深度網路結構的歷史變遷

我們會回顧深度學習的每一個里程碑,從LeNet 5開始。

1.2.1 LeNet 5

神經網路領域在20世紀八九十年代還很寂靜。儘管有很多努力,但是那時的網路結構還比較簡單,而且往往需要巨大的(通常是達不到的)計算資源。

大概在1998年,在貝爾實驗室,Yan LeCun在研究手寫數字分類的時候,提出了卷積神經網路。卷積神經網路是當前的深度神經網路的基石之一。

在那個年代,SVM和其他的機器學習工具才是處理這類問題的主流,但是CNN的那篇奠基之作,表明神經網路也能夠達到甚至是超過當時最好的處理結果。

1.2.2 Alexnet

經過多年的中斷(儘管在此期間,LeCun繼續將他的神經網路模型延伸到其他任務,如人臉和對象檢測),神經網路終於迎來了復甦。結構化數據和計算機處理能力的爆炸性增長使得深度學習成為可能。過去要訓練數月的網路,現在能夠在比較短的時間內訓練完成。

來自多家公司和大學的多個團隊開始用深度神經網路處理各種問題,包括圖像識別。其中,一個著名的比賽叫作ImageNet圖像分類,Alexnet就是為了這個測試所開發,如圖1所示。

圖1 Alexnet結構

Alexnet可以被看作LeNet 5的擴展,也就是說第一層用的是卷積神經網路,然後連接上一個不常用的最大池化層,然後是幾個全鏈接層,在最後一層輸出概率。

1.2.3 VGG模型

圖像分類挑戰的另一個主要的競爭者是牛津大學的VGG團隊。

VGG(Visual Geometry Group,可視化幾何團隊)網路結構的主要特點,就是減小了卷積濾波的大小,只用一個3×3的濾波器,並將它們不斷組合,如圖2所示。

這種小型化的濾波器是對LeNet以及其繼任者Alexnet的一個突破,這兩個的網路濾波器都是設為11×11。小型化濾波器的操作引領了一個新的潮流,並且一直延續到現在。

但是儘管濾波器變小了,但是總體參數依然非常大(通常有幾百萬個參數),所以還需要改進。

圖2 VGG的參數數目

1.2.4 第一代Inception模型

在Alexnet和VGG統治了深度學習一兩年之後,谷歌公司發布了他們的深度學習模型——Inception。到現在為止,Inception已經發布了好幾個版本。

第一個版本的Inception是GoogLeNet,如圖3所示。從圖上看,它的結構模型很深,但是本質上它是通過堆疊9個基本上沒有怎麼改變的Inception模塊。

儘管如此複雜,但是相比於Alexnet,Inception減少了參數的數量,增加了準確率。

Inception的可解釋性和可擴展性相對於Alexnet也有所增加。因為事實上,該模型結構就是堆疊相似的結構。

圖3 第一代Inception模型

1.2.5 第二代Inception模型

2015年的時候,深度學習還有一個問題,就是隨著一次又一次的迭代,深度神經網路穩定性不夠好。

為了理解這個穩定性的問題,首先,我們回憶一下前面例子中使用過的標準化,包含中心化,以及將標準差歸一化。主要是為了反向傳播(back propagation)的梯度。

在真正大型數據集的訓練過程中發生的是,在經過多次訓練的例子之後,不同的振蕩頻率開始放大平均參數值,如共振現象,我們稱之為協方差漂移。

這就是使用批量標準化的主要原因。

為了簡化過程描述,批量標準化不僅僅應用於輸入層,它應用於每一層,在它們開始影響或者漂移數值之前。

這就是Inception V2的主要特點,谷歌公司在2015年1月份發布,提升了GoogLeNet。

1.2.6 第三代Inception模型

時間來到2015年12月,Inception的結構又經歷了一輪新的迭代。發布之間的月份差異使我們了解到新迭代的發展速度。

新的架構有如下調整:

降低了卷積濾波器的大小,最大是3×3;

增加了網路的深度;

使用寬度增加技術加了每層提高特徵組合。

圖4說明了如何解釋改進的Inception模塊。

圖4 改進的Inception模塊

圖5是整個V3模型的結構圖,由許多新的Inception模塊的實例拼接而成。

圖5 Inception V3模型

1.2.7 殘差網路(ResNet)

殘差神經網路結構出現在2015年12月(基本上跟Inception V3的發布時間差不多)。ResNet帶來了一個簡單但是很新穎的想法,不僅僅使用卷積層的輸出,還要結合上原始輸入層的輸出。

在圖6中,我們可以看到一個簡單的ResNet的模塊:3個卷積層的堆積和一個relu操作。

圖6 殘差網路一般結構

卷積的部分包括了一個從256降到64的操作,使用一個3×3的濾波層來控制特徵數目,增補一個1×1的層。在最近的發展中,ResNet也被用在少於30層的網路結構中。

1.2.8 其他的深度神經網路結構

有許多最先發展的深度神經網路的結構;實際上,這個領域每天的變化都是如此之快,幾乎每天多少都有幾個優秀的結構冒出來。下面是幾個最有前途的網路結構:

SqueezeNet:該網路為了簡化Alexnet的參數數量,宣稱可以達到50×參數數量的降低。

高效神經網路(Efficient Neural NetworkEnet):用於減少浮點操作,實現實時的神經網路。

Fractalnet:用於實現非常深的深度網路。該網路不使用殘差結構,而是實現一種分形(fractal)結構。

本文摘自《TensorFlow機器學習項目實戰》

你所不了解的深度神經網路

延伸推薦

《Go Web編程》這一本不可錯過!

2017優秀圖書和作譯者評選-進行中贏取kindle等技術圖書禮!

AI經典書單| 入門人工智慧該讀哪些書?

聊聊Python

2017內核大會看點雲集

你所不了解的Kafka

Kotlin最佳項目實戰——歐瑞天氣App

點擊關鍵詞閱讀更多新書:

Python|機器學習|Kotlin|Java|移動開發|機器人|有獎活動|Web前端|書單

點擊關鍵詞閱讀更多新書:

點擊閱讀原文購買《TensorFlow機器學習項目實戰》

《TensorFlow機器學習項目實戰》([阿根廷]Rodolfo,Bonnin)【摘要 書評 試讀】- 京東圖書

你所不了解的深度神經網路

推薦閱讀:

從零開始:教你如何訓練神經網路
「深度學習」和「多層神經網路」的區別?
聽說你剛中了NIPS?恭喜(研究德撲、老鼠鬍鬚等AI的都入圍了)
TensorFlow 實現的擴大循環神經網路 DilatedRNN
AlphaGo 在下棋時知道自己在幹嘛么?

TAG:人工智能 | 神经网络 | 深度学习DeepLearning |