16.Deep Learning雜談(Interesting Fact about Deep Learning)

好,我們?cè)谶@邊再說(shuō), 再講一些跟deep learning領(lǐng)域有趣的事情。

Training Stuck Because……?

第一個(gè)有趣的事情就是:我們?cè)趖raining的時(shí)候,你看到的learning curve通常就是長(zhǎng)這個(gè)樣子的:一開(kāi)始下降很快,慢慢的就趨緩了。過(guò)去我們們認(rèn)為這是卡在了local minima,但是后來(lái)呢,比較多人知道卡在local minima其實(shí)是一個(gè)迷失,可能是卡在saddle point,而不是local mimima。


有一個(gè)很簡(jiǎn)單的說(shuō)法,就是我們非常直觀的想解釋說(shuō)為什么卡在saddle point,而不是local mimima;即:假設(shè)要是一個(gè)local minima,那么每一個(gè)dimension都必須是這樣凹的,對(duì)不對(duì)?那我們假設(shè)說(shuō)在error surface上這樣凹的幾是p,而你的dimension是1000,參數(shù)量有1000,那么你今天要找到一個(gè)點(diǎn),概率是p1000次方,其實(shí)是非常低的,通常多數(shù)的點(diǎn),他的微分是0,它通常是有的地方向上凹,有的地方向下凸,那他其實(shí)是一個(gè)saddle point,現(xiàn)在多數(shù)人都已經(jīng)相信了這個(gè)說(shuō)法;其實(shí)也有人驗(yàn)證過(guò)這件事情:驗(yàn)證這件事情其實(shí)也不難,你就train一個(gè)network,他卡住的時(shí)候你就分析一下卡的地方是saddle point,還是local mimima、你會(huì)發(fā)現(xiàn),多數(shù)的時(shí)候你其實(shí)是卡在saddle point上面,也有人做實(shí)驗(yàn)驗(yàn)證過(guò)了;其實(shí)這件事情在吳恩達(dá)新開(kāi)的deep learning課程里,也有提到這件事;他講到saddle point的時(shí)候,他還特別強(qiáng)調(diào),saddle就是馬鞍的意思,因?yàn)殚L(zhǎng)得像馬鞍。

但是,某某說(shuō)過(guò),前面這個(gè)想法也可能是一個(gè)迷失。有可能事實(shí)的真相是當(dāng)你面臨train卡住的時(shí)候,未必代表你真的卡在saddle point了,為什么?因?yàn)榭ㄔ趕addle point或者local mimima代表那個(gè)區(qū)域他的gradient非常小,但是他舉了一個(gè)例子,放在他的教科書里面,他train了一個(gè)network,error rate開(kāi)始不斷下降,很快就卡住了,他把卡住的gradient 弄出來(lái),發(fā)現(xiàn)gradient很大。這就代表說(shuō)現(xiàn)在雖然你的error rate不斷下降,并不代表你卡在某一個(gè)saddle point,而有可能的狀況是你走到一個(gè)山谷里面,然后再山谷里面來(lái)回震蕩,所以的gradient仍然很大,但是你的loss已經(jīng)不會(huì)下降了,你光看到loss不會(huì)下降,你就以為你卡住了,卡在了saddle point,其實(shí)不是,因?yàn)槟愕膅radient仍然很大。顯然不是卡住了,他是在一個(gè)山谷中可能來(lái)回彈跳,這是一個(gè)可能性。

綜上,如果發(fā)現(xiàn)你卡住了,要檢查你的gradient,如果你的gradient值真的很小,那才是卡在了 saddle point;不然的話,可能是遇到了在山谷震蕩的情況。

Brute-force Memorization?

接下來(lái)另外一個(gè)較近的新聞是有一篇paper告訴我們說(shuō),他train一個(gè)network,network值可能只是用于暴力記住他所學(xué)到的東西,他這個(gè)實(shí)驗(yàn)是這樣子的:他說(shuō),我們先拿一個(gè)正常的training set去train,然后loss跟training的epoch之間的關(guān)系是藍(lán)色線,接下來(lái),我們把input做一下shuffle,得到綠色線,接下來(lái),input是random,label就是random的,network學(xué)不到任何東西,那么loss還是可降低到0的;那大家看到這是不是嚇到吃手了?



我覺(jué)得這個(gè)實(shí)驗(yàn)并不是顯示deep learning不work的,我們的network是如此巨大,大到他可以應(yīng)對(duì)是可以應(yīng)對(duì)corpus的,但是為什么沒(méi)有選擇應(yīng)對(duì)呢?雖然現(xiàn)在沒(méi)有很好的答案,但是它告訴了我們這樣一個(gè)問(wèn)題。

那在這篇icar的paper以后,馬上就有人寫paper反駁這件事:network不是只有做memory,這個(gè)實(shí)驗(yàn)如下:這個(gè)設(shè)計(jì)跟前一個(gè)paper是類似的,他說(shuō)他把他的data做random置換,左邊的0,0.2,0.4,0.6,0.8是:0代表label全對(duì),0.2代表20\%的label換掉……

那如果你看這個(gè)training(實(shí)線)和testing(虛線)的這個(gè)curve的Accuracy變化的話,這里加了一堆的niose,代表數(shù)據(jù)里有一定量的數(shù)據(jù)是沒(méi)有意義的,不管有多少random都可以有100的正確率到最后,那么在testing set上,你random越多,performance就越差。你看curve的話,其實(shí)testing的performance是先增后降,這就是說(shuō)network其實(shí)一開(kāi)始是學(xué)了一些有道理的東西,之后才崩潰的;這個(gè)paper給我們的啟發(fā)式:network在training的時(shí)候,可能就是說(shuō)他先學(xué)了一些簡(jiǎn)單的pattern,有道理的pattern,然后再把奇怪的東西另外強(qiáng)行記下來(lái);

再看看右邊的這張圖,縱軸講的是:ratio of Critical Samples; ratio of Critical Samples即:把training data里面的一個(gè)point拿出來(lái),在這point的某一個(gè)距離之內(nèi),有沒(méi)有其他point跟這個(gè)point是不一樣的,如果有就代表這個(gè)function在這個(gè)point附近特別崎嶇,因?yàn)閘abel變了嘛。ratio of Critical Samples想要衡量的是,我們這個(gè)network learn完以后,他的model所得到的function有多復(fù)雜,ratio of Critical Samples值越大越復(fù)雜。隨著training epoch的進(jìn)行,你會(huì)發(fā)現(xiàn)function越來(lái)越復(fù)雜,而如果你今天label的noise越大(如圖顏色越深越大),noise越大,就越代表network要記錄很多的奇奇怪怪的例外,所以他的function是特別復(fù)雜。但你會(huì)發(fā)現(xiàn)這些function’并不是一開(kāi)始就那么復(fù)雜的,一開(kāi)始是比較簡(jiǎn)單的;這就說(shuō)明一開(kāi)始network只想記住有特征有規(guī)律的東西,到后來(lái)才記那些奇奇怪怪的數(shù)據(jù)。再看左邊這個(gè)圖,一開(kāi)始network只記住簡(jiǎn)單有規(guī)律的東西,所以performance會(huì)先變好,后來(lái)記了奇奇怪怪的例外以后,performance變差了;

Knowledge Distillation

那還有另外一個(gè)有趣的東西,這個(gè)是舊聞,也許大家知道Knowledge Distillation,Knowledge Distillation這個(gè)詞來(lái)源于15年的paper。在Knowledge Distillation里面,一開(kāi)始我們有一個(gè)Teacher Network,是一個(gè)比較深的network,然后我們拿它去做training,我們train好一個(gè)Teacher Network;接下來(lái),我們把training data丟進(jìn)去Teacher Network里面,這個(gè)Teacher Network的正確率其實(shí)也不是100\%,我們network的output是一個(gè)distribution,output里面通過(guò)了softmax,所以得到了一個(gè)distribution;
舉例來(lái)說(shuō),如圖:

input一個(gè)image 1,通過(guò)network得到是1的概率是0.7,7的概率是0.2,9的概率是0.1;接下來(lái)你有一個(gè)Student Network,是一個(gè)又寬又淺的network,這個(gè)矮胖的network要做的事情就是學(xué)習(xí)Teacher Network的output,照理說(shuō)network是按照training data正確的label學(xué),但是今天矮胖的network他不管正確的data,他就看Teacher Network的output;然后minimize與Teacher Network的交叉熵,照理來(lái)說(shuō),輸入一個(gè)圖片1,network應(yīng)該是讓output是1的幾率越大越好,但是這個(gè)Student Network并非如此,他是希望1的概率是70%……Student Network就完全是去學(xué)習(xí)這個(gè)Teacher Network;Student Network本身performance不好,但是學(xué)Teacher Network以后performance就變好了,這是一個(gè)很神奇的事情;

下圖是這篇paper的實(shí)驗(yàn)結(jié)果:縱軸是正確率,橫軸是參數(shù)量,實(shí)驗(yàn)是在TIMIT上面進(jìn)行的。


如上圖所示:紅色的線是一個(gè) shallow 的network,隨著參數(shù)量越來(lái)越多,其實(shí)performance你也進(jìn)步不了多少。
綠色的線是deep 的network,也沒(méi)有很deep,也只是三層而已;不過(guò)不要忘了這是13年的paper,在那時(shí)候算是deep了。接下來(lái),讓矮胖的紅色network去學(xué)另外一個(gè)network,學(xué)習(xí)的對(duì)象是 Convolutional Network(粉紅色的直線),很強(qiáng);還有一個(gè)Ensemble的network(藍(lán)色的直線),他更強(qiáng);藍(lán)色的對(duì)象是學(xué) Convolutional Network的performance,紅色線和藍(lán)色線的network是一樣的,但是直接train的結(jié)果沒(méi)有去學(xué)的結(jié)果好。
大家可以看一下paper……

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容