天天看點

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

點選标題下「異步圖書」可快速關注

深度神經網絡的定義

這個領域正面臨着快速的變化,每天我們都能聽到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機器學習項目實戰》​​​​

繼續閱讀