介紹
第一部分 參數(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)境輸入,或是其他感知器的輸出。于每個輸入相關(guān)聯(lián)的時一個鏈接權(quán)重
。
在最簡單的情況下,輸出y是輸入的加權(quán)和(也就是輸入到輸出只有一 ·層):。
其中是截距,它使模型更通用。也可以將輸出寫成點積
,其中
,
。
在檢驗時,對輸入x,使用給定的權(quán)重計算輸出y。這既需要對參數(shù)權(quán)重
進(jìn)行學(xué)習(xí),使給定的輸入可以得到正確輸出。
加權(quán)和 y 在單輸入和多輸入下,分別實現(xiàn)了一元和多元線性擬合。
同時y 定義了一個超平面,也可實現(xiàn)線性判別式。(假定類是線性可分時)。如果需要后驗概率,根據(jù)邏輯斯蒂判別式的方法,在加權(quán)和 y 上使用Sigmoid函數(shù)可以得到相應(yīng)的軟最大函數(shù)。
訓(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ù)更新。
如對于回歸,在單個實例上的誤差為
對,在線更新為
這稱為隨機(jī)梯度下降。
多層感知器
單層權(quán)重的感知器只能近似輸入的線性函數(shù),對于判別式是非線性的問題,則需要使用在輸入和輸出層之間存在中間層(隱藏層)的多層感知器來解決。
中間層將非線性函數(shù)作用于它的加權(quán)和,如使用Sigmoid函數(shù):
通常多層感知器的輸出層仍然取中間層的輸出的加權(quán)和,不使用非線性函數(shù):
。這里
是輸出層的權(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ù)。
考慮兩層感知器,中間層的輸出看做輸出層的輸入,兩層間參數(shù)
。輸入層到中間層的權(quán)重為
。由鏈?zhǔn)椒▌t計算梯度:
。這里
,
。
誤差就像從輸出y傳回到輸入一樣,所以稱作向后傳播。
非線性回歸
考慮只有一維輸出的非線性回歸:
兩層感知器的中間層輸出用sigmoid計算。在整個樣本上的誤差(離線的批量學(xué)習(xí))為
。
從中間層到輸出的感知器,有最小二乘規(guī)則最小化E,更新中間層都輸出層的權(quán)重:
輸出層到中間層的權(quán)重,不能直接用最小二乘規(guī)則,因為對于中間節(jié)點,沒有指定的期望輸出。通過鏈?zhǔn)椒▌t計算,有
注意權(quán)重和
用小隨機(jī)值初始化,避免Sigmoid函數(shù)飽和導(dǎo)致無法有效更新參數(shù)。
同樣可以采用在線學(xué)習(xí)的方法。
在有多維輸出的嘶吼,同時學(xué)習(xí)多個回歸問題,有。而誤差是
。
更新規(guī)則為
,
。
是從所有輸出單元累計的到中間單元 h 的向后傳播誤差。這種情況,是輸出單元共享所有中間單元(全連接)的情況。
也可以對每個輸出維度(每個回歸問題)訓(xùn)練一個多層感知器,不再共享中間層。
分類判別式
1. 兩類判別式
當(dāng)有兩個類時,只需要一個輸出單元:
它近似,
。
誤差函數(shù)(同邏輯斯蒂判別一樣)為。
實現(xiàn)梯度下降的更新方程是
可見回歸和分類的更新方程是相同的。
2. 多類判別式
在K>2類分類問題中,有K個輸出
使用軟最大指示類之間的互斥性和窮舉性:
其中近似
。誤差函數(shù)是
更新方程是
多隱藏層
對多隱藏層,每層都有自己的權(quán)重,并使用非線性基函數(shù)作用于它們的加權(quán)和作為輸出。
訓(xùn)練過程的優(yōu)化
對多層感知器的訓(xùn)練過程,有很多可以注意的地方,相應(yīng)的做出適當(dāng)?shù)母倪M(jìn),可以提高訓(xùn)練效率或改善網(wǎng)絡(luò)的泛化能力。
- 動量
令為多層感知器任意層中的任意權(quán)重,包括偏倚權(quán)重
。在第 t 次參數(shù)更新的時候,保留上一次的更新量
,取移動平均,好像上次的更新存在動量:
通常,在0.5~1.0之間,當(dāng)使用在線學(xué)習(xí)時,這種方法很有用,能幫助得到平均和光滑的收斂軌跡。缺點是需要將過去的
保存下來,占用存儲。
- 自適應(yīng)學(xué)習(xí)率
在梯度下降中,學(xué)習(xí)因子決定了每次迭代參數(shù)的變化量。通常在0~1之間取值,大部分情況下小于等于0.2。為了更快收斂,可以讓它自適應(yīng)。當(dāng)學(xué)習(xí)較快(誤差減?。r,保持較高的學(xué)習(xí)率;相反,學(xué)習(xí)減慢(什么誤差反而增大)時,減小學(xué)習(xí)率。
- 過度訓(xùn)練
在多層感知器中,也存在偏倚方差的矛盾。當(dāng)中間隱藏單元很大時(就像采用高階復(fù)雜度模型,能更好擬合訓(xùn)練的基礎(chǔ)數(shù)據(jù)),泛化精度惡化。
當(dāng)訓(xùn)練周期過長,訓(xùn)練集上的誤差降低。但當(dāng)超過某一個點時,驗證集上的誤差開始增加。 - 局部最小
由于非線性,誤差函數(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ī)則為。
等價于在具有一個附加項的誤差函數(shù)
上做梯度下降。
反映了訓(xùn)練集上的誤差 和由于非零參數(shù)導(dǎo)致的復(fù)雜性 的相對重要性,決定衰減的速度。
貝葉斯觀點的參數(shù)學(xué)習(xí)
.
貝葉斯方法在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時將權(quán)重看做取自先驗分布的隨機(jī)變量,并計算基于給定數(shù)據(jù)的后驗概率
。
用離線學(xué)習(xí)的方式,取最大后驗作為權(quán)重的估計,直接得到權(quán)重(不像梯度下降的迭代計算):
如果權(quán)重是獨(dú)立的,并且先驗概率
,
那么MAP估計最小化增廣誤差函數(shù)。其中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)。
時間延遲網(wǎng)絡(luò)
識別時間最直接的方法就是把數(shù)據(jù)看做時間序列。在時間延遲網(wǎng)絡(luò)中,前面的輸入被延遲,與后面的輸入同步提交網(wǎng)絡(luò)。相當(dāng)于在時間序列上使用指定大小的時間窗口,滑過序列數(shù)據(jù),不斷輸入給網(wǎng)絡(luò)。遞歸網(wǎng)絡(luò)
在遞歸網(wǎng)絡(luò)中,除了前饋連接外,單元具有自連接或像前面層的反饋連接。遞歸連接節(jié)點保存了之前一次學(xué)習(xí)的影響,和下一次輸入一同參與學(xué)習(xí),捕獲了數(shù)據(jù)在時間上的先后順序。
大部分情況下,使用部分遞歸網(wǎng)絡(luò)。有限多個遞歸連接加入到多層感知器中。這樣結(jié)合了多層感知器的非線性擬合能力,以及遞歸反饋的時間表達(dá)能力。