視頻教程的總結(jié)和一些自行補(bǔ)充的內(nèi)容,旨在盡可能的理解其原理。
本文持續(xù)更新地址:https://hellogod.cn: 個(gè)人博客機(jī)器學(xué)習(xí)面試基礎(chǔ)知識(shí) & 擴(kuò)展-01
訓(xùn)練/開發(fā)/測(cè)試集
Tips
- 訓(xùn)練/開發(fā)/測(cè)試集經(jīng)驗(yàn)比例 6:3:1
- 當(dāng)數(shù)據(jù)量超過百萬時(shí),測(cè)試集只需約1w(也就是不需要嚴(yán)格按照比例增長(zhǎng))
- 嚴(yán)格保證分層取樣
偏差(Bias)/ 方差(Variance)
在忽略噪聲的情況下,泛化誤差可分解為偏差、方差兩部分。
- 偏差:度量學(xué)習(xí)算法的期望預(yù)測(cè)與真實(shí)結(jié)果的偏離程度,也叫擬合能力。
- 方差:度量了同樣大小的訓(xùn)練集的變動(dòng)所導(dǎo)致的學(xué)習(xí)性能的變化,即刻畫了數(shù)據(jù)擾動(dòng)造成的影響。
---摘自《機(jī)器學(xué)習(xí)》,周志華
<center></center>
分類器
Train set error | 1% | 15% | 15% | 0.5% |
---|---|---|---|---|
Dev set error | 10% | 16% | 30% | 1% |
status | high variance | high bias | high bias & high variance | low bias & low variance |
- 偏差:模型的預(yù)測(cè)誤差率(訓(xùn)練集中的準(zhǔn)確率越大,偏差越大)
- 方差:模型的泛化能力(開發(fā)集中的表現(xiàn)和訓(xùn)練集的差距大小,差距越大,代表方差越大)
high Bias 意味著模型的分類效果不好,high Variance 意味著模型往往過擬合,不能很好的泛化。
我們通常這樣利用這兩個(gè)參數(shù)調(diào)整我們的神經(jīng)網(wǎng)絡(luò),其中部分內(nèi)容會(huì)在本文的后面進(jìn)一步探討。
梯度消失與梯度爆炸
欠擬合和過擬合
<center>簡(jiǎn)單分類器示例</center>
上圖從左到右分別是欠擬合、合適的擬合和過擬合三種情況。
過擬合
過擬合是如何產(chǎn)生的?
- 根本原因:參數(shù)太多,模型復(fù)雜度過高,同時(shí)數(shù)據(jù)相對(duì)較少,或噪聲相對(duì)較多。
整個(gè)訓(xùn)練過程其實(shí)是模型復(fù)雜度和過擬合之間的一個(gè)權(quán)衡,如下圖
如何應(yīng)對(duì)過擬合?我之前的一篇譯文提到過:譯文
如何應(yīng)對(duì)過擬合?
結(jié)合前文中提到的偏差和方差,我們有以下經(jīng)驗(yàn):
也就是:
- 增大訓(xùn)練數(shù)據(jù)量 - 最有效的方案
- Cross Validation - 數(shù)據(jù)量不足的情況下常用
- Early Stopping - 提早結(jié)束訓(xùn)練過程
- 正則化(
regulation
)- 主要是L1和L2正則化 - 采用
Dropout
- 隨機(jī)將某些神經(jīng)元的權(quán)重初始化為零
Cross Validation
回到交叉驗(yàn)證,根據(jù)切分的方法不同,交叉驗(yàn)證分為下面三種:
簡(jiǎn)單交叉驗(yàn)證
所謂的簡(jiǎn)單,是和其他交叉驗(yàn)證方法相對(duì)而言的。首先,我們隨機(jī)的將樣本數(shù)據(jù)分為兩部分(比如: 70%的訓(xùn)練集,30%的測(cè)試集),然后用訓(xùn)練集來訓(xùn)練模型,在測(cè)試集上驗(yàn)證模型及參數(shù)。接著,我們?cè)侔褬颖敬騺y,重新選擇訓(xùn)練集和測(cè)試集,繼續(xù)訓(xùn)練數(shù)據(jù)和檢驗(yàn)?zāi)P汀W詈笪覀冞x擇損失函數(shù)評(píng)估最優(yōu)的模型和參數(shù)。
S折交叉驗(yàn)證
又稱(S-Folder Cross Validation),和第一種方法不同,S折交叉驗(yàn)證會(huì)把樣本數(shù)據(jù)隨機(jī)的分成S份,每次隨機(jī)的選擇S-1份作為訓(xùn)練集,剩下的1份做測(cè)試集。當(dāng)這一輪完成后,重新隨機(jī)選擇S-1份來訓(xùn)練數(shù)據(jù)。若干輪(小于S)之后,選擇損失函數(shù)評(píng)估最優(yōu)的模型和參數(shù)。
留一交叉驗(yàn)證
又稱(Leave-one-out Cross Validation),它是第二種情況的特例,此時(shí)S等于樣本數(shù)N,這樣對(duì)于N個(gè)樣本,每次選擇N-1個(gè)樣本來訓(xùn)練數(shù)據(jù),留一個(gè)樣本來驗(yàn)證模型預(yù)測(cè)的好壞。此方法主要用于樣本量非常少的情況。
早停法(Early Stopping)
為了獲得性能良好的神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)定型過程中需要進(jìn)行許多關(guān)于所用設(shè)置(超參數(shù))的決策。超參數(shù)之一是定型周期(epoch)的數(shù)量:亦即應(yīng)當(dāng)完整遍歷數(shù)據(jù)集多少次(一次為一個(gè)epoch)如果epoch數(shù)量太少,網(wǎng)絡(luò)有可能發(fā)生欠擬合(即對(duì)于定型數(shù)據(jù)的學(xué)習(xí)不夠充分);如果epoch數(shù)量太多,則有可能發(fā)生過擬合(即網(wǎng)絡(luò)對(duì)定型數(shù)據(jù)中的“噪聲”而非信號(hào)擬合)。
早停法背后的原理其實(shí)不難理解:
將數(shù)據(jù)分為定型集和測(cè)試集
-
每個(gè)epoch結(jié)束后(或每N個(gè)epoch后):
- 用測(cè)試集評(píng)估網(wǎng)絡(luò)性能
- 如果網(wǎng)絡(luò)性能表現(xiàn)優(yōu)于此前最好的模型:保存當(dāng)前這一epoch的網(wǎng)絡(luò)副本
將測(cè)試性能最優(yōu)的模型作為最終網(wǎng)絡(luò)模型
最優(yōu)模型是在垂直虛線的時(shí)間點(diǎn)保存下來的模型,即處理測(cè)試集時(shí)準(zhǔn)確率最高的模型。
其中,停止條件可以是下面這三條
- 權(quán)重的更新低于某個(gè)閾值的時(shí)候
- 預(yù)測(cè)的錯(cuò)誤率低于某個(gè)閾值
- 達(dá)到預(yù)設(shè)一定的迭代次數(shù)
正則化
正則化 是結(jié)構(gòu)風(fēng)險(xiǎn)最小化策略的實(shí)現(xiàn),是在經(jīng)驗(yàn)風(fēng)險(xiǎn)上加一個(gè)正則化項(xiàng)(regularizer)或懲罰項(xiàng)(penalty term)
一般來說,監(jiān)督學(xué)習(xí)可以看做最小化下面的目標(biāo)函數(shù):
- 作用: 英文是
regulation
,字面意思是調(diào)整修正,也就是調(diào)整上圖中出現(xiàn)應(yīng)對(duì)過擬合 - 常見種類: L0、L1、L2
L0范數(shù)
L0范數(shù)表示向量中所有非零元素的個(gè)數(shù)
定義:
L1范數(shù)
L2范數(shù)
定義:L2
范數(shù)是指向量各元素的平方和然后求平方根。我們讓L2范數(shù)的規(guī)則項(xiàng)||W||2最小,可以使得W的每個(gè)元素都很小,都接近于0,但與L1范數(shù)不同,它不會(huì)讓它等于0,而是接近于0。
- L2范數(shù)如何減少過擬合?
使部分神經(jīng)節(jié)點(diǎn)w
的權(quán)重降低為零,從而簡(jiǎn)化網(wǎng)絡(luò),將上圖中圖3中轉(zhuǎn)換為圖1,結(jié)果是variance
降低,bias
增加。
L1 / L2范式的區(qū)別
下降速度
模型空間的限制
視頻講解: 2:30
優(yōu)化問題:把 w
的解限制在黃色區(qū)域內(nèi),同時(shí)使得經(jīng)驗(yàn)損失盡可能小。
這也導(dǎo)致L2相對(duì)較為穩(wěn)定,L1可以產(chǎn)生更多稀疏解。
Dropout
Dropout是指在模型訓(xùn)練時(shí)隨機(jī)讓網(wǎng)絡(luò)某些隱含層節(jié)點(diǎn)的權(quán)重不工作,不工作的那些節(jié)點(diǎn)可以暫時(shí)認(rèn)為不是網(wǎng)絡(luò)結(jié)構(gòu)的一部分,但是它的權(quán)重得保留下來(只是暫時(shí)不更新而已),因?yàn)橄麓螛颖据斎霑r(shí)它可能又得工作了。
Experiment in Keras
基于 CIFAR-10 dataset 的實(shí)驗(yàn)
結(jié)果演示:
分析:dropout等于0.2的時(shí)候效果最佳
代碼:Github
示例演示
代碼演示
100代碼的簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)代碼:pycharm
關(guān)于激活函數(shù)作用的直觀解釋:知乎回答:異或
可視化演示
鏈接:TensorFlow
參考資料
- https://www.zhihu.com/question/20924039
- http://blog.csdn.net/zouxy09/article/details/24971995
- https://liam0205.me/2017/03/25/bias-variance-tradeoff/
- http://scott.fortmann-roe.com/docs/BiasVariance.html
- 正則化方法:L1和L2 regularization、數(shù)據(jù)集擴(kuò)增、dropout
- https://www.zhihu.com/question/26898675
- http://www.cnblogs.com/pinard/p/5992719.html
- 梯度消失和梯度爆炸
本文持續(xù)更新地址:個(gè)人博客機(jī)器學(xué)習(xí)面試基礎(chǔ)知識(shí) & 擴(kuò)展-01