“山外有山比山高”-為什么叫深度學(xué)習(xí)?
1.1?模型的復(fù)雜表示
在上一節(jié)中(“眾里尋他千百度”-深度學(xué)習(xí)的本質(zhì)),討論了如何通過簡單的回歸模型預(yù)測(cè)未來一天的youtube頻道的觀看人數(shù)。事實(shí)上,在上一節(jié)的案例介紹中,使用的是線性回歸模型?,F(xiàn)在,考慮更復(fù)雜的情況。因?yàn)榫€性回歸模型的特點(diǎn)是只能簡單的認(rèn)為前一天的觀看人數(shù)和后一天的觀看人數(shù)之間是簡單的直線關(guān)系,但是在現(xiàn)實(shí)的情況中,可能二者之間的關(guān)系比較復(fù)雜,可能呈現(xiàn)出先上升后下降再上升的態(tài)勢(shì)。因此,需要考慮如何表示復(fù)雜的曲線,來增強(qiáng)模型的擬合能力。

圖1 復(fù)雜曲線的表示_1
在上圖中,紅色的曲線可以看成由三段直線組成,在機(jī)器學(xué)習(xí)中稱為分段直線(Picese Linear Curve)。在圖1中可以通過常數(shù)項(xiàng)(Constant)和多個(gè)藍(lán)色曲線的總和來表示紅色的曲線,其中,“0號(hào)位”的直線代表常數(shù)項(xiàng)。由于紅色曲線左側(cè)的直線與“1號(hào)位”中間的直線斜率相等,因此,紅色曲線左側(cè)的直線可以通過“0號(hào)位”的直線代表常數(shù)項(xiàng)與“1號(hào)位”分段直線相加來表示。依此類推,紅色曲線中間的直線可以通過“0號(hào)位”的直線代表常數(shù)項(xiàng)與“2號(hào)位”分段直線相加來表示;紅色曲線右側(cè)的直線可以通過“0號(hào)位”的直線代表常數(shù)項(xiàng)與“3號(hào)位”分段直線相加來表示。如此,便證明了可以通過常數(shù)項(xiàng)和多個(gè)藍(lán)色曲線的總和來表示紅色的曲線。

前一天的觀看人數(shù)和后一天的觀看人數(shù)之間的關(guān)系可能并不是分線段直線的表示形式,可能是在圖2中黑色的連續(xù)曲線(Continuous Curve)的形式。經(jīng)過進(jìn)一步分析發(fā)現(xiàn),在黑色曲線上標(biāo)記合適點(diǎn)(圖2中綠色的點(diǎn))或者標(biāo)記足夠的點(diǎn),便可以使用分線段的直線來近似表示黑色的連續(xù)曲線。
由于分線段的直線可以使用常數(shù)項(xiàng)和多個(gè)藍(lán)色曲線表示,這就等價(jià)于使用足夠多的藍(lán)色曲線可以近似表示黑色的連續(xù)曲線。因此,復(fù)雜模型表示問題的本質(zhì)在于如何尋找藍(lán)色曲線的函數(shù)表達(dá)式。
如圖3所示,可以通過sigmoid函數(shù)曲線(虛線)來代替藍(lán)色的曲線。在機(jī)器學(xué)習(xí)中,藍(lán)色的曲線也被稱為Hard Sigmoid。

?
Sigmoid函數(shù)的函數(shù)表達(dá)式見公式(1),函數(shù)中包括了3個(gè)參數(shù)c、b和w。其中,c決定了Sigmoid曲線的高度,b決定了Sigmoid曲線變化的快慢,w決定了Sigmoid曲線的坡度。
綜上所述,可以使用三個(gè)不同的Sigmoid函數(shù)之和加上一個(gè)常數(shù)項(xiàng)來近似表示紅色的曲線,見公式(2)。在式(2)中,i代表不同的Sigmoid函數(shù),本例中i取整數(shù)1至3。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
1.2多元特征的引入
未來一天的觀看人數(shù)可能不僅僅只和前一天的觀看人數(shù)有關(guān),可能還和前幾天的觀看人數(shù)都有聯(lián)系。在這種情況下可以將多元的情況引入,模型的表現(xiàn)會(huì)更好。由此,可以將公式(2)進(jìn)一步拓展為公式(3)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
在公式(3)中,下標(biāo)j表示輸入x的編號(hào),如果認(rèn)為未來一天的觀看人數(shù)與前三天的觀看人數(shù)都有關(guān)系,j的取值即為1至3。
現(xiàn)在假定i和j的取值均為整數(shù)1至3,進(jìn)一步討論公式(3)的表達(dá)形式。假設(shè),Sigmoid函數(shù)里的表達(dá)式是一個(gè)整體,用符號(hào)r表示,r和x之間的關(guān)系見公式(4)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
可以將其進(jìn)一步表示成矩陣的形式見式(5),式(5)的簡寫表達(dá)為式(6)。
? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????
在式(6)中,,
,
為向量,
為矩陣。
將向量r代入Sigmoid函數(shù),可得向量a,見公式(7)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
由于式(3)本質(zhì)上為3個(gè)Sigmoid函數(shù)之和,只是權(quán)重c不同,類似于用權(quán)重c加權(quán),再加上常數(shù)項(xiàng)b。因此式(3)可以寫成和
作點(diǎn)積,再加上常數(shù)項(xiàng)b的形式,見公式(8)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
1.3神經(jīng)網(wǎng)絡(luò)的形成
如果將公式(6)值公式(8),通過符號(hào)學(xué)派的符號(hào)表示,可以發(fā)現(xiàn)其實(shí)當(dāng)前的模型已經(jīng)形成了一個(gè)“網(wǎng)絡(luò)”形狀的結(jié)構(gòu),見圖4。在圖4中,最右側(cè)的黃色方塊表示模型的輸入即x,也被稱為特征(Feature)。與輸入直接相連的箭頭表示權(quán)重w(Weight)和輸入對(duì)應(yīng)的x相乘。輸入箭頭指向的灰色方塊中是“+”號(hào),同時(shí)代表偏差(bias)的綠色方塊指向灰色方塊,表示權(quán)重和輸入相乘的結(jié)果與偏差相加。藍(lán)色的球形表示Sigmoid函數(shù),灰色方塊的箭頭又指向藍(lán)色球形,表示經(jīng)灰色方塊得到的結(jié)果r代入Sigmoid函數(shù)。經(jīng)過藍(lán)色的球形之后,得到黃色的方塊a。依此類推,a和權(quán)重c相乘,加上常數(shù)項(xiàng)最終得到結(jié)果y。
?

在深度學(xué)習(xí)中,將藍(lán)色的球形,也就是這里的Sigmoid函數(shù),稱為激活函數(shù)(Activation Function)。由于圖4所表示的“網(wǎng)狀結(jié)構(gòu)”與人腦的神經(jīng)元十分類似,因此激活函數(shù)也被稱為神經(jīng)元(Neruon)。圖4中,一排的神經(jīng)元(3個(gè)Sigmoid)被稱為隱藏層(Hidden Layer)。隱含層的個(gè)數(shù)以及每層神經(jīng)元的個(gè)數(shù)均為超參數(shù),需要依據(jù)經(jīng)驗(yàn)和專業(yè)領(lǐng)域的認(rèn)知確定。這樣,圖4便構(gòu)成了一個(gè)神經(jīng)網(wǎng)絡(luò)(Nerual Network)。
激活函數(shù)不止Sigmoid函數(shù)一種。除了Sigmoid之外,常用的激活函數(shù)還有Relu函數(shù)(Rectified Linear Unit),其函數(shù)表達(dá)式見公式(9)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
公式(9)所表達(dá)的含義是,取0和某直線的最大值,并乘以權(quán)重C,調(diào)節(jié)曲線的高度。事實(shí)上,圖1中的深藍(lán)色曲線就是由兩個(gè)Relu函數(shù)曲線相加得到的,見圖5。至于激活函數(shù)的確定也是一個(gè)超參數(shù),需要訓(xùn)練模型之前事先給定。??

1.4 網(wǎng)絡(luò)的訓(xùn)練過程
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程(Train)和上一節(jié)中介紹的回歸模型的訓(xùn)練步驟基本一致,包括確定包含未知參數(shù)的函數(shù)、定義損失函數(shù)、優(yōu)化參數(shù)三個(gè)步驟。
根據(jù)公式(6)至公式(8),不難發(fā)現(xiàn)神經(jīng)網(wǎng)絡(luò)模型的未知參數(shù)包括、
、
和b。由此,確定了包含未知參數(shù)的函數(shù)。
損失函數(shù)的定義與上一節(jié)一樣,將樣本估計(jì)值與實(shí)際值之間的均方誤差作為損失函數(shù),這里即為L(\theta)。因此,優(yōu)化參數(shù)的過程即為尋找一組最優(yōu)的參數(shù)使得損失函數(shù)最小,將神經(jīng)網(wǎng)絡(luò)模型中的所有參數(shù)按照順序排成一個(gè)列向量,通過梯度下降算法,可得參數(shù)的一次更新(Update)過程見公式(10)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
公式(10)也可通過矩陣向量表示,記為公式(11)。

在實(shí)際的訓(xùn)練過程中,每次更新參數(shù)不會(huì)使用所有的訓(xùn)練數(shù)據(jù),而是將訓(xùn)練數(shù)據(jù)劃分多個(gè)批次(Batch)進(jìn)行訓(xùn)練,如圖6所示。在圖6中,假設(shè)訓(xùn)練資料的樣本總個(gè)數(shù)為N,每個(gè)批次包含樣本個(gè)數(shù)為B,每個(gè)批次中的樣本隨機(jī)劃分。第一個(gè)批次的損失記為,第一次參數(shù)更新即用
減去
倍的
對(duì)
的梯度得到,見公式(12)。依此類推,可以對(duì)所有的批次進(jìn)行參數(shù)的更新。當(dāng)參數(shù)優(yōu)化經(jīng)歷了所有批次之后,模型訓(xùn)練經(jīng)歷了一個(gè)完整的回合(Epoch)。每個(gè)批次的樣本個(gè)數(shù)(Batch Size)以及訓(xùn)練的回合數(shù)(Epoch)也是超參數(shù)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
1.5從神經(jīng)網(wǎng)絡(luò)到深度學(xué)習(xí)?

在上文中,建立了一個(gè)帶有1個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò)模型。隨著隱藏層的不斷增加(在圖7的示例中,神經(jīng)網(wǎng)絡(luò)模型包含了兩個(gè)隱藏層。),隱藏層的深度不斷變深,便得到了深度學(xué)習(xí)(Deep Learning)模型。因此,從網(wǎng)絡(luò)結(jié)構(gòu)的角度來看,深度學(xué)習(xí)之所以稱之為“深”的根本原因是隱藏層數(shù)變深。伴隨著算力和數(shù)據(jù)量不斷革新,深度學(xué)習(xí)模型也揭開了“山外有山比山高”的序幕。

2012年,推出的AlexNet模型有8層隱藏層,把圖像分類(基準(zhǔn)資料)的錯(cuò)誤率降低為16.4%;2014年,推出的VGG模型有19層隱藏層,圖像分類的錯(cuò)誤率降低至7.3%;2014年,推出的GoogleNet有22層隱藏層,圖像分類的錯(cuò)誤率降低至6.7%;到了2015年,推出的Residual Net將隱含層的個(gè)數(shù)迅速增加至152層,圖像分類的錯(cuò)誤率降低至3.57%。深度學(xué)習(xí)模型的演化過程真正揭示了“山外有山比山高”的含義。