VC维与DNN的Boundary
原文鏈接:解讀機(jī)器學(xué)習(xí)基礎(chǔ)概念:VC維來去
?
??????? 作者:vincentyao
目錄:
- 說說歷史
- Hoeffding不等式
- Connection to Learning
- 學(xué)習(xí)可行的兩個(gè)核心條件
- Effective Number of Hypotheses
- Growth Function
- Break Point與Shatter
- VC Bound
- VC dimension
- 深度學(xué)習(xí)與VC維
- 小結(jié)
- 參考文獻(xiàn)
??????? VC維在機(jī)器學(xué)習(xí)領(lǐng)域是一個(gè)很基礎(chǔ)的概念,它給諸多機(jī)器學(xué)習(xí)方法的可學(xué)習(xí)性提供了堅(jiān)實(shí)的理論基礎(chǔ),但有時(shí)候,特別是對(duì)我們工程師而言,SVM,LR,深度學(xué)習(xí)等可能都已經(jīng)用到線上了,但卻不理解VC維。
??????? 這里,在臺(tái)灣大學(xué)機(jī)器學(xué)習(xí)基石課程的基礎(chǔ)上,我們簡(jiǎn)單聊聊“VC維的來龍去脈”。我們將解決以下問題:為什么某機(jī)器學(xué)習(xí)方法是可學(xué)習(xí)的?為什么會(huì)有過擬合?拿什么來衡量機(jī)器學(xué)習(xí)模型的復(fù)雜度?深度學(xué)習(xí)與VC維的關(guān)系?
說說歷史
??????? 在講VC維之前,我們不妨來說說VC維的歷史。而說起VC維的歷史,又不得不提起神經(jīng)網(wǎng)絡(luò),一方面是因?yàn)樯窠?jīng)網(wǎng)絡(luò)與VC維的發(fā)明過程是交織在一起的,另一方面是由于神經(jīng)網(wǎng)絡(luò)乏善可陳的泛化控制方法,深度學(xué)習(xí)在理論基礎(chǔ)上一直被懷疑,甚至神經(jīng)網(wǎng)絡(luò)和VC維的代表SVM還一起爭(zhēng)風(fēng)吃醋過好多年。
?????? 1943年,模擬神經(jīng)網(wǎng)絡(luò)由麥卡洛可(McCulloch)和皮茨(Pitts)提出,他們分析了理想化的人工神經(jīng)元網(wǎng)絡(luò),并且指出了它們進(jìn)行簡(jiǎn)單邏輯運(yùn)算的機(jī)制。
??????? 1957年,康奈爾大學(xué)的實(shí)驗(yàn)心理學(xué)家弗蘭克·羅森布拉特(Rosenblatt)在一臺(tái)IBM–704計(jì)算機(jī)上模擬實(shí)現(xiàn)了一種他發(fā)明的叫作“感知機(jī)”(Perceptron)的神經(jīng)網(wǎng)絡(luò)模型。神經(jīng)網(wǎng)絡(luò)與支持向量機(jī)都源自于感知機(jī)(Perceptron)。
?????? 1962年,羅森布拉特著作:《神經(jīng)動(dòng)力學(xué)原理:感知機(jī)和大腦機(jī)制的理論》(Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms)。
??????? 1969年,明斯基和麻省理工學(xué)院的另一位教授佩普特合作著作:《感知機(jī):計(jì)算幾何學(xué)》(Perceptrons: An Introduction to Computational Geometry)。在書中,明斯基和佩普特證明單層神經(jīng)網(wǎng)絡(luò)不能解決XOR(異或)問題。
??????? 1971年,V. Vapnik and A. Chervonenkis在論文“On the uniform convergence of relative frequencies of events to their probabilities”中提出VC維的概念。
??????? 1974年,V. Vapnik提出了結(jié)構(gòu)風(fēng)險(xiǎn)最小化原則。
??????? 1974年,沃波斯(Werbos)的博士論文證明了在神經(jīng)網(wǎng)絡(luò)多加一層,并且利用“后向傳播”(Back-propagation)學(xué)習(xí)方法,可以解決XOR問題。那時(shí)正是神經(jīng)網(wǎng)絡(luò)研究的低谷,文章不合時(shí)宜。
?????? 1982年,在加州理工擔(dān)任生物物理教授的霍普菲爾德,提出了一種新的神經(jīng)網(wǎng)絡(luò),可以解決一大類模式識(shí)別問題,還可以給出一類組合優(yōu)化問題的近似解。這種神經(jīng)網(wǎng)絡(luò)模型后被稱為霍普菲爾德網(wǎng)絡(luò)。
????? 1986年,Rummelhart與McClelland發(fā)明了神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)算法Back Propagation。
????? 1993年,Corinna Cortes和Vapnik等人提出了支持向量機(jī)(support vector machine)。神經(jīng)網(wǎng)絡(luò)是多層的非線性模型,支持向量機(jī)利用核技巧把非線性問題轉(zhuǎn)換成線性問題。
????? 1992~2005年,SVM與Neural network之爭(zhēng),但被互聯(lián)網(wǎng)風(fēng)潮掩蓋住了。
?????? 2006年,Hinton提出神經(jīng)網(wǎng)絡(luò)的Deep Learning算法。Deep Learning假設(shè)神經(jīng)網(wǎng)絡(luò)是多層的,首先用Restricted Boltzmann Machine(非監(jiān)督學(xué)習(xí))學(xué)習(xí)網(wǎng)絡(luò)的結(jié)構(gòu),然后再通過Back Propagation(監(jiān)督學(xué)習(xí))學(xué)習(xí)網(wǎng)絡(luò)的權(quán)值。
??????? 現(xiàn)在,deep learning的應(yīng)用越來越廣泛,甚至已經(jīng)有超越SVM的趨勢(shì)。一方面以Hinton,Lecun為首的深度學(xué)習(xí)派堅(jiān)信其有效實(shí)用性,另一方面Vapnik等統(tǒng)計(jì)機(jī)器學(xué)習(xí)理論專家又堅(jiān)持著理論陣地,懷疑deep learning的泛化界。
......................................
..............................................
..............................................
?
?
深度學(xué)習(xí)與VC維
?
對(duì)于神經(jīng)網(wǎng)絡(luò),其VC維的公式為:
dVC = O(VD),
其中V表示神經(jīng)網(wǎng)絡(luò)中神經(jīng)元的個(gè)數(shù),D表示weight的個(gè)數(shù),也就是神經(jīng)元之間連接的數(shù)目。(注意:此式是一個(gè)較粗略的估計(jì),深度神經(jīng)網(wǎng)絡(luò)目前沒有明確的vc bound)
??????????
舉例來說,一個(gè)普通的三層全連接神經(jīng)網(wǎng)絡(luò):input layer是1000維,hidden layer有1000個(gè)nodes,output layer為1個(gè)node,則它的VC維大約為O(1000*1000*1000)。
可以看到,神經(jīng)網(wǎng)絡(luò)的VC維相對(duì)較高,因而它的表達(dá)能力非常強(qiáng),可以用來處理任何復(fù)雜的分類問題。根據(jù)上一節(jié)的結(jié)論,要充分訓(xùn)練該神經(jīng)網(wǎng)絡(luò),所需樣本量為10倍的VC維。如此大的訓(xùn)練數(shù)據(jù)量,是不可能達(dá)到的。所以在20世紀(jì),復(fù)雜神經(jīng)網(wǎng)絡(luò)模型在out of sample的表現(xiàn)不是很好,容易o(hù)verfit。
但現(xiàn)在為什么深度學(xué)習(xí)的表現(xiàn)越來越好。原因是多方面的,主要體現(xiàn)在:
- 通過修改神經(jīng)網(wǎng)絡(luò)模型的結(jié)構(gòu),以及提出新的regularization方法,使得神經(jīng)網(wǎng)絡(luò)模型的VC維相對(duì)減小了。例如卷積神經(jīng)網(wǎng)絡(luò),通過修改模型結(jié)構(gòu)(局部感受野和權(quán)值共享),減少了參數(shù)個(gè)數(shù),降低了VC維。? 2012年的AlexNet,8層網(wǎng)絡(luò),參數(shù)個(gè)數(shù)只有60M;而2014年的GoogLeNet,22層網(wǎng)絡(luò),參數(shù)個(gè)數(shù)只有7M。再例如dropout,drop connect,denosing等regularization方法的提出,也一定程度上增加了神經(jīng)網(wǎng)絡(luò)的泛化能力。
- 訓(xùn)練數(shù)據(jù)變多了。隨著互聯(lián)網(wǎng)的越來越普及,相比于以前,訓(xùn)練數(shù)據(jù)的獲取容易程度以及量和質(zhì)都大大提升了。訓(xùn)練數(shù)據(jù)越多,Ein越容易接近于Eout。而且目前訓(xùn)練神經(jīng)網(wǎng)絡(luò),還會(huì)用到很多data augmentation方法,例如在圖像上,剪裁,平移,旋轉(zhuǎn),調(diào)亮度,調(diào)飽和度,調(diào)對(duì)比度等都使用上了。
- 除此外,pre-training方法的提出,GPU的利用,都促進(jìn)了深度學(xué)習(xí)。
但即便這樣,深度學(xué)習(xí)的VC維和VC Bound依舊很大,其泛化控制方法依然沒有強(qiáng)理論支撐。但是實(shí)踐又一次次證明,深度學(xué)習(xí)是好用的。所以VC維對(duì)深度學(xué)習(xí)的指導(dǎo)意義,目前不好表述,有一種思想建議,深度學(xué)習(xí)應(yīng)該拋棄對(duì)VC維之類概念的迷信,嘗試從其他方面來解釋其可學(xué)習(xí)型,例如使用泛函空間(如Banach Space)中的概率論。
更多細(xì)節(jié)請(qǐng)參考下面鏈接:
- VC Dimension of Multilayer Neural Networks,該文章給出了多層神經(jīng)網(wǎng)絡(luò)的VC bound的相關(guān)證明。
- Lecun: What is the relationship between Deep Learning and Support Vector Machines / Statistical Learning Theory?Vapnik really believes in his bounds. He worried that neural nets didn’t have similarly good ways to do capacity control (although neural nets do have generalization bounds, since they have finite VC dimension).Lecun’s counter argument was that the ability to do capacity control was somewhat secondary to the ability to compute highly complex function with a limited amount of computation.
小結(jié)
??????? 上面仔細(xì)分析了VC維的來龍去脈,講述了VC維在機(jī)器學(xué)習(xí)理論中的指導(dǎo)意義。考慮到VC維在機(jī)器學(xué)習(xí)領(lǐng)域雖是基礎(chǔ),卻也是大坑,所以難免有理解不深或不當(dāng)之處,敬請(qǐng)諒解。若希望獲得更深理解,請(qǐng)參考下面的參考文獻(xiàn)。
參考文獻(xiàn)
- VC dimension Tutorial Slides by Andrew Moore
- 機(jī)器學(xué)習(xí)基石?筆記?(上文的截圖均出自于該課程的講義)
- vc-dimension in svms
- 機(jī)器學(xué)習(xí)簡(jiǎn)史
- Vapnik–Chervonenkis theory
- Deep Learning Tutorial
- 深度學(xué)習(xí)的研究領(lǐng)域是否有被過度夸大
- VC Theory: Vapnik–Chervonenkis Dimension
?
后記:
??? ? ? 不管是深度學(xué)習(xí)還是淺層組合學(xué)習(xí),其本質(zhì)上是人力抽取規(guī)則的堆積固化,只是DL的彈性和復(fù)用性更強(qiáng),且融合消融較小,且可以貌似無邊界擴(kuò)充。不可迷戀VC維,系統(tǒng)的完備性不能以底層的參數(shù)來表述,因?yàn)榭刹倏匦詷O差,遠(yuǎn)離直觀是科學(xué)最危險(xiǎn)的表達(dá)方式。
總結(jié)
以上是生活随笔為你收集整理的VC维与DNN的Boundary的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 弱电工程各个系统的线缆数量计算方法-弱电
- 下一篇: C++的Android接口---配置ND