多層感知器——非參數(shù)估計器

介紹
第一部分 參數(shù)方法——類密度模型參數(shù)估計
第二部分 監(jiān)督學(xué)習(xí)——分類(基于似然的方法)
第三部分 監(jiān)督學(xué)習(xí)——分類(基于判別式的方法)(參數(shù)方法——判別式參數(shù)估計)
第四部分 監(jiān)督學(xué)習(xí)——回歸
第五部分 監(jiān)督學(xué)習(xí)——關(guān)聯(lián)規(guī)則
第六部分 維度規(guī)約(特征的提取和組合)
第七部分 半?yún)?shù)方法
第八部分 非監(jiān)督學(xué)習(xí)——聚類
第九部分 非參數(shù)方法——密度估計
第十部分 非參數(shù)方法——決策樹實現(xiàn)的判別式
第十一部分 多層感知器——非參數(shù)估計器
第十二部分 局部模型
第十三部分 支持向量機(jī)與核機(jī)器
第十四部分 隱馬爾科夫模型
第十五部分 參數(shù)的貝葉斯估計
第十六部分 集成學(xué)習(xí)——組合多學(xué)習(xí)器
第十七部分 增強(qiáng)學(xué)習(xí)
第十八部分 機(jī)器學(xué)習(xí)實驗
第十九部分 特征工程與數(shù)據(jù)預(yù)處理

多層感知器是一種人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),是非參數(shù)估計器,可以用于分類和回歸。雖然感知器網(wǎng)絡(luò)中有很多權(quán)重需要計算,但并沒有對類密度或判別式進(jìn)行模型假設(shè)。偏倚來自于所使用的網(wǎng)絡(luò)結(jié)構(gòu)和中間層中的非線性偏倚函數(shù),而不來自于對問題的假設(shè)。所以不算做參數(shù)方法。

感知器是基本處理元件。具有輸入,輸入可能來自原始的環(huán)境輸入,或是其他感知器的輸出。于每個輸入x_j \in R相關(guān)聯(lián)的時一個鏈接權(quán)重\omega_j \in R。
最簡單的情況下,輸出y是輸入的加權(quán)和(也就是輸入到輸出只有一 ·層):y=\sum_{j=1}^d\omega_j x_j+\omega_0。
其中\omega_0是截距,它使模型更通用。也可以將輸出寫成點積y=\boldsymbol{\omega}^T\mathbf{x},其中\boldsymbol{\omega}=[\omega_0,\omega_1,\dots,\omega_d]^T,\mathbf{x}=[1,x_1,x_2,\dots,x_d]^T
在檢驗時,對輸入x,使用給定的權(quán)重\boldsymbol{\omega}計算輸出y。這既需要對參數(shù)權(quán)重\boldsymbol{\omega}進(jìn)行學(xué)習(xí),使給定的輸入可以得到正確輸出。

加權(quán)和 y 在單輸入和多輸入下,分別實現(xiàn)了一元和多元線性擬合。
同時y 定義了一個超平面,也可實現(xiàn)線性判別式。(假定類是線性可分時)。如果需要后驗概率,根據(jù)邏輯斯蒂判別式的方法,在加權(quán)和 y 上使用Sigmoid函數(shù)可以得到相應(yīng)的軟最大函數(shù)y_i=\frac{\exp[\boldsymbol{\omega}_i^T\mathbf{x}]}{\sum_k\exp[\boldsymbol{\omega}_i^T\mathbf{x}]}。


訓(xùn)練感知器

感知器定義了一個超平面,而神經(jīng)網(wǎng)絡(luò)感知器只不過是實現(xiàn)超平面的一種方法。給定訓(xùn)練樣本,可以離線地計算權(quán)重。如果沒有提供全部樣本而是逐個提供實例,則需要使用在線學(xué)習(xí),在每個實例到達(dá)后更新網(wǎng)絡(luò)參數(shù),讓網(wǎng)絡(luò)緩慢的調(diào)整,而不是一次性計算得到權(quán)重。
在線學(xué)習(xí)的方法有很多好處:不需要存放訓(xùn)練樣本;可以隨時更新網(wǎng)絡(luò),適應(yīng)問題可能的變化。

對于在線學(xué)習(xí),不再需要全部樣本上的誤差函數(shù),而是單個實例上的誤差函數(shù)(在離線學(xué)習(xí)中, 每次迭代都減小全體樣本誤差,在線學(xué)習(xí)只減小當(dāng)前樣本實例的誤差)。從隨機(jī)初始權(quán)重開始,在每次迭代,對參數(shù)稍加調(diào)整,并不忘記之前所學(xué)習(xí)到的。
同時在線學(xué)習(xí)還保持了系統(tǒng)的靈活性,當(dāng)輸入空間發(fā)生變化時,能隨著不斷輸入新的實例,調(diào)整系統(tǒng)來學(xué)習(xí)輸入空間的變化。

如果誤差函數(shù)可微,則可以使用梯度下降,實現(xiàn)在線學(xué)習(xí)的參數(shù)更新。

如對于回歸,在單個實例(\mathbf{x}^t,r^t)上的誤差為
E^t(\boldsymbol{\omega}|\mathbf{x}^t,r^t)=\frac12(r^t-y^t)^2=\frac12[r^t-(\boldsymbol{\omega}^T\mathbf{x}^t)]^2
j=0,1,\dots,d,在線更新為
\triangle\omega_j^t=\eta \frac{\partial E^t}{\partial y^t}\frac{\partial y^t}{\partial \omega_j^t}=\eta(r^t-y^t)x_j^t
這稱為隨機(jī)梯度下降。


多層感知器

單層權(quán)重的感知器只能近似輸入的線性函數(shù),對于判別式是非線性的問題,則需要使用在輸入和輸出層之間存在中間層(隱藏層)的多層感知器來解決。
中間層將非線性函數(shù)作用于它的加權(quán)和,如使用Sigmoid函數(shù):
z_h=sigmoid(\boldsymbol{\omega}_h^T\mathbf{x})=\frac1{1+\exp[-(\sum_{j=1}^d\omega_{hj}x_j+\omega_{h0})]}

通常多層感知器的輸出層仍然取中間層的輸出的加權(quán)和,不使用非線性函數(shù):y_i=\sum_{h=1}^Hv_{jh}z_h+v_{i0}。這里\mathbf{v}_i是輸出層的權(quán)重。

如果中間層的輸出是線性的,則中間層就沒有用。這是因為線性組合的線性組合還是線性組合。在實踐中,除了Sigmoid函數(shù),還常使用雙曲正切函數(shù)tanh,它的值域是-1 ~ +1,而不是0 ~ +1。在實踐中,Sigmoid函數(shù)和tanh函數(shù)并無區(qū)別。還有一種徑向基函數(shù)——高斯函數(shù)(《局部模型》一節(jié)介紹),它使用歐氏距離而不是點積表達(dá)相似性

通常不會只限于一個中間層,多個隱藏層可以實現(xiàn)輸入的更復(fù)雜的函數(shù)。但分析多個隱藏層的網(wǎng)絡(luò)相當(dāng)復(fù)雜,需消耗很大的計算能力,這也是為什么在硬件計算能力得到較大提高后,深度學(xué)習(xí)才逐漸受到大量關(guān)注。


多層感知器訓(xùn)練——向后傳播算法

訓(xùn)練多層感知器和訓(xùn)練一個感知器一樣。唯一的區(qū)別是多層感知器中間層的非線性偏倚函數(shù),使得輸出是輸入的非線性函數(shù)。
考慮兩層感知器,中間層的輸出z_h看做輸出層的輸入,兩層間參數(shù)v_{ih}。輸入層到中間層的權(quán)重為\omega_{hj}。由鏈?zhǔn)椒▌t計算梯度:\frac{\partial E}{\partial \omega_{hj}}=\frac{\partial E}{\partial y_i}\frac{\partial y_i}{\partial z_h}\frac{\partial z_h}{\partial \omega_{hj}}。這里i=1,\dots,K,j=0,1,\dots,d。
誤差就像從輸出y傳回到輸入一樣,所以稱作向后傳播。

非線性回歸

考慮只有一維輸出的非線性回歸:y^t=\sum_{h=1}^Hv_hz_h^t+v_0
兩層感知器的中間層輸出用sigmoid計算z_h=sigmoid(\boldsymbol{\omega}_h^T\mathbf{x})。在整個樣本上的誤差(離線的批量學(xué)習(xí))為 E(W,\mathbf{v}|X) = \frac{1}{2}\sum_t(r^t-y^t)^2。
從中間層到輸出的感知器,有最小二乘規(guī)則最小化E,更新中間層都輸出層的權(quán)重:
\triangle v_h=\eta\sum_t(r^t-y^t)z_h^t
輸出層到中間層的權(quán)重,不能直接用最小二乘規(guī)則,因為對于中間節(jié)點,沒有指定的期望輸出。通過鏈?zhǔn)椒▌t計算,有
\begin{align} \triangle \omega_{hj}=&-\eta\frac{\partial E}{\partial\omega_{hj}}\\ =&-\eta\sum_t\frac{\partial E}{\partial y^t}\frac{\partial y^t}{\partial z_h^t}\frac{\partial z_h^t}{\partial \omega_{hj}}\\ =&-\eta\sum_t -(r^t-y^t) v_h z_h^t(1-z_h^t)x_j^t\\ =&\eta\sum_t(r^t-y^t)v_h z_h^t(1-z_h^t)x_j^t \end{align}

注意權(quán)重\omega_{hj}v_h用小隨機(jī)值初始化,避免Sigmoid函數(shù)飽和導(dǎo)致無法有效更新參數(shù)。

同樣可以采用在線學(xué)習(xí)的方法。

在有多維輸出的嘶吼,同時學(xué)習(xí)多個回歸問題,有y_i^t=\sum_{h=1}^H v_{ih}z_h^t+v_{i0}。而誤差是E(W,V|X)= \frac12\sum_t\sum_i(r_i^t-y_i^t)^2。
更新規(guī)則為
\triangle v_{jh}=\eta\sum_t(r_i^t-y_i^t)z_h^t
\triangle \omega_{hj}=\eta\sum_t[\sum_i(r_i^t-y_i^t)v_{ih}]z_h^t(1-z_h^t)x_j^t
\sum_i(r_i^t-y_i^t)v_{ih}是從所有輸出單元累計的到中間單元 h 的向后傳播誤差。這種情況,是輸出單元共享所有中間單元(全連接)的情況。
也可以對每個輸出維度(每個回歸問題)訓(xùn)練一個多層感知器,不再共享中間層。


分類判別式

1. 兩類判別式
當(dāng)有兩個類時,只需要一個輸出單元:y^t=sigmoid(\sum_{h=1}^Hv_hz_h^t+v_0)
它近似P(C_1|X^t)\hat P(C_2|\mathbf{x^t})\equiv1-y^t。
誤差函數(shù)(同邏輯斯蒂判別一樣)為E(W,\mathbf{v}|X)=-\sum_tr^t\log y^t+(1-r^t)\log (1-y^t)
實現(xiàn)梯度下降的更新方程是
\triangle v_h=\eta \sum_t(r^t-y^t)z_h^t
\triangle\omega_{hj}=\eta\sum_t(r^t-y^t)v_hz_h^t(1-z_h^t)x_j^t

可見回歸和分類的更新方程是相同的。
2. 多類判別式
在K>2類分類問題中,有K個輸出o_i^t=\sum_{h=1}^Hv_{ih}z_h^t+v_{i0}
使用軟最大指示類之間的互斥性和窮舉性:y_i^t=\frac{\exp o_i^t}{\sum_k \exp o_k^t}
其中y_i近似P(C_i|\mathbf{x}^t)。誤差函數(shù)是E(W,V|X)=-\sum_t\sum_i r_i^t\log y_i^t
更新方程是
\triangle v_{ih}=\eta\sum_t(r_i^t-y_i^t)z_h^t
\triangle \omega_{hj}=\eta \sum_t[\sum_i(r_i^t-y_i^t)v_{ih}]z_h^t(1-z_h^t)x_j^t


多隱藏層

對多隱藏層,每層都有自己的權(quán)重,并使用非線性基函數(shù)作用于它們的加權(quán)和作為輸出。


訓(xùn)練過程的優(yōu)化

對多層感知器的訓(xùn)練過程,有很多可以注意的地方,相應(yīng)的做出適當(dāng)?shù)母倪M(jìn),可以提高訓(xùn)練效率或改善網(wǎng)絡(luò)的泛化能力。

  1. 動量
    \omega_i為多層感知器任意層中的任意權(quán)重,包括偏倚權(quán)重\omega_0。在第 t 次參數(shù)更新的時候,保留上一次的更新量\triangle \omega_i^{t-1},取移動平均,好像上次的更新存在動量:\triangle \omega_i^t=-\eta \frac{\partial E^t}{\partial\omega_i}+\alpha\triangle \omega_i^{t-1}
    通常,\alpha在0.5~1.0之間,當(dāng)使用在線學(xué)習(xí)時,這種方法很有用,能幫助得到平均和光滑的收斂軌跡。缺點是需要將過去的\triangle \omega_i^{t-1}保存下來,占用存儲。
  2. 自適應(yīng)學(xué)習(xí)率
    在梯度下降中,學(xué)習(xí)因子\eta決定了每次迭代參數(shù)的變化量。通常在0~1之間取值,大部分情況下小于等于0.2。為了更快收斂,可以讓它自適應(yīng)。當(dāng)學(xué)習(xí)較快(誤差減?。r,保持較高的學(xué)習(xí)率;相反,學(xué)習(xí)減慢(什么誤差反而增大)時,減小學(xué)習(xí)率。
  3. 過度訓(xùn)練
    在多層感知器中,也存在偏倚方差的矛盾。當(dāng)中間隱藏單元很大時(就像采用高階復(fù)雜度模型,能更好擬合訓(xùn)練的基礎(chǔ)數(shù)據(jù)),泛化精度惡化。
    當(dāng)訓(xùn)練周期過長,訓(xùn)練集上的誤差降低。但當(dāng)超過某一個點時,驗證集上的誤差開始增加。
  4. 局部最小
    由于非線性,誤差函數(shù)可能具有多個極小值,而梯度下降收斂于最近的極小值。為了能評估期望的誤差,通常以不同的初始權(quán)重開始,對相同的網(wǎng)絡(luò)訓(xùn)練多次,并計算驗證誤差的平均值。


網(wǎng)絡(luò)結(jié)構(gòu)、規(guī)模

網(wǎng)絡(luò)構(gòu)造

除了調(diào)整更新權(quán)重的方式,網(wǎng)絡(luò)結(jié)構(gòu)的不同,對解決問題同樣有很大的影響。

對于具有局部結(jié)構(gòu)的問題(如圖像中相鄰的像素構(gòu)成幾何元素具有相關(guān)性;音頻中臨近的時間上的數(shù)據(jù)構(gòu)成基本語音單元具有相關(guān)新),設(shè)計MLP時,并不會將隱藏單元連接到所有的輸入單元,因為并非所有的輸入都是相關(guān)的。
典型的例子就是CNN網(wǎng)絡(luò)的滑動模塊,在前一層的各個局部位置做卷積(每個隱藏層內(nèi)共享權(quán)重,減少參數(shù)數(shù)目)。
如果可能,類似局部結(jié)構(gòu)知識這樣的與應(yīng)用相關(guān)的任何類型的知識都應(yīng)該構(gòu)建在網(wǎng)絡(luò)中。就像具有局部結(jié)構(gòu),那么構(gòu)建網(wǎng)絡(luò)只連接局部相鄰輸入節(jié)點,而不采用全連接的結(jié)構(gòu)。

網(wǎng)絡(luò)規(guī)模

而對于網(wǎng)絡(luò)規(guī)模,當(dāng)網(wǎng)絡(luò)太大時,有太多自由參數(shù),泛化能力往往不好,并且計算復(fù)雜度也會較高。當(dāng)然并不是說簡單的網(wǎng)絡(luò)總是比復(fù)雜的網(wǎng)絡(luò)好,知識對于具有相同訓(xùn)練誤差的網(wǎng)絡(luò),較簡單的一個更可能有好的泛化能力。

為了尋找最佳的網(wǎng)絡(luò)規(guī)模,最常用的方法是嘗試不同的結(jié)構(gòu),在訓(xùn)練集上訓(xùn)練它們,并選擇在驗證集上泛化最好的結(jié)構(gòu)。
另一種方式是將結(jié)構(gòu)自適應(yīng)的能力結(jié)合到算法中。結(jié)構(gòu)的自適應(yīng)有兩個方向,一個是從大網(wǎng)絡(luò)中刪減不必要的單元和連接,另一個就是由小網(wǎng)絡(luò)逐步添加改善性能的單元和連接。

如一種刪減的方法采用權(quán)重衰減的策略,給每一個連接一個衰減到0的趨勢,這樣只有那些為了降低誤差很明顯地增大的權(quán)重會留下。更新規(guī)則為\triangle \omega_i=-\eta\frac {\partial E}{\partial \omega_i}-\lambda\omega_i。
等價于在具有一個附加項的誤差函數(shù)
E^{\prime}=E+\frac {\lambda}2\sum_i\omega_i^2 \tag{a}
上做梯度下降。
\lambda反映了訓(xùn)練集上的誤差 和由于非零參數(shù)導(dǎo)致的復(fù)雜性 的相對重要性,決定衰減的速度。


貝葉斯觀點的參數(shù)學(xué)習(xí)

.
貝葉斯方法在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時將權(quán)重看做取自先驗分布p(\omega_i)的隨機(jī)變量,并計算基于給定數(shù)據(jù)的后驗概率p(\boldsymbol{\omega}|X)=\frac{p(X|\boldsymbol{\omega})P(\boldsymbol{\omega})}{p(X)}。
用離線學(xué)習(xí)的方式,取最大后驗作為權(quán)重的估計,直接得到權(quán)重(不像梯度下降的迭代計算)
\begin{align} \hat{\boldsymbol{\omega}}_{MAP}=&\arg\max_{\omega}\log p(\boldsymbol{\omega}|X) \\ =&\arg\max_{\omega}(\log p(X|\boldsymbol{\omega})+\log p(\boldsymbol{\omega})+C) \end{align}
如果權(quán)重\omega_i是獨(dú)立的,并且先驗概率p(\omega_i) \sim N(0,\frac12\lambda)p(\boldsymbol{\omega})=\prod_i c \exp[-\frac{\omega_i^2}{2(\frac12\lambda)}]
那么MAP估計最小化增廣誤差函數(shù)E^{\prime}=E+\lambda\|\boldsymbol{\omega}\|^2。其中E是通常的分類和回歸誤差。這與權(quán)重衰減(a)中正則化的誤差函數(shù)一致。


隱藏層與維度規(guī)約

在多層感知器中,如果隱藏層單元數(shù)小于輸入層,那么這一層隱藏層看起來相當(dāng)于實現(xiàn)了維度規(guī)約。這種規(guī)約形式和隱藏單元生成的新空間依賴于MLP的訓(xùn)練目的。如對于分類,隱藏層在輸入層和輸出層中間,那么隱藏層定義了新修改控件并學(xué)習(xí)映射來降低分類誤差。
但由于多層感知器的權(quán)重更新采用梯度下降的迭代方式,而非解析的,很難直接對黑箱權(quán)重進(jìn)行解釋。
而當(dāng)隱藏層是非線性時,則實現(xiàn)非線性的維度規(guī)約。


深度學(xué)習(xí)網(wǎng)絡(luò)

對于線性模型不充分時,一種解決的方法是用輸入的非線性函數(shù)定義新的特征,然后在這些新特征的空間上建立線性模型。(如采用原輸入的高階項,建立高階項的線性函數(shù);或采用和式的基函數(shù)作用于輸入上)。對輸入進(jìn)行組合。
另一種可能的方法是,使用《維度規(guī)約》一節(jié)中介紹的特征提取方法(如PCA、Isomap)來學(xué)習(xí)新空間。對輸入進(jìn)行分解,提取主要特征。

然而最好的方法可能是使用MLP。它在隱藏層實現(xiàn)維度規(guī)約,提取特征。而在之后對得到的特征作為輸入進(jìn)行組合。結(jié)合了上面兩種思想。并且由于神經(jīng)網(wǎng)絡(luò)的偏倚來自于網(wǎng)絡(luò)結(jié)構(gòu),不需要人工選擇基函數(shù),或特征提取的方法。盡可能減少了偏倚的來源。

當(dāng)然具有一個隱藏層的MLP的能力有限,而使用具有多個隱藏層的MLP可以學(xué)習(xí)輸入的更復(fù)雜的函數(shù),這是深度神經(jīng)網(wǎng)絡(luò)的基本思想。從初始的輸入開始,每一層都組合前一層的值,學(xué)習(xí)輸入的更復(fù)雜的函數(shù)。
深度學(xué)習(xí)的另一個特點是,連續(xù)的隱藏層對應(yīng)于更抽象的表示,直到輸出層。而輸出層使用這些最抽象的概念來學(xué)習(xí)輸出。
深度學(xué)習(xí)的這種多層抽象思想是直觀的。人對圖像、對音頻的理解,往往也是建立在對基本元素的抽象和組合的基礎(chǔ)上。正如前面所提過的,也因為這種非解析的抽象,使得對網(wǎng)絡(luò)結(jié)果及權(quán)重的解釋變得很困難。


時間序列數(shù)據(jù)的學(xué)習(xí)

不同于前面的數(shù)據(jù)沒有序列屬性,某些應(yīng)用中的數(shù)據(jù),輸入是時間的函數(shù),需要學(xué)習(xí)時間序列。典型的例子就是語音數(shù)據(jù)。
用于學(xué)習(xí)自然語言的深度學(xué)習(xí)網(wǎng)絡(luò),常見的基本結(jié)構(gòu)如時延網(wǎng)絡(luò)和循環(huán)網(wǎng)絡(luò)(LSTM/RNN等),都是處理這樣問題的網(wǎng)絡(luò)結(jié)構(gòu)。

  1. 時間延遲網(wǎng)絡(luò)
    識別時間最直接的方法就是把數(shù)據(jù)看做時間序列。在時間延遲網(wǎng)絡(luò)中,前面的輸入被延遲,與后面的輸入同步提交網(wǎng)絡(luò)。相當(dāng)于在時間序列上使用指定大小的時間窗口,滑過序列數(shù)據(jù),不斷輸入給網(wǎng)絡(luò)。

  2. 遞歸網(wǎng)絡(luò)
    在遞歸網(wǎng)絡(luò)中,除了前饋連接外,單元具有自連接或像前面層的反饋連接。遞歸連接節(jié)點保存了之前一次學(xué)習(xí)的影響,和下一次輸入一同參與學(xué)習(xí),捕獲了數(shù)據(jù)在時間上的先后順序。
    大部分情況下,使用部分遞歸網(wǎng)絡(luò)。有限多個遞歸連接加入到多層感知器中。這樣結(jié)合了多層感知器的非線性擬合能力,以及遞歸反饋的時間表達(dá)能力。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容