何時不應使用深度學習?

2021-08-19 12:59:33 字數 3617 閱讀 2430

原文:when not to use deep learning

翻譯:聶震坤

審校:屠敏

首先,讓我們來聚焦一些在外行人眼中已經成為半真相的先入之見。這些先入之見有兩個籠統的和乙個更有專業性的。他們有點類似於 andrew beam 在帖子中指出的「誤解」部分的延伸。

用於藥品開發的一次學習網路,引自 altae-tran 等人的**,acs cent. sci. 2017

第二個我常聽到的先入之見是人們對於深度學習的炒作。很多還沒開始嘗試的實踐者希望深網可以給他們帶來神話般的表現提公升,只因為它在別的領域有效。另外一些人則因為令人影響深刻的建模,影象,**和語言收到啟發。他們嘗試訓練最新的 gan 架構而希望成為第一批進入這片領域的人。這些炒作在很多方面其實是真實的。深度學習在機器學習中已經成為不可否認的力量,並且是所有資料建模者的核心工具。它的普及帶來了諸如 tensorflow 和 pytorch 等重要框架,即使在深入學習之外也是非常有用的。從失敗者到超級明星的起源故事激勵了研究人員重新審視其他的方法,如進化策略和強化學習。但這並不是萬能的。天下沒有免費的午餐,深度學習模型可以非常細微,需要仔細和有時非常昂貴的超引數搜尋,調整和測試(詳細內容會在之後的文章中提及)。另一方面,在很多情況下,使用深度學習從實踐的角度來看是沒有意義的,因為更簡單的模型工作得更好

sgd 根據學習速度或批量大小而更傾向於寬極小或尖極小

這種複雜性意味著深層網路的優化器成為最重要的部分:它們是模型的核心部分,與層架構一樣重要。這種現象在別的機器學習模型裡並不常見。線性模型和 svms 的優化並沒有過多的細微差別,並且真的只有乙個解決辦法。這就是為什麼來自其他領域和/或使用 scikit 學習的工具的人在他們找不到具有 .fit()方法的非常簡單的 api 時會感到困惑(雖然有一些工具,如skflow,嘗試將簡單的網路裝入 .fit() 簽名,但我認為這有點誤導,因為深入學習的關鍵是它的靈活性)。

結合以上的觀點,深度學習不適用於什麼樣的任務?依我之見,以下這些主要場景的深度學習弊大於利。

深網是非常靈活的模型,有著許多架構和節點型別,優化器和正則化策略。根據應用,你的模型可能會有卷基層(有多寬?使用什麼匯集操作?)或者反覆結構(有沒有門?);他也有可能很深(沙漏,暹羅或其他許多架構?)又或者只是幾個隱藏的層(有多少個單元?);

它可能使用整流線性單元或其他啟用功能;它可能或可能沒有流失dropout(在哪一層?哪一塊?)佔比應該是恰當的(l1,l2,或者是某些東西)。這只是乙個部分列表,有很多其他型別的節點,連線,甚至丟失的功能等著我們嘗試。這些是調整和架構探索的很多超引數,當訓練大型網路的乙個例項時可能非常耗時。谷歌最近吹噓自己的 automl 管道可以自動找到最好的架構,這是非常令人印象深刻的,但仍然需要超過 800 個 gpu,全天候工作數週,這對正常人來說是很難實現的。問題的關鍵在於訓練深網需要大量的成本用於計算和除錯。這種費用對於許多日常**問題並沒有意義,即使調整小型網路,調整網路的投資回報率也可能太低。即使有足夠的預算和承諾,也沒有理由不嘗試基準替代方法。您可能會驚喜地發現,線性svm真的是您需要的。

深網另乙個令人詬病的原因是其徒有高**能力卻很難解釋清楚。儘管最近有很多任務具,如 saliency 地圖和 activation differences,對某些領域而言是非常有用的,但它們並不會完全轉移到所有應用程式上。這主要是因為,當您想要確保網路不會通過記住資料集或專注於特定的虛假特徵來欺騙您時,這些工具就能很好地工作,但是對於深層網路的整體決策來說,仍然難以將每個特徵的重要性進行解釋。在這個情況下,沒有什麼是可以真正的打敗線性模型的,因為學習的難度與客戶反應有直接的關係。當將這些解釋傳達給需要根據它們作出決定的一般觀眾時,這尤其重要。舉個例子,醫生需要根據不同的資料來作出診斷,變數和結果之間的關係更簡單更直接,醫生則能更好的利用它,而不是低估/高估其價值。此外,有些情況下,模型的準確性(通常是深度學習所擅長的)並不像解釋性那樣重要。比如,決策者可能想知道人口變數對死亡率的影響,可能會對直接近似關係感興趣,而不是**的準確性。從以上兩個例子,不難看出與更簡單,更加滲透的方法相比,深度學習處於不利地位。

模型解釋的極端情況是當我們試圖建立乙個機械的模型,即乙個實際捕獲資料背後的現象的模型。好的例子包括試圖猜測兩個分子(例如藥物,蛋白質,核酸等)是否在特定的細胞環境中相互作用,或者假設特定的營銷策略如何對銷售產生實際的影響。在這個領域沒有什麼能真正的擊敗專家的老式貝葉斯方法(可能不完美);他們是我們表達和推斷因果關係的最好方法。vicarious最近有一些很好的研究證明了為什麼更有原則的手段比遊戲任務中的深度學習更好。

這一條可能有待爭論。我發現深入學習擅長的乙個領域是為特定任務找到有用的資料表示。乙個很好的例子是上述的詞語嵌入。自然語言具有豐富而複雜的結構,可以通過「上下文感知」來學習,每個單詞都可以用向量來表示並編碼程其最常用的內容。為了nlp任務在大型語料庫中學習使用單詞嵌入有時可以在另乙個語料庫的特定任務中提公升效果。然而,如果所討論的語料庫是完全非結構化的,則可能沒有任何用處。例如,假設您正在檢視非結構化的關鍵字列表來對物件進行分類。由於關鍵字不是在任何特定的結構中使用(如在乙個句子中),所以字嵌入不太可能有幫助。在這種情況下,資料是真正的乙個單詞,這種表示可能足以滿足任務。與此相反的是,如果您預培訓深度學習的話,並且可以更好地捕獲關鍵字相似度,那麼字嵌入的代價並不高。不過,我還是寧願從乙個詞包的表示開始,看看能否得到很好的**。畢竟,這個詞包的每個維度都比對應的字嵌入槽更容易解讀。

深度學習領域現在很熱門,資金充足,並且正在快速發展。當你閱讀在會議上發表的**的時候,它很可能又經歷了兩三次迭代並且已經不推薦了。這給我以上提出的觀點相符:深度學習在不久的將來可能對這些情景來說是非常有用的。用於解釋影象和離散序列的深度學習模型的工具越來越好。最近的軟體,如融合了貝葉斯建模的 edward 深層框架,允許量化神經網路引數的不確定性和容易的貝葉斯推理通過概率進行程式設計和自動變分推理。從長遠來看,可能會有乙個減少的建模詞彙表,它會揭露深層網路可以具有的顯著屬性,從而減少需要嘗試的東西的引數空間。因此,繼續重新整理你的 arxiv 吧,也許這篇文章在一兩個月後就過時了。

edward 與 tensorflow 結合概率規劃,支援深度學習和貝葉斯模型,摘自 tran 等人的 iclr 2017 **

由中國人工智慧學會、阿里巴巴集團 & 螞蟻金服主辦,csdn、中國科學院自動化研究所承辦的第三屆中國人工智慧大會(ccai 2017)將於 7 月 22-23 日在杭州召開。作為中國國內高規格、規模空前的人工智慧大會,本次大會由中國科學院院士、中國人工智慧學會副理事長譚鐵牛,阿里巴巴技術委員會主席王堅,香港科技大學計算機系主任、aaai fellow 楊強,螞蟻金服副總裁、首席資料科學家漆遠,南京大學教授、aaai fellow 周志華共同甄選出在人工智慧領域本年度海內外最值得關注的學術與研發進展,匯聚了超過 40 位頂級人工智慧專家,帶來 9 場權威主題報告,以及「語言智慧型與應用論壇」、「智慧型金融論壇」、「人工智慧科學與藝術論壇」、「人工智慧青年論壇」4 大專題論壇,屆時將有超過 2000 位人工智慧專業人士參與。

NoSQL與RDBMS 何時使用,何時不使用

naresh kumar是位軟體工程師與熱情的博主,對於程式設計與新事物擁有極大的興趣,非常樂於與其他開發者和程式設計師分享技術上的研究成果。近日,naresh撰文比較了nosql與rdbms,並詳細介紹了他們各自的特點與適用的場景。nosql並不是關係型資料庫管理系統,本文將會介紹nosql資料庫...

何時使用或何時不使用malloc函式

在初學資料結構時,我們往往不太清楚在定義乙個結構體指標時要不要使用malloc函式。例如以下的 linklist init linklist retrun h linklist s s data x 以上這兩句 是不行的,因為s沒有指向確切的位址,所以不能通過s來向它要指向的位址賦值 但是linkl...

MySQL何時使用索引 何時不使用索引

mysql何時使用索引 對乙個鍵碼使用 if null和between select from table name where key part1 1 and key part2 5 select from table name where key part1 is null 當使用不以萬用字元開...