<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          周志華教授:關(guān)于深度學習的一點思考

          共 7081字,需瀏覽 15分鐘

           ·

          2021-12-28 08:29



          ??視學算法報道??

          來源:專知

          【新智元導讀】什么是深度學習?深度神經(jīng)網(wǎng)絡為什么要「深」?它成功背后的關(guān)鍵因素是什么?深度學習只能是深度神經(jīng)網(wǎng)絡嗎?南京大學人工智能學院院長、計算機系主任周志華教授對這些問題進行了獨到思考,值得關(guān)注。




          引言?


          深度學習已被廣泛應用到涉及圖像、視頻、語音等的諸多任務中并取得巨大成功。如果我們問「深度學習是什么」?很可能會得到這樣的回答:深度學習就是深度神經(jīng)網(wǎng)絡。


          至少在目前,當深度學習作為一個術(shù)語時幾乎就是「深度神經(jīng)網(wǎng)絡」的同義詞, 而當它指向一個技術(shù)領(lǐng)域時則如 SIAM News 頭版文章所稱[1],是「機器學習中使用深度神經(jīng)網(wǎng)絡的子領(lǐng)域」。關(guān)于深度學習有很多問題還不清楚。例如深度神經(jīng)網(wǎng)絡為什么要「深」?它成功背后的關(guān)鍵因素是什么?深度學習只能是深度神經(jīng)網(wǎng)絡嗎?本文將分享一些我們關(guān)于深度學習的粗淺思考。


          深度神經(jīng)網(wǎng)絡?


          神經(jīng)網(wǎng)絡并不是新生事物,它已經(jīng)被研究了半個多世紀[2]。傳統(tǒng)神經(jīng)網(wǎng)絡通常包含一個或兩個隱層,其中每個「神經(jīng)元」是非常簡單的計算單元。如圖 1 所示,神經(jīng)元接收來自其他神經(jīng)元的輸入信號,這些信號通過連接權(quán)放大,到達神經(jīng)元之后如果其總量超過某個閾值,則當前神經(jīng)元就被「激活」并向外傳遞其輸出信號。實際上每個神經(jīng)元就是圖1中非常簡單的計算式,而所謂神經(jīng)網(wǎng)絡就是很多這樣的計算式通過嵌套迭代得到的一個數(shù)學系統(tǒng)。



          今天的深度神經(jīng)網(wǎng)絡是指什么?簡單來說,就是有很多隱層的神經(jīng)網(wǎng)絡。例如 2012 年在計算機視覺領(lǐng)域著名的 ImageNet 競賽奪冠的網(wǎng)絡用了 8 層、2015 年是 152 層、 2016 年是 1207 層……這樣的網(wǎng)絡明顯是非常龐大的計算系統(tǒng),包含了大量參數(shù)需要通過訓練來確定。


          但有一個好消息:神經(jīng)網(wǎng)絡的基本計算單元是連續(xù)可微的。例如以往常用圖 2 左邊的 Sigmoid 函數(shù)作為神經(jīng)元模型的激活函數(shù),它是連續(xù)可微的;現(xiàn)在深度神經(jīng)網(wǎng)絡里常用圖 2 右邊這樣的 ReLU 激活函數(shù),它也是連續(xù)可微的。于是,在整個系統(tǒng)中可以相對容易地計算出「梯度」,進而就能使用著名的 BP 算法通過梯度下降優(yōu)化來對神經(jīng)網(wǎng)絡進行訓練。



          有人以為深度神經(jīng)網(wǎng)絡的成功主要是因為算力有了巨大發(fā)展,因為神經(jīng)網(wǎng)絡早 就有了,現(xiàn)在只不過是由于算力強了導致能算得更好了。這是一個誤解。沒有強大的算力當然難以訓練出很深的網(wǎng)絡,但更重要的是,現(xiàn)在人們懂得如何訓練這樣的模型。


          事實上,在 Hinton 等的工作[3]之前,人們一直不知道如何訓練出超過五層的神經(jīng)網(wǎng)絡;這并不是由于算力不足,而是由于神經(jīng)網(wǎng)絡在訓練中會遭遇「梯度消失」現(xiàn)象:在 BP 算法將神經(jīng)網(wǎng)絡輸出層誤差通過鏈式反傳到遠離輸出層的部分時,可能會導出「零」調(diào)整量,導致網(wǎng)絡遠離輸出層的部分無法根據(jù)輸出誤差進行調(diào)整,從而使得訓練失敗。這是從傳統(tǒng)神經(jīng)網(wǎng)絡發(fā)展到深層神經(jīng)網(wǎng)絡所遇到的巨大技術(shù)障礙。Hinton 等通過「逐層訓練后聯(lián)合微調(diào)」來緩解梯度消失,使人們看到訓練深層神經(jīng)網(wǎng)絡是可能的,由此激發(fā)了后來的研究,使得深度神經(jīng)網(wǎng)絡得以蓬勃發(fā)展。


          事實上,深度神經(jīng)網(wǎng)絡研究的主要內(nèi)容之一就是設(shè)計有效措施來避免/減緩梯度消失。例如該領(lǐng)域一個重要技術(shù)進步就是用圖 2 右邊的 ReLU 函數(shù)來代替以往常用的 Sigmoid 函數(shù),由于前者在零值附近的導數(shù)比后者更「平緩」,使得梯度不會因下降得太快而導致梯度消失。?


          顯然,基本計算單元的「可微性」(differentiability)對深度神經(jīng)網(wǎng)絡模型至關(guān)重要,因為它是梯度計算的基礎(chǔ),而梯度計算是使用 BP 算法訓練神經(jīng)網(wǎng)絡的基礎(chǔ)。最近有一些研究嘗試在深度神經(jīng)網(wǎng)絡中使用不可微激活函數(shù),但其求解過程是在松弛變換后通過可微函數(shù)逼近,實質(zhì)上仍依賴于基本計算單元的可微性。


          深度神經(jīng)網(wǎng)絡為何要「深」?


          雖然深度神經(jīng)網(wǎng)絡取得了巨大成功,但是「為什么必須使用很深的網(wǎng)絡」一直沒有清楚的答案。關(guān)于這個問題,幾年前我們曾經(jīng)嘗試從模型復雜度的角度進行解釋。?


          一般來說,機器學習模型復雜度與其「容量」(capacity)有關(guān),而容量對模型的學習能力有重大影響,因此,模型的學習能力與其復雜度有關(guān)。機器學習界早就知道,如果能增強一個學習模型的復雜度,那它的學習能力往往能得到提升。怎樣提高復雜度呢?對神經(jīng)網(wǎng)絡模型來說,很明顯有兩個辦法:把模型加「深」,或把模型加「寬」。


          從提升模型復雜度的角度看,「加深」會更有效,因為簡單來說,「加寬」僅是增加了計算單元,從而增加了基函數(shù)的數(shù)目;而在「加深」時不僅增加了基函數(shù)的數(shù)目,還增加了函數(shù)嵌套的層數(shù),于是泛函表達能力會更強。所以,為提升復雜度,應該把網(wǎng)絡「加深」。?


          有人可能會問,既然機器學習界早就知道能通過把神經(jīng)網(wǎng)絡模型加深來提升學習能力,為什么以往不這樣做呢?除了前面提到的「梯度消失」這個技術(shù)障礙,這還涉及另外一個問題:因為存在「過擬合」(overfitting),在機器學習中把模型的學習能力變強未必一定是件好事。過擬合是機器學習的大敵。


          簡單來說,給定一個數(shù)據(jù)集,機器學習希望把數(shù)據(jù)集里所包含的「一般規(guī)律」學出來用于今后的數(shù)據(jù)對象,但有時候可能會把當前數(shù)據(jù)集本身的一些特性學出來,卻錯誤地當作一般規(guī)律去使用了,這就會犯錯誤,這就是過擬合。產(chǎn)生過擬合的重要因素之一,就是模型的學習能力太強了,把不該學的東西也學到了。所以,以往在機器學習中都是盡量避免使用太復雜的模型。?


          現(xiàn)在為什么能使用深度神經(jīng)網(wǎng)絡這樣的復雜模型了呢?有好幾個重要因素:首先,現(xiàn)在有大數(shù)據(jù)了。機器學習中有很多緩解過擬合的策略,例如決策樹剪枝、支持向量機正則化、神經(jīng)網(wǎng)絡提早終止訓練等,但最簡單有效的就是使用更多的數(shù)據(jù)。


          比方說,數(shù)據(jù)集中只有三千個樣本,從它里面學出來的「特性」不太可能是一般規(guī)律,但如果有三千萬,甚至三千萬萬個樣本,那從它里面學出來的「特性」或許就已經(jīng)是一般規(guī)律了。所以,現(xiàn)在有了大數(shù)據(jù),我們不必再像以往那樣對復雜模型「敬而遠之」。第二,今天有 GPU、CPU 集群等強力計算設(shè)備,使我們有足夠的算力來訓練復雜模型。第三,經(jīng)過機器學習界的努力,現(xiàn)在已經(jīng)有很多有效訓練深度神經(jīng)網(wǎng)絡這種復雜模型的技巧(trick),例如很多緩解神經(jīng)網(wǎng)絡梯度消失的辦法。


          小結(jié)一下,這套對「為什么深」的「復雜度解釋」主要強調(diào)三點:第一,今天有大數(shù)據(jù);第二,有強力的計算設(shè)備;第三,有很多有效的訓練技巧。


          這三點導致現(xiàn)在能夠使用高復雜度模型,而深度神經(jīng)網(wǎng)絡恰是一種便于實現(xiàn)的高復雜度模型。上面這套解釋有一定意義,例如它啟發(fā)我們從復雜度的角度來研究深度學習中的一些機制如 dropout 等[4]。但這套解釋有個重要問題沒解決:為什么扁平的(寬的)網(wǎng)絡不如深度神經(jīng)網(wǎng)絡?因為把網(wǎng)絡「加寬」也能增加復雜度,雖然效率不如「加深」高。


          想象一下,如果增加無限個隱層神經(jīng)元,那么即便僅使用一個隱層,網(wǎng)絡的復雜度也可以提升非常高,甚至超過很多深度神經(jīng)網(wǎng)絡。然而在實踐中人們發(fā)現(xiàn),「寬」的淺層網(wǎng)絡性能比不上相對「窄」的深層網(wǎng)絡,這用復雜度難以解釋。因此,我們需要更深入一點的思考。?


          我們問一個問題:深度神經(jīng)網(wǎng)絡最重要的功用是什么?對此,機器學習界目前有一個基本共識,那就是「表示學習」(representation learning)。簡單來說,如圖 3 所示,以往我們拿到一個數(shù)據(jù)對象,比方說一幅圖像,先要用很多特征比如說顏色、紋理等把它描述出來,這個步驟稱為「特征工程」(feature engineering),然后我們再進行分類器學習。


          設(shè)計特征是許多應用研究領(lǐng)域的重要內(nèi)容,例如計算機視覺與模式識別領(lǐng)域的研究中有相當一部分內(nèi)容是關(guān)于設(shè)計視覺特征如 SIFT、HOG 等,而這個部分是機器學習研究所不關(guān)心的,后者主要關(guān)注相對通用、不依賴于具體應用域的技術(shù),以往主要是針對表示為「特征向量」的數(shù)據(jù)去做分析建?!,F(xiàn)在有了深度學習,只需把數(shù)據(jù)從一端扔進去,從另外一端就能得到模型,中間用到的特征描述可以通過深度學習自己來解決,這就是所謂的「特征學習」或者表示學習。


          從某種角度看,這是機器學習研究的疆域擴展到了一些應用研究領(lǐng)域的傳統(tǒng)范圍。與以往的機器學習技術(shù)相比,在應用上來說這是一個很大的進步,因為不再需要完全依賴人類專家設(shè)計特征了,特征本身也可以跟學習器一起進行聯(lián)合優(yōu)化。



          進一步我們再問:對表示學習來說最關(guān)鍵的是什么??


          我們的答案是:逐層加工處理。如圖4所示,比方說在輸入一幅圖像時,在神經(jīng)網(wǎng)絡最底層看到是一些像素,而一層層往上會逐步出現(xiàn)邊緣、輪廓等抽象級別越來越高的描述。雖然在真實的神經(jīng)網(wǎng)絡中未必有這么清晰的分層,但總體上確有自底向上不斷抽象的趨勢。?


          事實上淺層神經(jīng)網(wǎng)絡幾乎能做到深層神經(jīng)網(wǎng)絡所做的別的任何事(例如提升復雜 度),唯有深度的逐層抽象這件事,它由于層數(shù)淺而做不了。我們認為,「逐層加工處理」正是表示學習的關(guān)鍵,也是深度學習成功的關(guān)鍵因素之一。?


          但是在機器學習領(lǐng)域,逐層加工處理并不新鮮,以前已經(jīng)有很多技術(shù)是在進行逐層加工處理。例如決策樹、Boosting 都是「逐層加工處理」模型,但是與深度神經(jīng)網(wǎng)絡相比,它們有兩個弱點:一是模型復雜度不夠。例如決策樹,對給定數(shù)據(jù)集來說其模型深度是受限的,假設(shè)僅考慮離散特征,則樹的深度不會超過特征的個數(shù),不像深度神經(jīng)網(wǎng)絡那樣可以任意提升復雜度;二是在學習過程中缺乏特征變換,學習過程始終在同一個特征空間中進行。


          我們認為這兩個因素對深度神經(jīng)網(wǎng)絡的成功也至關(guān)重要。當我們同時考慮「逐層加工處理」和「內(nèi)置特征變換」時就會發(fā)現(xiàn),深度模型是非常自然的選擇,因為基于深度模型可以容易地同時做到上面這兩點。在選用深度模型后,由于模型復雜度高、容易過擬合,所以我們要用大數(shù)據(jù);它很難訓練,所以我們要有訓練技巧;計算開銷大,所以我們要使用強力計算設(shè)備……?


          我們發(fā)現(xiàn),這些是我們選擇深度模型之后的結(jié)果,而不是選用深度模型的原因!


          這跟以前的認識不太一樣。以前認為因為具備了這些條件而導致我們能使用深度模型,現(xiàn)在看來因果關(guān)系恰是反過來的。事實上,大訓練數(shù)據(jù)、訓練技巧,乃至強力計算設(shè)備都不僅限服務于深度模型,同樣可以服務于淺層模型,因此,具備了這些條件并不必然導致深度模型優(yōu)于淺層模型。




          還有一點值得一提:擁有很大的訓練數(shù)據(jù)時,需要使用復雜度高的模型,因為低復雜度模型無法對大數(shù)據(jù)進行充分利用。


          比方說僅使用一個簡單的線性模型,那么有兩千萬樣本還是兩億樣本恐怕沒有多少區(qū)別,因為模型已經(jīng)「學不進去」了。而要模型有足夠的復雜度,這又給使用深度模型加了一分,因為深度模型可以容易地通過加深層數(shù)來提升復雜度。


          小結(jié)一下,我們的討論分析導出的結(jié)論是,有三個關(guān)鍵因素:?


          • 逐層加工處理?

          • 內(nèi)置特征變換?

          • 模型復雜度夠?


          這是我們認為深度神經(jīng)網(wǎng)絡能夠成功的關(guān)鍵原因,或者說是我們關(guān)于深度神經(jīng)網(wǎng)絡成功原因的猜想。有意思的是,這三個因素并沒有「要求」我們必須使用神經(jīng)網(wǎng)絡模型。只要能同時做到這三點,別的模型應該也能做深度學習。


          為何有必要探討 DNN 之外的深度模型?


          沒有任何模型是完美的,深度神經(jīng)網(wǎng)絡模型也不例外。


          首先,凡是用過深度神經(jīng)網(wǎng)絡的人都知道,需花費大量的精力來調(diào)參。這會帶來很多問題。第一,調(diào)參經(jīng)驗很難共享,例如在圖像任務上調(diào)參的經(jīng)驗很難在做語音任務時借鑒。第二,今天無論是科學界還是工程技術(shù)界都非常關(guān)注研究結(jié)果的可重復性,而深度學習恐怕是整個機器學習領(lǐng)域中可重復性問題最嚴重的子領(lǐng)域。常有這樣的情況:一組研究人員發(fā)文章報告的結(jié)果,很難被其他研究人員重現(xiàn),因為即便使用相同的數(shù)據(jù)、 相同的方法,超參數(shù)設(shè)置稍有不同就可能使結(jié)果有巨大差別。?


          其次,神經(jīng)網(wǎng)絡的模型結(jié)構(gòu)需要在訓練前預設(shè)。但是在任務完成前,怎么能知道模型復雜度應該是多大呢?事實上,我們通常是在使用超過必需復雜度的網(wǎng)絡。深度神經(jīng)網(wǎng)絡的一些最新研究進展,例如網(wǎng)絡剪枝、權(quán)重二值化、模型壓縮等,實質(zhì)上都是試圖在訓練過程中適當減小網(wǎng)絡復雜度。


          顯然,使用過高復雜度的模型必然導致不必要地消耗了更多計算開銷、導致對訓練樣本量不必要的高需求。有沒有可能先用一個簡單模型,然后在學習過程中自適應地增加模型復雜度呢?遺憾的是這對神經(jīng)網(wǎng)絡很困難,因為若網(wǎng)絡結(jié)構(gòu)未定,梯度求導對象在變化,那 BP 算法可就麻煩了。深度神經(jīng)網(wǎng)絡的其他缺陷例如小數(shù)據(jù)上難以使用、黑箱模型、理論分析困難等就不贅述了。?


          或許有人會說,學術(shù)創(chuàng)新研究可能要考慮上述問題,而對應用實踐來說只要性能好就行,有深度神經(jīng)網(wǎng)絡就足夠了……其實即便從應用角度來看,探討神經(jīng)網(wǎng)絡之外的深度學習模型也很有必要,因為雖然深度神經(jīng)網(wǎng)絡現(xiàn)在很流行,但在許多任務上(例如 Kaggle 的很多數(shù)據(jù)分析競賽中)獲勝的并非深度神經(jīng)網(wǎng)絡,而是隨機森林、XGBoost 這些相對比較傳統(tǒng)的機器學習模型。事實上,目前深度神經(jīng)網(wǎng)絡做得好的幾乎都是涉及圖像、視頻、語音等的任務,都是典型的數(shù)值建模任務,而在其他涉及符號建模、離散建模、混合建模的任務上,深度神經(jīng)網(wǎng)絡的性能并沒有那么好。


          機器學習領(lǐng)域有一個著名的「沒有免費的午餐」定理[2],它告訴我們,沒有任何一個模型在所有任務上都優(yōu)于其他模型。實際上,不同模型各有自己的適用任務范疇,深度神經(jīng)網(wǎng)絡也不例外。因此,有充分的理由去探討深度神經(jīng)網(wǎng)絡之外的深度學習模型,因為這樣的模型或許能讓我們在圖像、視頻、語音之外的更多任務上獲得深度學習的性能紅利。


          小結(jié)一下,今天我們談到的深度模型都是深度神經(jīng)網(wǎng)絡,用技術(shù)術(shù)語來說,它是多層可參數(shù)化可微分的非線性構(gòu)件組成的模型,可以用 BP 算法來訓練。這里有兩個問題:一是現(xiàn)實世界中的問題多種多樣,其所涉性質(zhì)并不都是可微的,或能用可微構(gòu)件最優(yōu)建模的;二是機器學習領(lǐng)域幾十年的積累,有許多構(gòu)件能作為復雜模型的基礎(chǔ),其中相當一部分是不可微的。


          能否基于不可微構(gòu)件來構(gòu)建新型深度學習模型?這是一個基礎(chǔ)性挑戰(zhàn)問題。一旦得到答案,就同時回答了其他一些問題,例如深度模型是否只能是深度神經(jīng)網(wǎng)絡?是否能不用 BP 算法訓練?有沒有可能讓深度學習在圖像、視頻、語音之外的更多數(shù)據(jù)分析任務上發(fā)揮作用?……?


          我們最近在這方面進行了一些初步探索,提出了「深度森林」這種非神經(jīng)網(wǎng)絡的新型深度學習模型[5,6]。深度森林的基礎(chǔ)構(gòu)件是不可微的決策樹,其訓練過程不基于 BP 算法,甚至不依賴于梯度計算。它初步驗證了上一節(jié)中關(guān)于深度學習奏效原因的猜想,即只要能做到逐層加工處理、內(nèi)置特征變換、模型復雜度夠,就能構(gòu)建出有效的深度學習模型,并非必須使用神經(jīng)網(wǎng)絡。這種技術(shù)已經(jīng)在大規(guī)模圖像任務(我們認為此類任務的首選技術(shù)是深度神經(jīng)網(wǎng)絡)之外的許多任務中顯示出優(yōu)秀性能,包括互聯(lián)網(wǎng)支付非法套現(xiàn)檢測等大規(guī)模數(shù)據(jù)分析任務。在一定程度上驗證了,在數(shù)值建模之外的任務上,有可能研制出新型深度學習模型來獲得更好的性能。


          需要注意的是,任何一種新技術(shù)要取得廣泛成功都需經(jīng)過長期探索。以深度神經(jīng)網(wǎng)絡中最著名的卷積神經(jīng)網(wǎng)絡為例,經(jīng)過了三十來年、成千上萬研究者和工程師探索和改 進,才取得今天的成功。深度森林還在「嬰兒期」,雖然在某些問題上已得以應用,但是不能期待它在廣泛任務上都能夠立即發(fā)揮作用。?


          實際上,我們以為深度森林探索的主要價值并不在于立即產(chǎn)生一種應用性能優(yōu)越的新算法,而是為深度學習的探索提供一個新思路。以往我們以為深度學習就是深度神經(jīng)網(wǎng)絡,只能基于可微構(gòu)件搭建,現(xiàn)在我們知道了這里有更多的可能性。好比說深度學習是一間黑屋子,里面有什么呢?以前我們都知道有深度神經(jīng)網(wǎng)絡,并以為僅有深度神經(jīng)網(wǎng)絡?,F(xiàn)在深度森林把這個屋子打開了一扇門,今后可能會涌現(xiàn)更多的東西。這或許是這個探索在學科領(lǐng)域發(fā)展上更重要的意義。


          參考文獻:

          [1] J. Sirignano. Deep learning models in finance. SIAM News, 2017, 50(5): 1.?
          [2] 周志華. 機器學習. 北京: 清華大學出版社, 2016.
          [3] G. E. Hinton, S. Osindero, and Y.-W. Simon. A fast learning algorithm for deep belief nets. Neural Computation, 2006, 18(7): 1527-1554.?
          [4] W. Gao and Z.-H. Zhou. Dropout Rademacher complexity of deep neural networks. Science China Information Sciences, 2016, 59(7): 072104: 1-072104: 12.?
          [5] Z.-H. Zhou and J. Feng. Deep forest: Towards an alternative to deep neural networks. In: IJCAI, 2017: 3553-3559.?
          [6] Z.-H. Zhou and J. Feng. Deep forest. National Science Review, 2019.


          點個在看 paper不斷!

          瀏覽 47
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产尻屄| 国产一区二区激情小说片 | 久久一二三区 | 大香蕉97视频 | 日韩无码电影网站 |