第一時(shí)間獲取價(jià)值內(nèi)容
數(shù)學(xué)
1.列舉常用的最優(yōu)化方法
梯度下降法
牛頓法,
擬牛頓法
坐標(biāo)下降法
梯度下降法的改進(jìn)型如AdaDelta,AdaGrad,Adam,NAG等。
2.梯度下降法的關(guān)鍵點(diǎn)
梯度下降法沿著梯度的反方向進(jìn)行搜索,利用了函數(shù)的一階導(dǎo)數(shù)信息。梯度下降法的迭代公式為:
根據(jù)函數(shù)的一階泰勒展開(kāi),在負(fù)梯度方向,函數(shù)值是下降的。只要學(xué)習(xí)率設(shè)置的足夠小,并且沒(méi)有到達(dá)梯度為0的點(diǎn)處,每次迭代時(shí)函數(shù)值一定會(huì)下降。需要設(shè)置學(xué)習(xí)率為一個(gè)非常小的正數(shù)的原因是要保證迭代之后的xk+1位于迭代之前的值xk的鄰域內(nèi),從而可以忽略泰勒展開(kāi)中的高次項(xiàng),保證迭代時(shí)函數(shù)值下降。
梯度下降法只能保證找到梯度為0的點(diǎn),不能保證找到極小值點(diǎn)。迭代終止的判定依據(jù)是梯度值充分接近于0,或者達(dá)到最大指定迭代次數(shù)。
梯度下降法在機(jī)器學(xué)習(xí)中應(yīng)用廣泛,尤其是在深度學(xué)習(xí)中。AdaDelta,AdaGrad,Adam,NAG等改進(jìn)的梯度下降法都是用梯度構(gòu)造更新項(xiàng),區(qū)別在于更新項(xiàng)的構(gòu)造方式不同。對(duì)梯度下降法更全面的介紹可以閱讀SIGAI之前的公眾號(hào)文章“理解梯度下降法”。
3.牛頓法的關(guān)鍵點(diǎn)
牛頓法利用了函數(shù)的一階和二階導(dǎo)數(shù)信息,直接尋找梯度為0的點(diǎn)。牛頓法的迭代公式為:
其中H為Hessian矩陣,g為梯度向量。牛頓法不能保證每次迭代時(shí)函數(shù)值下降,也不能保證收斂到極小值點(diǎn)。在實(shí)現(xiàn)時(shí),也需要設(shè)置學(xué)習(xí)率,原因和梯度下降法相同,是為了能夠忽略泰勒展開(kāi)中的高階項(xiàng)。學(xué)習(xí)率的設(shè)置通常采用直線(xiàn)搜索(line search)技術(shù)。
在實(shí)現(xiàn)時(shí),一般不直接求Hessian矩陣的逆矩陣,而是求解下面的線(xiàn)性方程組:
其解d稱(chēng)為牛頓方向。迭代終止的判定依據(jù)是梯度值充分接近于0,或者達(dá)到最大指定迭代次數(shù)。
牛頓法比梯度下降法有更快的收斂速度,但每次迭代時(shí)需要計(jì)算Hessian矩陣,并求解一個(gè)線(xiàn)性方程組,運(yùn)算量大。另外,如果Hessian矩陣不可逆,則這種方法失效。
4.拉格朗日乘數(shù)法
拉格朗日乘數(shù)法是一個(gè)理論結(jié)果,用于求解帶有等式約束的函數(shù)極值。對(duì)于如下問(wèn)題:
構(gòu)造拉格朗日乘子函數(shù):
在最優(yōu)點(diǎn)處對(duì)x和乘子變量的導(dǎo)數(shù)都必須為0:
解這個(gè)方程即可得到最優(yōu)解。對(duì)拉格朗日乘數(shù)法更詳細(xì)的講解可以閱讀任何一本高等數(shù)學(xué)教材。機(jī)器學(xué)習(xí)中用到拉格朗日乘數(shù)法的地方有:
主成分分析
線(xiàn)性判別分析
流形學(xué)習(xí)中的拉普拉斯特征映射
隱馬爾科夫模型
5.凸優(yōu)化
數(shù)值優(yōu)化算法面臨兩個(gè)方面的問(wèn)題:局部極值,鞍點(diǎn)。前者是梯度為0的點(diǎn),也是極值點(diǎn),但不是全局極小值;后者連局部極值都不是,在鞍點(diǎn)處Hessian矩陣不定,即既非正定,也非負(fù)定。
凸優(yōu)化通過(guò)對(duì)目標(biāo)函數(shù),優(yōu)化變量的可行域進(jìn)行限定,可以保證不會(huì)遇到上面兩個(gè)問(wèn)題。凸優(yōu)化是一類(lèi)特殊的優(yōu)化問(wèn)題,它要求:
優(yōu)化變量的可行域是一個(gè)凸集
目標(biāo)函數(shù)是一個(gè)凸函數(shù)
凸優(yōu)化最好的一個(gè)性質(zhì)是:所有局部最優(yōu)解一定是全局最優(yōu)解。對(duì)于凸優(yōu)化更詳細(xì)的講解可以閱讀SIGAI之前的公眾號(hào)文章“理解凸優(yōu)化”。機(jī)器學(xué)習(xí)中典型的凸優(yōu)化問(wèn)題有:
線(xiàn)性回歸
嶺回歸
LASSO回歸
Logistic回歸
支持向量機(jī)
Softamx回歸
6.拉格朗日對(duì)偶
對(duì)偶是最優(yōu)化方法里的一種方法,它將一個(gè)最優(yōu)化問(wèn)題轉(zhuǎn)換成另外一個(gè)問(wèn)題,二者是等價(jià)的。拉格朗日對(duì)偶是其中的典型例子。對(duì)于如下帶等式約束和不等式約束的優(yōu)化問(wèn)題:
與拉格朗日乘數(shù)法類(lèi)似,構(gòu)造廣義拉格朗日函數(shù):
必須滿(mǎn)足的約束。原問(wèn)題為:即先固定住x,調(diào)整拉格朗日乘子變量,讓函數(shù)L取極大值;然后控制變量x,讓目標(biāo)函數(shù)取極小值。原問(wèn)題與我們要優(yōu)化的原始問(wèn)題是等價(jià)的。
對(duì)偶問(wèn)題為:
和原問(wèn)題相反,這里是先控制變量x,讓函數(shù)L取極小值;然后控制拉格朗日乘子變量,讓函數(shù)取極大值。
一般情況下,原問(wèn)題的最優(yōu)解大于等于對(duì)偶問(wèn)題的最優(yōu)解,這稱(chēng)為弱對(duì)偶。在某些情況下,原問(wèn)題的最優(yōu)解和對(duì)偶問(wèn)題的最優(yōu)解相等,這稱(chēng)為強(qiáng)對(duì)偶。
強(qiáng)對(duì)偶成立的一種條件是Slater條件:一個(gè)凸優(yōu)化問(wèn)題如果存在一個(gè)候選x使得所有不等式約束都是嚴(yán)格滿(mǎn)足的,即對(duì)于所有的i都有g(shù)i (x)<0,不等式不取等號(hào),則強(qiáng)對(duì)偶成立,原問(wèn)題與對(duì)偶問(wèn)題等價(jià)。注意,Slater條件是強(qiáng)對(duì)偶成立的充分條件而非必要條件。
拉格朗日對(duì)偶在機(jī)器學(xué)習(xí)中的典型應(yīng)用是支持向量機(jī)。
7.KKT條件
KKT條件是拉格朗日乘數(shù)法的推廣,用于求解既帶有等式約束,又帶有不等式約束的函數(shù)極值。對(duì)于如下優(yōu)化問(wèn)題:
和拉格朗日對(duì)偶的做法類(lèi)似,KKT條件構(gòu)如下乘子函數(shù):
和稱(chēng)為KKT乘子。在最優(yōu)解處應(yīng)該滿(mǎn)足如下條件:等式約束
和不等式約束
是本身應(yīng)該滿(mǎn)足的約束,
和之前的拉格朗日乘數(shù)法一樣。唯一多了關(guān)于gi (x)的條件:KKT條件只是取得極值的必要條件而不是充分條件。
8.特征值與特征向量
對(duì)于一個(gè)n階矩陣A,如果存在一個(gè)數(shù)
和一個(gè)非0向量X,滿(mǎn)足:則稱(chēng)
為矩陣A的特征值,X為該特征值對(duì)應(yīng)的特征向量。根據(jù)上面的定義有下面線(xiàn)性方程組成立:根據(jù)線(xiàn)性方程組的理論,要讓齊次方程有非0解,系數(shù)矩陣的行列式必須為0,即:
上式左邊的多項(xiàng)式稱(chēng)為矩陣的特征多項(xiàng)式。矩陣的跡定義為主對(duì)角線(xiàn)元素之和:
根據(jù)韋達(dá)定理,矩陣所有特征值的和為矩陣的跡:
同樣可以證明,矩陣所有特征值的積為矩陣的行列式:
利用特征值和特征向量,可以將矩陣對(duì)角化,即用正交變換將矩陣化為對(duì)角陣。實(shí)對(duì)稱(chēng)矩陣一定可以對(duì)角化,半正定矩陣的特征值都大于等于0,在機(jī)器學(xué)習(xí)中,很多矩陣都滿(mǎn)足這些條件。特征值和特征向量在機(jī)器學(xué)習(xí)中的應(yīng)用包括:正態(tài)貝葉斯分類(lèi)器、主成分分析,流形學(xué)習(xí),線(xiàn)性判別分析,譜聚類(lèi)等。
9.奇異值分解
矩陣對(duì)角化只適用于方陣,如果不是方陣也可以進(jìn)行類(lèi)似的分解,這就是奇異值分解,簡(jiǎn)稱(chēng)SVD。假設(shè)A是一個(gè)m x n的矩陣,則存在如下分解:
其中U為m x m的正交矩陣,其列稱(chēng)為矩陣A的左奇異向量;
為m x n的對(duì)角矩陣,除了主對(duì)角線(xiàn)以外,其他元素都是0;V為n x n的正交矩陣,其行稱(chēng)為矩陣A的右奇異向量。U的列為AAT的特征向量,V的列為AT A的特征向量。10.最大似然估計(jì)
有些應(yīng)用中已知樣本服從的概率分布,但是要估計(jì)分布函數(shù)的參數(shù)
,確定這些參數(shù)常用的一種方法是最大似然估計(jì)。最大似然估計(jì)構(gòu)造一個(gè)似然函數(shù),通過(guò)讓似然函數(shù)最大化,求解出
。最大似然估計(jì)的直觀解釋是,尋求一組參數(shù),使得給定的樣本集出現(xiàn)的概率最大。假設(shè)樣本服從的概率密度函數(shù)為
,其中X為隨機(jī)變量,為要估計(jì)的參數(shù)。給定一組樣本xi,i =1,...,l,它們都服從這種分布,并且相互獨(dú)立。最大似然估計(jì)構(gòu)造如下似然函數(shù):其中xi是已知量,這是一個(gè)關(guān)于
的函數(shù),我們要讓該函數(shù)的值最大化,這樣做的依據(jù)是這組樣本發(fā)生了,因此應(yīng)該最大化它們發(fā)生的概率,即似然函數(shù)。這就是求解如下最優(yōu)化問(wèn)題:乘積求導(dǎo)不易處理,因此我們對(duì)該函數(shù)取對(duì)數(shù),得到對(duì)數(shù)似然函數(shù):
最后要求解的問(wèn)題為:
最大似然估計(jì)在機(jī)器學(xué)習(xí)中的典型應(yīng)用包括logistic回歸,貝葉斯分類(lèi)器,隱馬爾科夫模型等。
基本概念
1.有監(jiān)督學(xué)習(xí)與無(wú)監(jiān)督學(xué)習(xí)
根據(jù)樣本數(shù)據(jù)是否帶有標(biāo)簽值,可以將機(jī)器學(xué)習(xí)算法分成有監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí)兩類(lèi)。有監(jiān)督學(xué)習(xí)的樣本數(shù)據(jù)帶有標(biāo)簽值,它從訓(xùn)練樣本中學(xué)習(xí)得到一個(gè)模型,然后用這個(gè)模型對(duì)新的樣本進(jìn)行預(yù)測(cè)推斷。有監(jiān)督學(xué)習(xí)的典型代表是分類(lèi)問(wèn)題和回歸問(wèn)題。
無(wú)監(jiān)督學(xué)習(xí)對(duì)沒(méi)有標(biāo)簽的樣本進(jìn)行分析,發(fā)現(xiàn)樣本集的結(jié)構(gòu)或者分布規(guī)律。無(wú)監(jiān)督學(xué)習(xí)的典型代表是聚類(lèi),表示學(xué)習(xí),和數(shù)據(jù)降維,它們處理的樣本都不帶有標(biāo)簽值。
2.分類(lèi)問(wèn)題與回歸問(wèn)題
在有監(jiān)督學(xué)習(xí)中,如果樣本的標(biāo)簽是整數(shù),則預(yù)測(cè)函數(shù)是一個(gè)向量到整數(shù)的映射,這稱(chēng)為分類(lèi)問(wèn)題。如果標(biāo)簽值是連續(xù)實(shí)數(shù),則稱(chēng)為回歸問(wèn)題,此時(shí)預(yù)測(cè)函數(shù)是向量到實(shí)數(shù)的映射。
3.生成模型與判別模型
分類(lèi)算法可以分成判別模型和生成模型。給定特征向量x與標(biāo)簽值y,生成模型對(duì)聯(lián)合概率p(x,y)建模,判別模型對(duì)條件概率p(y|x)進(jìn)行建模。另外,不使用概率模型的分類(lèi)器也被歸類(lèi)為判別模型,它直接得到預(yù)測(cè)函數(shù)而不關(guān)心樣本的概率分布:
判別模型直接得到預(yù)測(cè)函數(shù)f(x),或者直接計(jì)算概率值p(y|x),比如SVM和logistic回歸,softmax回歸,判別模型只關(guān)心決策面,而不管樣本的概率分布的密度。
生成模型計(jì)算p(x, y)或者p(x|y) ,通俗來(lái)說(shuō),生成模型假設(shè)每個(gè)類(lèi)的樣本服從某種概率分布,對(duì)這個(gè)概率分布進(jìn)行建模。
機(jī)器學(xué)習(xí)中常見(jiàn)的生成模型有貝葉斯分類(lèi)器,高斯混合模型,隱馬爾可夫模型,受限玻爾茲曼機(jī),生成對(duì)抗網(wǎng)絡(luò)等。典型的判別模型有決策樹(shù),kNN算法,人工神經(jīng)網(wǎng)絡(luò),支持向量機(jī),logistic回歸,AdaBoost算法等。
4.交叉驗(yàn)證
交叉驗(yàn)證(cross validation)是一種統(tǒng)計(jì)準(zhǔn)確率的技術(shù)。k折交叉驗(yàn)證將樣本隨機(jī)、均勻的分成k份,輪流用其中的k-1份訓(xùn)練模型,1份用于測(cè)試模型的準(zhǔn)確率,用k個(gè)準(zhǔn)確率的均值作為最終的準(zhǔn)確率。
5.過(guò)擬合與欠擬合
欠擬合也稱(chēng)為欠學(xué)習(xí),直觀表現(xiàn)是訓(xùn)練得到的模型在訓(xùn)練集上表現(xiàn)差,沒(méi)有學(xué)到數(shù)據(jù)的規(guī)律。引起欠擬合的原因有模型本身過(guò)于簡(jiǎn)單,例如數(shù)據(jù)本身是非線(xiàn)性的但使用了線(xiàn)性模型;特征數(shù)太少無(wú)法正確的建立映射關(guān)系。
過(guò)擬合也稱(chēng)為過(guò)學(xué)習(xí),直觀表現(xiàn)是在訓(xùn)練集上表現(xiàn)好,但在測(cè)試集上表現(xiàn)不好,推廣泛化性能差。過(guò)擬合產(chǎn)生的根本原因是訓(xùn)練數(shù)據(jù)包含抽樣誤差,在訓(xùn)練時(shí)模型將抽樣誤差也進(jìn)行了擬合。所謂抽樣誤差,是指抽樣得到的樣本集和整體數(shù)據(jù)集之間的偏差。引起過(guò)擬合的可能原因有:
模型本身過(guò)于復(fù)雜,擬合了訓(xùn)練樣本集中的噪聲。此時(shí)需要選用更簡(jiǎn)單的模型,或者對(duì)模型進(jìn)行裁剪。訓(xùn)練樣本太少或者缺乏代表性。此時(shí)需要增加樣本數(shù),或者增加樣本的多樣性。訓(xùn)練樣本噪聲的干擾,導(dǎo)致模型擬合了這些噪聲,這時(shí)需要剔除噪聲數(shù)據(jù)或者改用對(duì)噪聲不敏感的模型。
6.偏差與方差分解
模型的泛化誤差可以分解成偏差和方差。偏差是模型本身導(dǎo)致的誤差,即錯(cuò)誤的模型假設(shè)所導(dǎo)致的誤差,它是模型的預(yù)測(cè)值的數(shù)學(xué)期望和真實(shí)值之間的差距。
方差是由于對(duì)訓(xùn)練樣本集的小波動(dòng)敏感而導(dǎo)致的誤差。它可以理解為模型預(yù)測(cè)值的變化范圍,即模型預(yù)測(cè)值的波動(dòng)程度。
模型的總體誤差可以分解為偏差的平方與方差之和:
如果模型過(guò)于簡(jiǎn)單,一般會(huì)有大的偏差和小的方差;反之如果模型復(fù)雜則會(huì)有大的方差但偏差很小。
7.正則化
為了防止過(guò)擬合,可以為損失函數(shù)加上一個(gè)懲罰項(xiàng),對(duì)復(fù)雜的模型進(jìn)行懲罰,強(qiáng)制讓模型的參數(shù)值盡可能小以使得模型更簡(jiǎn)單,加入懲罰項(xiàng)之后損失函數(shù)為:
正則化被廣泛應(yīng)用于各種機(jī)器學(xué)習(xí)算法,如嶺回歸,LASSO回歸,logistic回歸,神經(jīng)網(wǎng)絡(luò)等。除了直接加上正則化項(xiàng)之外,還有其他強(qiáng)制讓模型變簡(jiǎn)單的方法,如決策樹(shù)的剪枝算法,神經(jīng)網(wǎng)絡(luò)訓(xùn)練中的dropout技術(shù),提前終止技術(shù)等。
8.維數(shù)災(zāi)難
為了提高算法的精度,會(huì)使用越來(lái)越多的特征。當(dāng)特征向量維數(shù)不高時(shí),增加特征確實(shí)可以帶來(lái)精度上的提升;但是當(dāng)特征向量的維數(shù)增加到一定值之后,繼續(xù)增加特征反而會(huì)導(dǎo)致精度的下降,這一問(wèn)題稱(chēng)為維數(shù)災(zāi)難。
貝葉斯分類(lèi)器
貝葉斯分類(lèi)器將樣本判定為后驗(yàn)概率最大的類(lèi),它直接用貝葉斯公式解決分類(lèi)問(wèn)題。假設(shè)樣本的特征向量為x,類(lèi)別標(biāo)簽為y,根據(jù)貝葉斯公式,樣本屬于每個(gè)類(lèi)的條件概率(后驗(yàn)概率)為:
分母p(x)對(duì)所有類(lèi)都是相同的,分類(lèi)的規(guī)則是將樣本歸到后驗(yàn)概率最大的那個(gè)類(lèi),不需要計(jì)算準(zhǔn)確的概率值,只需要知道屬于哪個(gè)類(lèi)的概率最大即可,這樣可以忽略掉分母。分類(lèi)器的判別函數(shù)為:
在實(shí)現(xiàn)貝葉斯分類(lèi)器時(shí),需要知道每個(gè)類(lèi)的條件概率分布p(x|y)即先驗(yàn)概率。一般假設(shè)樣本服從正態(tài)分布。訓(xùn)練時(shí)確定先驗(yàn)概率分布的參數(shù),一般用最大似然估計(jì),即最大化對(duì)數(shù)似然函數(shù)。
如果假設(shè)特征向量的各個(gè)分量之間相互獨(dú)立,則稱(chēng)為樸素貝葉斯分類(lèi)器,此時(shí)的分類(lèi)判別函數(shù)為:
實(shí)現(xiàn)時(shí)可以分為特征分量是離散變量和連續(xù)變量?jī)煞N情況。貝葉斯分分類(lèi)器是一種生成模型,可以處理多分類(lèi)問(wèn)題,是一種非線(xiàn)性模型。
決策樹(shù)
決策樹(shù)是一種基于規(guī)則的方法,它用一組嵌套的規(guī)則進(jìn)行預(yù)測(cè)。在樹(shù)的每個(gè)決策節(jié)點(diǎn)處,根據(jù)判斷結(jié)果進(jìn)入一個(gè)分支,反復(fù)執(zhí)行這種操作直到到達(dá)葉子節(jié)點(diǎn),得到預(yù)測(cè)結(jié)果。這些規(guī)則通過(guò)訓(xùn)練得到,而不是人工制定的。
決策樹(shù)既可以用于分類(lèi)問(wèn)題,也可以用于回歸問(wèn)題。分類(lèi)樹(shù)的映射函數(shù)是多維空間的分段線(xiàn)性劃分,用平行于各坐標(biāo)軸的超平面對(duì)空間進(jìn)行切分;回歸樹(shù)的映射函數(shù)是分段常數(shù)函數(shù)。決策樹(shù)是分段線(xiàn)性函數(shù)而不是線(xiàn)性函數(shù)。只要?jiǎng)澐值淖銐蚣?xì),分段常數(shù)函數(shù)可以逼近閉區(qū)間上任意函數(shù)到任意指定精度,因此決策樹(shù)在理論上可以對(duì)任意復(fù)雜度的數(shù)據(jù)進(jìn)行擬合。對(duì)于分類(lèi)問(wèn)題,如果決策樹(shù)深度夠大,它可以將訓(xùn)練樣本集的所有樣本正確分類(lèi)。
決策樹(shù)的訓(xùn)練算法是一個(gè)遞歸的過(guò)程,首先創(chuàng)建根節(jié)點(diǎn),然后遞歸的建立左子樹(shù)和右子樹(shù)。如果練樣本集為D,訓(xùn)練算法的流程為:
1.用樣本集D建立根節(jié)點(diǎn),找到一個(gè)判定規(guī)則,將樣本集分裂成D1和D2兩部分,同時(shí)為根節(jié)點(diǎn)設(shè)置判定規(guī)則。
2.用樣本集D1遞歸建立左子樹(shù)。
3.用樣本集D2遞歸建立右子樹(shù)。
4.如果不能再進(jìn)行分裂,則把節(jié)點(diǎn)標(biāo)記為葉子節(jié)點(diǎn),同時(shí)為它賦值。
對(duì)于分類(lèi)樹(shù),如果采用Gini系數(shù)作為度量準(zhǔn)則,決策樹(shù)在訓(xùn)練時(shí)尋找最佳分裂的依據(jù)為讓Gini不純度最小化,這等價(jià)于讓下面的值最大化:
尋找最佳分裂時(shí)需要計(jì)算用每個(gè)閾值對(duì)樣本集進(jìn)行分裂后的純度值,尋找該值最大時(shí)對(duì)應(yīng)的分裂,它就是最佳分裂。如果是數(shù)值型特征,對(duì)于每個(gè)特征將l個(gè)訓(xùn)練樣本按照該特征的值從小到大排序,假設(shè)排序后的值為:
接下來(lái)從x1開(kāi)始,依次用每個(gè)xi作為閾值,將樣本分成左右兩部分,計(jì)算上面的純度值,該值最大的那個(gè)分裂閾值就是此特征的最佳分裂閾值。在計(jì)算出每個(gè)特征的最佳分裂閾值和上面的純度值后,比較所有這些分裂的純度值大小,該值最大的分裂為所有特征的最佳分裂。
決策樹(shù)可以處理屬性缺失問(wèn)題,采用的方法是使用替代分裂規(guī)則。為了防止過(guò)擬合,可以對(duì)樹(shù)進(jìn)行剪枝,讓模型變得更簡(jiǎn)單。如果想要更詳細(xì)的了解決策樹(shù)的原理,請(qǐng)閱讀SIGAI之前的公眾號(hào)文章“理解決策樹(shù)”,在SIGAI云端實(shí)驗(yàn)室有決策樹(shù)訓(xùn)練算法的原理實(shí)驗(yàn),此功能免費(fèi),網(wǎng)址為:
www.sigai.cn
決策樹(shù)是一種判別模型,既支持分類(lèi)問(wèn)題,也支持回歸問(wèn)題,是一種非線(xiàn)性模型,它支持多分類(lèi)問(wèn)題。
隨機(jī)森林
隨機(jī)森林是一種集成學(xué)習(xí)算法,是Bagging算法的具體實(shí)現(xiàn)。集成學(xué)習(xí)是機(jī)器學(xué)習(xí)中的一種思想,而不是某一具體算法,它通過(guò)多個(gè)模型的組合形成一個(gè)精度更高的模型,參與組合的模型稱(chēng)為弱學(xué)習(xí)器。在預(yù)測(cè)時(shí)使用這些弱學(xué)習(xí)器模型聯(lián)合進(jìn)行預(yù)測(cè),訓(xùn)練時(shí)需要依次訓(xùn)練出這些弱學(xué)習(xí)器。
隨機(jī)森林用有放回抽樣(Bootstrap抽樣)構(gòu)成出的樣本集訓(xùn)練多棵決策樹(shù),訓(xùn)練決策樹(shù)的每個(gè)節(jié)點(diǎn)時(shí)只使用了隨機(jī)抽樣的部分特征。預(yù)測(cè)時(shí),對(duì)于分類(lèi)問(wèn)題,一個(gè)測(cè)試樣本會(huì)送到每一棵決策樹(shù)中進(jìn)行預(yù)測(cè),然后投票,得票最多的類(lèi)為最終分類(lèi)結(jié)果。對(duì)于回歸問(wèn)題,隨機(jī)森林的預(yù)測(cè)輸出是所有決策樹(shù)輸出的均值。
假設(shè)有n個(gè)訓(xùn)練樣本。訓(xùn)練每一棵樹(shù)時(shí),從樣本集中有放回的抽取n個(gè)樣本,每個(gè)樣本可能會(huì)被抽中多次,也可能一次都沒(méi)抽中。如果樣本量很大,在整個(gè)抽樣過(guò)程中每個(gè)樣本有0.368的概率不被抽中。由于樣本集中各個(gè)樣本是相互獨(dú)立的,在整個(gè)抽樣中所有樣本大約有36.8%沒(méi)有被抽中。這部分樣本稱(chēng)為包外(Out Of Bag,簡(jiǎn)稱(chēng)OOB)數(shù)據(jù)。
用這個(gè)抽樣的樣本集訓(xùn)練一棵決策樹(shù),訓(xùn)練時(shí),每次尋找最佳分裂時(shí),還要對(duì)特征向量的分量采樣,即只考慮部分特征分量。由于使用了隨機(jī)抽樣,隨機(jī)森林泛化性能一般比較好,可以有效的降低模型的方差。
如果想更詳細(xì)的了解隨機(jī)森林的原理,請(qǐng)閱讀SIGAI之前的公眾號(hào)文章“隨機(jī)森林概述”。隨機(jī)森林是一種判別模型,既支持分類(lèi)問(wèn)題,也支持回歸問(wèn)題,并且支持多分類(lèi)問(wèn)題,這是一種非線(xiàn)性模型。
AdaBoost算法
AdaBoost算法也是一種集成學(xué)習(xí)算法,用于二分類(lèi)問(wèn)題,是Boosting算法的一種實(shí)現(xiàn)。它用多個(gè)弱分類(lèi)器的線(xiàn)性組合來(lái)預(yù)測(cè),訓(xùn)練時(shí)重點(diǎn)關(guān)注錯(cuò)分的樣本,準(zhǔn)確率高的弱分類(lèi)器權(quán)重大。AdaBoost算法的全稱(chēng)是自適應(yīng),它用弱分類(lèi)器的線(xiàn)性組合來(lái)構(gòu)造強(qiáng)分類(lèi)器。弱分類(lèi)器的性能不用太好,僅比隨機(jī)猜測(cè)強(qiáng),依靠它們可以構(gòu)造出一個(gè)非常準(zhǔn)確的強(qiáng)分類(lèi)器。強(qiáng)分類(lèi)器的計(jì)算公式為:
其中x是輸入向量,F(xiàn)(x)是強(qiáng)分類(lèi)器,ft(x)是弱分類(lèi)器,at是弱分類(lèi)器的權(quán)重,T為弱分類(lèi)器的數(shù)量,弱分類(lèi)器的輸出值為+1或-1,分別對(duì)應(yīng)正樣本和負(fù)樣本。分類(lèi)時(shí)的判定規(guī)則為:
強(qiáng)分類(lèi)器的輸出值也為+1或-1,同樣對(duì)應(yīng)于正樣本和負(fù)樣本。
訓(xùn)練時(shí),依次訓(xùn)練每一個(gè)若分類(lèi)器,并得到它們的權(quán)重值。訓(xùn)練樣本帶有權(quán)重值,初始時(shí)所有樣本的權(quán)重相等,在訓(xùn)練過(guò)程中,被前面的弱分類(lèi)器錯(cuò)分的樣本會(huì)加大權(quán)重,反之會(huì)減小權(quán)重,這樣接下來(lái)的弱分類(lèi)器會(huì)更加關(guān)注這些難分的樣本。弱分類(lèi)器的權(quán)重值根據(jù)它的準(zhǔn)確率構(gòu)造,精度越高的弱分類(lèi)器權(quán)重越大。
給定l個(gè)訓(xùn)練樣本(xi,yi ),其中xi是特征向量,yi為類(lèi)別標(biāo)簽,其值為+1或-1。訓(xùn)練算法的流程為:
根據(jù)計(jì)算公式,錯(cuò)誤率低的弱分類(lèi)器權(quán)重大,它是準(zhǔn)確率的增函數(shù)。AdaBoost算法在訓(xùn)練樣本集上的錯(cuò)誤率會(huì)隨著弱分類(lèi)器數(shù)量的增加而指數(shù)級(jí)降低。它能有效的降低模型的偏差。
AdaBoost算法從廣義加法模型導(dǎo)出,訓(xùn)練時(shí)求解的是指數(shù)損失函數(shù)的極小值:
求解時(shí)采用了分階段優(yōu)化,先得到弱分類(lèi)器,然后確定弱分類(lèi)器的權(quán)重值,這就是弱分類(lèi)器,弱分類(lèi)器權(quán)重的來(lái)歷。除了離散型AdaBoost之外,從廣義加法模型還可以導(dǎo)出其他幾種AdaBoost算法,分別是實(shí)數(shù)型AdaBoost,Gentle型AdaBoost,Logit型AdaBoost,它們使用了不同的損失函數(shù)和最優(yōu)化算法。
標(biāo)準(zhǔn)的AdaBoost算法是一種判別模型,只能支持二分類(lèi)問(wèn)題。它的改進(jìn)型可以處理多分類(lèi)問(wèn)題。
主成分分析
主成分分析是一種數(shù)據(jù)降維和去除相關(guān)性的方法,它通過(guò)線(xiàn)性變換將向量投影到低維空間。對(duì)向量進(jìn)行投影就是對(duì)向量左乘一個(gè)矩陣,得到結(jié)果向量:
y = Wx
結(jié)果向量的維數(shù)小于原始向量的維數(shù)。降維要確保的是在低維空間中的投影能很好的近似表達(dá)原始向量,即重構(gòu)誤差最小化:
其中e為投影后空間的基向量,是標(biāo)準(zhǔn)正交基;a為重構(gòu)系數(shù),也是投影到低維空間后的坐標(biāo)。如果定義如下的散布矩陣:
其中m和
為所有樣本的均值向量。則上面的重構(gòu)誤差最小化等價(jià)于求解如下問(wèn)題:通過(guò)拉格朗日乘數(shù)法可以證明,使得該函數(shù)取最小值的ej為散度矩陣最大的d 個(gè)特征值對(duì)應(yīng)的單位長(zhǎng)度特征向量。矩陣W的列ej是我們要求解的基向量,由它們構(gòu)成投影矩陣。計(jì)算時(shí),先計(jì)算散布矩陣(或者協(xié)方差矩陣),再對(duì)該進(jìn)行進(jìn)行特征值分解,找到最大的一部分特征值和對(duì)應(yīng)的特征向量,構(gòu)成投影矩陣。可以證明,協(xié)方差矩陣或散布矩陣是實(shí)對(duì)稱(chēng)半正定矩陣,因此所有特征值非負(fù)。進(jìn)行降維時(shí),先將輸入向量減掉均值向量,然后左乘投影矩陣,即可得到投影后的向量。
主成分分析一種無(wú)監(jiān)督學(xué)習(xí)算法,也是一種線(xiàn)性方法。
線(xiàn)性判別分析
線(xiàn)性判別分析向最大化類(lèi)間差異、最小化類(lèi)內(nèi)差異的方向線(xiàn)性投影。其基本思想是通過(guò)線(xiàn)性投影來(lái)最小化同類(lèi)樣本間的差異,最大化不同類(lèi)樣本間的差異。具體做法是尋找一個(gè)向低維空間的投影矩陣W,樣本的特征向量x經(jīng)過(guò)投影之后得到的新向量:
y = Wx
同一類(lèi)樣投影后的結(jié)果向量差異盡可能小,不同類(lèi)的樣本差異盡可能大。簡(jiǎn)單的說(shuō),就是經(jīng)過(guò)這個(gè)投影之后同一類(lèi)的樣本進(jìn)來(lái)聚集在一起,不同類(lèi)的樣本盡可能離得遠(yuǎn)。這種最大化類(lèi)間差異,最小化類(lèi)內(nèi)差異的做法,在機(jī)器學(xué)習(xí)的很多地方都有使用。
類(lèi)內(nèi)散布矩陣定義為:
它衡量的內(nèi)類(lèi)樣本的發(fā)散程度。其中mi為每個(gè)類(lèi)的均值向量,m為所有樣本的均值向量。類(lèi)間散布矩陣定義為:
它衡量的了各類(lèi)樣本之間的差異。訓(xùn)練時(shí)的優(yōu)化目標(biāo)是類(lèi)間差異與類(lèi)內(nèi)差異的比值:
上面的問(wèn)題帶有冗余,如果w是最優(yōu)解,將其乘以一個(gè)不為0的系數(shù)之后還是最優(yōu)解。為了消掉冗余,加上如下約束:
然后使用拉格朗日乘數(shù)法,最后歸結(jié)于求解矩陣的特征值與特征向量:
LDA是有監(jiān)督的學(xué)習(xí)算法,在計(jì)算過(guò)程中利用了樣本標(biāo)簽值,是線(xiàn)性模型。LDA也不能直接用于分類(lèi)和回歸問(wèn)題,要對(duì)降維后的向量進(jìn)行分類(lèi)還需要借助其他算法。
kNN算法
kNN算法將樣本分到離它最相似的樣本所屬的類(lèi)。算法本質(zhì)上使用了模板匹配的思想。要確定一個(gè)樣本的類(lèi)別,可以計(jì)算它與所有訓(xùn)練樣本的距離,然后找出和該樣本最接近的k個(gè)樣本,統(tǒng)計(jì)這些樣本的類(lèi)別進(jìn)行投票,票數(shù)最多的那個(gè)類(lèi)就是分類(lèi)結(jié)果。
由于需要計(jì)算樣本間的距離,因此需要依賴(lài)距離定義,常用的有歐氏距離,Mahalanobis距離,Bhattacharyya距離。另外,還可以通過(guò)學(xué)習(xí)得到距離函數(shù),這就是距離度量學(xué)習(xí)。
kNN算法是一種判別模型,即支持分類(lèi)問(wèn)題,也支持回歸問(wèn)題,是一種非線(xiàn)性模型。它天然的支持多分類(lèi)問(wèn)題。kNN算法沒(méi)有訓(xùn)練過(guò)程,是一種基于實(shí)例的算法。
人工神經(jīng)網(wǎng)絡(luò)
人工神經(jīng)網(wǎng)絡(luò)是一種仿生的方法,參考了動(dòng)物的神經(jīng)元結(jié)構(gòu)。從本質(zhì)上看,它是一個(gè)多層復(fù)合函數(shù)。對(duì)于多層前饋型神經(jīng)網(wǎng)絡(luò),即權(quán)連接網(wǎng)絡(luò),每一層實(shí)現(xiàn)的變換為:
其中W為權(quán)重矩陣,b為偏置向量,f為激活函數(shù)。正向傳播時(shí)反復(fù)用上上對(duì)每一層的輸出值進(jìn)行計(jì)算,得到最終的輸出。使用激活函數(shù)是為了保證非線(xiàn)性,對(duì)于激活函數(shù)更深入全面的介紹請(qǐng)參考SIGAI之前的公眾號(hào)文章“理解神經(jīng)網(wǎng)絡(luò)的激活函數(shù)”,“神經(jīng)網(wǎng)絡(luò)的激活函數(shù)總結(jié)”。萬(wàn)能逼近定理保證了神經(jīng)網(wǎng)絡(luò)可以比較閉區(qū)間上任意一個(gè)連續(xù)函數(shù)。
權(quán)重和偏置通過(guò)訓(xùn)練得到,采用的是反向傳播算法。反向傳播算法從復(fù)合函數(shù)求導(dǎo)的鏈?zhǔn)椒▌t導(dǎo)出,用于計(jì)算損失函數(shù)對(duì)權(quán)重,偏置的梯度值。算法從最外層的導(dǎo)數(shù)值算起,依次遞推的計(jì)算更內(nèi)層的導(dǎo)數(shù)值,這對(duì)應(yīng)于從神經(jīng)網(wǎng)絡(luò)的輸出層算起,反向計(jì)算每個(gè)隱含層參數(shù)的導(dǎo)數(shù)值。其核心是誤差項(xiàng)的定義,定義誤差項(xiàng)為損失函數(shù)對(duì)臨時(shí)變量u的梯度:
其中,nl是神經(jīng)網(wǎng)絡(luò)的層數(shù)。最后一個(gè)層的誤差項(xiàng)可以直接求出,其他層的誤差項(xiàng)根據(jù)上面的遞推公式進(jìn)行計(jì)算。根據(jù)誤差項(xiàng),可以計(jì)算出損失函數(shù)對(duì)每一層權(quán)重矩陣的梯度值:
以及對(duì)偏置向量的梯度值:
然后用梯度下降法對(duì)它們的值進(jìn)行更新。參數(shù)初始化一般采用隨機(jī)數(shù),而不是簡(jiǎn)單的初始化為0。為了加快收斂速度,還可以使用動(dòng)量項(xiàng),它積累了之前的梯度信息。
神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)的損失函數(shù)不是凸函數(shù),因此有陷入局部極值,鞍點(diǎn)的風(fēng)險(xiǎn)。另外,隨著層數(shù)的增加,會(huì)導(dǎo)致梯度消失問(wèn)題,這是因?yàn)槊看斡?jì)算誤差項(xiàng)時(shí)都需要乘以激活函數(shù)的導(dǎo)數(shù)值,如果其絕對(duì)值小于1,多次連乘之后導(dǎo)致誤差項(xiàng)趨向于0,從而使得計(jì)算出來(lái)的參數(shù)梯度值接近于0,參數(shù)無(wú)法有效的更新。
如果對(duì)反傳播算法的推導(dǎo)細(xì)節(jié)感興趣,可以閱讀SIGAI之前的公眾號(hào)文章“反向傳播算法推導(dǎo)-全連接神經(jīng)網(wǎng)絡(luò)”。神經(jīng)網(wǎng)絡(luò)的訓(xùn)練算法可以總結(jié)為:
復(fù)合函數(shù)求導(dǎo) + 梯度下降法
標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)是一種有監(jiān)督的學(xué)習(xí)算法,它是一種非線(xiàn)性模型,它既可以用于分類(lèi)問(wèn)題,也可以用于回歸問(wèn)題,并且支持多分類(lèi)問(wèn)題。
支持向量機(jī)
支持向量機(jī)的核心思想是最大化分類(lèi)間隔。簡(jiǎn)單的支持向量機(jī)就是讓分類(lèi)間隔最大化的線(xiàn)性分類(lèi)器,找到多維空間中的一個(gè)超平面。它在訓(xùn)練是求解的問(wèn)題為:
這從點(diǎn)到超平面的距離方程導(dǎo)出,通過(guò)增加一個(gè)約束條件消掉了優(yōu)化變量的冗余??梢宰C明,這個(gè)問(wèn)題是凸優(yōu)化問(wèn)題,并且滿(mǎn)足Slater條件。這個(gè)問(wèn)題帶有太多的不等式約束,不易求解,因此通過(guò)拉格朗日對(duì)偶轉(zhuǎn)換為對(duì)偶問(wèn)題求解:
同樣的,這個(gè)問(wèn)題也是凸優(yōu)化問(wèn)題。此時(shí)支持向量機(jī)并不能解決非線(xiàn)性分類(lèi)問(wèn)題,通過(guò)使用核函數(shù),將向量變換到高維空間,使它們更可能是線(xiàn)性可分的。而對(duì)向量先進(jìn)行映射再做內(nèi)積,等價(jià)于先做內(nèi)積再做映射,因此核函數(shù)并不用顯式的對(duì)向量進(jìn)行映射,而是對(duì)兩個(gè)向量的內(nèi)積進(jìn)行映射,這是核函數(shù)的精髓。要理解核函數(shù),可以閱讀SIGAI之前的公眾號(hào)文章“【實(shí)驗(yàn)】理解SVM的核函數(shù)和參數(shù)”。
加入核函數(shù)K之后的對(duì)偶問(wèn)題變?yōu)椋?/p>
預(yù)測(cè)函數(shù)為:
其中b通過(guò)KKT條件求出。如果使用正定核,這個(gè)問(wèn)題也是凸優(yōu)化問(wèn)題。求解采用了SMO算法,這是一種分治法,每次挑選出兩個(gè)變量進(jìn)行優(yōu)化,其他變量保持不動(dòng)。選擇優(yōu)化變量的依據(jù)是KKT條件,對(duì)這兩個(gè)變量的優(yōu)化是一個(gè)帶等式和不等式約束的二次函數(shù)極值問(wèn)題,可以直接得到公式解。另外,這個(gè)子問(wèn)題同樣是一個(gè)凸優(yōu)化問(wèn)題。
標(biāo)準(zhǔn)的支持向量機(jī)只能解決二分類(lèi)問(wèn)題。對(duì)于多分類(lèi)問(wèn)題,可以用這種二分類(lèi)器的組合來(lái)解決,有以下幾種方案:
1對(duì)剩余方案。對(duì)于有k個(gè)類(lèi)的分類(lèi)問(wèn)題,訓(xùn)練k個(gè)二分類(lèi)器。訓(xùn)練時(shí)第i個(gè)分類(lèi)器的正樣本是第i類(lèi)樣本,負(fù)樣本是除第i類(lèi)之外其他類(lèi)型的樣本,這個(gè)分類(lèi)器的作用是判斷樣本是否屬于第i類(lèi)。在進(jìn)行分類(lèi)時(shí),對(duì)于待預(yù)測(cè)樣本,用每個(gè)分類(lèi)器計(jì)算輸出值,取輸出值最大那個(gè)作為預(yù)測(cè)結(jié)果。
1對(duì)1方案。如果有k個(gè)類(lèi),訓(xùn)練Ck2個(gè)二分類(lèi)器,即這些類(lèi)兩兩組合。訓(xùn)練時(shí)將第i類(lèi)作為正樣本,其他各個(gè)類(lèi)依次作為負(fù)樣本,總共有k (k ? 1) / 2種組合。每個(gè)分類(lèi)器的作用是判斷樣本是屬于第i類(lèi)還是第j類(lèi)。對(duì)樣本進(jìn)行分類(lèi)時(shí)采用投票的方法,依次用每個(gè)二分類(lèi)器進(jìn)行預(yù)測(cè),如果判定為第m類(lèi),則m類(lèi)的投票數(shù)加1,得票最多的那個(gè)類(lèi)作為最終的判定結(jié)果。
除了通過(guò)二分類(lèi)器的組合來(lái)構(gòu)造多類(lèi)分類(lèi)器之外,還可以通過(guò)直接優(yōu)化多類(lèi)分類(lèi)的目標(biāo)函數(shù)得到多分類(lèi)器。
SVM是一種判別模型。它既可以用于分類(lèi)問(wèn)題,也可以用于回歸問(wèn)題。標(biāo)準(zhǔn)的SVM只能支持二分類(lèi)問(wèn)題,使用多個(gè)分類(lèi)器的組合,可以解決多分類(lèi)問(wèn)題。如果不使用核函數(shù),SVM是一個(gè)線(xiàn)性模型,如果使用非線(xiàn)性核,則是非線(xiàn)性模型,這可以從上面的預(yù)測(cè)函數(shù)看出。如果想更詳細(xì)的了解支持向量機(jī),可以閱讀SIGAI之前的公眾號(hào)文章“用一張圖理解SVM的脈絡(luò)”。
logistic回歸
logistic回歸是一種二分類(lèi)算法,直接為樣本估計(jì)出它屬于正負(fù)樣本的概率。先將向量進(jìn)行線(xiàn)性加權(quán),然后計(jì)算logistic函數(shù),可以得到[0,1]之間的概率值,它表示樣本x屬于正樣本的概率:
正樣本標(biāo)簽值為1,負(fù)樣本為0。使用logistic函數(shù)的原因是它單調(diào)增,并且值域在(0, 1)之間,剛好符合概率的要求。訓(xùn)練時(shí)采用最大似然估計(jì),求解對(duì)數(shù)似然函數(shù)的極值:
可以證明這是一個(gè)凸優(yōu)化問(wèn)題,求解時(shí)可以用梯度下降法,也可以用牛頓法。如果正負(fù)樣本的標(biāo)簽為+1和-1,則可以采用另外一種寫(xiě)法:
訓(xùn)練時(shí)的目標(biāo)同樣是最大化對(duì)數(shù)似然函數(shù):
同樣的,這也是一個(gè)凸優(yōu)化問(wèn)題。預(yù)測(cè)時(shí)并不需要計(jì)算logistic函數(shù),而是直接計(jì)算:
Logistic回歸是一種二分類(lèi)算法,雖然使用了概率,但它是一種判別模型!另外要注意的是,logistic回歸是一種線(xiàn)性模型,這從它的預(yù)測(cè)函數(shù)就可以看出。它本身不能支持多分類(lèi)問(wèn)題,它的擴(kuò)展版本softmax回歸可以解決多分類(lèi)問(wèn)題。
K均值算法
K均值算法是一種聚類(lèi)算法,把樣本分配到離它最近的類(lèi)中心所屬的類(lèi),類(lèi)中心由屬于這個(gè)類(lèi)的所有樣本確定。
k均值算法是一種無(wú)監(jiān)督的聚類(lèi)算法。算法將每個(gè)樣本分配到離它最近的那個(gè)類(lèi)中心所代表的類(lèi),而類(lèi)中心的確定又依賴(lài)于樣本的分配方案。
在實(shí)現(xiàn)時(shí),先隨機(jī)初始化每個(gè)類(lèi)的類(lèi)中心,然后計(jì)算樣本與每個(gè)類(lèi)的中心的距離,將其分配到最近的那個(gè)類(lèi),然后根據(jù)這種分配方案重新計(jì)算每個(gè)類(lèi)的中心。這也是一種分階段優(yōu)化的策略。
與k近鄰算法一樣,這里也依賴(lài)于樣本之間的距離,因此需要定義距離的計(jì)算方式,最常用的是歐氏距離,也可以采用其他距離定義。算法在實(shí)現(xiàn)時(shí)要考慮下面幾個(gè)問(wèn)題:
1.類(lèi)中心向量的初始化。一般采用隨機(jī)初始化。最簡(jiǎn)單的是Forgy算法,它從樣本集中隨機(jī)選擇k個(gè)樣本作為初始類(lèi)中心。第二種方案是隨機(jī)劃分,它將所有樣本隨機(jī)的分配給k個(gè)類(lèi)中的一個(gè),然后按照這種分配方案計(jì)算各個(gè)類(lèi)的類(lèi)中心向量。
2.參數(shù)k的設(shè)定??梢愿鶕?jù)先驗(yàn)知識(shí)人工指定一個(gè)值,或者由算法自己確定。
3.迭代終止的判定規(guī)則。一般做法是計(jì)算本次迭代后的類(lèi)中心和上一次迭代時(shí)的類(lèi)中心之間的距離,如果小于指定閾值,則算法終止。
卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)是對(duì)全連接神經(jīng)網(wǎng)絡(luò)的發(fā)展,它使用卷積層,池化層自動(dòng)學(xué)習(xí)各個(gè)尺度上的特征。卷積運(yùn)算為:
在這里需要注意多通道卷積的實(shí)現(xiàn),它的輸入圖像,卷積核都有多個(gè)通道,分別用各個(gè)通道的卷積核對(duì)輸入圖像的各個(gè)通道進(jìn)行卷積,然后再累加。這里也使用了激活函數(shù),原因和全連接神經(jīng)網(wǎng)絡(luò)相同。池化運(yùn)算最常見(jiàn)的有均值池化,max池化,分別用均值和最大值代替圖像的一塊矩形區(qū)域。使用池化的原因是為了降維,減小圖像的尺寸,另外,它還帶來(lái)了一定程度的平移和旋轉(zhuǎn)的不變性。Max池化是非線(xiàn)性操作,現(xiàn)在用的更多。
對(duì)于經(jīng)典的網(wǎng)絡(luò)結(jié)構(gòu),包括LeNet-5網(wǎng)絡(luò),AlexNet,VGG網(wǎng)絡(luò),GoogLeNet,殘差網(wǎng)絡(luò)等經(jīng)典的網(wǎng)絡(luò)結(jié)構(gòu),創(chuàng)新點(diǎn),要熟記于心。
自Alex網(wǎng)絡(luò)出現(xiàn)之后,各種改進(jìn)的卷積網(wǎng)絡(luò)不斷被提出。這些改進(jìn)主要在以下幾個(gè)方面進(jìn)行:卷積層,池化層,激活函數(shù),損失函數(shù),網(wǎng)絡(luò)結(jié)構(gòu)。對(duì)于這些典型的改進(jìn),也要深刻理解。
由于引入了卷積層和池化層,因此反向傳播算法需要為這兩種層進(jìn)行考慮。卷積層誤差項(xiàng)的反向傳播的公式為
根據(jù)誤差項(xiàng)計(jì)算卷積核梯度值的公式為:
如果采用均值池化,池化層的誤差項(xiàng)反向傳播計(jì)算公式為:
如果使用max池化,則為:
注意,池化層沒(méi)有需要訓(xùn)練得到的參數(shù)。如果對(duì)卷積神經(jīng)網(wǎng)絡(luò)反向傳播算法的推導(dǎo)感興趣,可以閱讀SIGAI之前的公眾號(hào)文章“反向傳播算法推導(dǎo)-卷積神經(jīng)網(wǎng)絡(luò)”。
卷積神經(jīng)網(wǎng)絡(luò)具有遷移學(xué)習(xí)的能力,我們可以把這個(gè)網(wǎng)絡(luò)的參數(shù)作為訓(xùn)練的初始值,在新的任務(wù)上繼續(xù)訓(xùn)練,這種做法稱(chēng)為fine-tune,即網(wǎng)絡(luò)微調(diào)。大量的實(shí)驗(yàn)結(jié)果和應(yīng)用結(jié)果證明,這種微調(diào)是有效的。這說(shuō)明卷積神經(jīng)網(wǎng)絡(luò)在一定程度上具有遷移學(xué)習(xí)的能力,卷積層學(xué)習(xí)到的特征具有通用性。VGG網(wǎng)絡(luò)在ImageNet數(shù)據(jù)集上的訓(xùn)練結(jié)果在進(jìn)行微調(diào)之后,被廣泛應(yīng)用于目標(biāo)檢測(cè)、圖像分割等任務(wù)。
和全連接神經(jīng)網(wǎng)絡(luò)一樣,卷積神經(jīng)網(wǎng)絡(luò)是一個(gè)判別模型,它既可以用于分類(lèi)問(wèn)題,也可以用用于回歸問(wèn)題,并且支持多分類(lèi)問(wèn)題。
循環(huán)神經(jīng)網(wǎng)絡(luò)
循環(huán)神經(jīng)網(wǎng)絡(luò)是一種具有記憶功能的神經(jīng)網(wǎng)絡(luò),每次計(jì)算時(shí),利用了上一個(gè)時(shí)刻的記憶值,特別適合序列數(shù)據(jù)分析。網(wǎng)絡(luò)接受的是一個(gè)序列數(shù)據(jù),即一組向量,依次把它們輸入網(wǎng)絡(luò),計(jì)算每個(gè)時(shí)刻的輸出值。記憶功能通過(guò)循環(huán)神層實(shí)現(xiàn):
它同時(shí)利用了本時(shí)刻的輸入值和上一個(gè)時(shí)刻的記憶值。輸出層的變換為:
這和普通神經(jīng)網(wǎng)絡(luò)沒(méi)什么區(qū)別。由于引入了循環(huán)層,因此反向傳播算法有所不同,稱(chēng)為BPTT,即時(shí)間軸上的反向傳播算法。算法從最后一個(gè)時(shí)刻算起,沿著時(shí)間軸往前推。誤差項(xiàng)的遞推公式為:
遞推的終點(diǎn)為最后一個(gè)時(shí)刻。
根據(jù)誤差項(xiàng)計(jì)算對(duì)權(quán)重和偏置的梯度值的公式為:
循環(huán)神經(jīng)網(wǎng)絡(luò)同樣存在梯度消失問(wèn)題,因此出現(xiàn)了LSTM,GRU等結(jié)構(gòu)。
以循環(huán)神經(jīng)網(wǎng)絡(luò)為基礎(chǔ),構(gòu)造出了兩類(lèi)通用的框架,分別是連接主義時(shí)序分類(lèi)(CTC),以及序列到序列學(xué)習(xí)(seq2seq)。用于解決語(yǔ)音識(shí)別,自然語(yǔ)言處理中的問(wèn)題。其中,seq2seq采用了編碼器-解碼器結(jié)構(gòu),用兩個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)組合起來(lái)完成計(jì)算,一個(gè)充當(dāng)編碼器,一個(gè)充當(dāng)解碼器。
和其他類(lèi)型的神經(jīng)網(wǎng)絡(luò)一樣,循環(huán)神經(jīng)網(wǎng)絡(luò)是一個(gè)判別模型,既支持分類(lèi)問(wèn)題,也支持回歸問(wèn)題,并且支持多分類(lèi)問(wèn)題。
高斯混合模型
高斯混合模型通過(guò)多個(gè)正態(tài)分布的加權(quán)和來(lái)描述一個(gè)隨機(jī)變量的概率分布,概率密度函數(shù)定義為:
其中x為隨機(jī)向量,k為高斯分布的個(gè)數(shù),wi為權(quán)重,
為高斯分布的均值向量,為協(xié)方差矩陣。所有權(quán)重之和為1,即:任意一個(gè)樣本可以看作是先從k個(gè)高斯分布中選擇出一個(gè),選擇第i個(gè)高斯分布的概率為wi,再由第i個(gè)高斯分布
產(chǎn)生出這個(gè)樣本數(shù)據(jù)x。高斯混合模型可以逼近任何一個(gè)連續(xù)的概率分布,因此它可以看做是連續(xù)性概率分布的萬(wàn)能逼近器。之所有要保證權(quán)重的和為1,是因?yàn)楦怕拭芏群瘮?shù)必須滿(mǎn)足在內(nèi)的積分值為1。指定高斯分布的個(gè)數(shù),給定一組訓(xùn)練樣本,可以通過(guò)期望最大化EM算法確定高斯混合模型的參數(shù)。每次迭代時(shí),在E步計(jì)算期望值,在M步最大化期望值,如此循環(huán)交替。
EM算法
EM算法是一種迭代法,其目標(biāo)是求解似然函數(shù)或后驗(yàn)概率的極值,而樣本中具有無(wú)法觀測(cè)的隱含變量。因?yàn)殡[變量的存在,我們無(wú)法直接通過(guò)最大化似然函數(shù)來(lái)確定參數(shù)的值??梢圆捎靡环N策略,構(gòu)造出對(duì)數(shù)似然函數(shù)的一個(gè)下界函數(shù),這個(gè)函數(shù)不含有隱變量,然后優(yōu)化這個(gè)下界。不斷的提高這個(gè)下界,使原問(wèn)題達(dá)到最優(yōu)解,這就是EM算法所采用的思路。算法的構(gòu)造依賴(lài)于Jensen不等式。
算法在實(shí)現(xiàn)時(shí)首先隨機(jī)初始化參數(shù)
的值,接下來(lái)循環(huán)迭代,每次迭代時(shí)分為兩步:E步,基于當(dāng)前的參數(shù)估計(jì)值
,計(jì)算在給定x時(shí)對(duì)z的條件概率的數(shù)學(xué)期望:M步,求解如下極值問(wèn)題,更新
的值:實(shí)現(xiàn)Qi 時(shí)可以按照下面的公式計(jì)算:
迭代終止的判定規(guī)則是相鄰兩次函數(shù)值之差小于指定閾值。需要注意的是,EM算法只能保證收斂到局部極小值。
聯(lián)系客服