深度學(xué)習(xí):技術(shù)原理、迭代路徑與局限

2 評論 7375 瀏覽 56 收藏 22 分鐘

本文嘗試復(fù)盤梳理深度學(xué)習(xí)目前的技術(shù)要點(diǎn),深度學(xué)習(xí)中模型迭代的方向,以及改進(jìn)后存在的局限。

第一部分:深度學(xué)習(xí)技術(shù)基本要素:神經(jīng)元、神經(jīng)網(wǎng)絡(luò)、分類器、可視化框架

在深度學(xué)習(xí)領(lǐng)域,神經(jīng)元是深度學(xué)習(xí)的基本單位。

神經(jīng)元從數(shù)學(xué)角度來看,為一個(gè)線性函數(shù)公式(如下圖神經(jīng)元里的公式)+非線性函數(shù)(激勵(lì)函數(shù))組成。線性函數(shù)(包括降維后的線性函數(shù),此處不細(xì)展開)用于深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的模型訓(xùn)練,這其中,很可能出現(xiàn)欠擬合(欠擬合是指相對簡單的線性函數(shù),分類處理信息時(shí),因?yàn)榉诸悩?biāo)簽數(shù)量或準(zhǔn)確度不足以做有效區(qū)分)。于是,在處理這一個(gè)問題時(shí),工程師們?nèi)藶樵O(shè)置了激勵(lì)函數(shù),來平衡線性函數(shù)無法解決的問題:激活函數(shù)是神經(jīng)元中非線性部分,用來減低線性部分造成的誤差。

經(jīng)由神經(jīng)元作為節(jié)點(diǎn)連接而成的網(wǎng)絡(luò),是神經(jīng)網(wǎng)絡(luò)。最基本的神經(jīng)網(wǎng)絡(luò),有兩個(gè)神經(jīng)元,分別處在隱含層、輸出層,如下圖:

最簡神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖

深度神經(jīng)網(wǎng)絡(luò),是由含多層隱含層神經(jīng)元組成的神經(jīng)網(wǎng)絡(luò)。具體的原理和實(shí)踐會(huì)在下文再做展開,展開之前,不妨先了解深度學(xué)習(xí)技術(shù)層面到底解決了什么問題?

首先,深度學(xué)習(xí)與傳統(tǒng)機(jī)器學(xué)習(xí)處理輸入信息方式,有一個(gè)根本的差異:

傳統(tǒng)機(jī)器學(xué)習(xí)主要是通過四種基于人為整理、明確分類維度邏輯關(guān)系的方式處理輸入的信息。包括樸素貝葉斯,用概率量化計(jì)算模型;決策樹,用合適的維度降低分類信息熵;回歸模型,建模降低預(yù)測值與訓(xùn)練目標(biāo)值的差距;SVM(支持向量機(jī)),尋找超平面保證分類的置信度最大。

在深度學(xué)習(xí)中,有大量的線性與非線性分類器,分類器是自動(dòng)對信息進(jìn)行處理,并不需要人為事先明確特征、標(biāo)簽分類。

相對而言,不需要預(yù)先準(zhǔn)確分類標(biāo)簽的深度學(xué)習(xí)解決了傳統(tǒng)機(jī)器學(xué)習(xí)的兩大問題:

  1. 特征清晰度要求降低。訓(xùn)練中不再只是在固定明確的標(biāo)簽下處理,還允許模糊、噪聲存在,對不同特征偏向的數(shù)據(jù)敏感程度自動(dòng)忽略。
  2. 不可分類變?yōu)榭煞帧S捎跊]有明確分類的前提,使得原本大量(人為)無法分類的特征,可以變成(機(jī)器)可分類的特征,且相對高效地進(jìn)行。(人為分類總是有局限的,因?yàn)樾枰鞔_定義、標(biāo)簽,一來需要時(shí)間、二來需要有效共識的達(dá)成)

接著,可以大致了解目前深度學(xué)習(xí)使用的框架有哪些,比如TensorFlow、Caffe、Chainer、Torch、Theano等。在這里我想強(qiáng)調(diào)的是深度學(xué)習(xí)中主流選用的框架TensorFlow的部分特性。

在一個(gè)前沿技術(shù)領(lǐng)域,一個(gè)框架是否值得使用(或者更準(zhǔn)確地說,在這里我想提到的是能否下一步擴(kuò)大使用范圍),比如,TensorFlow是否值得使用,專業(yè)的工程師可能會(huì)提到:框架性能、社區(qū)活躍度、語言、環(huán)境與集群支持等等。就我目前的了解到的,有兩個(gè)我覺得(面向用戶,很受啟發(fā)的)值得關(guān)注的地方:一個(gè)是使用的社區(qū)活躍度,一個(gè)是使用界面是否可視化。社群活躍度意味著這個(gè)框架使用時(shí),開發(fā)者之間的交流與相互促進(jìn)程度,如果是一個(gè)非常小眾、其他開發(fā)者不愿參與的框架,那么是不利于下一步擴(kuò)大使用范圍的。使用界面可視化,TensorFlow 有Tensorboard,Tensorboard支持可視化的訓(xùn)練網(wǎng)絡(luò)過程——事實(shí)上,可視化操作,一直是開發(fā)者與使用者(無論是相對原創(chuàng)開發(fā)者而言后來的開發(fā)者、還是普通用戶)之間達(dá)成相對簡單溝通的一個(gè)非常重要的環(huán)節(jié)。

開發(fā)者/工程人員致力于用最簡潔的語言(無論是否友好,甚至可能晦澀難懂)來運(yùn)行工程,但這個(gè)結(jié)果,很可能是后來者、用戶的“艱難”讀取。這不難讓我想到一個(gè)《硅谷》(?Silicon Valley,HBO)電視劇中一個(gè)情節(jié):Pied Piper最初上線時(shí),用戶界面異常簡陋,男主Richard Hendricks還有他的所有工程界的朋友都完全沒有意識到這一點(diǎn)——他們覺得非常適合自己使用,但作為普通用戶+投資人的女主Monica Hall(本來是對Pied Piper抱著極大期待的)在內(nèi)測使用時(shí),第一反應(yīng)是覺得界面一點(diǎn)都不友好,沒有繼續(xù)使用的興趣。后來Pied Piper用戶數(shù)一直徘徊在萬人左右,沒有上升趨勢,教育用戶后接受使用的人數(shù)也沒有明顯提升。

這個(gè)可視化(友好面向用戶的一種)是題外話了,不過回到深度學(xué)習(xí),無論是其目前主流選擇的框架(如TensorFlow)還是編程語言(如Python),都是往面向用戶友好/易用的方向行進(jìn)的。

上面提到深度學(xué)習(xí)技術(shù)實(shí)現(xiàn)的基本元素,包括神經(jīng)元、激活函數(shù)、神經(jīng)網(wǎng)絡(luò)和深度神經(jīng)網(wǎng)絡(luò),目前深度學(xué)習(xí)使用的主流框架及其選擇標(biāo)準(zhǔn)。此外,還提到深度學(xué)習(xí)可以解決傳統(tǒng)機(jī)器學(xué)習(xí)無法突破的“明確的特征”局限。

第二部分:深度學(xué)習(xí)模型迭代/改進(jìn)方向,改進(jìn)后對應(yīng)局限

接下來,回到前面提到的目前深度學(xué)習(xí)基于上面提到的基本元素,真正落地的深度神經(jīng)網(wǎng)絡(luò)工程原理和實(shí)踐。這一部分會(huì)按前饋神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)、深度殘差網(wǎng)絡(luò)、強(qiáng)化學(xué)習(xí)、對抗學(xué)習(xí)的順序展開。我會(huì)比較詳細(xì)介紹前饋神經(jīng)網(wǎng)絡(luò)在工程訓(xùn)練中的流程,其他會(huì)把它們分別要解決的問題以及可能的局限。

前饋神經(jīng)網(wǎng)絡(luò)

前饋神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)中最簡單的神經(jīng)網(wǎng)絡(luò),一般分為:反向傳播神經(jīng)網(wǎng)絡(luò)(BP網(wǎng)絡(luò)),徑向基函數(shù)神經(jīng)網(wǎng)絡(luò)(RBF網(wǎng)絡(luò))。在這里我會(huì)相對詳細(xì)地梳理這個(gè)最樸素的神經(jīng)網(wǎng)絡(luò)是如何落地的。

首先,我們來看一下前饋神經(jīng)網(wǎng)絡(luò)最基礎(chǔ)的網(wǎng)絡(luò)結(jié)構(gòu),以BP網(wǎng)絡(luò)為例,這個(gè)我們在上文最基礎(chǔ)的神經(jīng)網(wǎng)絡(luò)中就給出了示意圖。上文的示意圖中,神經(jīng)元里的(wx+b)->,其實(shí)是簡化了的,具體函數(shù)表達(dá)式會(huì)如下圖:

神經(jīng)網(wǎng)絡(luò)函數(shù)表達(dá)式

這個(gè)神經(jīng)網(wǎng)絡(luò)進(jìn)入工程訓(xùn)練,需要經(jīng)過以下三個(gè)環(huán)節(jié):

  1. ?準(zhǔn)備樣本(可以是文本、圖片、音頻以及音視頻結(jié)合等訓(xùn)練樣本)
  2. 清洗處理(目的是幫助網(wǎng)絡(luò)更高效、準(zhǔn)確分類)
  3. 正式訓(xùn)練(將訓(xùn)練樣本代入訓(xùn)練模型,即上述示圖公式)

在上面三個(gè)環(huán)節(jié)中,正式訓(xùn)練的時(shí)候,訓(xùn)練過程不斷迭代使得w、b的值越來越適合(擬合)要訓(xùn)練的模型,為了求出w、b,深度學(xué)習(xí)中有梯度下降法(迭代法思維),來獲取逼近最優(yōu)w、b值。再進(jìn)一步,由于梯度下降法訓(xùn)練時(shí)候要?jiǎng)佑帽容^重的樣本訓(xùn)練,后來又出現(xiàn)了隨機(jī)梯度下降法(即隨機(jī)抽樣而不是全部樣本進(jìn)行處理),來獲得相對較優(yōu)的w、b值。

值得注意的是,從梯度下降法到隨機(jī)梯度下降,這樣的思維轉(zhuǎn)化,在深度學(xué)習(xí)領(lǐng)域是非常常見的:深度學(xué)習(xí)面向萬級以上的海量樣本,如何使訓(xùn)練由相對重的模式變成比較輕的模式,從總體到隨機(jī)抽樣,是一種解決方案——核心就是在無限成本取得最優(yōu)到有限成本取得次優(yōu)之間權(quán)衡。

梯度下降法:求?。╳,b)極值,使損失最小化

另外,在求取w、b值的過程中,無論是取任何值,難以避免產(chǎn)生的是一個(gè)誤差值,在訓(xùn)練過程中,工程師們會(huì)引入一個(gè)損失函數(shù)Loss,而上述的梯度下降求取w、b最優(yōu)解的同時(shí)便是求出最小損失函數(shù)的過程。

在訓(xùn)練過程中,有兩個(gè)主要環(huán)節(jié),一個(gè)是訓(xùn)練集訓(xùn)練,一個(gè)是驗(yàn)證集測試。前者是搭建最合適模型所需,后者是檢驗(yàn)所搭建模型是否合適使用。在檢驗(yàn)的過程中,可能會(huì)出現(xiàn)過擬合(Overfitting)問題,深度學(xué)習(xí)中高VC維的分類器,可能使模型過度擬合,降低模型的準(zhǔn)確性——驗(yàn)證集驗(yàn)證過程中會(huì)基于Loss損失函數(shù)和準(zhǔn)確率(Accuracy)來判斷是否在較優(yōu)的準(zhǔn)確度。在搭建模型完成后,還有第三步,就是用測試集,檢驗(yàn)搭建模型的效用了。

以上便是一個(gè)基礎(chǔ)神經(jīng)網(wǎng)絡(luò)的流程框架,和在訓(xùn)練處理中引入的比較核心的思維。

介紹完最簡單的神經(jīng)網(wǎng)絡(luò)工程流程,接下來,我會(huì)針對卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)、深度殘差網(wǎng)絡(luò)要解決的問題和目前的局限來分享。

之所以以這個(gè)角度,是因?yàn)?,在學(xué)習(xí)深度學(xué)習(xí)的過程中,我們會(huì)很容易發(fā)現(xiàn),基于上述提到的最基礎(chǔ)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),開發(fā)者們是一一針對工程實(shí)踐時(shí),遇到的瓶頸,找到對應(yīng)的解決辦法。而這些辦法,慢慢建立成為新的落地模型。所以,我們是可以基于最簡單網(wǎng)絡(luò)模型,再進(jìn)一步了解這些更新的神經(jīng)網(wǎng)絡(luò)模型的(它們的特性與功能)。

這些模型,既可以解決最基本神經(jīng)網(wǎng)絡(luò)無法突破的部分問題,同時(shí),也面臨著其他具體的局限。

卷積神經(jīng)網(wǎng)絡(luò)(CNN)

CNN,也是一種BP網(wǎng)絡(luò),,不過與之前的相比,其神經(jīng)元可響應(yīng)一部分覆蓋范圍的周圍單元、通關(guān)權(quán)值共享的方式使得下一層工作量大大較少(可參照下圖)。而之前提到的是全連接網(wǎng)絡(luò)。

全連接網(wǎng)絡(luò)的好處是,最大程度讓整個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)不會(huì)漏掉(就像上面的神經(jīng)網(wǎng)絡(luò)示意圖,每一個(gè)上一層神經(jīng)元全部連接到下一層的神經(jīng)元)。但是,就像上文也提到的,深度學(xué)習(xí)要處理的是萬級以上的海量數(shù)據(jù),要對海量數(shù)據(jù)進(jìn)行全連接處理,是一種非常重的模式,訓(xùn)練過程中,收斂速度會(huì)很慢。

CNN,相較而言,就是比較輕的模式(這里再一次提到用有限成本處理海量信息的方案了),可以在訓(xùn)練中,較少更新權(quán)重、明顯快于全連接網(wǎng)絡(luò)地完成收斂。

卷積網(wǎng)絡(luò)處理數(shù)據(jù)過程及方式

CNN的訓(xùn)練過程如上圖所示,除了一般處理方式(圖中加和處理的模式,即將所有卷積的數(shù)據(jù)匯總),還有池化層處理的方式。池化層處理,主要分為兩種路徑,一種是取最大值,一種是取平均值。無論是哪種路徑,目的都在于對數(shù)據(jù)進(jìn)行又一次特征提取,減少下一層的數(shù)據(jù)處理量,同時(shí)獲得相對抽象、模糊的信息,提高泛化性(想象一下,目標(biāo)是找到所有人的共性。那上一步是:只提取一個(gè)人的特性,和找到幾個(gè)人的共性,哪一種方式的更快、特征更有效)。

當(dāng)然,上面提到的池化層會(huì)對信息進(jìn)行模糊化處理,算是一種有損壓縮。與之對應(yīng)的,是整個(gè)卷積神經(jīng)網(wǎng)絡(luò),在卷積核對輸入向量進(jìn)行特征提取的過程(將高維向量映射成低維向量),其實(shí)也是一種有損壓縮。

到這里,又可以解答卷積神經(jīng)網(wǎng)絡(luò)可以解決什么的問題了。在開始的時(shí)候,我們提到,CNN神經(jīng)元通過權(quán)值共享加快訓(xùn)練過程中的收斂速度,現(xiàn)在我們可以發(fā)現(xiàn),CNN可以解決的另一個(gè)問題:減少噪聲、訛誤對分類的影響。(當(dāng)然這個(gè)可能需要更具體的工程流程展示才會(huì)比較清楚,感興趣的讀者可以進(jìn)一步了解)

循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)

它要解決的問題是什么呢?是上下文場景記憶的問題。

上文提到的神經(jīng)網(wǎng)絡(luò)模型都不能解決“記憶暫存功能”(對比較遠(yuǎn)期輸入的內(nèi)容無法進(jìn)行量化,與當(dāng)前內(nèi)容一起反應(yīng)到網(wǎng)絡(luò)中進(jìn)行訓(xùn)練),循環(huán)神經(jīng)網(wǎng)絡(luò)可以解決,在自然語言處理(NLP)中也應(yīng)用最廣泛。

在講RNN如何實(shí)現(xiàn)上下文場景記憶問題時(shí),無法跳過的一個(gè)基礎(chǔ)是:隱馬爾可夫模型(HMM)。隱馬爾可夫模型中,有馬爾可夫鏈。馬爾可夫鏈的核心是:在給定當(dāng)前知識和信息的前提下,觀察對象過去的歷史狀態(tài),對將來的預(yù)測來說是無關(guān)的。在RNN中,隱含狀態(tài)下的馬爾可夫鏈會(huì)處理神經(jīng)元之間的信息傳遞。

不過,理論上RNN是行得通的,但在實(shí)踐上工程師們發(fā)現(xiàn)訓(xùn)練效果并不佳,所以現(xiàn)在用了LSTM(Long Short-Term Memory,長短期記憶網(wǎng)絡(luò))來取代傳統(tǒng)的RNN。LSTM規(guī)避了傳統(tǒng)RNN中遇到的問題,并啟動(dòng)了一個(gè)有效的機(jī)制:忘記門(Forget Gate),在訓(xùn)練過程中LSTM會(huì)把有潛在影響的關(guān)系學(xué)習(xí),忽略無效(不具有影響)的關(guān)系。

LSTM目前應(yīng)用在翻譯器、聊天機(jī)器人、分類器等場景。

說到局限性,訓(xùn)練過程中,目前只支持相對固定、邊界劃定清晰的場景,LSTM對多場景問題也是無能為力的(這也是深度學(xué)習(xí)所有網(wǎng)絡(luò)模型沒有本質(zhì)突破的問題,觀點(diǎn)取自參考書籍)。

深度殘差網(wǎng)絡(luò)(DRN)

它要解決的問題是:傳統(tǒng)深度學(xué)習(xí)網(wǎng)絡(luò)中,網(wǎng)絡(luò)到一定深度后,學(xué)習(xí)率、準(zhǔn)確率會(huì)下降的問題。目前,DRN在圖像分類、對象檢測、語義分割等領(lǐng)域都有較好的識別確信度。

強(qiáng)化學(xué)習(xí)、對抗學(xué)習(xí)、其他

強(qiáng)化學(xué)習(xí)(Reinforcement Learning)和對抗學(xué)習(xí),相對來說,都是深度學(xué)習(xí)比較前沿的部分。

強(qiáng)化學(xué)習(xí),嚴(yán)格來說,是AI在訓(xùn)練中得到策略的訓(xùn)練過程,強(qiáng)調(diào)的是一個(gè)過程,而不同于上述各種神經(jīng)網(wǎng)絡(luò)強(qiáng)調(diào)的是搭建模型的方式。

那強(qiáng)化學(xué)習(xí)要解決的問題是什么?上面我們提到的神經(jīng)網(wǎng)絡(luò)大部分是在完成分類問題,判斷樣本標(biāo)簽類別等,那機(jī)器如何更智能表現(xiàn)呢?強(qiáng)化學(xué)習(xí)就作為一種機(jī)器自學(xué)習(xí)的狀態(tài),來解決上面神經(jīng)網(wǎng)絡(luò)相對來說需干預(yù)才可學(xué)習(xí)的局限。比如在AlphaGo圍棋學(xué)習(xí)中,就會(huì)用到強(qiáng)化學(xué)習(xí)這樣的自學(xué)習(xí)過程。

強(qiáng)化學(xué)習(xí)模型核心

強(qiáng)化學(xué)習(xí)要做的主要有兩步:

  1. 將獎(jiǎng)勵(lì)、損失定義好
  2. ?以主體較低成本不斷嘗試,總結(jié)不同狀態(tài)(State)下,獎(jiǎng)勵(lì)(Reward)大的工作方式。(其中一種思路就是上圖提到的馬爾可夫決策過程,可參照RNN部分)

對抗學(xué)習(xí),目前主要是指生成對抗網(wǎng)絡(luò)(Generative Adversarial Networks,GAN)。GAN是通過模擬一種數(shù)據(jù)概率分布的生成器,使得概率分布與觀測數(shù)據(jù)的概率統(tǒng)計(jì)分布一致或者盡可能接近。這個(gè)過程涉及納什均衡中的博弈機(jī)制,具體包括在訓(xùn)練中,判別模型(Discriminative Model)——盡可能提取特征正確率增加的模型,生成模型(Generative Model)——盡可能“偽造”讓判別模型以為是真的結(jié)果。

其他,還有相對更前沿的,包括條件生成對抗網(wǎng)絡(luò)(CGAN)、深度卷積對抗網(wǎng)絡(luò)(DCGAN)等等。這些前沿方向,對應(yīng)解決的,包括對抗學(xué)習(xí)穩(wěn)定性不高、訓(xùn)練數(shù)據(jù)還原度及質(zhì)量水平等問題。

到這里,全文梳理了深度學(xué)習(xí)的基本元素、目前比較核心的神經(jīng)網(wǎng)絡(luò)模型、較為前沿的訓(xùn)練模式,以及它們要解決的問題、在實(shí)踐中對應(yīng)的局限。如果想進(jìn)一步了解深度學(xué)習(xí),你下一步可以學(xué)習(xí)的方向是:在這個(gè)框架之下,基于更具體的算法、問題與案例,實(shí)踐代碼工程。

 

本文是作者學(xué)習(xí)《白話深度學(xué)習(xí)與TensorFlow》一書后的筆記與復(fù)盤,其中算法模型大部分參考此書。歡迎交流AI相關(guān),Wechat:Danbchpk

作者:何沛寬

原文地址:http://36kr.com/p/5119949.html

版權(quán):人人都是產(chǎn)品經(jīng)理遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會(huì)明確標(biāo)注作者和來源,若標(biāo)注有誤,請聯(lián)系主編QQ:419297645

編輯:編輯部

來源公眾號:新智元(ID:AI_era),“智能+”中國主平臺,致力于推動(dòng)中國從“互聯(lián)網(wǎng)+”邁向“智能+”。

本文由人人都是產(chǎn)品經(jīng)理合作媒體 @新智元 授權(quán)發(fā)布,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自 Unsplash,基于 CC0 協(xié)議

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!