做了 5 年機器學習研究,我發現了這 7 個真相
InfoQ · 科技 ·

做了 5 年機器學習研究,我發現了這 7 個真相

在Mindsdb從事3年自動機器學習工作後,我辭

在Mindsdb從事 3 年自動機器學習工作後,我辭職了,至少我不會在短時間內從事任何與機器學習相關的職業工作。掐指一算,我已經做了 5 年機器學習研究,但直到今天,我才終於搞清楚了很多自己之前不知道的事物,甚至我還可能覺察到一些別人不知道的東西。


本文總結了我從事機器學習工作以來總結到的收穫,請不要將這當作「專家總結」,你可以把它想像成局外人的一件藝術作品——一個對時代精神進行了不同尋常的深入研究,卻沒有成為「社區」一部分的某個人的收穫。

機器學習研究的作用是什麼?


早在 5 年前,我就曾接觸過機器學習研究。但直到今天,機器學習研究的作用對我來說仍然是個謎。


大多數科學子領域(真正的領域)都可以聲稱,它們是一個理論構建和數據收集的雙重過程。更多的理論領域,比如那些圍繞數學和計算機科學這兩個術語展開的領域,取得的進步幾乎完全來自概念層面。這些概念是如此基礎,似乎不太可能被取代,比如歐幾里得元素等等。


但機器學習正處於一個奇怪的十字路口。即使我們承認它和物理學一樣具有理論上的嚴謹性,它仍然缺乏永恆的實驗觀察。這並不是因為參與者缺乏美德,只是它研究的對象是一個移動的目標,而不是一個具體的現實。


人們最多可以提出這樣的永恆主張:


給定<某某硬體>,可以在 ImageNet 的<某某部分數據集>上獲得<某某精度>。

給定<X>數據集,並使用整個數據集保留一個 CV,我們可以獲得某些精度函數的 x/y/z 的最新值。

給定允許可編程代理與之交互的<Y>環境,我們可以在循環/懲罰/時間/觀察 & 獎勵/知識/理解矩陣上達到 x/y/z 點。


但這些並不是理論本身所圍繞的那種主張,機器學習帶來的易於驗證且永恆的收穫在理論上是無趣的。最多可以說,他們對在特定任務中的數字硬體性能設定了下限。


此外,機器學習也沒有強有力的理論保證作為後盾。雖然有一些「小」的理論保證可以幫助我們進行更廣泛的實驗,例如證明在特定範圍內的可微性等等。但在理想化條件下,一些理論保證最多可以指向潛在的實驗路徑。


可能有人會認為機器學習是一個非常模糊的領域,甚至大多數數據都是假的,大多數發表的論文都是為了在更廣泛的學術論文引用遊戲中獲勝。


然而,事實上,機器學習可能是學術界唯一正確運作的領域。通常情況下,機器學習論文要附帶代碼和數據,以及足夠嚴格的方法,以便於其他人重複研究。論文提出的觀點通常很容易用作者提供的工具進行證明和獲取。雖然也有例外,但整體而言還是比較少的。


更重要的是,與數學和計算機科學領域不同,機器學習中的重複研究不是留給十幾位有大量空閒時間的專家的。如果你想驗證一篇最新的 NLP 論文,你只需要掌握 CS101 知識就可以了。但在數學等領域,這是不可能的。因為在數學領域,現代「定理」(有時寫在一本厚厚的書上)的有效性取決於少數專家的一致意見,而不是一個自動化的定理證明器。


事實上,機器學習中的許多實際工作都是由圈外人完成的,他們沒有相關的學術背景,或者幾乎沒有學術背景。這與其他領域正相反。在其他領域中,證書主義是絕對的權威,並且人們也習慣於按資排輩。

什麼是軟體能做,而硬體做不到的?


廣義上,機器學習研究包括基於 LA 庫或集群工具的工作,這些研究似乎總是傾向於重蹈覆轍。機器學習中的主要現代技術,似乎可以被稱為對 20、30 甚至 50 年前想法的輕微概念重構。


試問一下,70 年代以來,機器學習的進步中有多少是軟體,多少是硬體?很遺憾,研究類似問題的論文少的驚人。因為眾所周知,在任何語言任務中,試圖用某種 T5 等價計算在一定規模上訓練一顆巨大的決策樹,都不會與 T5 相匹配,而且調整算法的任務也不簡單。


這個問題本身是一個沒有實際意義的問題,因為總是需要一些研究來開發最適合硬體發展的軟體。一個更好的問題可能是:如果機器學習研究的數量減少了 1000 倍,會對性能或可處理任務的廣度產生任何影響嗎?


直覺告訴我,未來的大多數進步都會是硬體產生的結果,而對於我們這些更喜歡專注於軟體的人來說,可以做的是:

  1. 先弄清楚硬體的進步能夠讓一個人在 2-4 年內做什麼,尋求資金,圍繞這些突然出現的機會創建一家公司;
  2. 試圖尋找範式轉變,修復浪費 99%資源的瓶頸,這些瓶頸深深紮根於我們的思維中,我們甚至無法看到它們。計算出 99%的可用計算能力正在/實際上/沒有被使用,並且可以使用這個很酷的技巧。想出一個簡單的抽象,在任何可用的任務上單獨執行接近於 SOTA。

自動化機器學習


過去幾年,我的大部分工作都是圍繞自動化機器學習的,所以我帶有偏見地認為,自動化機器學習是機器學習中很重要的一部分。事實上,無論是學術界還是產業界,在機器學習領域工作的大部分人,似乎都在從事自動化邊緣的工作。


相關的學術論文可以歸結為以下幾個步驟:


  • 架構。
  • 對超參數進行一些小的修改。
  • 在幾個數據集上運行基準測試。
  • 證明一些理論保證,這些保證通常不適用於任何現實世界的訓練場景,並且可以通過經驗證明(例如,當數據符合某種理想分布時,可微性、一致收斂性)
  • 添加足夠的填料。


而數據科學家和機器學習工程師的工作也可以歸結為以下幾個步驟:


  • 嘗試一些易於使用的模型,如果設置正確,這些模型不需要 100 行代碼就可以使用。
  • 在測試數據上儘量調優超參數的單元精度,即使它在現實中有點糟糕,也仍然值得部署到生產中。
  • 將其包裝在某種 API 中供後端使用。
  • 如果需要,編寫一個 cron 定時任務,時不時地對其進行訓練。
  • 編寫一個很長的 PPT,並向 5 個(有 P 開頭或 C 開頭職位頭銜的)人演示,這樣他們就可以放心地允許你部署。


廣義上講,這似乎是一件非常容易自動化的事情。但似乎這些人的工作與第 1-4 步沒有任何關係,也許模糊的理論和幻燈片才是重點。


或許這是一種簡化的思考方式,但換種角度來看,如果自動化機器學習真的這麼好,為什麼更多的 Kaggle 排行榜不是由使用這些軟體包的人所主導?

機器學習中的基準和競爭


與論文發表量相比,大家對基準和競爭的興趣似乎並不高。arxiv 上每天出現的與機器學習相關的論文數量遠遠超過 100 篇,而登上代碼排行榜的論文數量卻要小得多。


我認為大多數研究人員證明這一點的方式是,他們沒有試圖用他們的技術在任何事情上「競爭」,也沒有試圖提高某種精度分數,而是試圖為設計和思考模型提供有趣的理論支持方向。


這本身沒問題,但事實上,據我所知,沒有任何一個突破性的技術是完全基於數學保證的,並且需要數年才能成熟。通常的情況是,如果某個東西「起作用」並得到廣泛採用,這是因為它立即改善了結果。花費幾年甚至幾十年才能實現的突破是影響廣泛的架構理念,但這種突破非常少。


現實情況是,人們在論文中假設「通用」技術,例如優化器或增強方法,手搖幾個公式,然後在不到 12 個數據集的模型因變量(如優化器優化的架構、增強算法使用的估量器等)中,進行小到微不足道的基準測試。


這不是我對三流論文的批評。在我的腦海中,我可以說出像 LightGBM、改進的 ADAM 和 lookahead 等理論。對我和其他許多人來說,它們是遊戲規則的改變者,已經證明了它們在許多現實問題中的價值,並且它們最初是在幾乎沒有任何實驗的論文中被提出來的。


我認為當前的問題歸結為以下三點:


  1. 缺乏「通用」基準測試套件。OpenML自動機器學習基準測試最接近通用基準測試,但其問題焦點非常狹窄,僅限於測試端到端的自動機器學習方案。理想的通用基準測試應該具有多對多的體系結構到數據集的映射,允許替換某些組件,以便作為更大整體的一部分評估新技術。在某種程度上,我曾幻想將 Mindsdb 基準測試套件構建成這樣,但我懷疑是否有人真的想要這種解決方案,因為沒有激勵結構。
  2. 缺乏競爭。我的意思是,像 Kaggle 這樣的網站和十幾個特定行業的克隆網站,它們的格式對用戶提出了很多要求,並且競賽頒發的獎勵也比較吝嗇。
  3. 上述 2 個問題的一個潛在組合是,機器學習中最「有價值的」問題甚至很難進行基準測試或競爭。翻譯、文本嵌入生成和自動駕駛等任務是各種級別的難以用一些指標進行檢測來客觀判斷的任務。


這又回到了一種觀點,即:如果你做技術開發工作,你最好專注於範式轉變或產品化,除非你明確地得到報酬去做其它事情。

機器學習在特定領域是否達到了「最先進水平」?


另一個有趣的問題是,機器學習在特定領域是否達到了「最先進水平」?這種問題可以包含在一個.csv 文件中,使用 0 到 1 的精度函數進行評估,並在速度、數學保證和「可解釋性」方面發生了很大變化。


儘管如此,我們目前還是無法確定地回答這個問題。


我幾乎能肯定回答的是,從學術研究人員到行業研究人員,再到普通的中型公司數據科學家,他們對獲得最先進結果的想法完全不感興趣。


我很幸運地(或者不幸地)與幾十個組織交流它們的機器學習實踐,我的印象是,大多數「想要使用機器學習」的組織和項目,甚至還沒達到機器學習的「數據驅動」階段。它們希望從結論開始,憑空做出預測。他們對評估一個算法是否足以用於生產的想法令人目瞪口呆。


大約 30 年前,一位醫生發表了一篇論文,在這篇論文中他重新發明了六年級數學,試圖找出如何評估他的糖尿病患者的方法。這發生在個人電腦普及的時代,人們會認為需要標準化計算的、生死攸關的決定肯定是由一台機器完成的,而不是一個連微積分都沒聽說的人。更糟糕的是,考慮到我們談論的是一個實際發表論文的人,這就是當時該領域 0.1%的頂尖人物,只有神知道其他人在幹什麼。


我有一種感覺,無論這個問題所描述的更廣泛的現象是什麼,它仍然是機器學習對其它領域缺乏影響的根本原因。通過捨入誤差來提高某些問題的精度,或者從理論上保證算法是否在完美解的 0.3%以內,或者為了更容易解釋而對參數進行精簡,都不太可能有所幫助。


在我看來,人們在使用經典機器學習時的大多數問題都是人,沒有多少研究可以解決這個問題。

機器學習更像是外星人的大腦


另一方面,機器學習正越來越多地應用於「非經典」問題,例如語言問題或駕駛問題。在這個領域內,有監督和無監督的分別似乎消失了,人們試圖將算法解釋為簡單的數學,而不是基於約束的生成系統自我選擇,變得像用大腦做這件事一樣愚蠢。


宏觀來講,在某個方向上有一定的影響力會產生高度專業化的方法和算法,這些方法和算法可以(作為文件或服務)在研究人員之間傳播,作為構建更高級別功能的基礎。在 30 年後,機器學習似乎更像是巨大的無比複雜的外星大腦,控制著大部分社會,而不是做線性代數。


持懷疑論的人認為,在給定一行或兩千行代碼的情況下,機器可以從頭開始編寫 GPT-{x},而且大部分工作都在並行化和易於實驗的代碼上,在實現數字百分比改進的技巧上。此外,缺乏客觀評估複雜任務的能力遲早會導致崩潰,這幾乎是肯定的。


我不認為機器學習和自動駕駛的情境是相似的,我們已經在沒有多少自動駕駛的情況下度過了很長時間。對我來說,從多元回歸開始解釋機器學習,似乎比預測編碼和博弈論更好,後者奠定了更好的基礎。但我肯定對機器學習所能取得的成就印象更深刻,同時也懷疑進步是否會以類似的速度緩慢前進。

機器學習的 3 個發展方向


目前,在機器學習分支下,我看到了 3 個有趣的方向,而且這些方向正在進一步分裂。


第一個方向是「經典的」機器學習方法。它們現在有足夠的計算算力來處理大多數高維問題。其中的核心問題是提供更多的理論保證,產生作為「因果」模型基礎所需的那種「可解釋性」,並引導時代精神遠離直線、p 值和柏拉圖式的形狀。


第二個方向是行業應用。我認為這更多地涉及到典型的「自動化」工作,即數據爭論、領域邏輯理解和政治活動。只是新一輪的自動化浪潮現在和以往一樣,得到了更高級工具的支持。


最後一個方向是鍍金類型的研究,這是由一些理想主義者和許多試圖通過論文進入職業生涯軌道的學生進行的。這是最有趣的發現,它們隱藏在成堆無法操作或低影響的噪音中。我不確定在敞開的大門之外發生了什麼,因為我沒有足夠的能力去過濾噪音。但從表面來看,抽象概念正在轉移到以前被認為是強化學習的領域。


這三個方向任意兩兩組合,你會得到一些有趣的東西。比如,AlphaFold 是 Transformer 與科學領域專業知識的最後一分鐘進步,以取代蛋白質摺疊的「手動」模型; Tesla 自動駕駛是 SOTA 願景、RL 和轉移學習,與遊說者、律師和營銷人員聯合起來,自動化減少了兩位數的工作;一些研究危機復現的人似乎處於前兩者之間,他們試圖通過系統化來避免分析數據和審查證據時的人為錯誤,儘管我認為這樣的研究為時過早。


雖然這是一個不完美的分類,但它幫助我了解整個領域。我認為這也是一個很好的範式,可以用來思考應該解決什麼問題,與誰合作,以及需要什麼樣的背景。

聲明:文章觀點僅代表作者本人,PTTZH僅提供信息發布平台存儲空間服務。
喔!快樂的時光竟然這麼快就過⋯
繼續其他精彩內容吧!
more