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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

回顾一些重要的CNN改进模型(你真的了解 Convolutional Neural Networks 么)

發布時間:2025/3/21 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 回顾一些重要的CNN改进模型(你真的了解 Convolutional Neural Networks 么) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自:

干貨 | 你真的了解 Convolutional Neural Networks 么
https://mp.weixin.qq.com/s?__biz=MzAwMjM3MTc5OA==&mid=403231780&idx=1&sn=4d6b282e45a016df274b72f08ddf8492&scene=1&srcid=0111p2ycZ4HF6hZ8N9eohts2&ascene=1&uin=OTE0NTE3ODQx&devicetype=webwx&version=70000001&pass_ticket=8WwTcRsKg44bcrNwjcBl175U1yC17S0EJItWCw7eG1u5%2Fripwp%2FMV3S1QmkuD7Sl

包括全卷積網絡:http://arxiv.org/abs/1412.6806

Network In Network(只是講了一方面):http://arxiv.org/abs/1312.4400

Spatial Transformer Networks:http://arxiv.org/abs/1506.02025

Stacked What-Where Auto-encoders:http://arxiv.org/abs/1506.02351

今天要跟大家分享的是一些 Convolutional Neural Networks(CNN)的工作。大家都知道,CNN 最早提出時,是以一定的人眼生理結構為基礎,然后逐漸定下來了一些經典的架構——convolutional 和 pooling 的交替,最后再加上幾個 fully-connected layers 用作最后做 prediction 等的輸出。然而,如果我們能“反思”經典,深入剖析這些經典架構中的不同 component 的作用,甚至去改進它們,有時候可能有更多的發現。所以,今天分享的內容,便是改進 CNN 的一些工作。


? Striving For Simplicity The All Convolutional Net

先說一篇探究 CNN 中不同 component 的重要性和作用的工作。這篇工作發表于 ICLR 2015,已經有一年多的時間了。個人覺得它應該受到更大的關注。這篇工作最大的貢獻是,把經典架構的 CNN 中的 pooling 層,用 stride convolutional 層給替換掉了,也就是去掉了 deterministic 層。并且,通過數學公式和實驗結果證明,這樣的替換是完全不會損傷性能的。而加入 pooling 層,如果不慎,甚至是有傷性能的。


具體來看,CNN 中的每次 feature map 表達,都可以看做一個 W*H*N 的三維結構。在這個三維結構下,pooling 這種 subsampling 的操作,可以看成是一個用 p-norm(當 p 趨向于正無窮時,就是我們最常見的 max-pooling)當做 activation function convolutional 操作。有了這樣的解釋,自然而然地,就會提出一個問題:那么引入這樣的 pooling 操作,有什么意義呢?真的有必要么?在過去的工作中,大家普遍認為,pooling 層有三種可能的功效:(1)提取更 invariant feature;(2)抽取更廣范圍的(global)的 feature—— spatially dimension reduction;(3)更方便優化。這篇作者認為,其中(2)是對 CNN 最重要的。基于此,它們就提出,那么我只要在去掉 pooling 層的同時,保證這種 spatially dimension reduction——是否就可以構造出一個 all convolutional net,同時這個 net 的效果還不比 convolutional + pooling 交替的差?


最后,果然,如他們所料。它們的 all convolutional net 達到了甚至有時候超過了 state-of-art,同時他們還發現有時候加入 pooling 反而不如不加。這篇工作的另外一個貢獻是他們提出了一種新的 visualizing CNN 的方法,效果更直觀更有分辨性。總結來說,這篇工作提出的 all convolutional net 可以實現自主 downsampling,并且效果不差;其二,它不是在說 pooling 不好,我們一定要拋棄;而是對于 minimum necessary ingredients for CNN 進行了探究。


?Network in Network

第一個要分享的是如何去 replace pooling layer after convolutional layer,接下來要分享的是 replace fully-connected layer on the top of CNN。這個也是經典的 CNN 架構中的一個組成部分。也許這個東西大家還不熟悉,但是提到另一個詞,大家就會很熟悉了。那就是,dropout。已經有非常多的工作,在 CNN 的 fully-connected layer 中,加入 dropout,來避免 overfitting。受此啟發,后來又有了一個 sparse convolutional neural networks 的工作。然而,更具開創性的工作是,《Network in Network》這篇,提出了用 global averaging pooling layer 替代 fully-connected layer.


這樣的 global averaging pooling layer 顯然,可以把 input/feature map 和 output/category,也就可以達到減少 overfitting 的作用(和 dropout 一樣)。


現在,global average pooling 已經被用得很廣泛,比如在《Going Deeper with Convolutions》中,作者指出:

We found that a move from fully connectedlayers to average pooling improved the top-1 accuracy byabout 0.6%, however the use of dropout remained essentialeven after removing the fully connected layers.

當然它也有它自己的一定弊端,比如 convergence 會變慢。但是關于 fully-connected layer 是否一定是必須的這個問題,卻在被各種工作和各種場景探究。比如 Google 去年非常火的 inceptionism 的工作中,也放棄了 fully-connected layer,并達到了很好的效果。

所以,關于這點,小S 是認為,我們不要光看表面的 dropout or global averaging pooling 這些技術,而是要去思考它們的共同之處和它們的原理。從它們帶給網絡結構的變化入手。也許現在來看,最初的結論還是對的,deeper is better,我們暫時要解決的是如何 deeper。


?Spatial Transformer Networks

這篇是 NIPS 2015 中,來自 Google DeepMind 的工作。這篇也被前幾天 huho larochelle 評選出的 Top 10 arXiv 2015 Deep Learning Papers 收錄(另外提一下,昨天看到這個評選,發現大部分我都寫過筆記了,大家如果感興趣,我可以單獨整理一份,以供大家查閱)。回到這篇工作上來,它主要是說,盡管 CNN 一直號稱可以做 spatial invariant feature extraction,但是這種 invariant 是很有局限性的。因為 CNN max-pooling 首先只是在一個非常小的、rigid 的范圍內(2×2 pixels)進行,其次即使是 stacked 以后,也需要非常 deep 才可以得到大一點范圍的 invariant feature,三者來說,相比 attention 那種只能抽取 relevant feature,我們需要的是更廣范圍的、更 canonical features。為此它們提出了一種新的完全 self-contained transformation module,可以加入在網絡中的任何地方,靈活高效地提取 invariant image features.


具體上,這個 module 就叫做 Spatial Transformers,由三個部分組成: Localization Network, Grid generator 和 Sampler。Localization Network 非常靈活,可以認為是一個非常 general 的進一步生成 feature map 和 map 對應的 parameter 的網絡。因此,它不局限于用某一種特定的 network,但是它要求在 network 最后有一層 regression,因為需要將 feature map 的 parameter 輸出到下一個部分:Grid generator。Grid generator 可以說是 Spatial Transformers 的核心,它主要就是生成一種“蒙版”,用于“摳圖”(Photoshop 附體……)。Grid generator 定義了 Transformer function,這個 function 的決定了能不能提取好 invariant features。如果是 regular grid,就好像一張四四方方沒有傾斜的蒙版,是 affined grid,就可以把蒙版“扭曲”變換,從而提取出和這個蒙版“變換”一致的特征。在這個工作中,只需要六個參數就可以把 cropping, translation, rotation, scale and skew 這幾種 transformation 都涵蓋進去,還是很強大的;而最后的 Sampler 就很好理解了,就是用于把“圖”摳出來。


這個工作有非常多的優點:(1)它是 self-contained module,可以加在網絡中的任何地方,加任何數量,不需要改變原網絡;(2)它是 differentiable 的,所以可以直接進行各種 end-to-end 的訓練;(3)它這個 differentiable simple and fast,所以不會使得原有網絡變慢;(4)相比于 pooling 和 attention 機制,它抽取出的 invariant features 更 general。


?Stacked What-Where Auto-encoders

這篇文章來自 NYU,Yann LeCun 組,已投稿到 ICLR 2016。與之前整理過的 improving information flow in Seq2Seq between encoder-decoder 類似的是,這篇文章主要是改進了基于 CNN 的 encoder-decoder,并非常 intuitive 的討論了不同 regularizer 的區別。架構圖可以直接看 Figure 1 的右側,會比較清晰。具體來講,Stacked What-Where Auto-encoders(SWWAE) 基于前向 Convnet 和前向 Deconvnet,并將 max-pooling 的輸出稱為 “what”,其實就是將 max function 的 content 和 position 傳給下一層;同時,max-pooling 中的 position/location 信息,也就是 argmax function,作為 “where” 要“橫向”傳給 decoder。這樣,在進行 decoder reconstruct 的過程時,則更能基于 where + what 的組合,進行 unpooling。

為了能讓網絡利用好 what 和 where,文章考慮了三種 loss,見公式(1),即傳統的 discriminate loss,和新增的 input-level reconstruction loss for “what” 還有 intermediate-level reconstruction loss for “where”


如上文所說,文章的 Section 3 很 intuitive,首先說明并解了為什么使用的是 soft version 的 max/argmax 去進行 ”what“ 和 ”where“;第二,討論了為何加入 reconstruction loss 和這樣一個 hybird loss function 更好(generalization 和 robustness);第三,說明了 intermediate loss 對于“what”“where”一起學習的重要性。

實驗結果上來看,這樣的 SWWAE 模型 generate 出來的圖片更清晰,更“干凈”(clearer and cleaner)。



其實,關于 CNN 的改進和探究,是很符合科研發展的。就像更熟悉的 RNN 一樣,一個東西火起來,被證實在各種領域 powerful,那么緊隨其后的便是對于其原理的深刻揭示。當關于原理的基礎工作有了突破,又會對后續的改進和實際應用起到指導作用。這便是科學工作中的一種 pattern 吧。


總結

以上是生活随笔為你收集整理的回顾一些重要的CNN改进模型(你真的了解 Convolutional Neural Networks 么)的全部內容,希望文章能夠幫你解決所遇到的問題。

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