論文閱讀2.0 OCNN 基礎(chǔ)知識填坑
????? ? ????Orthogonal Convolutional Neural Networks給出了正交卷積的一個等價條件,并給出了實現(xiàn)CNN正交卷積的有效算法,在沒有額外參數(shù)和不增加很多算力情況下,擁有更好的特征表現(xiàn)力、更低的特征相關(guān)性、更均勻的spectrum(頻譜)和增強的魯棒性。
????????算法過兩天再看吧,今天先填一填基礎(chǔ)知識坑。。。。
1.信息熵
????????先給出信息熵的公式:

????????其中p(xi)代表隨機事件xi的概率。
????????先說明什么是信息量,信息量是對信息的度量,就跟時間的度量是秒一樣,當我們考慮一個離散的隨機變量x的時候,當我們觀察到的這個變量的一個具體值的時候,我們接收到了多少信息呢?多少信息用信息量來衡量,我們接受到的信息量跟具體發(fā)生的事件有關(guān)。
????????信息的大小跟隨機事件的概率有關(guān)。越小概率的事情發(fā)生了產(chǎn)生的信息量越大,如湖南產(chǎn)生的地震了;越大概率的事情發(fā)生了產(chǎn)生的信息量越小,如太陽從東邊升起來了。越平常的事情,信息量越小。
????????注意:一個具體事件的信息量應(yīng)該是隨著其發(fā)生概率而遞減的,且不能為負。
????????很容易知道,兩個不相關(guān)的事件,同時觀察獲得的信息量為h(x,y) = h(x) + h(y),兩件事同時發(fā)生的概率為p(x,y) = p(x)*p(y)。根據(jù)上面推導(dǎo),我們很容易看出h(x)一定與p(x)的對數(shù)有關(guān)(因為只有對數(shù)形式的真數(shù)相乘之后,能夠?qū)?yīng)對數(shù)的相加形式)。
????????所以信息量的公式為:

????????公式解釋:
①:負號的原因是,p(x)最大時1,所以h(x)不可能為負,p(x)越小,h(x)越大。
②:底數(shù)為2原因為信息量滿足低概率事件x對應(yīng)于高的信息量。那么對數(shù)的選擇是任意的。我們只是遵循信息論的普遍傳統(tǒng),使用2作為對數(shù)的底。
????????由此我們可以知道,信息量度量的是一個具體事件發(fā)生了所帶來的信息,而熵則是在結(jié)果出來之前對可能產(chǎn)生的信息量的期望——考慮該隨機變量的所有可能取值,即所有可能發(fā)生事件所帶來的信息量的期望。

????????信息熵還可以作為一個系統(tǒng)復(fù)雜程度的度量,如果系統(tǒng)越復(fù)雜,出現(xiàn)不同情況的種類越多,那么他的信息熵是比較大的。
2.多方面理解正則化
????????本質(zhì)上大家都知道,加入正則項是為了避免過擬合
①數(shù)理理解
????????這種處理手段到底是經(jīng)驗上的(比如說,我用這種方法處理了具體數(shù)據(jù)后,得到的結(jié)果確實避免了過擬合,但邏輯上我不能確定對下一個模型下一個數(shù)據(jù)集是否依然適用,以及不確定為什么會產(chǎn)生這樣的結(jié)果)還是理論上的(比如說,不用跑具體數(shù)據(jù),直接就能證明這種方法可以避免過擬合)。換句話說,我們還是回到了對正則項本質(zhì)的討論。
假設(shè)我們考慮一個最簡單的線性模型
,我們比較兩個估計結(jié)果:
(1) 最小二乘估計

(2) 嶺估計

????????那么我們?nèi)绾握f明加入這個正則項后,相較于最小二乘估計,確實避免了過擬合呢?
因為從數(shù)學(xué)上可以證明:

????????注意這里的小于是嚴格的小于。這里的證明是要用到矩陣范數(shù)和向量范數(shù)的相容性。這個性質(zhì)本身告訴了我們這樣一個及其重要的本質(zhì):加入正則項后,估計出的(向量)參數(shù)的長度變短了(數(shù)學(xué)上稱為shrinkage)。換句話說,長度變短了就意味著,β~其中的某些分量在總體程度上比β^的分量變小了。極端來說,向量β~中的某些分量可能(因為也可能是因為每個分量都變小一點點最后造成整體長度變小)被壓縮到了0。
雖然這里其實還沒有完整說明我們實現(xiàn)了避免過擬合,但至少從某種程度上說,加入正則項和的參數(shù)估計是符合我們之前的預(yù)定目標的,即用盡量少的變量去擬合數(shù)據(jù)。
②機器學(xué)習(xí)理解
? ?復(fù)制一下,參考鏈接再最下面。



3.CNN中的特征冗余
?????????ResNet50 中的 feature map,可以看到很多的 feature map 是很相似的,比如圖中標出的紅、綠、藍三組,這也說明 feature map 中存在較多的冗余。有關(guān)優(yōu)化的論文有GhostNet,Split to be slim,Tied Block Convolution,都是20年的,以后有時間看看。包括本文,也是對特征冗余開展工作。

4.正交矩陣和正交化操作
①正交矩陣

性質(zhì):
(1)等式兩邊取行列式,得到A的行列式值是±1
(2)正交矩陣A的行向量組以及列向量組都是標準正交的向量組
②矩陣正交化操作
????????CNN的權(quán)值正交性和特征正交性,在一定程度上是和特征表達的差異性存在一定聯(lián)系的。本文是是在訓(xùn)練中對權(quán)值添加正交正則提高訓(xùn)練穩(wěn)定性,另外還有一篇DeCov Loss老論文,15年的。方法是對特征添加正交性的損失抑制過擬合。
????????什么是正交化呢?我們知道搭建建立機器學(xué)習(xí)系統(tǒng)的挑戰(zhàn)之一是,你可以嘗試和改變的東西太多太多了,有很多的超參數(shù)可以調(diào)。
????????以下來自吳恩達深度學(xué)習(xí)。你有一個老式電視,有很多旋鈕可以用來調(diào)整圖像的各種性質(zhì),所以對于這些舊式電視,可能有一個旋鈕用來調(diào)圖像垂直方向的高度,另外有一個旋鈕用來調(diào)圖像寬度,也許還有一個旋鈕用來調(diào)梯形角度,還有一個旋鈕用來調(diào)整圖像左右偏移,還有一個旋鈕用來調(diào)圖像旋轉(zhuǎn)角度之類的。電視設(shè)計師花了大量時間設(shè)計電路,那時通常都是模擬電路來確保每個旋鈕都有相對明確的功能。如一個旋鈕來調(diào)整這個(高度),一個旋鈕調(diào)整這個(寬度),一個旋鈕調(diào)整這個(梯形角度),以此類推。
????????相比之下,想象一下,如果你有一個旋鈕調(diào)的是0.1x表示圖像高度,+0.3x表示圖像寬度,-1.7x表示梯形角度,+0.8x表示圖像在水平軸上的坐標之類的。如果你調(diào)整這個(其中一個)旋鈕,那么圖像的高度、寬度、梯形角度、平移位置全部都會同時改變,如果你有這樣的旋鈕,那幾乎不可能把電視調(diào)好,讓圖像顯示在區(qū)域正中。
????????所以在這種情況下,正交化指的是電視設(shè)計師設(shè)計這樣的旋鈕,使得每個旋鈕都只調(diào)整一個性質(zhì),這樣調(diào)整電視圖像就容易得多,就可以把圖像調(diào)到正中。
????????另外一個例子就是你想想學(xué)車的時候,一輛車有三個主要控制,第一是方向盤,方向盤決定你往左右偏多少,還有油門和剎車。就是這三個控制,其中一個控制方向,另外兩個控制你的速度,這樣就比較容易解讀。知道不同控制的不同動作會對車子運動有什么影響。
????? ? 想象一下,如果有人這么造車,造了個游戲手柄,手柄的一個軸控制的是0.3×轉(zhuǎn)向角-速度,然后還有一個軸控制的是2×轉(zhuǎn)向角+0.9×車速,理論上來說,通過調(diào)整這兩個旋鈕你是可以將車子調(diào)整到你希望得到的角度和速度,但這樣比單獨控制轉(zhuǎn)向角度,分開獨立的速度控制要難得多。? ?????? ??
????????正交化的概念是指,你可以想出一個維度,這個維度你想做的是控制轉(zhuǎn)向角,還有另一個維度來控制你的速度,那么你就需要一個旋鈕盡量只控制轉(zhuǎn)向角,另一個旋鈕,在這個開車的例子里其實是油門和剎車控制了你的速度。但如果你有一個控制旋鈕將兩者混在一起,比如說這樣一個控制裝置同時影響你的轉(zhuǎn)向角和速度,同時改變了兩個性質(zhì),那么就很難令你的車子以想要的速度和角度前進。然而正交化之后,正交意味著互成90度。設(shè)計出正交化的控制裝置,最理想的情況是和你實際想控制的性質(zhì)一致,這樣你調(diào)整參數(shù)時就容易得多??梢詥为氄{(diào)整轉(zhuǎn)向角,還有你的油門和剎車,令車子以你想要的方式運動。
????????如果你的算法在成本函數(shù)上不能很好地擬合訓(xùn)練集,你想要一個旋鈕,或者一組特定的旋鈕,這樣你可以用來確保你的可以調(diào)整你的算法,讓它很好地擬合訓(xùn)練集,所以你用來調(diào)試的旋鈕是你可能可以訓(xùn)練更大的網(wǎng)絡(luò),或者可以切換到更好的優(yōu)化算法,比如Adam優(yōu)化算法。
????? ? 在機器學(xué)習(xí)中,如果你可以觀察你的系統(tǒng),然后說這一部分是錯的,它在訓(xùn)練集上做的不好、在開發(fā)集上做的不好、它在測試集上做的不好,或者它在測試集上做的不錯,但在現(xiàn)實世界中不好,這就很好。必須弄清楚到底是什么地方出問題了,然后我們剛好有對應(yīng)的旋鈕,或者一組對應(yīng)的旋鈕,剛好可以解決那個問題,那個限制了機器學(xué)習(xí)系統(tǒng)性能的問題。
????????感覺后續(xù)還要再看看。
5.Gram矩陣理解
????????假設(shè)A是m×n的的矩陣,列向量 Gram 矩陣用列向量A表示:


????????行向量同理就不說了。

????????很容易看出,便于理解,在style transfer 當中,什么是風(fēng)格,存在自己特性的才叫做風(fēng)格。因此如何去度量這個自己的特性呢,自己的特點越突出,別人的越不突出最好。因此論文當中這樣去做:

????????這樣我們知道:當同一個維度上面的值相乘的時候原來越小酒變得更小,原來越大就變得越大;二不同維度上的關(guān)系也在相乘的表達當中表示出來。

這不就是gram矩陣嗎^ ^。所以要度量兩個圖像風(fēng)格的差異,只需比較他們Gram Matrix的差異即可。
5.doubly block-Toeplitz matrix矩陣理解
????????首先我們可以把卷積看成:

????????展開的kernel寫成矩陣C的形式:

????????所以矩陣卷積可以寫成下面形式,flat表示將矩陣展平為一維向量。

????????我們可以看出這個矩陣分割以下:

????????我們看到每一個子塊Hi都是一個循環(huán)矩陣(circulant matrix),而整個矩陣則是這些子塊的循環(huán)矩陣。因此我們把這樣的矩陣叫做雙塊循環(huán)矩陣(doubly block circulant matrix)。
????????離散卷積可以被認為是矩陣的乘法。只是,這個矩陣的元素是有限制的。例如,對于一維卷積而言,矩陣的每一行元素與上一行錯位一個位置。這種矩陣叫做托普勒斯矩陣(Toeplitz matrix)。在二維卷積中,對應(yīng)的則是雙塊循環(huán)矩陣(doubly block circulant matrix)。這些矩陣的一些元素受到相等的約束。除此之外,我們也看到這些矩陣是很稀疏的(大多數(shù)位置是0)。原因是我們的kernel通常要比input小很多。把卷積用矩陣乘法的視角來解讀似乎對我們實現(xiàn)卷積沒什么幫助,但是對我們理解卷積和設(shè)計神經(jīng)網(wǎng)絡(luò)卻很有意義。
論文明天再看吧。。。
參考自:https://zhuanlan.zhihu.com/p/26486223
???????????????https://www.zhihu.com/question/20924039/answer/45397882
???????????????https://zhuanlan.zhihu.com/p/296870176
???????????????https://www.jianshu.com/p/61d5b6d22799
???????????????https://zhuanlan.zhihu.com/p/105470826
???????????????https://www.zhihu.com/question/49805962
???????????????https://blog.csdn.net/github_36326955/article/details/72835148