當前位置:
首頁 > 知識 > 幾行Python代碼搞定,偏要用100個GPU!

幾行Python代碼搞定,偏要用100個GPU!

【導讀】Uber近日一篇論文引起許多討論:該論文稱發現卷積神經網路一個引人注目的「失敗」,並提出解決方案CoordConv。論文稱CoordConv解決了坐標變換問題,具有更好的泛化能力,訓練速度提高150倍,參數比卷積少10-100倍。當然,這是在極大的計算力(100個GPU)的基礎上進行的。這真的是重要的結果嗎?計算機視覺領域專家Filip Piekniewski對此提出質疑。

(文/Filip Piekniewski)我讀了很多深度學習論文,通常每周都會閱讀幾篇。我讀過的論文可能已經有上千篇。我發現,機器學習或深度學習方面的論文普遍存在的問題是,它們通常處於科學和工程之間的某個無人區,我稱之為「學術工程」(academic engineering)。我對其描述為:

  1. 以我個人的淺見而言,一篇

    科學論文

    應該傳達一種有能力解釋某事的

    idea

    。例如,一篇證明數學定理的論文,一篇提出某種物理現象模型的論文。或者,一篇科學論文可以是實驗性的,實驗的結果告訴我們一些關於現實的基本知識。儘管如此,科學論文的核心思想是對一些非平凡的普遍性(和預測力)或對現實本質的一些非平凡的觀察的相對簡潔的表述。
  2. 一篇

    工程論文

    應該介紹一種解決特定問題的

    方法

    。問題可能會因應用而異,有時它們可能非常無趣而具體,但對某個領域的人來說卻是有用的。對於一篇工程論文來說,與科學論文不同的是:解決方案的普遍性可能不是最重要的。重要的是解決方案能夠有效地實施,例如,給定可用的組件,能比其他解決方案更便宜或更節能,等等。工程論文的核心思想是應用,其餘的僅僅是解決應用問題的想法的集合。

機器學習介於兩者之間。機器學習領域既有一些明顯的科學論文(例如提出反向傳播backprop的論文),也有一些明顯的工程論文的例子,例如描述一個非常特殊的實際問題的解決方案。但機器學習中大多數論文似乎都是工程的,只不過它們的工程是指在一個學術數據集上設計出一種綜合的測量方法。為了顯示出優勢,一些特別的技巧被從沒有人知道的地方提取出來(通常具有極其有限的普遍性),並且經過一些統計上不重要的測試後宣布該方法最優。

還有第四種論文,它確實提出一個idea。這個idea甚至可能是有用的,但它同時也是微不足道的。為了掩蓋這種尷尬的事實,「學術工程」重炮再次上膛,使得論文整體上看起來令人印象深刻。

這就是Uber人工智慧實驗室(Uber AI labs)最近的一篇論文「"An Intriguing Failing of Convolutional Neural Networks and the CoordConv Solution」(卷積神經網路的問題及其解決方案CoordConv)的情況,我將在下面詳細剖析這篇論文。

論文地址:https://arxiv.org/pdf/1807.03247.pdf

只需大約50行python代碼的事情

讓我們直接看這篇論文的內容。我們甚至不需要閱讀論文,只需看作者上傳的一段視頻就可以基本了解了:

這篇論文的核心論點是:卷積神經網路在需要定位的任務上表現不太好,在這些任務中,輸出標籤或多或少是輸入實體坐標的直接函數,而不是該輸入的任何其他屬性。

卷積網路確實不能很好地解決這個問題,因為卷積神經網路的原始模型神經認知機(Neocognitron)的設計就是忽視位置的。接下來,作者提出了一個解決方案:在卷積層中添加坐標,作為附加的輸入映射

幾行Python代碼搞定,偏要用100個GPU!

卷積層和添加坐標的CoordConv層

這聽起來非常聰明,但作者實際上提出的是該領域任何一名從業者都認為是理所當然的東西——添加一個更適合解碼所需輸出的特徵(feature)。任何在計算機視覺領域做實際工作的人都不會認為添加特徵有什麼非凡之處,儘管在深度學習圈的純粹學術爭論中這是一個激烈的話題,脫離實際應用的研究人員認為我們應該只使用學習的特徵,因為這種方式更好。因此,深度學習的研究人員現在開始喜歡特性工程,雖然這也許不是壞事……

總之,他們添加了一個特性,即坐標的顯式值。然後他們創建了一個簡單的數據集(稱之為Not-so-Clevr),以測試這一想法的性能。

幾行Python代碼搞定,偏要用100個GPU!

Not-so-Clevr數據集

那麼他們的實驗是否聰明呢?讓我們看看。

幾行Python代碼搞定,偏要用100個GPU!

論文中使用的Toy tasks

任務之一是基於坐標生成一個one-hot圖像,或者基於一個one-hot圖像生成坐標。實驗表明,將坐標添加到卷積網路確實可以顯著提高性能。

不過如果他們不是直接跳到TensorFlow,也許這就不那麼令人震驚了,他們會發現,可以明確地構建一個神經網路來解決從one-hot到坐標的關聯問題,而無需任何訓練。對於這個任務,我會使用三個操作:卷積、非線性激活、以及求和。幸運的是,這些都是卷積神經網路的基本組成部分:

幾行Python代碼搞定,偏要用100個GPU!

注意:one hot像素點陣圖到坐標翻譯!一個卷積層,一個非線性激活,一個求和,最後一個減法。就是這樣。無需學習,只有大約50行python代碼(帶注釋)……對於這個任務,給定坐標特徵是微不足道的。毫無疑問,這是可行的。到目前為止,我們所用的知識還沒有超出一個剛上完ML 101課程的學生所能解決的。所以,他們不得不使用重型火炮:GAN。

好吧,讓我們用GAN試試這個合成生成任務,一個帶有坐標特徵,一個沒有。好了,現在讓我們繼續看論文……

他們在附錄的表格中給出了結果:

幾行Python代碼搞定,偏要用100個GPU!

他們在ImageNet上嘗試了這個坐標特徵,將它添加到ResNet-50網路的第一層。我認為不會有太大的差別,因為ImageNet中的類別讀取不是位置的函數(如果存在這樣的偏差,那麼在訓練期間的數據增強應該完全刪除它)。所以他們用100個GPU來訓練網路(100個GPU!天啊!)。然而,到小數點後第4位,結果才顯示出一點差異。Facebook、谷歌的人可能會用10000個GPU來複現這個結果吧。這些GPU能不能用來做些更重要的事情?

總結

這確實是一篇吸引人的論文。它揭露了當前深度學習研究的淺薄之處,這些研究被荒謬的計算量所掩蓋了。為什麼Uber AI 實驗室要做這個研究?有什麼意義?我的意思是,如果這些是某個大學的某些學生做的,他們想做出點什麼投給會議,那麼無可厚非。但Uber AI?我以為這些人應該致力於打造自動駕駛汽車,不是嗎?不過,比這篇論文更有趣的是哪些對這個結果的無足輕重無知,而去讚美它的追隨者。請閱讀原始博客(https://eng.uber.com/coordconv)的評論,或者Twitter上的評論,讚美者甚至包括一些著名的DL研究人員。他們顯然花了很多時間盯著GPU上的進度條,才意識到他們在稱讚一些顯而易見的東西,這些顯而易見的東西可以用幾行python代碼手工構建。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

Spring AOP 實現日誌記錄功能
JSP和Servlet初級知識點總結

TAG:程序員小新人學習 |