您好 , 歡迎來到小貓芯城 ! | 免費注冊

主頁 > 技術方案 > 打破深度學習偏見,這事跟數據量有啥關系?-電子技術方案|電路圖講解

打破深度學習偏見,這事跟數據量有啥關系?-電子技術方案|電路圖講解

作者:小貓芯城 發布時間:2019/6/21 來源:網絡整理 瀏覽量:15 相關關鍵詞: 打破深度學習偏見 這事跟數據量有啥關系?-電子技術方案|電路圖
  寫在前面

  近日,在深度學習領域出現了一場熱烈的爭論。這一切都要從JeffLeek在SimplyStats上發表了一篇題為《數據量不夠大,別玩深度學習》(Don’tusedeeplearningyourdataisn’tthatbig)的博文開始。作者JeffLeek在這篇博文中指出,當樣本數據集很小時(這種情況在生物信息領域很常見),即使有一些層和隱藏單元,具有較少參數的線性模型的表現是優于深度網絡的。為了證明自己的論點,Leek舉了一個基于MNIST數據庫進行圖像識別的例子,分辨0或者1。他還表示,當在一個使用僅僅80個樣本的MNIST數據集中進行0和1的分類時,一個簡單的線性預測器(邏輯回歸)要比深度神經網絡的預測準確度更高。

  這篇博文的發表引起了領域內的爭論,哈佛大學藥學院的生物醫藥信息學專業博士后AndrewBeam寫了篇文章來反駁:《就算數據不夠大,也能玩深度學習》(Youcanprobablyusedeeplearningevenifyourdataisn’tthatbig)。AndrewBeam指出,即使數據集很小,一個適當訓練的深度網絡也能擊敗簡單的線性模型。

  如今,越來越多的生物信息學研究人員正在使用深度學習來解決各種各樣的問題,這樣的爭論愈演愈烈。這種炒作是真的嗎?還是說線性模型就足夠滿足我們的所有需求呢?結論一如既往——要視情況而定。在這篇文章中,作者探索了一些機器學習的使用實例,在這些實例中使用深度學習并不明智。并且解釋了一些對深度學習的誤解,作者認為正是這些錯誤的認識導致深度學習沒有得到有效地使用,這種情況對于新手來說尤其容易出現。

  打破深度學習偏見

  首先,我們來看看許多外行者容易產生的偏見,其實是一些半真半假的片面認識。主要有兩點,其中的一點更具技術性,我將詳細解釋。

  深度學習在小樣本集上也可以取得很好的效果

  深度學習是在大數據的背景下火起來的(第一個谷歌大腦項目向深度神經網絡提供了大量的Youtube視頻),自從那以后,絕大部分的深度學習內容都是基于大數據量中的復雜算法。

  然而,這種大數據+深度學習的配對不知為何被人誤解為:深度學習不能應用于小樣本。如果只有幾個樣例,將其輸入具有高參數樣本比例的神經網絡似乎一定會走上過擬合的道路。然而,僅僅考慮給定問題的樣本容量和維度,無論有監督還是無監督,幾乎都是在真空中對數據進行建模,沒有任何的上下文。

  可能的數據情況是:你擁有與問題相關的數據源,或者該領域的專家可以提供的強大的先驗知識,或者數據可以以非常特殊的方式進行構建(例如,以圖形或圖像編碼的形式)。所有的這些情況中,深度學習有機會成為一種可供選擇的方法——例如,你可以編碼較大的相關數據集的有效表示,并將該表示應用到你的問題中。

  這種典型的示例常見于自然語言處理,你可以學習大型語料庫中的詞語嵌入,例如維基百科,然后將他們作為一個較小的、較窄的語料庫嵌入到一個有監督任務中。極端情況下,你可以用一套神經網絡進行聯合學習特征表示,這是在小樣本集中重用該表示的一種有效方式。這種方法被稱作“一次性學習”(one-shotlearning),并且已經成功應用到包括計算機視覺和藥物研發在內的具有高維數據的領域。
  

                                                      藥物研發中的一次性學習網絡,摘自Altae-Tranetal.ACSCent.Sci.2017

  深度學習不是一切的答案

  我聽過最多的第二個偏見就是過度宣傳。許多尚未入門該領域的人,僅僅因為深度神經網絡在其它領域的出色表現,就期待它也能為他們帶來神話般的表現提升。其他人則從深度學習在圖像、音樂和語言(與人類關系密切的三種數據類型)處理領域的令人印象深刻的表現中受到啟發,于是就頭腦發熱地鉆入該領域,迫不及待地嘗試訓練最新的GAN結構。

  當然,這種大肆吹捧在很多方面是真實存在的。深度學習在機器學習中的地位不可小覷,也是數據建模方法庫的重要工具。它的普及帶動了諸如tensorflow和pytorch等許多重要框架的發展,它們即使是在深度學習之外也是十分有用的。失敗者崛起成為超級巨星的故事激勵了許多研究員重新審視以前的模糊算法,如進化算法和增強學習。

  但任何情況下也不能認為深度學習是萬能良藥。除了“天下沒有免費的午餐”這點之外,深度學習模型是非常微妙的,并且需要仔細甚至非常耗時耗力的超參數搜索、調整,以及測試(文章后續有更多講解)。除此之外,在很多情況下,從實踐的角度來看,使用深度學習是沒有意義的,更簡單的模型反而能獲得更好的效果。

  深度學習不僅僅是.fit()

  深度學習模型從機器學習的其他領域傳來時,我認為還有另外一個方面經常被忽略。大多數深度學習的教程和介紹材料都將模型描述為通過層次方式進行連接的節點層組成,其中第一層是輸入,最后一層是輸出,并且你可以用某種形式的隨機梯度下降(SGD)方法來訓練網絡。有些材料會簡單介紹隨機梯度下降是如何工作的,以及什么是反向傳播,但大部分介紹主要關注的是豐富的神經網絡類型(卷積神經網絡,循環神經網絡等等)。

  而優化方法本身卻很少受到關注,這是很不幸的,因為深度學習為什么能夠起到很大的作用,絕大部分原因就是這些特殊的優化方法(具體論述可以參考FerencHuszár的博客以及博客中引用的論文)。了解如何優化參數,以及如何劃分數據,從而更有效地使用它們以便在合理時間內使網絡獲得良好的收斂,是至關重要的。

  不過,為什么隨機梯度下降如此關鍵還是未知的,但是現在線索也正零星出現。我傾向于將該方法看成是貝葉斯推理的一部分。實質上,在你進行某種形式的數值優化時,你都會用特定的假設和先驗來執行一些貝葉斯推理。其實有一個被稱做概率數值計算(probabilisticnumerics)的完整研究領域,就是從這個觀點開始的。隨機梯度下降也是如此,最新的研究成果表明,該過程實際上是一個馬爾科夫鏈,在特定假設下,可以看作是后向變分近似的穩態分布。

  所以當你停止隨機梯度下降,并采用最終的參數時,基本上是從這個近似分布中抽樣得到的。我認為這個想法很有啟發性,因為這樣一來,優化器的參數(這里是指學習率)就更有意義了。例如,當你增加隨機梯度下降的學習參數時,馬爾可夫鏈就會變得不穩定,直到它找到大面積采樣的局部最小值,這樣一來,就增加了程序的方差。

  另一方面,如果減少學習參數,馬爾科夫鏈可以慢慢的近似到狹義極小值,直到它收斂,這樣就增加了某個特定區域的偏置。而另一個參數,隨機梯度下降的批次大小,也可以控制算法收斂的區域是什么類型,小的批次收斂到較大區域,大的批次收斂到較小區域。
  

                                                       隨機梯度下降根據學習速率或批尺寸來選擇較大或狹義最小值

  這樣的復雜性意味著深度網絡的優化器非常重要:它們是模型的核心部分,與層架構一樣重要。這一點在機器學習的許多其他模型中并不常見。線性模型(甚至是正則化的,像LASSO算法)以及支持向量機(SVM)都是凸優化問題,沒有太多細微差別,并且只有一個最優解。這也就是為什么來自其它領域的研究人員在使用諸如scikit-learn這樣的工具時會感到困惑,因為他們發現找不到簡單地提供.fit()函數的API(盡管現在有些工具,例如skflow,試圖將簡單的網絡置入.fit()中,我認為這有點誤導,因為深度學習的全部重點就是其靈活性)。

技術方案

產品索引 :

神龙碎片返水