歡迎光臨
每天分享高質量文章

NIPS風波 | 獲獎者登臺開炮:ML是煉金術,大神LeCun強硬回懟

誰能想到,NIPS這種頂會都能風波乍起。

Ali Rahimi(阿裡·拉希米),因為2007年發表的一篇論文,獲得今年的“Test of Time”最具時間價值大獎。當然,阿裡作為最佳論文作者理所應當的登臺演講。

起初,這個演講主要介紹之前的研究成果。阿裡說從很多方面來講,我們的狀況都比10年前好多了。在技術上,取得了很大的進步,街上跑著自動駕駛汽車,人工智慧可以乾很多事情……基於機器學習技術,能產生出幾十億美元的公司。

後來,火藥味逐漸濃烈起來,阿裡朝著整個深度學習界開了一槍,他說:

但某些方面更糟糕了。

空氣中飄蕩著一種自鳴得意的感覺,我們會說“人工智慧是新的電力”。(安德魯老師最愛的說法)

我想換個比方:機器學習已經成了煉金術。

煉金術挺好的,煉金術沒毛病,它自有它的地位,煉金術“管用”。

煉金術帶來了冶金、紡織、現代玻璃製造工藝、醫療等等領域的發明。但同時,煉金術還相信水蛭能治病,廉價金屬能變成金子。

從當年的煉金術到現在的物理、化學,到我們現在對宇宙的認識,科學家們要消解掉2000年的煉金術理論。

如果你要做個照片分享系統,用“煉金術”就行。但我們現在所做的遠遠超出了這個範圍,我們所做的系統用在醫療領域,用在社交媒體上,甚至能影響大選。

我希望我所生活的世界裡,這些系統都建立在嚴格、周密、可驗證的知識之上,而不是基於“煉金術”。

我有點懷念十年前NIPS上質疑各種想法夠不夠嚴謹的“學術警察”,希望他們回來。

(不關心技術細節的可以跳過下麵的例子)

舉個例子,不知道你有沒有經歷過這樣的情況:從零開始搭建、訓練了一個神經網路,然後發現它不管用的時候,總覺得是自己的錯。這種狀況我大約每三個月就要經歷一次,我想說,這不是你的錯,是梯度下降的錯。

比如說這個最簡單的深度神經網路,兩層線性網路:

左邊是我的模型,右邊是損失函式,底下是不同引數設定下梯度下降的過程。有時候loss一開始下降得很快,後來就不動了。你可能會覺得遇到了區域性最小值,或者鞍點,loss和0相差還很遠。

換一個下降的方向,很快就能最佳化到最低。

你可能會覺得這個例子不自然,或者說梯度下降在更大的神經網路上表現得不錯,我的回答是:第一,很多人都被梯度下降坑過;第二,我們把自己的工具用在簡單的例子上,從中學習知識,然後應用到更複雜的場景,這正符合我們建立知識的方式。

梯度下降帶來的痛苦是真實存在的。

上個月,我的朋友Boris給我發了封郵件:

週五,另一個組有人改動了TensorFlow內部的預設舍入樣式,從“舍到0”改成了“四捨五入到偶數”。

我們的訓練就崩潰了,誤差從<25%飆升到了~99.97%。

這樣的郵件我收到過不少,網上也有人在討論類似的問題。

會發生這種情況,是因為我們把脆弱的最佳化技巧用到了我們不理解的loss上, 我們的解決方案在本來就已經很神秘的技術上增加了更多神秘性。

Batchnorm是加速梯度下降的一種方法,把Batchnorm插入到深度神經網路的層中,梯度下降的速度就會更快。

我不排斥使用一些自己不懂的技術,比如說我是坐飛機來的,並不完全清楚它的工作原理,但知道有整個航空界都在研究這項技術就很安心了。

而對於Batchnorm的工作原理,我們只知道它的功能是“reducing internal covariate shift”。

可是為什麼這樣就能加速梯度下降了?有沒有相關的理論或者實驗?你甚至都不清楚internal covariate shift是什麼,就不想要一個定義嗎?

Batchnorm已經成了構建深度神經網路的一個基礎工具,但我們對它幾乎一無所知。

想想過去一年裡你為了刷競賽榜單而做的實驗、嘗試的新技術;再想想過去一年裡你為瞭解釋奇怪現象、尋找其根源而做的努力。前者,我們做得很多,後者,我們應該再多做一些。簡單的實驗和理論是幫我們理解複雜系統的基礎。

我們還有一件事可以做。現在,所有商用硬體上執行的成熟計算引擎都是梯度下降的變體,處理著數百億的變數。

想象一下,如果我們有能在標準商用硬體上執行,處理數百億變數線性解算器或者矩陣分解引擎,想象一下這樣我們能做出多好的最佳化演演算法,用多好的模型來做實驗,當然,這在數學上和系統上都很難,但這正是我們要解決的問題。

我對這個圈子有真摯的愛,這也是為什麼我會站在這兒,號召大家更嚴格精確,別那麼像煉金術師。

希望我們可以共同努力,將機器學習從“煉金術”變成“電力”。

完整演講,參見下麵這段影片: