关于过拟合、局部最小值、以及Poor Generalization的思考
Poor Generalization
這可能是實(shí)際中遇到的最多問題。
比如FC網(wǎng)絡(luò)為什么效果比CNN差那么多啊,是不是陷入局部最小值啊?是不是過擬合啊?是不是欠擬合啊?
在操場(chǎng)跑步的時(shí)候,又從SVM角度思考了一下,我認(rèn)為Poor Generalization屬于過擬合范疇。
與我的論文 [深度神經(jīng)網(wǎng)絡(luò)在面部情感分析系統(tǒng)中的應(yīng)用與改良] 的觀點(diǎn)一致。
SVM
ImageNet 2012上出現(xiàn)了一個(gè)經(jīng)典虐殺場(chǎng)景。見[知乎專欄]
里面有一段這么說道:
| 當(dāng)時(shí),大多數(shù)的研究小組還都在用傳統(tǒng)computer vision算法的時(shí)候,多倫多大學(xué)的Hinton祭出deep net這樣一個(gè)大殺器。差距是這樣的: 第一名Deepnet的錯(cuò)誤率是0.16422 |
除了Hinton組是用CNN之外,第二第三都是經(jīng)典的SIFT+SVM的分離模型。
按照某些民科的觀點(diǎn),SVM是宇宙無敵的模型,結(jié)構(gòu)風(fēng)險(xiǎn)最小化,全局最小值,那么為什么要綁個(gè)SIFT?
眾所周知,SIFT是CV里最優(yōu)良的Hand-Made特征,為什么需要這樣的特征?
因?yàn)樗且环NEncoding,復(fù)雜的圖像經(jīng)過它的Encoding之后,有一些很明顯的性質(zhì)(比如各種不變性)就會(huì)暴露出來。
經(jīng)過Encoding的數(shù)據(jù),分類起來是非常容易的。這也是模式識(shí)別的經(jīng)典模式:先特征提取、再分類識(shí)別。
| Question:如果用裸SVM跑ImageNet會(huì)怎么樣? My Answer:SVM的支持向量集會(huì)十分龐大。比如有10000個(gè)數(shù)據(jù),那么就會(huì)有10000個(gè)支持向量。 |
SVM不同于NN的一個(gè)關(guān)鍵點(diǎn)就是,它的支持向量是動(dòng)態(tài)的,雖然它等效于NN的隱層神經(jīng)元,但是它服從結(jié)構(gòu)風(fēng)險(xiǎn)最小化。
結(jié)構(gòu)風(fēng)險(xiǎn)最小化會(huì)根據(jù)數(shù)據(jù),動(dòng)態(tài)算出需求最少的神經(jīng)元(或者說是隱變量[Latent Variable])。
如果SVM本身很難去切分Hard數(shù)據(jù),那么很顯然支持向量會(huì)增多,因?yàn)?strong>[Train Criterion] 會(huì)認(rèn)為這是明顯的欠擬合。
欠擬合情況下,增加隱變量,增大VC維,是不違背結(jié)構(gòu)風(fēng)險(xiǎn)最小化的。
極限最壞情況就是,對(duì)每個(gè)點(diǎn),擬合一個(gè)值,這樣會(huì)導(dǎo)致最后的VC維無比龐大,但仍然滿足結(jié)構(gòu)風(fēng)險(xiǎn)最小化。圖示如下:
之所以要調(diào)大VC維,是因?yàn)閿?shù)據(jù)太緊密。
如果吃不下一個(gè)數(shù)據(jù),那么找局部距離的時(shí)候,就會(huì)總是產(chǎn)生錯(cuò)誤的結(jié)果。
盡管已經(jīng)很大了,但是仍然需要更大,最好是每個(gè)點(diǎn)各占一個(gè)維度,這樣100%不會(huì)分錯(cuò)。
這會(huì)導(dǎo)致另外一個(gè)情況發(fā)生:過擬合,以及維數(shù)災(zāi)難:
| 維數(shù)災(zāi)難: 在Test Phase,由于參數(shù)空間十分龐大,測(cè)試數(shù)據(jù)只要與訓(xùn)練數(shù)據(jù)有稍微變化,很容易發(fā)生誤判。 原因是訓(xùn)練數(shù)據(jù)在參數(shù)空間里擬合得過于離散,在做最近局部距離評(píng)估時(shí),各個(gè)維度上,誤差尺度很大。測(cè)試數(shù)據(jù)的輕微變化就能造成毀滅級(jí)誤判,學(xué)習(xí)的參數(shù)毫無魯棒性。 |
不過,由于現(xiàn)代SVM的[Train Criterion] 一般含有L2 Regularier,所以可以盡力壓制擬合的敏感度。
如果L2系數(shù)大點(diǎn),對(duì)于大量分錯(cuò)的點(diǎn),會(huì)全部視為噪聲扔掉,把過擬合壓成欠擬合。
如果L2系數(shù)小點(diǎn),對(duì)于大量分錯(cuò)的點(diǎn),會(huì)當(dāng)成寶去擬合,雖然不至于維數(shù)災(zāi)難,過擬合也會(huì)很嚴(yán)重。
當(dāng)然,一般L2的系數(shù)都不會(huì)壓得太狠,所以過擬合可能性應(yīng)當(dāng)大于欠擬合。
?
我曾經(jīng)碰到一個(gè)例子,我的導(dǎo)師拿了科大訊飛語音引擎轉(zhuǎn)化的數(shù)據(jù)來訓(xùn)練SVM。
Train Error很美,Test Error慘不忍睹,他當(dāng)時(shí)和我說,SVM過擬合好嚴(yán)重,讓我換個(gè)模型試試。
后來我換了CNN和FC,效果也差不多。
從Bayesian Learning觀點(diǎn)來講,Model本身擁有的Prior并不能摸清訓(xùn)練數(shù)據(jù)Distribution。
這時(shí)候,無論你是SVM還是CNN,都是回天無力的,必然造成Poor Generalization。
?
不是說,你搞個(gè)大數(shù)據(jù)就行了,你的大數(shù)據(jù)有多大,PB級(jí)?根本不夠。
單純的擬合來模擬智能,倒更像是是一個(gè)NPC問題,搜遍全部可能的樣本就好了。
悲劇的是,世界上都沒有一片樹葉是完全相同的,美國的PB級(jí)樹葉的圖像數(shù)據(jù)庫可能根本無法解決中國的樹葉問題。
?
也不是說,你隨便套個(gè)模型就了事了,更有甚者,連SVM、NN都不用,認(rèn)為機(jī)器學(xué)習(xí)只要LR就行了。
“LR即可解決灣區(qū)數(shù)據(jù)問題”,不得不說,無論是傳播這種思維、還是接受這種思維的人,都是時(shí)代的悲哀。
NN
再來看一個(gè)NN的例子,我在[深度神經(jīng)網(wǎng)絡(luò)以及Pre-Training的理解]一文的最后,用了一個(gè)神奇的表格:
[FC]
| 負(fù)似然函數(shù) | 1.69 | 1.55 | 1.49 | 1.44 | 1.32 | 1.25 | 1.16 | 1.07 | 1.05 | 1.00 |
| 驗(yàn)證集錯(cuò)誤率 | 55% | 53% | 52% | 51% | 49% | 48% | 49% | 49% | 49% | 49% |
?
?
?
[CNN]
| 負(fù)似然函數(shù) | 1.87 | 1.45 | 1.25 | 1.15 | 1.05 | 0.98 | 0.94 | 0.89 | 0.7 | 0.63 |
| 驗(yàn)證集錯(cuò)誤率 | 55% | 50% | 44% | 43% | 38% | 37% | 35% | 34% | 32% | 31% |
?
?
?
當(dāng)初只是想說明:FC網(wǎng)絡(luò)的Generalization能力真是比CNN差太多。
但現(xiàn)在回顧一下,其實(shí)還有有趣的地方。
I、先看FC的Epoch情況,可以看到,后期的Train Likelihood進(jìn)度緩慢,甚至基本不動(dòng)。
此時(shí)并不能準(zhǔn)確判斷,到底是欠擬合還是陷入到局部最小值。
但,我們有一點(diǎn)可以肯定,增大FC網(wǎng)絡(luò)的規(guī)模,應(yīng)該是可以讓Train Likelihood變低的。
起碼在這點(diǎn)上,應(yīng)該與SVM做一個(gè)同步,就算是過擬合,也要讓Train Likelihood更好看。
?
II、相同Train Likelihood下,CNN的Test Error要低很多。
如果將兩個(gè)模型看成是等效的規(guī)模(實(shí)際上CNN的規(guī)模要比FC低很多),此時(shí)FC網(wǎng)絡(luò)可以直接被判為過擬合的。
這點(diǎn)需要轉(zhuǎn)換參照物的坐標(biāo)系,將CNN看作是靜止的,將FC網(wǎng)絡(luò)看作是運(yùn)動(dòng)的,那么FC網(wǎng)絡(luò)Test Error就呈倒退狀態(tài)。
與過擬合的情況非常類似。
?
綜合(I)(II),個(gè)人認(rèn)為,從相對(duì)運(yùn)動(dòng)角度,Poor Generalization也可以看作是一種過擬合。
(II)本身就很糟了,如果遇到(I)的情況,那么盲目擴(kuò)張網(wǎng)絡(luò)只會(huì)變本加厲。
這是為什么SVM過擬合非常可怕的原因,[知乎:為什么svm不會(huì)過擬合?]
轉(zhuǎn)載于:https://www.cnblogs.com/neopenx/p/5001851.html
總結(jié)
以上是生活随笔為你收集整理的关于过拟合、局部最小值、以及Poor Generalization的思考的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【iOS开发】跳转到『设置App』的任意
- 下一篇: android软件中加入广告实现方法