日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 卷积神经网络 >内容正文

卷积神经网络

架构之美-最强卷积神经网络架构设计初想

發布時間:2023/12/14 卷积神经网络 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 架构之美-最强卷积神经网络架构设计初想 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天迎來了我家兩公子周歲生日,在這美好的日子里我用“美”為主題分享一下目前非常火非常火的CNN卷積神經網絡。

本文目錄 最美的是什么? 經典架構回顧 聊一聊這些架構有哪些優缺點 架構設計思考 什么是最美的卷積神經網絡?
深度學習是近幾年迅速發展起來的學科,其在物體識別、檢測、跟蹤等任務中獲得了突破性進展。卷積神經網絡(Convolutional Neural Network,CNN)是深度學習中最為重要的分支之一,被大量用于檢測、分割、物體識別以及圖像的各個領域。 本文先回顧最近幾年各種經典的CNN卷積神經網絡架構,來領略一下各路大神高超的智慧,聊一聊這些架構有哪些優缺點,從中提煉出一些想法來設計最強最美的卷積神經網絡架構。
一、最美的是什么?

在數學中我認為最美的符號是:

在數學中我認為最美的公式是:
這時候我想問自己一個問題,那在深度學習, 計算機視覺中,最美的卷積神經網絡是什么? 先不著急,請細讀下文,我會給出答案。
二、經典架構回顧 為了不讓本文的遍幅過長,本節只聊重點, 只聊重點,各經典架構的詳細介紹就煩請讀者自行查閱。

上圖是ILSVRC歷年的Top-5錯誤率,我們就按照上圖中經典架構出現的時間順序對他們進行簡單的總結。
  • LeNet (1998年)

成績: LeNet是卷積神經網絡的祖師爺LeCun在1998年提出,用于解決手寫數字識別的視覺任務。自從那時起,CNN的最基本的架構就定下來了:卷積層、池化層、全連接層。 貢獻點:
  • 定義了CNN的基本組件
基本組件包括:卷積層、池化層、全連接層。
  • 層之間連接順序
卷積層后接池化層,最后接全連接層。
  • AlexNet (2012年)

成績: AlexNet在2012年ImageNet競賽中以超過第二名10.9個百分點的絕對優勢一舉奪冠,從此深度學習和卷積神經網絡名聲鵲起,深度學習的研究如雨后春筍般出現,AlexNet的出現可謂是卷積神經網絡的王者歸來。 貢獻點:
  • 更深的網絡
比LeNet的5層多了3層。
  • 數據增廣
增強模型的泛化能力,避免過擬合,使用了隨機裁剪的思路對原來256×256的圖像進行隨機裁剪。
  • ReLU
用ReLU代替Sigmoid來加快收斂。
  • 多GPU支持
利用多GPU加速訓練。
  • Dropout
有效緩解過擬合。
  • ZFNet (2013年)
下圖為AlexNet與ZFNet的比較:



成績: ZFNet是2013年ImageNet分類任務的冠軍,其網絡結構沒什么改進,只是調了參數,性能較AlexNet提升了不少。 貢獻點:
  • 使用更小的卷積核,更小的滑動步長
將AlexNet第一層卷積核由11變成7,滑動步長由4變為2。
  • VGGNet(2014年)

成績: VGGNet是2014年ImageNet競賽定位任務的第一名和分類任務的第二名中的基礎網絡。 貢獻點:
  • 使用多個小的卷積核代替大的卷積核


上圖為兩個3X3的卷積核代替一個5X5大的卷積核,在降低參數的同時并建立了更多的非線性變換,使得網絡對特征的學習能力更強。
  • 有規則的卷積-卷積-池化操作
VGGNet包含多個conv->conv->max pool這樣的結構。
  • GoogLeNet(2014年)

成績: GoogLeNet在2014年的ImageNet分類任務上擊敗了VGGNet奪得冠軍,它在加深網絡的同時(22層),也在網絡結構上做了創新,引入Inception結構代替了單純的卷積+激活的傳統操作。 GoogLeNet包括多個版本,如下所示: Inception V1貢獻點:
  • 引入Inception結構


該Inception結構中卷積核的滑動步長為1,通過3×3池化、以及1×1、3×3和5×5這三種不同尺度的卷積核,一共4種方式對輸入做特征提取。
  • 中間層的輔助loss單元
GoogLeNet網絡結構中有3個loss單元,這樣的網絡設計是為了幫助網絡的收斂,在中間層加入輔助計算的loss單元,目的是計算損失時讓低層的特征也有很好的區分能力,從而讓網絡更好地被訓練。
  • 全連接層替換為簡單的全局平均pooling
減少參數,提高計算效率。 Inception V2貢獻點:
  • 引入BN層,減少Internal Covariate Shift問題
Batch Normalization:批標準化,對每一個 mini-batch 數據進行標準化處理,使輸出規范化到 N(0,1) 的正態分布,減少了Internal Covariate Shift(內部神經元分布改變)。
  • 引用了VGGNet中使用多個小的卷積核代替大的卷積核的特性
Inception V3貢獻點:
  • 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最佳論文。 貢獻點:
  • 密集連接:加強特征傳播,鼓勵特征復用
DenseNet是一種具有密集連接的卷積神經網絡。在該網絡中,任何兩層之間都有直接的連接,也就是說,網絡每一層的輸入都是前面所有層輸出的并集,而該層所學習的特征圖也會被直接傳給其后面所有層作為輸入。
  • 密集連接:緩解梯度消失問題
這種Dense Connection相當于每一層都直接連接input和loss,因此就可以減輕梯度消失現象,這樣更深的網絡不是問題。
  • 極大的減少了參數量,提高計算效率
由于每一層都包含之前所有層的輸出信息,因此它不需要再重新學習多余的特征圖,僅學習少量的幾層特征圖就可以了。
三、聊一聊這些架構有哪些優缺點 在上面回顧部分,對經典架構中的各種優點(貢獻點)簡單的做了說明,那這些架構是不是也有一些沒有解決或沒有考慮到的問題,下面我們簡單的來聊一聊。 1.AlexNetZFNetVGGNet 性能比GoogLeNet、ResNet、DenseNet要差一些,所以重點來聊GoogLeNet、ResNet、DenseNet。 2.GoogLeNet
  • GoogLeNet以及 Inception的結構復雜嗎?
我認為當時沒有Residual Connection/Dense Connection這樣神奇的設計,在網絡深度很難增加時,就在網絡寬度上做了創新(即引入了Inception結構),并設計各種規格來提高性能,導致網絡過于復雜。 3.ResNet
  • 引入了Residual Connection訓練很深的網絡,是否會導致有些層沒有作用?
實驗表明:丟掉某些層對網絡沒有影響,即存在沒有作用的層。 問題1:沒有作用的層帶來的存儲及計算是浪費的? 問題2:沒有作用的層如何量化?即有多少?
  • Block數量怎樣的配置為最好?
ResNet50中Block數量分別是(3, 4, 6, 3) ResNet101中Block數量分別是(3, 4, 23, 3) 問題1:手動配置很難是最好的,那是否有更優的方案? 4.DenseNet
  • 引入了Dense Connection每一層的輸入為前面所有層輸出特征圖的堆疊,這些輸入的特征圖都全部利用上了嗎?
實驗表明:存在某些層沒有全部利用輸入的所有特征圖。 問題1:沒有利用上的特征圖帶來的計算是浪費的? 問題2:沒有利用上的特征圖如何量化?即有多少?
  • Dense Connection的設計只能在Dense Block內嗎?
問題1:Block與Block之間的特征圖沒有得到很好復用?
  • Block數量怎樣的配置為最好嗎?
DenseNet121中Block數量分別是(6, 12, 24, 16) DenseNet169中Block數量分別是(6, 12, 32, 32) 問題1:手動配置很難是最好的,那是否有更優的方案? 5.共存的問題
  • 簡單/一般/復雜的任務都要經過這么復雜的網絡嗎?
問題1:很明顯,簡單的任務幾層的網絡就可以做到,那是否有更優的方案? 問題2:某個場景只有一些簡單的任務,但由于內存等原因不能加載這么復雜的網絡,是否可以通過卸載該網絡某些能力,就可以使用? 問題3:如果有更復雜的任務,該網絡是否有通過擴展使它的能力更強?
四、架構設計思考 從AlexNet到ZFNet到VGGNet、GoogLeNet再到ResNet和DenseNet,網絡越來越深、越來越寬、越來越復雜、性能也越來越高、解決反向傳播時梯度消失的方法也越來越巧妙,但如果讓我們來設計強大的網絡我們會采用什么樣的方法呢?當然最快最好的方法就是把各路大神的成果直接拿來使用:
  • 數據增廣
  • BN
  • ReLU
  • 全連接層替換為簡單的全局平均pooling
  • 引入Residual Connection
  • 引入Dense Connection
  • 引入Inception相似結構
這里不完全采用GoogLeNet中的Inception結構,而是做了簡化,如今網絡在深度方面已不是問題,再加上已通過大量實驗表明,多個小的卷積替換大的卷積是可行的,并且多個小的卷積增加了更多的非線性變換,使得網絡對特征的學習能力更強,因此我認為網絡在深度/寬度上堆疊如下簡單結構可以達到各種神奇的效果:

想降低參數或想升維/降維就可以在前面增加一個Conv 1X1如下圖所示:

還缺什么? 現已經在網絡深度、網絡寬度都得到很好的解決,想一想還缺什么? 也許你想到了,還缺網絡廣度。 網絡廣度? 網絡廣度是什么?請繼續看下面的內容。
五、SmartNet SmartNet是什么?是一個新的網絡架構,從網絡深度、網絡寬度、網絡廣度等方面來提高網絡的性能,并來解決上面所提到的問題。 1.SmartNet架構

  • 該架構怎么看上去很像DenseNet,但又多了許多連接?
對,很像DenseNet,其實圖中的Smart Block就跟Dense Block幾乎差不多,只是把Connection連接也引用到Block與Block之間,使得特征圖最大化復用。同時把Dense Connection改名為Smart Connection,把Dense Block改名為Smart Block。
  • 為什么把Dense Connection改名為Smart Connection?
這里利用Smart Connection連接,來解決(“沒有利用上的特征圖帶來的計算是浪費的?”)的問題,即通過Smart Connection連接表示沒有利用上的特征圖不參與計算,細心的讀者可能已看到了箭頭線是虛線。
  • 該架構中只看到第一層與后面的層有Smart Connection連接?
其實每一個Smart Block的輸入與前面所有的Smart Block的輸出都有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.網絡中幾個關鍵點
  • 最優的路徑?
網絡需要自己學習選擇最優的路徑。(這個可以考慮使用Condition GAN來訓練生成一些隱信息來控制或使用強化學習)。
  • Smart Connection?
網絡需要自己學習選擇對Block有用的特征圖。
  • Smart Block?
為了更加智能,Block中的層數最強的網絡應該是自己學習得到的,這也就是為什么把Dense Block改名為Smart Block的原因。
  • 每組Block輸出的特征圖尺寸不一樣?
可以采用不同大小的pooling或采用Fast/Faster RCNN中的ROI Pooling對不同大小的特征圖映射到固定的大小。
  • 網絡的參數?
這個同DenseNet一樣,由于每一層都包含之前所有層的輸出信息,因此它不需要再重新學習多余的特征圖,僅學習少量的幾層特征圖就可以了。
  • 多個出口?
后一個出口是對前一個出口的增強。 即input4>input3>input2>input1。
  • 增減衣服最簡易操作原則?
該網絡符合我們從小都懂的一個增減衣服最簡易操作原則,即天熱時,減去最外層的衣服,天冷時,在最外層基礎上增加一層衣服。 這樣的網絡優勢很多,網絡可以按出口存儲,按出口加載。 對于一般的任務,只加載前幾個出口相關的參數即可,甚至以后網絡還有類似GC功能(垃圾回收器),動態加載與回收出口相關的參數來提高運行效率。
  • 如何訓練?
一個出口一個出口訓練。 題外話:眾所都知目前的人工神經網絡只學習W與b參數,可能還存在另外的參數需要學習,來使得我們的網絡更強。
4.總結 為了我們的人工智能更加智能,最強的網絡應該是在我們給定的目標下(如:內存、計算時間、正確率等),網絡會自動初化化如上面所說的特征圖上三角矩陣大小,甚至通過學習來調整特征圖上三角矩陣的大小,并學習選擇最優的路徑。這個時候我們好像只需要給定幾個超參數,其余的一切網絡都會自己學習到。 在這里我們把這最強的網絡賦能給原始的CNN。 有了這樣的網絡我們是不是不用關心AlexNet、VGGNet、GoogLeNet、ResNet、DenseNet、SmartNet、甚至是已在路上的XXXNet或未來的YYYNet,只需要關心的是我們使用CNN卷積神經網絡就可以了。

多管齊下、化繁為簡、豈不美哉!!!
是時候給出開頭問題的答案了。 最美的卷積神經網絡是什么?

我認為最美的卷積神經網絡是:

在CNN中我認為最美的卷積是:
以上網絡還有很多問題值得去思考,這里只是拋出想法,本人在這方面資歷尚淺,可能有許多不準確或不正確的地方,歡迎指正及提出您們寶貴的意見與建議。
此文章是原創,若是轉載,請標明出處。

我知乎上連接 https://zhuanlan.zhihu.com/p/39120334

總結

以上是生活随笔為你收集整理的架构之美-最强卷积神经网络架构设计初想的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。