Inception V1 理解

在論文《Going Deeper with Convolutions》提出了GoogLeNet網絡,並在 ILSVRC 2014(ImageNet Large Scale Visual Recognition Competition) 上取得了第一名,GoogLeNet 對網絡中的傳統卷積層進行了修改,提出了被稱爲 Inception 的結構,用於增加網絡深度和寬度,提高深度神經網絡性能。
我們知道,在卷積神經網絡(CNN)中,傳統情況下,最直接提升準確度的方法,就是 增加網絡的尺寸,包括寬度和深度。深度也就是網絡中的層數,寬度指每層中所用到的神經元的個數。但是這種簡單直接的解決方式存在的兩個重大缺點:
(1) 網絡尺寸的增加也意味着參數的增加,也就使得網絡更加容易過擬合。
(2) 計算資源的增加。

所以作者提出,根本的解決方法就是將 全連接的結構轉化成稀疏連接的結構。
比如CNN,就是一種空間維度的稀疏連接,使用濾波覈對輸入圖像的的某一部分進行卷積,共享濾波核的參數,這樣神經網絡的參數就主要是在濾波核上,相比於傳統的全連接層,大大減少了參數的數量。

本論文的點睛之筆,是在作者繼續提出了另一種方式,也就是在 特徵維度進行稀疏連接,在多個不同的尺寸上進行卷積再聚合,把相關性強的特徵聚集到一起,每一種尺寸的卷積只輸出所有特徵中的一部分,這也是種稀疏連接。

在這裏插入圖片描述
對輸入特徵,在不同尺寸是進行卷積,比如 3*3,5*5,1*1,還有最大池化上,進行了卷積,對於4個分支,分別用不同尺寸的filter進行卷積或池化,最後再在特徵維度上拼接到一起。

那麼,inception結構這樣做的好處是什麼呢?

1、在直觀感覺上,在多個尺度上同時進行卷積,能提取到不同尺度的特徵,特徵更爲豐富,也意味着最後分類判斷時更加準確。

2、赫布原理(Hebbian Principle)。Hebbin原理是神經科學上的一個理論,用一句話概括就是fire togethter, wire together。赫布認爲“兩個神經元或者神經元系統,如果總是同時興奮,就會形成一種‘組合’,其中一個神經元的興奮會促進另一個的興奮”。比如狗看到肉會流口水,反覆刺激後,腦中識別肉的神經元會和掌管唾液分泌的神經元會相互促進,“纏繞”在一起,以後再看到肉就會更快流出口水。用在inception結構中就是要把相關性強的特徵匯聚到一起。因爲訓練收斂的最終目的就是要提取出獨立的特徵,所以使用1x1,3x3,5x5多個尺度的卷積核,可以預先把相關性強的特徵匯聚,起到加速收斂的作用。

3、 把稀疏矩陣分解成多個子密集矩陣計算,來加快收斂速度。傳統的卷積層的輸入數據只和一種尺度(比如3x3)的卷積核進行卷積,輸出固定維度(比如256個特徵)的數據,所有256個輸出特徵基本上是均勻分佈在3x3尺度範圍上,這可以理解成輸出了一個稀疏分佈的特徵集;而inception模塊在多個尺度上提取特徵(比如1x1,3x3,5x5),輸出的256個特徵就不再是均勻分佈,而是相關性強的特徵聚集在一起(比如1x1的的96個特徵聚集在一起,3x3的96個特徵聚集在一起,5x5的64個特徵聚集在一起),這可以理解成多個密集分佈的子特徵集。這樣的特徵集中因爲相關性較強的特徵聚集在了一起,不相關的非關鍵特徵就被弱化,同樣是輸出256個特徵,inception方法輸出的特徵“冗餘”的信息較少。用這樣的“純”的特徵集層層傳遞最後作爲反向計算的輸入,自然收斂的速度更快。

舉例:下圖左側是個稀疏矩陣(很多元素都爲0,不均勻分佈在矩陣中),和一個2x2的矩陣進行卷積,需要對稀疏矩陣中的每一個元素進行計算;如果像右圖那樣把稀疏矩陣分解成2個子密集矩陣,再和2x2矩陣進行卷積,稀疏矩陣中0較多的區域就可以不用計算,計算量就大大降低。
在這裏插入圖片描述
Inception 的網絡結構實現了將稀疏矩陣聚類成相對稠密子空間,來對稀疏矩陣的計算優化。但是有個問題!濾波器數量的增加,以及加上池化操作,使得濾波器的計算開銷非常大,尤其是網絡越到後面,特徵越抽象,而且每個特徵所涉及的感受野也更大了,因此隨着層數的增加,3x3和5x5卷積的比例也要增加,使用5x5的卷積核會帶來 巨大的計算量。 處理十分低效,引起計算爆炸。

所以採用了 1x1卷積來進行降維和降低計算複雜度,具體操作,可以參考我的另一篇博客
https://blog.csdn.net/ding_programmer/article/details/104109895

參考博客
https://www.jianshu.com/p/22e3af789f4e

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章