被捧上天的深度学习,遇到这些问题根本干不过简单模型
今天我們來唱唱反調,推薦一篇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(Google提出的一種深度概率編程語言)這樣的新軟件,已經在綜合使用貝葉斯建模和深度網絡框架,以通過概率編程和自動變分推理來量化神經網絡參數和簡單貝葉斯推斷的不確定性。
從長遠來看,可能會出現一個簡化的建模詞匯表,以揭示深度網絡的顯著屬性,從而縮小你所需要嘗試的參數空間。
所以,請繼續刷arXiv吧,本文所談的內容,可能一兩個月后就完全沒用了。
原文地址
http://hyperparameter.space/blog/when-not-to-use-deep-learning/
總結
以上是生活随笔為你收集整理的被捧上天的深度学习,遇到这些问题根本干不过简单模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国际电信联盟(ITU)发布最新IDI指数
- 下一篇: 深度学习小技巧(二):如何保存和恢复sc