十分鐘一起學會Inception網絡

十分鐘一起學會Inception網絡

作者 | 荔枝boy

一、Inception網絡簡介

二、Inception網絡模塊

三、Inception網絡降低參數計算量

四、Inception網絡減緩梯度消失現象

五、Inception網絡框架

六、Inception論文彩蛋

一、Inception網絡簡介

Inception網絡又叫做GoogLeNet,之所以不叫GoogleNet,是為了向LeNet致敬,是2014年ChristianSzegedy在《Going deeper with convolutions》提出的一種全新的深度學習結構。


一般來說,提升網絡性能最保險的方法就是增加網絡的寬度和深度,這樣做同時也會伴隨著副作用。首先越深越寬的網絡往往會意味著有巨大的參數量,當數據量很少的時候,訓練出來的網絡很容易過擬合,並且當網絡有很深的深度的時候,很容易造成梯度消失現象這兩個副作用制約著又深又寬的卷積神經網絡的發展,Inception網絡很好的解決了這兩個問題。

二、Inception網絡模塊

下圖是Inception中的一個模塊,Inception由多個這樣的模塊組合而成的。


十分鐘一起學會Inception網絡

Inception網絡結構中其中一個模塊是這樣的:在同一層中,分別含有1*1、3*3、5*5卷積和池化層,在使用濾波器進行卷積操作與池化層進行池化操作時都會使用padding以保證輸出都是同尺寸大小,經過這些操作後輸出的結果也就是特徵圖Featuremap再全部整合在一起。該模塊的特性就是在同一層中,分別通過使用上述不同尺寸的濾波器與進行池化操作收集到了上一層輸入的不同特徵。這樣就增加了網絡的寬度,用這些不同尺寸的濾波器和池化操作去提取上一層的不同特徵。


但是這樣存在一個問題,經過這樣一個模塊後,輸出的特徵圖往往很大,濾波器參數的默認計算是濾波器的尺寸n*n*深度的,深度等於上一層的特徵圖的個數,這樣用不了幾層就會造成參數過多並且計算量過大的問題,為了解決這個問題,使用瞭如下的構造:


十分鐘一起學會Inception網絡


相比於上一個原始的Inception模塊,維度減少模型中在3*3卷積層和5*5卷積層前增加了1*1的卷積層,並在池化層後增加了1*1的卷積層。這樣做的意義是減少了參數量,避免了每層的計算量過大。

三、Inception網絡降低參數計算量

1*1卷積降低參數和計算量:


十分鐘一起學會Inception網絡


如上圖所示,針對5*5卷積的這一層,不包含1*1的卷積模塊時,參數量為5*5*256*64=409600個參數,連接數為(5*5*256+1)*64*n*n=409664*n*n個。而包含1*1的卷積模塊時,參數量為1*1*256*32+5*5*32*64=59392個參數,連接數為((1*1*256+1)*32*n*n+(5*5*32+1)*64*n*n)=59488*n*n個。由此可見,包含1*1的卷積模塊比不包含的參數數量和計算量要少很多。


Inception網絡在增加了網絡寬度,每一層都用不同的卷積池化去提取上一層特徵圖的特徵,並且採用了在3*3和5*5卷積前,池化層後添加1*1卷積,可以有效避免了複雜的參數和計算量。這樣Inception很好的緩和了因擴大網絡寬度而造成的計算量過大和過擬合問題。

四、Inception網絡減緩梯度消失現象

Inception網絡框架中會有額外的兩個softmadx預測層,這兩個預測層分別是從網絡框架中間部分引出的分支,用於反向傳播更新梯度,這樣就避免了因梯度消失導致淺層的網絡參數無法更新。注意這兩個分支只在訓練的時候防止梯度消失會用到,真正做預測的時候需要刪除。


十分鐘一起學會Inception網絡


五、Inception網絡框架


十分鐘一起學會Inception網絡


六.Inception論文彩蛋

以上就是關於Inception網絡的介紹,順便說一下Christian Szegedy在發表該網絡的論文《Going deeper with convolutions》中附了一個小彩蛋,就是下圖,表明了往更深層次網絡架構發展的決心,其實將該網絡取名Inception,就是《盜夢空間》的名稱。


十分鐘一起學會Inception網絡


對深度學習感興趣,熱愛Tensorflow的小夥伴,歡迎關注我們的網站!http://www.panchuang.net 我們的公眾號:磐創AI。


分享到:


相關文章: