近日,Reddit 上出現了一個頗有爭議性的問題,提問者懷疑深度學習的低門檻會破壞這個領域的聲譽。業餘者的加入甚至會成為深度學習成長的障礙,因為他們會輕率地將自己不成熟的知識和觀念傳播出去,最終會影響到業界對深度學習的認同。對此,人們從研究者和工程師的對比、技術成熟階段性、行業標準和個人經驗等角度進行了廣泛而熱烈的討論。機器之心編譯了其中的重點討論,原文連結請見文末。
問題
長期以來,我看到很多人自封為深度學習專家、奇才,或者諸如此類的稱呼。沒有機器學習或者深度學習的教育經歷或研究背景,他們僅僅安裝了 tensorflow 或 keras,然後跑了幾段 github 程式碼就以為掌握了專業的深度學習知識。接著他們立刻稱自己為深度學習專家,撰寫部落格教程,甚至有膽量教課寫書。不久前,我收到了兩個人關於深度強化學習一類書的寫作計劃,他們沒有任何在機器學習、深度學習抑或深度強化學習方面的教育經歷和工作經驗,只是覺得自己已然是專家,不得不寫本書出來...
為什麼這使我困擾?
這破壞了深度學習的聲譽。很多公司無法辨認這些所謂的「專家」。面試官不瞭解深度學習,對 NIPS、ICML 等毫不關心,無法正確地評估面試者。因此他們最終僱傭了這些所謂的「專家」,然後當其「深度學習」方案最終失敗,面試官得出結論,深度學習毫無價值,就是炒作。隨著越來越多的公司遇到這種情況,他們對深度學習更加懷疑。現在業界人士已經半開玩笑地把人工作智慧稱為人工智障。
你怎麼看?你是否同意上述觀點?如果你同意,我們該做什麼?啟動一個深度學習招聘網站嗎?
補充:我所謂的低進入門檻並不是指低學歷。我指的是你無需掌握足夠的機器學習或深度學習知識,便能成功解決一些經典問題;但是對於全新的問題,你確實需要具備專業知識和研究經驗。
回答與討論
NichG:實際情況是,絕大多數公司更受用的是工程師而不是研究者。現在大多數手頭工作是把標準技術應用於具體的商業用例上。投資新研究往往得不償失。
因此大多數情況下,滿意於從正確位置複製貼上正確程式碼這種工作方式的人才是你真正需要的。當然,除此之外也要知道標準技術什麼時候不工作及其原因是什麼。
hippomancy:說的好。我的公司最近組建了一個深度學習團隊,包括兩名統計學博士、一名機器學習博士和一名博士工程師。統計學家試圖構建聰明的分佈近似以更好地選擇特徵。機器學習博士提供解決該問題的前沿對抗性方法,並寫好了 tensorflow 模型。工程師則寫了「from sklearn.ensemble import random_forest」,因為她知道這很可能工作不錯。一天結束之時,統計學家的假設錯了,對抗性模型缺乏足夠的資料進行訓練,但是隨機森林一切正常。
BadGoyWithAGun:在絕大多數領域,工程師無需假裝成研究者。
automated_reckoning:這很可能是由於工程師實際負責現實世界中事物的運轉。最後,研究者由於研究成果拿到錢,工程師由於解決方案拿到錢。
demonFudgePies:而且,作為一個在「四大」工作的人,我認為不僅僅是由於其有更好的伺服器,它們還十分明確地讓工程師從事工程工作,研究者從事研究工作。研究者被其他知識淵博、有影響力的研究專家聘用,他們知道如何區分所謂的「專家」與專家。
visarga:你無權「保護你的聲譽」。人們有權利自由使用 AI 工具,進行相關寫作。如果一個公司不知道如何招聘深度學習人才,只好自食其果。
FermiAnyon:我的問題不同,但是相關。我在這個領域屬於半路出家,獲得了物理學博士學位,自高中開始一直堅持寫程式碼。近一年來我閱讀了手頭所有關於機器學習的東西,並拿自己的個人專案練手。雖然我是機器學習新手,但在程式設計方面很老練。最近我為投簡歷的事很苦惱,有很多人在這兩方面是新手,他們只是看了一些 youtube 影片,也許隨便學了些教程,但從沒有把技術應用到實際問題上,而我至少有機器學習方面的實操經驗。我根據自身情況就說這麼多,供面試官參考。
FutureIsMine:深度學習目前很火,任何時候有什麼技術火起來的時候,就會有一些自稱為專家的狂熱者出現。這在移動裝置領域出現過,在上個世紀 90 年代 Java 領域出現過,在大資料領域也出現過。這並不是深度學習的錯,只是行業標準尚未樹立起來的現象而已。
我並不認為近年大部分當前最佳宣告是(如你所說的)不可重現的。每一樣事物的成長都需要經歷加德納技術成熟度曲線(gartner hype cycle),有些領域(比如影像轉換)甚至會有多重標準。你所說明的問題其實是,出現了很多視覺化和形象化的 AI 成果,但實際上要在特定的案例中實現是很困難的。
mszarvas:當前最佳(SOTA)結果不可重現是什麼意思,有具體的例子嗎?是第三方無法重現,還是甚至用釋出的參考程式碼也無法重現?
我曾經見過即使用釋出的程式碼也不能重現的情況,這使我懷疑大多數的宣告結果。但我仍然想保持樂觀,也許作者只是出現了一些失誤。在我看來,這個領域需要樹立一些標準,不應該接受任何沒有標準差的孤立結果(缺少對比)。孤立結果可能只是異常值而已。
在這樣的研究環境下,很多 SOTA 宣告其實都不堪一擊。更糟糕的是,視發表這些錯誤的 SOTA 宣告為正當合理的,會把那些使用正確研究方法的研究者排除在競爭之外。
我們至少應該鼓勵,以後的論文發表還需要:
1. 釋出程式碼;
2. 發表實驗的完整日誌。
這兩樣東西有助於尋找研究中的錯誤。
jbcraigs:低門檻其實是一件好事,因為產業中不僅需要高階研究員,還需要能將概念實現到日常應用中的工程師。
_MandelBrot:在商業領域中,構建一個真正的學習/資料管道是相當大的挑戰。尤其是使用了多個無法訪問的舊有 IT 系統工作的時候,而很多企業服務完全就是這樣子的。
torvoraptor:我面試過的大多數 PhD 都沒有做出什麼有意思的成果,使他們能和一個徹底瞭解 DL/ML/GenML 工程師相提並論。而理論基礎紮實的工程師和有實踐能力的 PhD 都是很罕見的。
PhD 過分關注創新性,而不夠重視簡單性和對現有知識的複用,這對於構建現實世界中的系統是很不利的。而大多數工程師剛好相反。
目前可能只有少於 200 個人是真正能持續做出有意義的成果的,但也並不意味著其他人應該就此放棄。還有,並不因為這少於 200 個人都有 PhD,於是每一個機器學習博士畢業生都將自動成為「高階研究者」。只因為他們發表過一些論文,提出一些新的深度學習架構,而並沒有人有興趣去重現他們的結果。
693sniffle:這其實和個人計算機發展迅猛的年代很類似。突然間有無數的人建立了軟體設計公司,然後拿出糟糕的 App 產品,沒有人知道誰將成為比爾蓋茲。
目前這樣的現狀是因為產業的需求量特別大,供不應求,因此會出現很多的投機者。
unnamedn00b:機器學習領域有今天的成就並不和開放性、包容性相斥,而是依賴於它們。並且,開放性的文化也是社群的一大優勢,這並不是巧合。
always_trade:不同意!這不過是該領域中真正的專家和從業者取得巨大成就的結果,僅僅意味著公司們需要有更好的眼光,以找到貨真價實的人,不需要擔心。
realSatanAMA:我有 20 年的專業程式設計經驗,並自學了 6 年的機器學習。我現在從事的工作幾乎完全是機器學習的,但我仍然遠遠稱不上是「專家」。我的公司僱傭了 4 個 PhD 以接替我的工作,但他們還不能從兩年的研究成果中提取出任何比我的哪怕是很簡單的實現要更好的東西。面向客戶的機器學習的意義是,最容易的部分是設計出有預測能力的模型,且在可接受的誤差範圍之內。而最難的部分是構建系統以把所有模型整合到現有的基礎架構中,並搭配 UI 展示,以說服客戶接受你的產品。我大部分的時間都用於擴充套件雲伺服器群集,用於傳輸資料。對於機器學習「專家」來說,學習如何讓模型在大規模資料中執行得更快,比提出一個新模型更加有用。
gabrielgoh:計算機程式設計是很困難的,非常非常的難!從菜鳥到程式設計專家乃至真正的大師需要走很長的路。在真正開始寫自己的第一行程式碼之前,你需要熟悉抽象代數、離散數學和計算複雜度的基本概念。直到精通了多項式分層之前,不要妄想真的能找到工作!你需要閱讀《The art of computer programming》的全 8 卷內容,完成所有的練習。然後閱讀《Concrete mathematics》,再從頭到尾一口氣看完 PCP 理論的證明,不理解的話就從頭再來。你需要發明自己的組合語言,並編寫一個 C 編譯器,自己在 Linux 核心上執行它。一步一步來,記得隨時寫筆記。最後,當你完成了啟動順序(boot sequence)的時候,再從 Python 直譯器開始學習。當你終於能寫下自己的完整程式碼,並且成功編譯的時候,恭喜你!已經掌握了基礎知識。但是,離真正的程式設計師還很遠。