今天我們來唱唱反調,推薦一篇hacker news和reddit的雙料熱文《何時該不用深度學習》。
作者 | pablo cordero
翻譯 | ai科技大本營(rgznai100)
參與 | reason_w,波波
前段時間,ai科技大本營討論過一場關於深度學習應用的爭論——【撕起來了!誰說資料少就不能用深度學習?】,某教授認定「沒有大資料就不要用深度學習」,這讓一位正在辛苦做研究的博士後立時炸了,「只要你能搞懂模型,小資料同樣可以用深度學習」。
對此,另一位博士後實在看不下去了,他認為這些大牛不能瞎忽悠:你們這樣爭吵,讓初學者到底去聽誰的?你們還讓不讓初學者來學深度學習了?
這個博士後就是加州大學聖克魯茲分校系統生物組的pablo cordero,他正在用機器學習來研究單細胞測量的問題。他認為,當此深度學習越來越多地被用到生物資訊學研究之際,大家一定要實事求是向前看,不能讓錯誤的風向吹倒深度學習的大旗。
畢竟,深度學習不是萬能的,更不是萬達的。除了「沒有免費的午餐」定理,深度學習模型的差別還相當微妙,使用的過程需要非常細心,有時還需要做非常昂貴的超引數搜尋、調整與測試。
因而,從實用的角度看,深度學習在許多情況下並不好用,反而是簡單的模型效果更好。在這裡,清醒地認識深度學習所不適用的場景,便成為避免爭論的關鍵。pablo corder對這類場景的分析如下:
低預算或低投入問題
深度神經網路是非常靈活的模型,有著大量的架構和節點型別、優化器與正則化策略。
根據不同的應用場景:
這只是一部分列表,還需要嘗試很多其他型別的節點,連線,甚至損失函式。
這些都是在訓練時需要去調整的超引數,需要去探索的架構,這使得即便只訓練乙個大型網路都會相當耗時。
最近google在吹噓它的automl管道可以自動找出最好的架構,雖說其結果讓人印象極深,但該成果是超過800個gpu全天候執行數週才得到的,這種資源可不是每乙個人都觸手可及的。
這裡的問題不在於深度學習,而在於訓練深度網路的計算和除錯,它們的開銷太大了。對於許多日常問題的**,這樣的開銷沒有任何意義,因為即便是調整小型網路,它的價效比也實在太低。
所以,就算你足夠的預算和投入,也沒有理由不優先嘗試替代方法。你很有可能會驚喜地發現,線性svm才是真正的需求。
向公眾解釋模型引數/特徵的重要性
深度神經網路還是乙個臭名昭著的黑箱,儘管**能力很強,但可解釋性不足。
雖說最近有不少工具在某些領域很見效果,如顯著圖與啟用差異性,但它們還不能完全遷移到所有的應用場景中。這主要是在於,當你想確保神經網路不是通過記誦資料集或是專注於特定的虛假特徵來欺騙你時,此類工具就能做出效果;但如何把每個特徵的重要性解釋為深層網路的整體決策,仍舊很難實現。
在這方面,沒有什麼曾真正的打敗過線性模型,因為線性模型的學習係數與響應有直接的關係。當你需要把這些解釋傳達給需要據此來做決定的普通人時,這尤其重要。
例如,醫生需要結合多種不同的資料來做出診斷。變數和結果之間的關係越簡單和越直接,醫生利用的效果就越好,而不是低估/高估實際結果。
此外,有些情況下,模型的準確性(通常這恰恰是深度學習所擅長的)並不像解釋性那樣重要。
例如,策略制定者可能想知道一些人口統計變數(比如對死亡率)的影響,並且可能對這種關係的直接近似比對**的準確性更有興趣。
在這兩種情況下,與更簡單,更易理解的方法相比,深度學習就會處於不利地位。
建立因果機制
模型解釋的極端情況是當我們試圖建立乙個物理模型,即乙個實際捕獲資料背後的現象的模型。 好的例子包括試圖猜測兩個分子(例如藥物,蛋白質,核酸等)是否在特定的細胞環境中相互作用,或者假設特定的營銷策略如何對銷售產生實際的影響。
在這個領域,專家們的意見是,沒有什麼可以超越老式的貝葉斯方法,這是我們最好的(即使不完美的)表示和推斷因果關係的方式。
vicarious最近做了乙個很好的研究,說明了為什麼該方法在電子遊戲任務的表現上比深度學習效果更好-
從「非結構化」特徵中學習
這一點可能還在爭論。我發現深度學習擅長的乙個領域是為特定任務找到有用的資料表示。
乙個很好的例子是剛剛說的詞嵌入。自然語言具有豐富而複雜的結構,可以用「上下文感知」網路近似:每個單詞都可以在編碼了使用頻率較高的上下文的向量中進行表示。在大型語料庫中學習的nlp任務中使用詞嵌入有時可以在另乙個語料庫的特定任務中提公升效果。
然而,如果所討論的語料庫是完全非結構化的,則可能沒有任何用處。例如,假設您正在通過檢視關鍵字的非結構化列表來對物件進行分類。由於關鍵字沒有在任何特定的結構中使用(如在乙個句子中),所以詞嵌入不太可能對此有所幫助。在這種情況下,資料就是乙個詞袋,這種表示可能就足以滿足任務。
與此相反的是,如果您使用預訓練的話,並且能更好地捕獲關鍵字相似度,那麼詞嵌入就並不是那麼昂貴。不過,我還是寧願從乙個單詞的表示開始,看看能否得到很好的**。畢竟,這個詞袋的每個維度都比對應的詞嵌入槽更容易解讀。
未來還很深
深度學習領域炙手可熱,資金充足,發展迅猛。當你讀到在會議上發表的**的時候,它已經經過兩三次迭代,並且已經不值得推薦了。
這給我提出的以上幾點提了乙個很大的醒:在不久的將來,深度學習可能對這些情景來說是非常有用的。
畢竟,用於解釋影象和離散序列的深度學習模型的工具正變的越來越好。
edward與tensorflow結合進行概率規劃,可以使用深度和貝葉斯模型。 摘自tran et al. iclr 2017
像edward(google提出的一種深度概率程式語言)這樣的新軟體,已經在綜合使用貝葉斯建模和深度網路框架,以通過概率程式設計和自動變分推理來量化神經網路引數和簡單貝葉斯推斷的不確定性。
從長遠來看,可能會出現乙個簡化的建模詞彙表,以揭示深度網路的顯著屬性,從而縮小你所需要嘗試的引數空間。
所以,請繼續刷arxiv吧,本文所談的內容,可能一兩個月後就完全沒用了。
Pytorch深度學習遇到的坑
記錄學習過程中遇到的一些問題以及解決方案。在繼承了nn.module的情況下,並且函式內數 算均為torch內建函式 運算過程不能夠破壞pytorch計算圖,否則梯度無法正確反向傳播 依舊無法呼叫 初始化有問題可以嘗試在類建構函式末尾加入return 呼叫方式錯誤在呼叫構造類物件時,不能直接進行呼叫...
深度學習中權重引數是如何被訓練的?
pytorch深度學習快速入門教程 絕對通俗易懂!小土堆 嗶哩嗶哩 bilibili 快速入門的前提是,對python基礎和深度學習的知識有一定的了解。否則很難全身心 的投入到學習torch中。這是我在觀閱p24時的一些疑惑。for data in dataloader 但是後來才發現不是這樣的 一...
深度學習入門 感知器所遇到的錯誤
深度學習入門 感知器所遇到的錯誤 最近在看零基礎入門深度學習 1 感知器的時候遇到了這個問題,經查閱很多資料最終搞明白了,現分享給大家,希望能夠對大家有幫助。1 錯誤1 reduce 函式報錯 解決方法 python3中,reduce 函式已經被從全域性名字空間裡移除了,它現在被放置在fucntoo...