Uber近日一篇論文引起許多討論:該論文稱發(fā)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)一個(gè)引人注目的“失敗”,并提出解決方案CoordConv。論文稱CoordConv解決了坐標(biāo)變換問題,具有更好的泛化能力,訓(xùn)練速度提高150倍,參數(shù)比卷積少10-100倍。當(dāng)然,這是在極大的計(jì)算力(100個(gè)GPU)的基礎(chǔ)上進(jìn)行的。這真的是重要的結(jié)果嗎?計(jì)算機(jī)視覺領(lǐng)域?qū)<褾ilip Piekniewski對(duì)此提出質(zhì)疑。
我讀了很多深度學(xué)習(xí)論文,通常每周都會(huì)閱讀幾篇。我讀過的論文可能已經(jīng)有上千篇。我發(fā)現(xiàn),機(jī)器學(xué)習(xí)或深度學(xué)習(xí)方面的論文普遍存在的問題是,它們通常處于科學(xué)和工程之間的某個(gè)無人區(qū),我稱之為“學(xué)術(shù)工程”(academic engineering)。我對(duì)其描述為:
以我個(gè)人的淺見而言,一篇科學(xué)論文應(yīng)該傳達(dá)一種有能力解釋某事的idea。例如,一篇證明數(shù)學(xué)定理的論文,一篇提出某種物理現(xiàn)象模型的論文。或者,一篇科學(xué)論文可以是實(shí)驗(yàn)性的,實(shí)驗(yàn)的結(jié)果告訴我們一些關(guān)于現(xiàn)實(shí)的基本知識(shí)。盡管如此,科學(xué)論文的核心思想是對(duì)一些非平凡的普遍性(和預(yù)測(cè)力)或?qū)ΜF(xiàn)實(shí)本質(zhì)的一些非平凡的觀察的相對(duì)簡(jiǎn)潔的表述。
一篇工程論文應(yīng)該介紹一種解決特定問題的方法。問題可能會(huì)因應(yīng)用而異,有時(shí)它們可能非常無趣而具體,但對(duì)某個(gè)領(lǐng)域的人來說卻是有用的。對(duì)于一篇工程論文來說,與科學(xué)論文不同的是:解決方案的普遍性可能不是最重要的。重要的是解決方案能夠有效地實(shí)施,例如,給定可用的組件,能比其他解決方案更便宜或更節(jié)能,等等。工程論文的核心思想是應(yīng)用,其余的僅僅是解決應(yīng)用問題的想法的集合。
機(jī)器學(xué)習(xí)介于兩者之間。機(jī)器學(xué)習(xí)領(lǐng)域既有一些明顯的科學(xué)論文(例如提出反向傳播backprop的論文),也有一些明顯的工程論文的例子,例如描述一個(gè)非常特殊的實(shí)際問題的解決方案。但機(jī)器學(xué)習(xí)中大多數(shù)論文似乎都是工程的,只不過它們的工程是指在一個(gè)學(xué)術(shù)數(shù)據(jù)集上設(shè)計(jì)出一種綜合的測(cè)量方法。為了顯示出優(yōu)勢(shì),一些特別的技巧被從沒有人知道的地方提取出來(通常具有極其有限的普遍性),并且經(jīng)過一些統(tǒng)計(jì)上不重要的測(cè)試后宣布該方法最優(yōu)。
還有第四種論文,它確實(shí)提出一個(gè)idea。這個(gè)idea甚至可能是有用的,但它同時(shí)也是微不足道的。為了掩蓋這種尷尬的事實(shí),“學(xué)術(shù)工程”重炮再次上膛,使得論文整體上看起來令人印象深刻。
這就是Uber人工智能實(shí)驗(yàn)室(Uber AI labs)最近的一篇論文“"An Intriguing Failing of Convolutional Neural Networks and the CoordConv Solution”(卷積神經(jīng)網(wǎng)絡(luò)的問題及其解決方案CoordConv)的情況,我將在下面詳細(xì)剖析這篇論文。
只需大約50行python代碼的事情
讓我們直接看這篇論文的內(nèi)容。
這篇論文的核心論點(diǎn)是:卷積神經(jīng)網(wǎng)絡(luò)在需要定位的任務(wù)上表現(xiàn)不太好,在這些任務(wù)中,輸出標(biāo)簽或多或少是輸入實(shí)體坐標(biāo)的直接函數(shù),而不是該輸入的任何其他屬性。
卷積網(wǎng)絡(luò)確實(shí)不能很好地解決這個(gè)問題,因?yàn)榫矸e神經(jīng)網(wǎng)絡(luò)的原始模型神經(jīng)認(rèn)知機(jī)(Neocognitron)的設(shè)計(jì)就是忽視位置的。接下來,作者提出了一個(gè)解決方案:在卷積層中添加坐標(biāo),作為附加的輸入映射。
卷積層和添加坐標(biāo)的CoordConv層
這聽起來非常聰明,但作者實(shí)際上提出的是該領(lǐng)域任何一名從業(yè)者都認(rèn)為是理所當(dāng)然的東西——添加一個(gè)更適合解碼所需輸出的特征(feature)。任何在計(jì)算機(jī)視覺領(lǐng)域做實(shí)際工作的人都不會(huì)認(rèn)為添加特征有什么非凡之處,盡管在深度學(xué)習(xí)圈的純粹學(xué)術(shù)爭(zhēng)論中這是一個(gè)激烈的話題,脫離實(shí)際應(yīng)用的研究人員認(rèn)為我們應(yīng)該只使用學(xué)習(xí)的特征,因?yàn)檫@種方式更好。因此,深度學(xué)習(xí)的研究人員現(xiàn)在開始喜歡特性工程,雖然這也許不是壞事……
總之,他們添加了一個(gè)特性,即坐標(biāo)的顯式值。然后他們創(chuàng)建了一個(gè)簡(jiǎn)單的數(shù)據(jù)集(稱之為Not-so-Clevr),以測(cè)試這一想法的性能。
Not-so-Clevr數(shù)據(jù)集
那么他們的實(shí)驗(yàn)是否聰明呢?讓我們看看。
論文中使用的Toy tasks
任務(wù)之一是基于坐標(biāo)生成一個(gè)one-hot圖像,或者基于一個(gè)one-hot圖像生成坐標(biāo)。實(shí)驗(yàn)表明,將坐標(biāo)添加到卷積網(wǎng)絡(luò)確實(shí)可以顯著提高性能。
不過如果他們不是直接跳到TensorFlow,也許這就不那么令人震驚了,他們會(huì)發(fā)現(xiàn),可以明確地構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò)來解決從one-hot到坐標(biāo)的關(guān)聯(lián)問題,而無需任何訓(xùn)練。對(duì)于這個(gè)任務(wù),我會(huì)使用三個(gè)操作:卷積、非線性激活、以及求和。幸運(yùn)的是,這些都是卷積神經(jīng)網(wǎng)絡(luò)的基本組成部分:
注意:one hot像素位圖到坐標(biāo)翻譯!一個(gè)卷積層,一個(gè)非線性激活,一個(gè)求和,最后一個(gè)減法。就是這樣。無需學(xué)習(xí),只有大約50行python代碼(帶注釋)……對(duì)于這個(gè)任務(wù),給定坐標(biāo)特征是微不足道的。毫無疑問,這是可行的。到目前為止,我們所用的知識(shí)還沒有超出一個(gè)剛上完ML 101課程的學(xué)生所能解決的。所以,他們不得不使用重型火炮:GAN。
好吧,讓我們用GAN試試這個(gè)合成生成任務(wù),一個(gè)帶有坐標(biāo)特征,一個(gè)沒有。好了,現(xiàn)在讓我們繼續(xù)看論文……
他們?cè)诟戒浀谋砀裰薪o出了結(jié)果:
他們?cè)贗mageNet上嘗試了這個(gè)坐標(biāo)特征,將它添加到ResNet-50網(wǎng)絡(luò)的第一層。我認(rèn)為不會(huì)有太大的差別,因?yàn)镮mageNet中的類別讀取不是位置的函數(shù)(如果存在這樣的偏差,那么在訓(xùn)練期間的數(shù)據(jù)增強(qiáng)應(yīng)該完全刪除它)。所以他們用100個(gè)GPU來訓(xùn)練網(wǎng)絡(luò)(100個(gè)GPU!天啊!)。然而,到小數(shù)點(diǎn)后第4位,結(jié)果才顯示出一點(diǎn)差異。Facebook、谷歌的人可能會(huì)用10000個(gè)GPU來復(fù)現(xiàn)這個(gè)結(jié)果吧。這些GPU能不能用來做些更重要的事情?
總結(jié)
這確實(shí)是一篇吸引人的論文。它揭露了當(dāng)前深度學(xué)習(xí)研究的淺薄之處,這些研究被荒謬的計(jì)算量所掩蓋了。為什么Uber AI 實(shí)驗(yàn)室要做這個(gè)研究?有什么意義?我的意思是,如果這些是某個(gè)大學(xué)的某些學(xué)生做的,他們想做出點(diǎn)什么投給會(huì)議,那么無可厚非。但Uber AI?我以為這些人應(yīng)該致力于打造自動(dòng)駕駛汽車,不是嗎?不過,比這篇論文更有趣的是哪些對(duì)這個(gè)結(jié)果的無足輕重?zé)o知,而去贊美它的追隨者。請(qǐng)閱讀原始博客(https://eng.uber.com/coordconv)的評(píng)論,或者Twitter上的評(píng)論,贊美者甚至包括一些著名的DL研究人員。他們顯然花了很多時(shí)間盯著GPU上的進(jìn)度條,才意識(shí)到他們?cè)诜Q贊一些顯而易見的東西,這些顯而易見的東西可以用幾行python代碼手工構(gòu)建。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4804瀏覽量
102626 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8487瀏覽量
133977 -
python
+關(guān)注
關(guān)注
56文章
4823瀏覽量
86060
原文標(biāo)題:【卷積神經(jīng)網(wǎng)絡(luò)失陷】幾行Python代碼搞定,偏要用100個(gè)GPU!
文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論