本文轉(zhuǎn)自徐飛翔的“損失函數(shù)的可視化——淺論模型的參數(shù)空間與正則”
版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接和本聲明。
模型的參數(shù)空間
我們知道,在機(jī)器學(xué)習(xí),特別是深度學(xué)習(xí)中,整個模型有著數(shù)以萬計,百萬計的參數(shù),包括有權(quán)值,偏置等,這些參數(shù)通常來說都是實(shí)數(shù),如果用表示模型的所有參數(shù),既是
,其中
就可以表示模型的參數(shù)量。我們可以知道,
的每個分量都是可以自由取值的,當(dāng)每個分量遍歷了所有可能的取值時,我們不妨把模型的所有可能參數(shù)取值看成一個空間,名為參數(shù)空間(parameter space),用符號
表示。 也就是說,我們模型中的每一個可能的參數(shù)組合
,都有
。為了方便起見,我們接下來的討論將
設(shè)為3,也就是說我們下面討論的模型只有三個參數(shù)。其參數(shù)空間繪制出來如下所示:
因?yàn)檫@個空間中的每個點(diǎn)(元素)都代表著一個可能的參數(shù)組合,因此都可以看成一個假設(shè)相同的模型。我們?nèi)缦聢D可以發(fā)現(xiàn),不同參數(shù)組合之間可以自由移動,比如從當(dāng)前的移動到
,這個就是模型參數(shù)的更新過程。
其實(shí)我們也可以簡單地發(fā)現(xiàn),空間其實(shí)是一個線性空間,因?yàn)闊o論是數(shù)乘還是加法在這個空間都是封閉的,同時,我認(rèn)為這個空間不是內(nèi)積空間,因?yàn)樵趨?shù)空間定義內(nèi)積似乎沒有意義,不確定是否是賦范空間,希望有了解的朋友指出。不管怎么說,因?yàn)檫@個參數(shù)空間是一個線性空間,我們可以用空間的非線性相關(guān)基底表示空間中的任意一個點(diǎn)了。特別的,我們考慮這個空間中的一個平面
,這個平面可以由初始點(diǎn)
?和兩個非線性相關(guān)的空間向量
?,
組成,既是
,畫出圖如下所示:
其實(shí)我們可以發(fā)現(xiàn),這個時候,本來是可以在整個3維空間中進(jìn)行參數(shù)搜索的,通過限制,或者說正則化手段,將其限制在了只能在一個平面
上進(jìn)行參數(shù)搜索。
這個行為正是正則的作用,通過引入一些假設(shè)或者說偏好,將模型過大的參數(shù)空間限制在一個偏好空間中,從而實(shí)現(xiàn)更好的泛化和搜索。當(dāng)然我這里為了可視化方便舉的是3維的例子,其實(shí)擴(kuò)展到維也是一樣的。我們接下來考察在
維參數(shù)空間中,利用剛才討論的參數(shù)空間的線性特質(zhì)進(jìn)行損失函數(shù)的可視化。損失函數(shù)的二維可視化
在模型中因?yàn)閰?shù)數(shù)以萬計甚至數(shù)以百萬計,而且我們的損失函數(shù)是關(guān)于參數(shù)的一個函數(shù),因此損失函數(shù)也是個極其高高維的函數(shù),難以可視化,但是,通過切片的手段,我們可以可視化出損失函數(shù)的一個切片出來,定性觀察其局部特性。我們看下如何進(jìn)行切片。
考慮一個損失函數(shù),假設(shè)其映射為
,也就是將每一個權(quán)值函數(shù)都映射到了一個相應(yīng)的損失值(當(dāng)然中間需要通過模型函數(shù)
的作用,這里省略了),假設(shè)我們的初始參數(shù)為
,那么假設(shè)兩個方向的基底,分別為
?和
?,那么在這個由
?和
?為基底的平面中,每一個新的參數(shù)都可以表示為
,也就說我們的損失函數(shù)可以從初始的
更新到
,這個過程,只要當(dāng)初始值
?和基底
?和
?決定了(其實(shí)初始值可以隨機(jī)選),就完全由
兩個值決定了,因此可以將其畫成一個平面圖,如下所示[2]:
進(jìn)一步分析我們可以知道,這個過程其實(shí)相當(dāng)于對損失函數(shù)進(jìn)行了一個切片的操作,如下圖所示:
因此,這個由 組成的等高線圖可以表示整個高維度損失函數(shù)的一個切面,提供損失函數(shù)的局部信息,當(dāng)然不能描述整個損失函數(shù),但是不失為一個提供參考的好方法。下圖是SVM損失函數(shù)依據(jù)此方法的可視化結(jié)果[1],左圖具有正則約束,而右圖沒有:
總結(jié)來說,這種方法通過用兩個維度代表了整個高維度的損失函數(shù),達(dá)到了可視化的目的。再看正則化
正則,常常在統(tǒng)計學(xué)和機(jī)器學(xué)習(xí)中提及,其本質(zhì)是引入一些先驗(yàn)的知識,數(shù)據(jù)額外的知識解決一些病態(tài)(ill-posed)的問題,以緩解過擬合的現(xiàn)象[4]。這個過程中,給參數(shù)空間提供了偏好,減小了參數(shù)空間的大小,我們以后有機(jī)會再繼續(xù)細(xì)談不同正則的假設(shè)的解決的問題,我們這里主要考慮的是,怎么提供正則?我們觀察下面圖:
我們?nèi)菀装l(fā)現(xiàn),其實(shí)參數(shù)空間中的每一個點(diǎn)都映射到了損失函數(shù)上,其參數(shù)空間上的平移相當(dāng)于損失函數(shù)上的“上坡”或者“下坡”,因此損失函數(shù)的最小化體現(xiàn)在參數(shù)空間上就是參數(shù)在尋找一個最優(yōu)值。那么我們不難推理出,其實(shí)參數(shù)空間和損失函數(shù)是相關(guān)的,我們對參數(shù)空間進(jìn)行正則也就是進(jìn)行偏好假設(shè),在損失函數(shù)上,其實(shí)就相當(dāng)于加上一個正則項,控制損失函數(shù)的形狀罷了。對于在考慮損失函數(shù)的情況下加上正則,可以考慮在損失函數(shù)中添加正則項,對于考慮參數(shù)空間的正則,可以考慮不同的特殊網(wǎng)絡(luò)結(jié)構(gòu),這兩種方法都是常見的添加正則的方法。
我們以后文章中將會看到,諸如dropout, L2 weight decay, L1 sparse, stochastic depth, weight sharing, sparse connection等等無一不是在我提到的這兩種方法中考慮的。
Reference
[1]: 最優(yōu)化基礎(chǔ):損失函數(shù)可視化、折頁損失函數(shù) & 梯度計算
[2]: Li H, Xu Z, Taylor G, et al. Visualizing the loss landscape of neural nets[J]. arXiv preprint arXiv:1712.09913, 2017.
[3]: Dinh L, Pascanu R, Bengio S, et al. Sharp minima can generalize for deep nets[J]. arXiv preprint arXiv:1703.04933, 2017.
[4]: Regularization (mathematics)