十分鐘一起學會Inception網路
一、 Inception 網路簡介
二、 Inception 網路模組
三、 Inception 網路降低引數計算量
四、 Inception 網路減緩梯度消失現象
五、 Inception 網路框架
六、Inception論文彩蛋
一、Inception網路簡介
Inception網路又叫做GoogLeNet,之所以不叫GoogleNet,是為了向LeNet致敬,是2014年ChristianSzegedy在《Going deeper with convolutions》提出的一種全新的深度學習結構。
一般來說,提升網路效能最保險的方法就是增加網路的寬度和深度,這樣做同時也會伴隨著副作用。首先越深越寬的網路往往會意味著有巨大的引數量,當資料量很少的時候,訓練出來的網路很容易過擬合,並且當網路有很深的深度的時候,很容易造成梯度消失現象這兩個副作用制約著又深又寬的卷積神經網路的發展,Inception網路很好的解決了這兩個問題。
二、Inception網路模組
下圖是Inception中的一個模組,Inception由多個這樣的模組組合而成的。
Inception網路結構中其中一個模組是這樣的:在同一層中,分別含有1*1、3*3、5*5卷積和池化層,在使用濾波器進行卷積操作與池化層進行池化操作時都會使用padding以保證輸出都是同尺寸大小,經過這些操作後輸出的結果也就是特徵圖Featuremap再全部整合在一起。該模組的特性就是在同一層中,分別通過使用上述不同尺寸的濾波器與進行池化操作收集到了上一層輸入的不同特徵。這樣就增加了網路的寬度,用這些不同尺寸的濾波器和池化操作去提取上一層的不同特徵。
但是這樣存在一個問題,經過這樣一個模組後,輸出的特徵圖往往很大,濾波器引數的預設計算是濾波器的尺寸n*n*深度的,深度等於上一層的特徵圖的個數,這樣用不了幾層就會造成引數過多並且計算量過大的問題,為了解決這個問題,使用瞭如下的構造:
相比於上一個原始的Inception模組,維度減少模型中在3*3卷積層和5*5卷積層前增加了1*1的卷積層,並在池化層後增加了1*1的卷積層。這樣做的意義是減少了引數量,避免了每層的計算量過大。
三、Inception網路降低引數計算量
1*1卷積降低引數和計算量:
如上圖所示,針對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網路的介紹,順便說一下Christian Szegedy在發表該網路的論文《Going deeper with convolutions》中附了一個小彩蛋,就是下圖,表明了往更深層次網路架構發展的決心,其實將該網路取名Inception,就是《盜夢空間》的名稱。
