【AI初识境】被Hinton,DeepMind和斯坦福嫌弃的池化,到底是什么?
這是專欄《AI初識境》的第8篇文章。所謂初識,就是對相關技術有基本了解,掌握了基本的使用方法。
今天來說說深度學習中的池化問題,包含池化的種類,作用機制以及最新的思考。
?作者&編輯 | 言有三
1 池化還要不要了
這一次咱們反著來,說說學術界對池化的最新觀點。通常我們認為,池化可以增加網絡對于平移的不變性,對于網絡的泛化能力的提升是非常關鍵的。不過,到底能起到多大的正向作用,卻是被很多人懷疑的。
首先是Hinton,還記得Hinton提出的Capsule Module吧。他認為池化的使用就是一個大錯誤,而它有效又反而是一個大災難。池化固然可以提供一些平移和旋轉不變性,但是也破壞了圖像中的姿態和空間等信息,對檢測分割等高級任務有影響,所以才提出膠囊網絡(CapsuleNetwork)。至于這個發展的怎么樣了,筆者沒有關注,但是從大佬敢于革自己的“本命”這一點,就說明這個問題確實有點嚴重。
Hinton雖然指出了pooling的壞影響,但是無法否定其好處,那么池化是不是真的能夠提升網絡的泛化能力呢?
首先站出來好好回答這個問題的是斯坦福大學Eric Kauderer-Abrams的研究【1】,它們通過一個平移敏感圖來進行研究。
這個平移敏感圖長下面這樣,它評估的就是一個網絡的輸出對于輸入的平移的敏感度。
上面這個圖是這么算的,首先用原圖計算預測特征分數,然后用平移過的圖計算預測特征分數,最后計算兩者的歸一化分數,越亮說明越相關。x和y分別就是偏移量,可以看到x,y都接近0的時候越亮,說明越相關,然后就隨著距離的增強而降低。
這就是說平移越大之后,對性能的影響越大,畢竟一個網絡不可能擁有完全的平移不變性。
在這個基礎上,他們就做實驗了,結果如下,c表示卷積,p表示pooling,aug表示數據增強,所以這里就是比較pooling和aug對性能的影響,結果表明池化不池化的,好像沒有什么用,而數據增強做不做得好,才是關鍵。結果說明CNN本身沒什么平移不變性,是靠數據學來的。
上面做了實驗,但是沒有更深層次地分析,為什么池化就沒有用了呢,這可是違反我們的常識的。
DeepMind的研究【2】給出了一個比較有說服力的解答,實驗的設置差不多,使用非池化和各種池化的網絡結構。
總之結論就是:看上面的4個圖。(a) 剛開始的時候池化確實有利于提高抗變形能力。(b) 不管池化不池化,模型最后學習完都能獲得同樣的抗變形能力。(c) 初始化的時候不同的池化方法是有差異的。(d) 學習完之后不管什么池化方法效果都差不多。
那總得有個理由吧?他們給出的理由是卷積核本身參數越平滑才越能提高對平移的穩定性,文中在卷積操作后面串接平滑操作,實驗對比如下。
這也沒毛病對吧,卷積核都平滑了,當然就沒有那么敏感了。
暫且先總結一下吧:池化什么的不重要了,搞數據增強才是正道。
2 什么是池化
上面都這么說了,接下來說池化略有點尷尬,但是作為知識體系的重要一環,還是有必要講述。
pooling,小名池化,思想來自于視覺機制,是對信息進行抽象的過程。
上圖就是一個池化的示意圖,用了一個10*10的卷積核,對20*20的圖像分塊不重疊的進行了池化,池化之后featuremap為2*2的大小。
pooling有什么用呢?或者說為什么需要pooling呢?原因有幾個:
1、增大感受野
所謂感受野,即一個像素對應回原圖的區域大小,假如沒有pooling,一個3*3,步長為1的卷積,那么輸出的一個像素的感受野就是3*3的區域,再加一個stride=1的3*3卷積,則感受野為5*5。
假如我們在每一個卷積中間加上3*3的pooling呢?很明顯感受野迅速增大,這就是pooling的一大用處。感受野的增加對于模型的能力的提升是必要的,正所謂“一葉障目則不見泰山也”。
2、平移不變性
我們希望目標的些許位置的移動,能得到相同的結果。因為pooling不斷地抽象了區域的特征而不關心位置,所以pooling一定程度上增加了平移不變性。
3、降低優化難度和參數
我們可以用步長大于1的卷積來替代池化,但是池化每個特征通道單獨做降采樣,與基于卷積的降采樣相比,不需要參數,更容易優化。全局池化更是可以大大降低模型的參數量和優化工作量。
3 池化有哪些
1、平均池化和最大池化
這是我們最熟悉的,通常認為如果選取區域均值(mean pooling),往往能保留整體數據的特征,較好的突出背景信息;如果選取區域最大值(max pooling),則能更好保留紋理特征。
2、stochastic pooling/mixed pooling
stochastic pooling對feature map中的元素按照其概率值大小隨機選擇,元素被選中的概率與其數值大小正相關,這就是一種正則化的操作了。mixed pooling就是在max/average pooling中進行隨機選擇。
3、Data Driven/Detail-Preserving Pooling
上面的這些方法都是手動設計,而現在深度學習各個領域其實都是往自動化的方向發展。
我們前面也說過,從激活函數到歸一化都開始研究數據驅動的方案,池化也是如此,每一張圖片都可以學習到最適合自己的池化方式。
此外還有一些變種如weighted max pooling,Lp pooling,generalization max pooling就不再提了,還有global pooling。
4 總結
帶步長的卷積雖然不需要池化,卻沒有了靈活的激活機制。平均池化穩扎穩打,卻丟失了細節。最大池化克服了平均池化的缺點,卻打斷了梯度回傳。
最終發現,池化也還是要學的好,所謂隨機應變,蓋莫如此。另外,如何選擇好用于池化的區域,也是一門學問。
參考文獻
[1]?Kaudererabrams E. Quantifying Translation-Invariance in Convolutional Neural Networks.[J]. arXiv: Computer Vision and Pattern Recognition, 2018.
[2]?Ruderman A, Rabinowitz N C, Morcos A S, et al. Pooling is neither necessary nor sufficient for appropriate deformation stability in CNNs[J]. arXiv: Computer Vision and Pattern Recognition, 2018.
2019年有三AI培養計劃已經開始,一個季度一期。
2019年有三AI“春季”劃,給我一個榮耀,還你一生榮耀
總結
深度學習理論部分快要結束了,看似平常朗朗上口的東西,其實背后蘊含著非常多可以思考的東西,唯有多想多做才能不浮于表面。
下一期預告:深度學習中的正則化
轉載文章請后臺聯系
侵權必究
更多請關注知乎專欄《有三AI學院》
往期精選
【AI初識境】激活函數:從人工設計到自動搜索
【AI初識境】什么是深度學習成功的開始?參數初始化
【AI初識境】深度學習模型中的Normalization,你懂了多少?
【AI初識境】為了圍剿SGD大家這些年想過的那十幾招
創業第一天,有三AI扔出了深度學習的150多篇文章和10多個專欄
想要變身”AI專家“,就戳戳手指關注我們吧
別忘了點“好看”支持作者噢? ????
總結
以上是生活随笔為你收集整理的【AI初识境】被Hinton,DeepMind和斯坦福嫌弃的池化,到底是什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创业第一天,有三AI扔出了深度学习的15
- 下一篇: 【AI-1000问】人脸的4个方向,你还