1
雷鋒網(wǎng) AI 科技評論按:UBER AI Lab 最新研究發(fā)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)在處理坐標(biāo)變換問題上存在驚人的「無能」缺陷,并提出了一種簡單的 CoordConv 策略修復(fù)了這一缺陷。雷鋒網(wǎng) AI 科技評論把 UBER AI Lab 的這篇文章全文翻譯如下。
Uber 在許多領(lǐng)域中都需要應(yīng)用到卷積神經(jīng)網(wǎng)絡(luò),從設(shè)計自動駕駛車輛到路牌自動檢測,從地圖構(gòu)建到最大化 Uber 市場中的空間調(diào)度效率。同時這些領(lǐng)域的研究又都涉及到坐標(biāo)變換問題。
在深度學(xué)習(xí)領(lǐng)域,卷積操作所產(chǎn)生的影響是獨一無二的。當(dāng)前機器視覺研究中幾乎所有最佳結(jié)果都采用了同一種策略,那就是使用卷積層的堆疊作為基本構(gòu)建塊。由于這種架構(gòu)非常普遍,我們也就理所當(dāng)然地認(rèn)為它應(yīng)該能夠勝任一些簡單的任務(wù),例如在一幅小圖像中繪制一個像素點。然而真實結(jié)果卻令人大跌眼鏡。
事實證明,卷積操作往往無法勝任那些看似簡單的任務(wù)。在論文《An Intriguing Failing of Convolutional Neural Networks and the CoordConv Solution》中,我們揭示并分析了卷積神經(jīng)網(wǎng)絡(luò)(CNNs)在兩種不同類型(笛卡爾坐標(biāo)空間(Cartesian space)和獨熱像素空間)之間進行空間表示轉(zhuǎn)換往往是無能為力的。這點非常令人驚訝,因為這個任務(wù)是如此地簡單。但是同時它也很重要,因為這樣的坐標(biāo)變換似乎也是許多其它常見任務(wù)所必須的,例如圖像中的目標(biāo)檢測、訓(xùn)練圖像生成模型和訓(xùn)練強化學(xué)習(xí)(RL)智能體。事實證明,這些任務(wù)可能長期以來一直受到卷積操作「缺陷」的影響。而我們所提出的解決方案是一個名為 CoordConv 的層,通過實驗我們在多個領(lǐng)域中證明了該方案的有效性。下面我們來一起看看是怎么回事。
讓我們來設(shè)想一個簡單的監(jiān)督渲染(Supervised Rendering)任務(wù),這個任務(wù)的要求是,給定一個 (i, j) 坐標(biāo)作為網(wǎng)絡(luò)的輸入,然后要求網(wǎng)絡(luò)輸出一張 64*64 的圖像,并且圖像中繪有一個以 (i, j) 坐標(biāo)為中心的正方形,如下圖1 (a) 所示。那么你會使用什么樣的網(wǎng)絡(luò)來解決這個任務(wù)?
其中一種策略是,我們可以采用當(dāng)前生成圖像的主流方法來實現(xiàn)這項任務(wù),即通過堆疊反卷積(轉(zhuǎn)置卷積)層來生成圖像以及繪制正方形。為了驗證這個想法,我們創(chuàng)建一個由 64*64 大小的畫布(圖像)組成的數(shù)據(jù)集,這些畫布上隨機地繪制了 9*9 的正方形格子,如下圖1 (b) 所示。通過枚舉所有可能的情況(保證正方形完整的前提下),我們總共得到了 3136 個樣本。然后為了評估模型的泛化能力,我們定義兩種訓(xùn)練/測試集分割方法:均勻分割法,這種方法將所有可能的正方形中心位置按 8:2 的比例隨機地分成了訓(xùn)練集與測試集;另一種是象限分割法,這種方法將畫布劃分成了四個象限,其中正方形中心位于前三個象限的畫布被分配進訓(xùn)練集,而正方形中心位于第四象限的畫布被分配進測試集。這兩種分割法所產(chǎn)生的數(shù)據(jù)集分布如下圖1 (c) 所示。
圖1 (a) 該監(jiān)督渲染任務(wù)要求網(wǎng)絡(luò)在給定的 (i, j) 坐標(biāo)上繪制正方形。(b) 數(shù)據(jù)集的樣例展示。(c) 均勻分割與象限分割法所生成訓(xùn)練測試集分布的可視化。
我們假設(shè)卷積神經(jīng)網(wǎng)絡(luò)可以輕松地解決這個任務(wù),因為這個任務(wù)非常簡單(我們的論文 https://arxiv.org/abs/1807.03247 展示了整個數(shù)據(jù)集的生成只需要兩行 Python 代碼),同時由于這個數(shù)據(jù)集非常小,模型很容易就過度參數(shù)化。但事實證明,卷積神經(jīng)網(wǎng)絡(luò)的表現(xiàn)十分糟糕。即使是具有多達 1M 個參數(shù)且訓(xùn)練時間超過 90 分鐘的模型(圖2b),也無法在均勻分割的測試集上獲得超過 0.83 的 IOU 性能,而在象限分割的測試集上則無法超過 0.36 的 IOU(圖2a)。
圖2 (a) 展示了這項監(jiān)督渲染任務(wù)在均勻分割和象限分割兩種策略下的訓(xùn)練與測試數(shù)據(jù)集 IOU,它們的 IOU 都小于 1.0;(b) 為了訓(xùn)練一個較好的模型需要花費 90 分鐘才能達到 0.8 的 IOU。
那么為什么通過卷積神經(jīng)網(wǎng)絡(luò)來處理監(jiān)督渲染任務(wù)效果會這么差呢?這點值得我們進行深入挖掘。畢竟,如果采用直接監(jiān)督訓(xùn)練的渲染任務(wù)都如此困難,那么當(dāng)我們采用無監(jiān)督學(xué)習(xí)來實現(xiàn)渲染時,這只會變得更加困難。例如,在相同的數(shù)據(jù)集上訓(xùn)練生成對抗網(wǎng)絡(luò)(GAN),并由一個訓(xùn)練過的判別器來提供損失。
讓我們來縮小任務(wù)的范圍,以便于能夠發(fā)現(xiàn)問題所在。我們現(xiàn)在的任務(wù)是要求網(wǎng)絡(luò)繪制一個簡單的像素(而不是 9*9 的正方形)。因為我們很容易就會想到,如果模型可以解決這個單像素任務(wù),那么通過堆疊更深的反卷積網(wǎng)絡(luò)就可以很容易地將這個像素擴展成一個更大的正方形,這也是我們通過實驗驗證過的直覺。因此,我們想到了這個基于監(jiān)督的坐標(biāo)分類任務(wù)(圖3a),其中數(shù)據(jù)集由成對的 (i, j) 坐標(biāo)和圖像(對應(yīng)的像素點被激活)組成,如下圖 3b。
圖3 (a) 基于監(jiān)督的坐標(biāo)分類網(wǎng)絡(luò)要求網(wǎng)絡(luò)在給定的坐標(biāo) (i, j) 上繪制一個像素點;(b) 數(shù)據(jù)集樣例;(c) 訓(xùn)練集與數(shù)據(jù)集可視化
我們再次嘗試了許多具有不同超參數(shù)的網(wǎng)絡(luò),然后觀察到即便有些網(wǎng)絡(luò)可以記住訓(xùn)練集,但是卻沒有一個網(wǎng)絡(luò)的測試精度可以超過 86%(圖4a),而且還需要花費超過一個小時的訓(xùn)練時間。
圖4 (a) 展示了在均勻分割和象限分割上訓(xùn)練坐標(biāo)分類任務(wù)的訓(xùn)練精度與測試精度,雖然有些模型記住了訓(xùn)練集,但是在均勻分割的測試集上都沒有超過 86%,這意味著卷積操作即便在單像素任務(wù)上也無法很好地泛化;(b) 為了實現(xiàn) 86% 的測試精度需要花費一個小時訓(xùn)練時間。
我們本來設(shè)想卷積能夠完美解決這個問題,但事實并非如此。為什么會這樣呢?為了弄清楚網(wǎng)絡(luò)到底在干什么,我們訓(xùn)練了一個最好的網(wǎng)絡(luò)并檢查其預(yù)測結(jié)果。我們讓網(wǎng)絡(luò)繪制一張圖像,該圖像中只有一個像素點被激活(在獨熱表示中值為 1)。為了查看正在發(fā)生的事情,讓我們放大目標(biāo)像素周圍的小區(qū)域。在圖5中,目標(biāo)像素使用紅色進行高亮,我們展示了模型的 softmax 預(yù)測結(jié)果和 logits。第一個像素(第一行)來自于訓(xùn)練集,所以與預(yù)期一樣,模型正確繪制了圖像,盡管目標(biāo)像素之外還有些誤判。下一個像素(中間行)來自于測試集,此時模型雖然預(yù)測正確了,但是目標(biāo)像素和周圍像素的概率值差別更小了。再看第三行的右邊圖像,這次模型則完全預(yù)測錯誤了。這個結(jié)果十分令人驚訝,因為采用 8:2 的均勻分割中,幾乎所有的測試像素都被訓(xùn)練像素包裹了。
圖5 對幾個相鄰像素的預(yù)測。網(wǎng)絡(luò)在訓(xùn)練集上的準(zhǔn)確率是完美的,但是在測試集上只有 86%,更令人驚訝的是,大多數(shù)測試集像素幾乎都被訓(xùn)練集像素包裹著。此外,從可視化結(jié)果來看,網(wǎng)絡(luò)在訓(xùn)練集上的結(jié)果也不是那么完美,因為目標(biāo)像素周圍還存在一些誤判。
那么為什么對于卷積神經(jīng)網(wǎng)絡(luò)而言,要在圖像中高亮出指定坐標(biāo)對應(yīng)的像素這么困難呢?是因為要將信息從更小的空間擴展到更大的空間比較困難嗎?那么換個方向是否會變得簡單一些呢?如果我們訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)將圖像壓縮成一個標(biāo)量坐標(biāo)(更類似于普通的圖像分類)會怎樣?
事實證明,卷積神經(jīng)網(wǎng)絡(luò)在這種監(jiān)督回歸任務(wù)上的效果依然糟糕。在圖10中,最左邊的點云顯示了正確的像素坐標(biāo),中間的點云顯示了模型的預(yù)測結(jié)果。通過對某些細節(jié)進行著色,我們可以發(fā)現(xiàn)該模型在測試集上表現(xiàn)明顯不佳,并且即便是在訓(xùn)練集上也是差強人意。
簡而言之,重點并不是研究方向。
這個看似簡單的坐標(biāo)變換任務(wù)會從兩個方向上導(dǎo)致卷積「失敗」:從笛卡爾坐標(biāo)系空間到獨熱像素空間,反之亦然。即使是在監(jiān)督訓(xùn)練的情況下,僅僅是繪制一個像素,甚至訓(xùn)練樣例就圍繞在測試樣例周圍時,卷積仍然無法學(xué)習(xí)到笛卡爾空間和像素空間之間轉(zhuǎn)換的平滑函數(shù)。此外,實驗中表現(xiàn)最好的卷積模型非常大,且需要大量時間進行訓(xùn)練。
事實證明這里有個簡單的解決方案。卷積操作是等變的,這意味著當(dāng)每個濾波器被作用于輸入以生成輸出時,它并不知道每個濾波器的位置。我們可以通過讓濾波器掌握自己的位置來協(xié)助卷積操作。我們的做法是向輸入的通道層添加兩個新層來實現(xiàn)的——一個具有 i 坐標(biāo),一個具有 j 坐標(biāo)。我們稱之為 CoordConv,如下圖6所示。
圖6 卷積層與 CoordConv 層的對比。CoordConv 層將填充有坐標(biāo)信息的附加通道作為輸入,坐標(biāo)信息包含了 i 和 j。
我們提出的 CoordConv 層是標(biāo)準(zhǔn)卷積層的簡單擴展,其中卷積操作依賴于坐標(biāo)信息。但是允許卷積濾波器獲知坐標(biāo)信息將會破壞平移不變性(Translation equivariance),所以這看起來似乎是個壞主意。因為平移不變性正是卷積操作最顯著的特征之一。
我們認(rèn)為卷積由于三個重要因素而取得了成功:它使用了相對較少的學(xué)習(xí)參數(shù);利用 GPUs 進行加速;學(xué)習(xí)的函數(shù)具有平移不變性。
CoordConv 層保留了前兩個屬性——相對較少的參數(shù)和高效的計算。而平移不變性的保留程度則是通過訓(xùn)練學(xué)習(xí)。如果來自坐標(biāo)的權(quán)重為 0,則 CoordConv 的行為就類似于標(biāo)準(zhǔn)的卷積。另一方面,如果平移依賴(Translation dependence)對于下游任務(wù)是有幫助的,那么它也能夠?qū)W習(xí)到。但是正如我們所看到的,最終的證據(jù)隱藏于卷積之中。
CoordConv 與一系列現(xiàn)有的理念相關(guān),例如局部連接層(Locally connected layers)、復(fù)合模式生成網(wǎng)絡(luò)(Compositional pattern producing networks)和語言建模中使用的位置嵌入(Position embeddings)。(閱讀我們的論文以了解更多與此有關(guān)的介紹)
首先,讓我們重新審視之前的任務(wù),看看 CoordConv 的表現(xiàn)如何。
如圖7和圖8所示,CoordConv 模型在監(jiān)督坐標(biāo)分類和監(jiān)督渲染任務(wù)中均取得了完美的訓(xùn)練和測試精度。此外,CoordConv 模型的參數(shù)也減少了 10~100 倍,并且訓(xùn)練達到完美性能的時間僅僅需要幾秒鐘,而不像卷積神經(jīng)網(wǎng)絡(luò)那樣需要一個多小時。
圖7 CoordConv 在監(jiān)督坐標(biāo)分類任務(wù)上快速達到了訓(xùn)練和測試的完美性能
圖8 許多 CoordConv 模型在監(jiān)督渲染任務(wù)中快速取得了完美的訓(xùn)練和測試性能
為了更細致地進行探討,下圖9顯示了在繪制相鄰像素時,普通反卷積與 CoordConv 的對比。
圖9 如前所述,反卷積在監(jiān)督坐標(biāo)分類任務(wù)上表現(xiàn)的馬馬虎虎,但是 CoordConv 卻在訓(xùn)練集和測試集上都取得了 100% 的正確率。并且解決方案明顯更簡單了。
在使用卷積繪制像素時,我們觀察到了偽像和過擬合。而在使用 CoordConv 時,我們在測試以及訓(xùn)練集上都達到了完美的性能表現(xiàn)。在監(jiān)督回歸任務(wù)中結(jié)果也是如此。雖然卷積不擅于處理回歸坐標(biāo),但是 CoordConv 卻能很好地建模該函數(shù),如下圖10所示。
圖10 卷積在監(jiān)督回歸任務(wù)中表現(xiàn)的非常差,但是 CoordConv 的表現(xiàn)卻很好。
到目前為止,我們已經(jīng)展示了卷積操作在處理非常簡單的任務(wù)時也會「失敗」,而我們通過提出 CoordConv 層來解決了這個問題。當(dāng)然我們還想知道:這個問題僅僅是這項坐標(biāo)轉(zhuǎn)換任務(wù)所特有的,還是說我們發(fā)現(xiàn)了一個核心問題,而這個核心問題長期以來一直隱藏在其它任務(wù)中,阻礙了這些任務(wù)的表現(xiàn)?為了回答這一疑惑,我們在針對各種任務(wù)的網(wǎng)絡(luò)中插入了 CoordConv 層。以下是我們發(fā)現(xiàn)的總結(jié)摘要,更多的詳情請參閱文論。
物體檢測
因為物體檢測模型在笛卡爾空間中觀察像素空間然后輸出一系列定界框(Bounding boxes),所以它們看起來很適合 CoordConv。而我們的直覺也得到了證實:在檢測畫布上散布的 MNIST 數(shù)字的簡單問題上,我們發(fā)現(xiàn)在使用 CoordConv 時,Faster-RCNN 網(wǎng)絡(luò)的 IOU 提高了約 24%。
圖像分類
在所有視覺任務(wù)中,我們認(rèn)為圖像分類任務(wù)能夠從 CoordConv 層上獲得的性能增益是最少的,因為分類任務(wù)更多地是與圖像內(nèi)容有關(guān),而不是圖像中目標(biāo)的位置。實際上,當(dāng)我們在 ResNet-50 的底部添加 CoordConv 層并在 ImageNet 上訓(xùn)練時,我們發(fā)現(xiàn)性能只有微弱的提升。
生成模型
在諸如生成對抗神經(jīng)網(wǎng)絡(luò)(GANs)和變分自動編碼器(VAEs)這樣的生成模型中,像素是隱式繪制的,這意味著在一個理想的世界中模型也許能編碼像位置坐標(biāo)這樣的高層次概念。直觀地說,CoordConv 可能對此有幫助。我們通過使用 Sort-of-SLEVR(這是一個包含各種形狀的簡單數(shù)據(jù)集)來訓(xùn)練生成對抗神經(jīng)網(wǎng)絡(luò)和變分自動編碼器,并可視化了中間的插值過程。
這是一個生成彩色圖形的簡單任務(wù)。下圖11所示的插值視頻展示了 CoordConv 如何改善了生成模型的性能,其中左邊是普通生成對抗神經(jīng)網(wǎng)絡(luò),右邊是 CoordConv 生成對抗神經(jīng)網(wǎng)絡(luò)。
通過使用生成模型,我們在隱式空間(Latent space)中的點之間使用插值方法來研究 CoordConv 所產(chǎn)生的影響。這也是用于評估生成模型泛化能力的常用方法。
圖11 普通卷積 GAN(左圖)和 CoordConv GAN(右圖)在隱式空間中的插值動畫。在普通 GAN 中,我們觀察到了與畫布相關(guān)聯(lián)的視覺偽像,以及淡入和淡出的現(xiàn)象。而 CoordConv GAN 中的對象則是連貫的,其運動也更加平滑。
對于左側(cè)的普通 GAN,其動畫整體看著還不錯。但是當(dāng)我們仔細觀察時,我們卻注意到并非所有物體都在移動,其中的視覺偽像與畫布關(guān)聯(lián)在了一塊,并且畫面中物體的某些部位也會時隱時現(xiàn)。當(dāng)我們將 CoorConv 層加入生成器和判別器時,生成結(jié)果變得更加平滑了。我們可以看到此時物體保持了整體的連貫性并且運動也非常流暢。
在訓(xùn)練 VAEs 的時候我們注意到了相似的模式。通過卷積,我們觀察到圖像中的部分物體時隱時現(xiàn),但是使用 CoordConv 之后,物體的運動變得更加平滑。
圖12 使用普通卷積 VAE(左圖)和 CoordConv VAE(右圖)在隱式空間中進行插值。在普通的 VAE 中物體存在時隱時現(xiàn)的問題,而 CoordConv VAE 的運動則更加流暢。
當(dāng)使用較大的 GAN 繪制大規(guī)模場景理解(Large-scale Scene Understanding, LSUN)的臥室場景時,基于卷積的 GAN 再次出現(xiàn)對象物體時隱時現(xiàn)的問題。而使用 CoordConv 層的 GAN 則呈現(xiàn)出了平滑的幾何變換,包括平移和形變。
圖13 在隱式空間中的第三次插值,這次采用了 LSUN 臥室數(shù)據(jù)集進行訓(xùn)練,左圖是普通卷積 GAN 而右圖是 CoordConv GAN。普通卷積中物體呈現(xiàn)出了時隱時現(xiàn)的問題。而使用 CoordConv 層的 GAN 則表現(xiàn)出了平滑的幾何變換,包括平移和形變
強化學(xué)習(xí)是一個有趣的領(lǐng)域,CoordConv 也許能夠發(fā)揮作用。我們訓(xùn)練了一些智能體來玩雅達利游戲,例如《吃豆人小姐》。我們認(rèn)為,如果卷積濾波器可以同時識別吃豆人小姐并提取她在迷宮中的位置,那么這有可能幫助算法學(xué)到更好的策略。
我們嘗試過將 CoordConv 添加到自己構(gòu)建的 Ape-X 平臺上,但是 CoordConv 并沒有立即提高性能。我們還嘗試了 A2C,這是一種流行的策略梯度方法,這時候 CoordConv 開始發(fā)揮作用。這可能反映了學(xué)習(xí)顯式策略和學(xué)習(xí) Q 函數(shù)之間的差異。我們測試了 9 場比賽,相比于標(biāo)準(zhǔn)卷積,其中有 6 場的結(jié)果是采用了 CoordConv 的 A2C 訓(xùn)練速度更快,或者取得了更高的最終結(jié)果。正如預(yù)期的那樣,我們注意到《吃豆人小姐》的分?jǐn)?shù)獲得了提高。有兩場比賽,CoordConv 與標(biāo)準(zhǔn)卷積表現(xiàn)相似,而有一場比賽CoordConv 表現(xiàn)則比標(biāo)準(zhǔn)卷積稍微差一些??偟膩碚f,這些結(jié)果表明 CoordConv 可能在強化學(xué)習(xí)中是有用的。
圖14 使用 A2C 訓(xùn)練雅達利游戲的結(jié)果。在 9 場比賽中,(a) 有 6 場比賽 CoordConv 的表現(xiàn)超過了標(biāo)準(zhǔn)卷積;(b) 有 2 場比賽,兩者表現(xiàn)一樣;(c) 有 1 場比賽,CoordConv 表現(xiàn)稍微差了一些
在本文中,Uber AI Lab 的研究人員們通過實驗表明了卷積神經(jīng)網(wǎng)絡(luò)對坐標(biāo)轉(zhuǎn)換任務(wù)建模的「無能」,并通過 CoordConv 層的形式引入了一種簡單的修復(fù)策略。他們的結(jié)果表明,使用 CoordConv 層可以提高部分應(yīng)用的性能。他們未來的工作將進一步評估 CoordConv 在大規(guī)模數(shù)據(jù)集中的優(yōu)勢,探索其在檢測、語言任務(wù)、視頻預(yù)測、空間變換網(wǎng)絡(luò)等模型中的效果。
不過另一方面,也有一些其他的研究者在看過 Uber AI Lab 的這項研究之后認(rèn)為他們的做法是“人工特征的借尸還魂”,為部分任務(wù)增加了有益的特征之后當(dāng)然可以提高模型的表現(xiàn),但這種做法是與表示學(xué)習(xí)、深度學(xué)習(xí)所倡導(dǎo)的“模型自己學(xué)習(xí)特征”的思想背道而馳的。你怎么認(rèn)為呢?歡迎大家留言討論。
論文地址:https://arxiv.org/abs/1807.03247
Via Uber AI Labs,雷鋒網(wǎng) AI 科技評論編譯
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。