架构之美-最强卷积神经网络架构设计初想
生活随笔
收集整理的這篇文章主要介紹了
架构之美-最强卷积神经网络架构设计初想
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天迎來了我家兩公子周歲生日,在這美好的日子里我用“美”為主題分享一下目前非常火非常火的CNN卷積神經網絡。
本文目錄 最美的是什么? 經典架構回顧 聊一聊這些架構有哪些優缺點 架構設計思考 什么是最美的卷積神經網絡?
深度學習是近幾年迅速發展起來的學科,其在物體識別、檢測、跟蹤等任務中獲得了突破性進展。卷積神經網絡(Convolutional Neural Network,CNN)是深度學習中最為重要的分支之一,被大量用于檢測、分割、物體識別以及圖像的各個領域。 本文先回顧最近幾年各種經典的CNN卷積神經網絡架構,來領略一下各路大神高超的智慧,聊一聊這些架構有哪些優缺點,從中提煉出一些想法來設計最強最美的卷積神經網絡架構。
一、最美的是什么? 在數學中我認為最美的符號是:
在數學中我認為最美的公式是:
這時候我想問自己一個問題,那在深度學習, 計算機視覺中,最美的卷積神經網絡是什么? 先不著急,請細讀下文,我會給出答案。
二、經典架構回顧 為了不讓本文的遍幅過長,本節只聊重點, 只聊重點,各經典架構的詳細介紹就煩請讀者自行查閱。
上圖是ILSVRC歷年的Top-5錯誤率,我們就按照上圖中經典架構出現的時間順序對他們進行簡單的總結。
成績: LeNet是卷積神經網絡的祖師爺LeCun在1998年提出,用于解決手寫數字識別的視覺任務。自從那時起,CNN的最基本的架構就定下來了:卷積層、池化層、全連接層。 貢獻點:
成績: AlexNet在2012年ImageNet競賽中以超過第二名10.9個百分點的絕對優勢一舉奪冠,從此深度學習和卷積神經網絡名聲鵲起,深度學習的研究如雨后春筍般出現,AlexNet的出現可謂是卷積神經網絡的王者歸來。 貢獻點:
成績: ZFNet是2013年ImageNet分類任務的冠軍,其網絡結構沒什么改進,只是調了參數,性能較AlexNet提升了不少。 貢獻點:
成績: VGGNet是2014年ImageNet競賽定位任務的第一名和分類任務的第二名中的基礎網絡。 貢獻點:
上圖為兩個3X3的卷積核代替一個5X5大的卷積核,在降低參數的同時并建立了更多的非線性變換,使得網絡對特征的學習能力更強。
成績: GoogLeNet在2014年的ImageNet分類任務上擊敗了VGGNet奪得冠軍,它在加深網絡的同時(22層),也在網絡結構上做了創新,引入Inception結構代替了單純的卷積+激活的傳統操作。 GoogLeNet包括多個版本,如下所示: Inception V1貢獻點:
該Inception結構中卷積核的滑動步長為1,通過3×3池化、以及1×1、3×3和5×5這三種不同尺度的卷積核,一共4種方式對輸入做特征提取。
上圖為3X3卷積拆成1X3卷積和3X1卷積,也可以將7X7卷積拆成1X7卷積和7X1卷積。 Inception V4,Inception-ResNet-V1,Inception-ResNet-V2貢獻點: 什么?這么多? 這些都是Inception結合了 ResNet 中的Residual Connection,或結合 ResNet 可以極大地加速訓練,同時極大提升性能,是不是覺得Residual Connection, ResNet很強大,那我們就繼續往下看神奇的ResNet吧。
成績: 2015年何愷明推出的ResNet在ISLVRC和COCO上橫掃所有選手,獲得冠軍。 貢獻點:
上圖可以看出,數據經過了兩條路線,一條是常規路線,另一條則是捷徑(shortcut),直接實現單位映射的路線。
上圖展示了兩種形態的殘差模塊,左圖是常規殘差模塊,有兩個3×3卷積核組成,但是隨著網絡進一步加深,這種殘差結構在實踐中并不是十分有效。針對這問題,右圖的“瓶頸殘差模塊”(bottleneck residual block)可以有更好的效果,它依次由1×1、3×3、1×1這三個卷積層堆積而成,這里的1×1的卷積能夠起降維或升維的作用,3×3的卷積可以在相對較低維度的輸入上進行,以降低參數從而達到提高計算效率的目的。
其中Dense Block的結構圖如下:
成績: 2017最佳論文。 貢獻點:
三、聊一聊這些架構有哪些優缺點 在上面回顧部分,對經典架構中的各種優點(貢獻點)簡單的做了說明,那這些架構是不是也有一些沒有解決或沒有考慮到的問題,下面我們簡單的來聊一聊。 1.AlexNet、ZFNet、VGGNet 性能比GoogLeNet、ResNet、DenseNet要差一些,所以重點來聊GoogLeNet、ResNet、DenseNet。 2.GoogLeNet
四、架構設計思考 從AlexNet到ZFNet到VGGNet、GoogLeNet再到ResNet和DenseNet,網絡越來越深、越來越寬、越來越復雜、性能也越來越高、解決反向傳播時梯度消失的方法也越來越巧妙,但如果讓我們來設計強大的網絡我們會采用什么樣的方法呢?當然最快最好的方法就是把各路大神的成果直接拿來使用:
想降低參數或想升維/降維就可以在前面增加一個Conv 1X1如下圖所示:
還缺什么? 現已經在網絡深度、網絡寬度都得到很好的解決,想一想還缺什么? 也許你想到了,還缺網絡廣度。 網絡廣度? 網絡廣度是什么?請繼續看下面的內容。
五、SmartNet SmartNet是什么?是一個新的網絡架構,從網絡深度、網絡寬度、網絡廣度等方面來提高網絡的性能,并來解決上面所提到的問題。 1.SmartNet架構
這也是本文所指的網絡廣度(網絡需要自己學習根據任務的難易程度自動選擇最優的路徑)。 舉例子可能更容易理解,架構圖中第一行Smart Block學習4個特征圖(這里4是虛似值,實際可能是8,16,32,64,128等),下面我們假設Smart Block學習的特征圖數寫在特征圖右上角,并假設這個值為每個Smart Block運行時間單位數(可以這樣理解,學習1個特征圖需要1個時間單位,學習8個特征圖就需要8個時間單位),如下圖所示:
2.特征圖上三角矩陣
什么?特征圖上三角矩陣?之前只知道特征金字塔。 嗯,FPN就是近些年其中一種特別火也特別有用的特征金字塔網絡,但與這個特征圖上三角矩陣可不是同一個東西。該特征圖上三角矩陣是統一存儲(網絡學習出來的)特征圖的地方并共享給后面所有Block來使用。
3.網絡中幾個關鍵點
4.總結 為了我們的人工智能更加智能,最強的網絡應該是在我們給定的目標下(如:內存、計算時間、正確率等),網絡會自動初化化如上面所說的特征圖上三角矩陣大小,甚至通過學習來調整特征圖上三角矩陣的大小,并學習選擇最優的路徑。這個時候我們好像只需要給定幾個超參數,其余的一切網絡都會自己學習到。 在這里我們把這最強的網絡賦能給原始的CNN。 有了這樣的網絡我們是不是不用關心AlexNet、VGGNet、GoogLeNet、ResNet、DenseNet、SmartNet、甚至是已在路上的XXXNet或未來的YYYNet,只需要關心的是我們使用CNN卷積神經網絡就可以了。 多管齊下、化繁為簡、豈不美哉!!!
是時候給出開頭問題的答案了。 最美的卷積神經網絡是什么? 我認為最美的卷積神經網絡是:
在CNN中我認為最美的卷積是:
以上網絡還有很多問題值得去思考,這里只是拋出想法,本人在這方面資歷尚淺,可能有許多不準確或不正確的地方,歡迎指正及提出您們寶貴的意見與建議。
此文章是原創,若是轉載,請標明出處。
本文目錄 最美的是什么? 經典架構回顧 聊一聊這些架構有哪些優缺點 架構設計思考 什么是最美的卷積神經網絡?
深度學習是近幾年迅速發展起來的學科,其在物體識別、檢測、跟蹤等任務中獲得了突破性進展。卷積神經網絡(Convolutional Neural Network,CNN)是深度學習中最為重要的分支之一,被大量用于檢測、分割、物體識別以及圖像的各個領域。 本文先回顧最近幾年各種經典的CNN卷積神經網絡架構,來領略一下各路大神高超的智慧,聊一聊這些架構有哪些優缺點,從中提煉出一些想法來設計最強最美的卷積神經網絡架構。
一、最美的是什么? 在數學中我認為最美的符號是:
在數學中我認為最美的公式是:
這時候我想問自己一個問題,那在深度學習, 計算機視覺中,最美的卷積神經網絡是什么? 先不著急,請細讀下文,我會給出答案。
二、經典架構回顧 為了不讓本文的遍幅過長,本節只聊重點, 只聊重點,各經典架構的詳細介紹就煩請讀者自行查閱。
上圖是ILSVRC歷年的Top-5錯誤率,我們就按照上圖中經典架構出現的時間順序對他們進行簡單的總結。
- LeNet (1998年)
成績: LeNet是卷積神經網絡的祖師爺LeCun在1998年提出,用于解決手寫數字識別的視覺任務。自從那時起,CNN的最基本的架構就定下來了:卷積層、池化層、全連接層。 貢獻點:
- 定義了CNN的基本組件
- 層之間連接順序
- AlexNet (2012年)
成績: AlexNet在2012年ImageNet競賽中以超過第二名10.9個百分點的絕對優勢一舉奪冠,從此深度學習和卷積神經網絡名聲鵲起,深度學習的研究如雨后春筍般出現,AlexNet的出現可謂是卷積神經網絡的王者歸來。 貢獻點:
- 更深的網絡
- 數據增廣
- ReLU
- 多GPU支持
- Dropout
- ZFNet (2013年)
成績: ZFNet是2013年ImageNet分類任務的冠軍,其網絡結構沒什么改進,只是調了參數,性能較AlexNet提升了不少。 貢獻點:
- 使用更小的卷積核,更小的滑動步長
- VGGNet(2014年)
成績: VGGNet是2014年ImageNet競賽定位任務的第一名和分類任務的第二名中的基礎網絡。 貢獻點:
- 使用多個小的卷積核代替大的卷積核
上圖為兩個3X3的卷積核代替一個5X5大的卷積核,在降低參數的同時并建立了更多的非線性變換,使得網絡對特征的學習能力更強。
- 有規則的卷積-卷積-池化操作
- GoogLeNet(2014年)
成績: GoogLeNet在2014年的ImageNet分類任務上擊敗了VGGNet奪得冠軍,它在加深網絡的同時(22層),也在網絡結構上做了創新,引入Inception結構代替了單純的卷積+激活的傳統操作。 GoogLeNet包括多個版本,如下所示: Inception V1貢獻點:
- 引入Inception結構
該Inception結構中卷積核的滑動步長為1,通過3×3池化、以及1×1、3×3和5×5這三種不同尺度的卷積核,一共4種方式對輸入做特征提取。
- 中間層的輔助loss單元
- 全連接層替換為簡單的全局平均pooling
- 引入BN層,減少Internal Covariate Shift問題
- 引用了VGGNet中使用多個小的卷積核代替大的卷積核的特性
- Factorization into small convolutions
上圖為3X3卷積拆成1X3卷積和3X1卷積,也可以將7X7卷積拆成1X7卷積和7X1卷積。 Inception V4,Inception-ResNet-V1,Inception-ResNet-V2貢獻點: 什么?這么多? 這些都是Inception結合了 ResNet 中的Residual Connection,或結合 ResNet 可以極大地加速訓練,同時極大提升性能,是不是覺得Residual Connection, ResNet很強大,那我們就繼續往下看神奇的ResNet吧。
- ResNet(2015年)
成績: 2015年何愷明推出的ResNet在ISLVRC和COCO上橫掃所有選手,獲得冠軍。 貢獻點:
- 網絡非常深,已經超過百層,甚至千層
上圖可以看出,數據經過了兩條路線,一條是常規路線,另一條則是捷徑(shortcut),直接實現單位映射的路線。
上圖展示了兩種形態的殘差模塊,左圖是常規殘差模塊,有兩個3×3卷積核組成,但是隨著網絡進一步加深,這種殘差結構在實踐中并不是十分有效。針對這問題,右圖的“瓶頸殘差模塊”(bottleneck residual block)可以有更好的效果,它依次由1×1、3×3、1×1這三個卷積層堆積而成,這里的1×1的卷積能夠起降維或升維的作用,3×3的卷積可以在相對較低維度的輸入上進行,以降低參數從而達到提高計算效率的目的。
- 引入殘差模塊來解決退化問題
- DenseNet(2017年)
其中Dense Block的結構圖如下:
成績: 2017最佳論文。 貢獻點:
- 密集連接:加強特征傳播,鼓勵特征復用
- 密集連接:緩解梯度消失問題
- 極大的減少了參數量,提高計算效率
三、聊一聊這些架構有哪些優缺點 在上面回顧部分,對經典架構中的各種優點(貢獻點)簡單的做了說明,那這些架構是不是也有一些沒有解決或沒有考慮到的問題,下面我們簡單的來聊一聊。 1.AlexNet、ZFNet、VGGNet 性能比GoogLeNet、ResNet、DenseNet要差一些,所以重點來聊GoogLeNet、ResNet、DenseNet。 2.GoogLeNet
- GoogLeNet以及 Inception的結構復雜嗎?
- 引入了Residual Connection訓練很深的網絡,是否會導致有些層沒有作用?
- Block數量怎樣的配置為最好?
- 引入了Dense Connection每一層的輸入為前面所有層輸出特征圖的堆疊,這些輸入的特征圖都全部利用上了嗎?
- Dense Connection的設計只能在Dense Block內嗎?
- Block數量怎樣的配置為最好嗎?
- 簡單/一般/復雜的任務都要經過這么復雜的網絡嗎?
四、架構設計思考 從AlexNet到ZFNet到VGGNet、GoogLeNet再到ResNet和DenseNet,網絡越來越深、越來越寬、越來越復雜、性能也越來越高、解決反向傳播時梯度消失的方法也越來越巧妙,但如果讓我們來設計強大的網絡我們會采用什么樣的方法呢?當然最快最好的方法就是把各路大神的成果直接拿來使用:
- 數據增廣
- BN
- ReLU
- 全連接層替換為簡單的全局平均pooling
- 引入Residual Connection
- 引入Dense Connection
- 引入Inception相似結構
想降低參數或想升維/降維就可以在前面增加一個Conv 1X1如下圖所示:
還缺什么? 現已經在網絡深度、網絡寬度都得到很好的解決,想一想還缺什么? 也許你想到了,還缺網絡廣度。 網絡廣度? 網絡廣度是什么?請繼續看下面的內容。
五、SmartNet SmartNet是什么?是一個新的網絡架構,從網絡深度、網絡寬度、網絡廣度等方面來提高網絡的性能,并來解決上面所提到的問題。 1.SmartNet架構
- 該架構怎么看上去很像DenseNet,但又多了許多連接?
- 為什么把Dense Connection改名為Smart Connection?
- 該架構中只看到第一層與后面的層有Smart Connection連接?
- 為什么把Dense Block改名為Smart Block?
- 架構中還有許多方向路標?DenseNet只有一個前進方向,SmartNet怎么有兩個方向?
這也是本文所指的網絡廣度(網絡需要自己學習根據任務的難易程度自動選擇最優的路徑)。 舉例子可能更容易理解,架構圖中第一行Smart Block學習4個特征圖(這里4是虛似值,實際可能是8,16,32,64,128等),下面我們假設Smart Block學習的特征圖數寫在特征圖右上角,并假設這個值為每個Smart Block運行時間單位數(可以這樣理解,學習1個特征圖需要1個時間單位,學習8個特征圖就需要8個時間單位),如下圖所示:
2.特征圖上三角矩陣
什么?特征圖上三角矩陣?之前只知道特征金字塔。 嗯,FPN就是近些年其中一種特別火也特別有用的特征金字塔網絡,但與這個特征圖上三角矩陣可不是同一個東西。該特征圖上三角矩陣是統一存儲(網絡學習出來的)特征圖的地方并共享給后面所有Block來使用。
3.網絡中幾個關鍵點
- 最優的路徑?
- Smart Connection?
- Smart Block?
- 每組Block輸出的特征圖尺寸不一樣?
- 網絡的參數?
- 多個出口?
- 增減衣服最簡易操作原則?
- 如何訓練?
4.總結 為了我們的人工智能更加智能,最強的網絡應該是在我們給定的目標下(如:內存、計算時間、正確率等),網絡會自動初化化如上面所說的特征圖上三角矩陣大小,甚至通過學習來調整特征圖上三角矩陣的大小,并學習選擇最優的路徑。這個時候我們好像只需要給定幾個超參數,其余的一切網絡都會自己學習到。 在這里我們把這最強的網絡賦能給原始的CNN。 有了這樣的網絡我們是不是不用關心AlexNet、VGGNet、GoogLeNet、ResNet、DenseNet、SmartNet、甚至是已在路上的XXXNet或未來的YYYNet,只需要關心的是我們使用CNN卷積神經網絡就可以了。 多管齊下、化繁為簡、豈不美哉!!!
是時候給出開頭問題的答案了。 最美的卷積神經網絡是什么? 我認為最美的卷積神經網絡是:
在CNN中我認為最美的卷積是:
以上網絡還有很多問題值得去思考,這里只是拋出想法,本人在這方面資歷尚淺,可能有許多不準確或不正確的地方,歡迎指正及提出您們寶貴的意見與建議。
此文章是原創,若是轉載,請標明出處。
我知乎上連接 https://zhuanlan.zhihu.com/p/39120334
總結
以上是生活随笔為你收集整理的架构之美-最强卷积神经网络架构设计初想的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php表格所有边框实线,css表格怎么添
- 下一篇: 卷积神经网络——实例分割之Mask R-