被捧上天的深度學習,遇到這些問題根本幹不過簡單模型


今天咱們來唱唱反調,推薦一篇Hacker News和Reddit的雙料熱文《什麼時候該不用深度學習》。編程


做者 | Pablo Cordero網絡

翻譯 | AI科技大本營(rgznai100)架構

參與 | reason_W,波波框架


前段時間,AI科技大本營討論過一場關於深度學習應用的爭論——【撕起來了!誰說數據少就不能用深度學習?】,某教授認定「沒有大數據就不要用深度學習」,這讓一位正在辛苦作研究的博士後立時炸了,「只要你能搞懂模型,小數據一樣能夠用深度學習」。機器學習


對此,另外一位博士後實在看不下去了,他認爲這些大牛不能瞎忽悠: 大家這樣爭吵,讓初學者到底去聽誰的?大家還讓不讓初學者來學深度學習了?


這個博士後就是加州大學聖克魯茲分校系統生物組的Pablo Cordero,他正在用機器學習來研究單細胞測量的問題。他認爲,當此深度學習愈來愈多地被用到生物信息學研究之際,你們必定要實事求是向前看,不能讓錯誤的風向吹倒深度學習的大旗。編程語言


畢竟,深度學習不是萬能的,更不是萬達的。除了「沒有免費的午飯」定理,深度學習模型的差異還至關微妙,使用的過程須要很是細心,有時還須要作很是昂貴的超參數搜索、調整與測試。函數


於是,從實用的角度看,深度學習在許多狀況下並很差用,反而是簡單的模型效果更好。在這裏,清醒地認識深度學習所不適用的場景,便成爲避免爭論的關鍵。Pablo Corder對這類場景的分析以下:工具


低預算或低投入問題


深度神經網絡是很是靈活的模型,有着大量的架構和節點類型、優化器與正則化策略。學習


根據不一樣的應用場景:測試


  • 你的模型可能會有卷積層(多大?使用什麼池化操做?)或循環結構(有或沒有門控?);

  • 它可能真的很深(hourglass、siamese或其餘架構?)也可能只有幾個隱藏的層(有多少單位?);

  • 它可能使用整流線性單元或其餘激活函數;

  • 它可能會有或不會有dropout (在什麼層次中?用什麼分數?),權重頗有可能被正則化(L1範數,L2範數,仍是其餘某種方式?)。


這只是一部分列表,還須要嘗試不少其餘類型的節點,鏈接,甚至損失函數。


這些都是在訓練時須要去調整的超參數,須要去探索的架構,這使得即使只訓練一個大型網絡都會至關耗時。


最近Google在吹噓它的AutoML管道能夠自動找出最好的架構,雖然說其結果讓人印象極深,但該成果是超過800個GPU全天候運行數週才獲得的,這種資源可不是每個人都觸手可及的。


這裏的問題不在於深度學習,而在於訓練深度網絡的計算和調試,它們的開銷太大了。對於許多平常問題的預測,這樣的開銷沒有任何意義,由於即使是調整小型網絡,它的性價比也實在過低。


因此,就算你足夠的預算和投入,也沒有理由不優先嚐試替代方法。你頗有可能會驚喜地發現,線性SVM纔是真正的需求。


向公衆解釋模型參數/特徵的重要性


深度神經網絡仍是一個臭名昭著的黑箱,儘管預測能力很強,但可解釋性不足。


雖然說最近有很多工具在某些領域很見效果,如顯著圖與激活差別性,但它們還不能徹底遷移到全部的應用場景中。這主要是在於,當你想確保神經網絡不是經過記誦數據集或是專一於特定的虛假特徵來欺騙你時,此類工具就能作出效果;但如何把每一個特徵的重要性解釋爲深層網絡的總體決策,仍舊很難實現


在這方面,沒有什麼曾真正的戰勝過線性模型,由於線性模型的學習係數與響應有直接的關係。當你須要把這些解釋傳達給須要據此來作決定的普通人時,這尤爲重要。


例如,醫生須要結合多種不一樣的數據來作出診斷。變量和結果之間的關係越簡單和越直接,醫生利用的效果就越好,而不是低估/高估實際結果。


此外,有些狀況下,模型的準確性(一般這偏偏是深度學習所擅長的)並不像解釋性那樣重要。


例如,策略制定者可能想知道一些人口統計變量(好比對死亡率)的影響,而且可能對這種關係的直接近似比對預測的準確性更有興趣。


在這兩種狀況下,與更簡單,更易理解的方法相比,深度學習就會處於不利地位。


創建因果機制


模型解釋的極端狀況是當咱們試圖創建一個物理模型,即一個實際捕獲數據背後的現象的模型。 好的例子包括試圖猜想兩個分子(例如藥物,蛋白質,核酸等)是否在特定的細胞環境中相互做用,或者假設特定的營銷策略如何對銷售產生實際的影響。


在這個領域,專家們的意見是,沒有什麼能夠超越老式的貝葉斯方法,這是咱們最好的(即便不完美的)表示和推斷因果關係的方式。


Vicarious最近作了一個很好的研究,說明了爲何該方法在電子遊戲任務的表現上比深度學習效果更好- https://www.vicarious.com/img/icml2017-schemas.pdf


從「非結構化」特徵中學習


這一點可能還在爭論。我發現深度學習擅長的一個領域是爲特定任務找到有用的數據表示


一個很好的例子是剛剛說的詞嵌入。天然語言具備豐富而複雜的結構,能夠用「上下文感知」網絡近似:每一個單詞均可以在編碼了使用頻率較高的上下文的向量中進行表示。在大型語料庫中學習的NLP任務中使用詞嵌入有時能夠在另外一個語料庫的特定任務中提高效果。


然而,若是所討論的語料庫是徹底非結構化的,則可能沒有任何用處。例如,假設您正在經過查看關鍵字的非結構化列表來對對象進行分類。因爲關鍵字沒有在任何特定的結構中使用(如在一個句子中),因此詞嵌入不太可能對此有所幫助。在這種狀況下,數據就是一個詞袋,這種表示可能就足以知足任務。


與此相反的是,若是您使用預訓練的話,而且能更好地捕獲關鍵字類似度,那麼詞嵌入就並非那麼昂貴。不過,我仍是寧願從一個單詞的表示開始,看看可否獲得很好的預測。畢竟,這個詞袋的每一個維度都比對應的詞嵌入槽更容易解讀。


將來還很深


深度學習領域煊赫一時,資金充足,發展迅猛。當你讀到在會議上發表的論文的時候,它已經通過兩三次迭代,而且已經不值得推薦了。


這給我提出的以上幾點提了一個很大的醒:在不久的未來,深度學習可能對這些情景來講是很是有用的


畢竟,用於解釋圖像和離散序列的深度學習模型的工具正變的愈來愈好。


Edward與tensorflow結合進行機率規劃,可使用深度和貝葉斯模型。 摘自Tran et al. ICLR 2017


像Edward(Google提出的一種深度機率編程語言)這樣的新軟件,已經在綜合使用貝葉斯建模和深度網絡框架,以經過幾率編程和自動變分推理來量化神經網絡參數和簡單貝葉斯推斷的不肯定性。


從長遠來看,可能會出現一個簡化的建模詞彙表,以揭示深度網絡的顯著屬性,從而縮小你所須要嘗試的參數空間。


因此,請繼續刷arXiv吧,本文所談的內容,可能一兩個月後就徹底沒用了。


原文地址

http://hyperparameter.space/blog/when-not-to-use-deep-learning/

相關文章
相關標籤/搜索