12個現實世界中的機器學習真相

ai公園 發佈 2020-01-14T04:18:06+00:00

GeorgeA. Hazelrigg 在他的「HONING YOUR PROPOSAL WRITING SKILLS」中寫道:一些科學家會學習如何制定研究計劃。

作者:Delip

編譯:ronghuaiyang

導讀

當你在現實世界中工作時,有幾個事實是你必須面對的,這也是本文的主要內容。

上個月,我在一個親密的朋友聚會上做了一個非正式的演講,我把這個題目記下來。這篇文章主要是寫給那些使用機器學習來構造東西的人,而不是那些研究機器學習的人,儘管後一組人會很好地傾聽這些真理並反省他們的工作。

0. 你不是一個科學家

是的,雖然你們的 title 是「科學家」,包括你們所有擁有博士學位的人,以及涉足這個行業的學者。但是,機器學習(以及其他人工智慧應用領域,如 NLP、視覺、語音……)是一門工程研究學科(與科學研究相對)。

你會問,科學研究和工程研究有什麼區別?George A. Hazelrigg 在他的「HONING YOUR PROPOSAL WRITING SKILLS」中寫道:

一些科學家會學習如何制定研究計劃。很少有工程師是博士級別的工程師。讓我們先試著理解科學研究和工程研究之間的區別。對我來說,區別很明顯。科學家力圖了解大自然的本質,以了解其根本的本質。為了做到這一點,科學家通常剝離無關的影響,深入到一個非常狹窄的自然元素。這就是我們所說的自然法則:能量和質量是一樣的,每一個作用力都有一個大小相等、方向相反的反作用力,依此類推。有許多自然法則,它們隨時隨地都適用。工程師遵循自然法則。他們別無選擇。他們的目標是設計出在自然允許的範圍內工作的東西。要做到這一點,他們必須能夠預測系統的行為。所以工程師們面臨的一個大問題是,我們如何理解和預測一個系統的行為,在這個系統中,所有的自然法則在任何時候都適用於任何地方。這是一個整合的問題,它就像找到一開始的規律一樣困難。每時每刻把所有的自然規律都考慮進去是不可能的。因此,工程師必須找到方法來確定哪些定律是重要的,哪些可以忽略,以及如何近似那些在時間和空間上都很重要的定律。工程師不僅僅是預測未來。他們做出的決定部分是基於他們的預測,因為他們知道自己的預測不可能既準確又確定。理解和應用數學也很重要。這包括機率論、決策理論、博弈論、最優化、控制理論和其他數學在工程決策環境中的應用。這也是一個合理的工程研究領域。

作為 ML 的研究人員和實踐者,你必須考慮你擁有的數據的正確模型,而不是你擁有的模型的正確數據集(就像許多研究論文一樣)。如果你曾經問過「這個模型的正確數據集是什麼」,那麼你並不是在現實世界中。到底什麼是真實的世界?在現實世界中,你對要處理的數據是沒有選擇的。在這裡,數據定義了問題,而不是相反。有時,在現實世界中,ML 實踐者創建了一個自己的世界作為他們的建模遊樂場,從而假裝他們是「科學家」,例如「發明」一種用於做 NLP 的語言,或者通過簡化假設來創建封閉的環境來強化學習。這些研究得出了有趣的結果,但它們的範圍僅限於它們所來自的世界,即使研究人員喜歡在論文中把它們當作適用於現實世界的東西來兜售。在現實世界中,輸入的分布更有可能發生變化,長尾的「curve balls」不知從何而來,你並不總是有答案。

當你在現實世界中工作時,有幾個事實是你必須面對的,這也是本文的主要內容。但這個開場白是必不可少的。如果你在現實世界中做 ML 研究,你是工程師而不是科學家。

1. 需要可以工作

雖然這聽起來很簡單,但我很驚訝有多少人,不管是新手還是有經驗的人,都被一些聽起來很花哨的名字吸引住了,或者因為一些東西來自 DeepMind、OpenAI、史丹福大學、麻省理工學院等等。如果你的模型確實只能夠在它們的環境和資源約束下處理他們的數據集和,那麼現實世界將無情地拒絕它。arXiv 上的許多結果只能在少數數據集上工作,或者只能在只有谷歌基礎設施支持的百兆級 gpu 上工作。幫社區一個忙,不要再發布那些一般性的結果了。它必須能工作。這也是為什麼我們今天不考慮在沒有卷積神經網絡的計算機視覺中做任何事情,或者為什麼我們很容易在序列模型中使用注意力的原因。它必須要能工作。

推測:這麼多人,特別是 ML 的新手,被花哨的模型名稱沖昏了頭腦,迫不及待地想要嘗試它們,或者寫關於它們的博客帖子,等等。我覺得這就像一個初學寫作的人。他們認為使用華麗的詞語會使他們的寫作更好,但經驗會告訴他們其他的。

2. 無論你如何努力,無論你的優先級是什麼,你都不能提高光速

緩存層次結構已經是固定的,你必須在這個前提下工作,網絡開銷會讓分布式訓練變慢,在向量中只能塞入那麼多內容,等等。

3. 只要有足夠的推力,豬就能飛得很高,然而,這並不一定是一個好主意

一個研究生或大型的超參數掃描器可以在一個巨大的數據中心中可以找到一組超參數,可以讓非常複雜的模型工作得很好,甚至產生優秀的結果。但沒有人在現實世界中調試那麼大的模型。我在幫助公司管理他們的 ML 團隊時發現了一個秘密 — 大多數人不知道/不關心超參數調優。

4. 生活中的一些事情,除非親身經歷過,否則永遠不會被完全欣賞或理解

對於既不構建生產 ML 模型也不維護它們的人來說,機器學習中的某些東西是永遠無法完全理解的。再多的課件,再多的 mooc,再多的 Kaggling,都無法讓你為此做好準備。沒有什麼可以替代部署模型、觀察用戶與模型的交互、處理代碼/模型分解等等。

5. 總是有可能將多個獨立的問題聚合成一個複雜的相互依賴的解決方案,在大多數情況下,這是一個壞主意

端到端學習在理論上聽起來是一個好主意,但是對於大多數部署場景,分段優化的管道架構將繼續存在。這並不意味著我們將完全沒有端到端系統(語音識別和機器翻譯有很好的端到端生產價值解決方案),但在大多數情況下,具有可觀察的調試路徑將勝過其他選擇。

6. 把一個問題轉移到別處,甚至是忽略它,都比解決它要容易得多

例如,在語音方面,聲學建模是困難的,但是你可以讓網絡在解決不同問題(例如語音識別)的方法中找出這些細節。在 NLP 中,很難進行正確的解析。但值得慶幸的是,對於 99%的現實任務,我們可以不進行解析。

推論:除非迫不得已,否則不要解決問題。

7. 你總是要在一些事情上做權衡

速度 vs 內存,電池壽命 vs 準確性,公平性 vs 準確性,易於實現 vs 可維護性,……

8. 一切都比你想像的複雜

與購物時的價格衝擊類似,工作中也有「努力衝擊」。大多數經驗豐富的研究人員和工程師都經歷過「努力衝擊」,要麼是因為他們低估了處理大型數據集的工程問題,要麼是因為他們低估了正在與之搏鬥的領域的複雜性,要麼是因為他們低估了對手。大多數論文讓讀者讀起來覺得事情很簡單,而忽略了這背後是經過了幾百萬次失敗才有的成功。因此,論文不是研究,而是做研究的結果。因為這個原因,你永遠可能通過閱讀論文來體驗做研究的過程。

9. 你永遠都會是準備不足

這可以和第 8 點結合起來,事實上任何遠程調用的成功的模型如果沒有適當的計劃,都可能由於自身的成功而崩潰。

10. 一個尺碼不可能適合所有人,你的模型會一直犯令人尷尬的錯誤,儘管你的出發點是好的

角落案例和長尾失敗模式將困擾你。值得慶幸的是,對於許多非關鍵的 ML 部署來說,這並不是什麼大問題。最壞的情況下,它會成為一條搞笑的推文。但是,如果你在醫療保健或其他高風險情況下工作,ML 部署將因此成為一場噩夢。

11. 每一個舊的想法都會以不同的名字和不同的形式被再次提出,不管它是否有效

Schimdhuber 可能提出了一個更大的觀點。沒有人聽他的,像他一樣,我們把舊酒重新裝進新瓶子,被迫重複錯誤的歷史。

12. 達到完美不是因為沒有什麼可以補充的,而是因為沒有什麼可以去掉的

生活中的每件事都是如此,現實世界中的機器學習也是如此。唉,我們的會議回顧了他們對「新穎性」的嗜好,產生了不想要的 arxi -spam,其中包含了大量本來就不需要存在的垃圾。除非做「科學」能夠鼓勵宣傳什麼是有效的,而不是什麼是新的,否則我不認為這種情況會改變。

英文原文:http://deliprao.com/archives/227

關鍵字: