對(duì)人工神經(jīng)網(wǎng)絡(luò)的隱式行為進(jìn)行可視化
在許多機(jī)器學(xué)習(xí)任務(wù)中,人工神經(jīng)網(wǎng)絡(luò)尤其是近些年發(fā)展起來(lái)的深度學(xué)習(xí)網(wǎng)絡(luò),已經(jīng)取得了十分矚目的結(jié)果。然而,以前研究者往往將神經(jīng)網(wǎng)絡(luò)的內(nèi)部行為當(dāng)作黑盒來(lái)看待,神經(jīng)網(wǎng)絡(luò)到底學(xué)習(xí)到了什么并不了解。近些年來(lái),研究者們逐漸開(kāi)始關(guān)注這一問(wèn)題,并通過(guò)了解其內(nèi)部行為來(lái)幫助優(yōu)化模型。而這篇工作則是從可視化的角度出發(fā)來(lái)對(duì)待這個(gè)問(wèn)題。
為了理解這篇工作的內(nèi)容,我們首先需要對(duì)神經(jīng)網(wǎng)絡(luò)有一定的了解。神經(jīng)元是神經(jīng)網(wǎng)絡(luò)中的最基本單元。一個(gè)神經(jīng)元 (neuron) 接受若干個(gè)輸入,計(jì)算它們的加權(quán)和,然后使用“激活”函數(shù)對(duì)這個(gè)和進(jìn)行處理后,得到輸出值。其中,這里的權(quán)重就是這個(gè)神經(jīng)元待學(xué)習(xí)的參數(shù)。若干個(gè)神經(jīng)元可以組成一個(gè)層 (layer),同一層的神經(jīng)元之間沒(méi)有值的傳遞關(guān)系。而多個(gè)層可以依次排列起來(lái),前一層中所有(或者部分)神經(jīng)元的輸出作為下一層各個(gè)神經(jīng)元的輸入。除了***層的神經(jīng)元不需要輸入,而直接輸出數(shù)據(jù)的某一分量;***一層的神經(jīng)元的輸出不再作為其他神經(jīng)元的輸入,而直接用于相應(yīng)的任務(wù)。圖1就是這樣一種典型的神經(jīng)網(wǎng)絡(luò),它具有三層,***層為輸入,***一層為輸出,中間一層稱之為隱含層。我們可以將一個(gè)神經(jīng)網(wǎng)絡(luò)看作依次對(duì)輸入數(shù)據(jù)進(jìn)行處理的函數(shù),每經(jīng)過(guò)一層原始數(shù)據(jù)就得到一次變換,***一層變換后的結(jié)果則直接用于處理對(duì)應(yīng)任務(wù)。
圖1:一個(gè)典型的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
在這么個(gè)神經(jīng)網(wǎng)絡(luò)中,可以用來(lái)可視化的數(shù)據(jù)包含兩部分:一是每一層神經(jīng)元的輸出,它們對(duì)應(yīng)輸入數(shù)據(jù)在網(wǎng)絡(luò)中的不同表示;二是每個(gè)神經(jīng)元所學(xué)習(xí)到的權(quán)重,它們刻畫(huà)著各個(gè)神經(jīng)元的行為,即如何對(duì)輸入進(jìn)行響應(yīng)的。這兩部分?jǐn)?shù)據(jù)分別對(duì)應(yīng)作者在這篇工作中研究者們提出的神經(jīng)網(wǎng)絡(luò)內(nèi)部行為的兩個(gè)任務(wù):任務(wù)一,研究數(shù)據(jù)表示間的關(guān)系;任務(wù)二、研究神經(jīng)元間的關(guān)系。
為了進(jìn)行具體的研究,作者考慮了兩種神經(jīng)網(wǎng)絡(luò)模型:多層感知機(jī)MLP和卷積神經(jīng)網(wǎng)絡(luò)CNN。其中,多層感知機(jī)的結(jié)果類似于圖1,只是中間含有4個(gè)隱含層,各具有1000個(gè)神經(jīng)元。而卷積神經(jīng)網(wǎng)絡(luò)在輸入層之后有若干卷積層、池化層等等,***在輸出層之前會(huì)有全連接層,也就是類似圖1中的結(jié)構(gòu)。作者采用這兩種模型在數(shù)據(jù)集MNIST、SVHN和CIFAR-10分別進(jìn)行測(cè)試與比較。這三個(gè)數(shù)據(jù)集都是用于測(cè)試圖片中數(shù)字或者物體的識(shí)別任務(wù)的。對(duì)應(yīng)到所采用的兩種神經(jīng)網(wǎng)絡(luò)模型中,輸入層的每個(gè)神經(jīng)元對(duì)應(yīng)數(shù)據(jù)集中樣本的每個(gè)像素,而輸出層的每個(gè)神經(jīng)元?jiǎng)t分別對(duì)應(yīng)圖片所屬的數(shù)字或者物體某一個(gè)類別,輸出值表示屬于那一類別的概率。圖2中,展示了這兩種模型在三個(gè)數(shù)據(jù)集上的測(cè)試準(zhǔn)確率。
圖2:兩種網(wǎng)絡(luò)結(jié)構(gòu)在三個(gè)數(shù)據(jù)集上的準(zhǔn)確率
我們回到神經(jīng)網(wǎng)絡(luò)本身。前面提到的神經(jīng)網(wǎng)絡(luò)的內(nèi)部行為實(shí)際上包含兩部分?jǐn)?shù)據(jù),并且均為高維數(shù)據(jù)。作者選擇采用降維投影的方式對(duì)它們進(jìn)行可視化。其中,對(duì)于***個(gè)任務(wù),由于原始數(shù)據(jù)本身已經(jīng)有所屬類別,那么研究數(shù)據(jù)表示間的聚類關(guān)系就有必要性。作者選擇了能更好保留相鄰關(guān)系和聚類關(guān)系的t-SNE投影來(lái)對(duì)這部分?jǐn)?shù)據(jù)進(jìn)行處理。而在第二個(gè)任務(wù)中,神經(jīng)元的關(guān)系主要考察它們之間線性相關(guān)性的大小,那么能盡量保持距離的MDS投影被作者采用。
接下來(lái),我們通過(guò)樣例分析來(lái)看看可視化是如何在這兩個(gè)任務(wù)上發(fā)揮其作用的。
圖3:訓(xùn)練前后MLP***一層數(shù)據(jù)表示的投影圖
在***個(gè)例子中(圖3),左圖是針對(duì)MNIST數(shù)據(jù),未經(jīng)訓(xùn)練的MLP***一層神經(jīng)元輸出的投影結(jié)果??梢钥吹剑词鼓P瓦€未經(jīng)訓(xùn)練,其內(nèi)部表示中,已經(jīng)有了比較好的類間區(qū)分性。這一現(xiàn)象盡管比較直接,但沒(méi)有被任何已有工作所記錄。這也意味著投影的方法可以用于研究模型的初始化策略。而右圖則是訓(xùn)練后的數(shù)據(jù)表示投影結(jié)果,可以看到類間的視覺(jué)區(qū)分性大大增強(qiáng)了。同時(shí),模型的預(yù)測(cè)準(zhǔn)確率也增強(qiáng)了。這就說(shuō)明了根據(jù)內(nèi)部表示的類間區(qū)分性能一定程度上預(yù)測(cè)模型的準(zhǔn)確率,同時(shí)也說(shuō)明模型的訓(xùn)練過(guò)程也是提高數(shù)據(jù)內(nèi)部表示的類間區(qū)分性的過(guò)程。
圖4:訓(xùn)練后MLP***層和***一層數(shù)據(jù)表示的投影圖
投影圖還可以用于比較同一模型不同層的表示區(qū)別。如圖4所示,左側(cè)是***層的表示投影圖,右側(cè)是***一層的投影圖。可以看到類間的可分性得到了明顯的提升。這也就意味著后面的層通過(guò)抓住數(shù)據(jù)中更高層的特征,對(duì)數(shù)據(jù)有了更具區(qū)分性的表示。
圖5:訓(xùn)練后CNN***一層數(shù)據(jù)表示的投影圖
在第二個(gè)例子中,作者將SVHN數(shù)據(jù)集的MLP***一層神經(jīng)元輸出進(jìn)行投影(圖5)。從投影圖中,可以容易地看到每個(gè)類別的點(diǎn)基本都形成了兩個(gè)聚類。經(jīng)過(guò)對(duì)投影圖的探查,發(fā)現(xiàn)其中一個(gè)聚類對(duì)應(yīng)的是“淺色背景上的深色數(shù)字”,而另一類對(duì)應(yīng)的是“深色背景上的淺色數(shù)字”。這種通過(guò)可視化得到的語(yǔ)義知識(shí)可以進(jìn)一步幫助理解和提高模型。例如,作者對(duì)測(cè)試數(shù)據(jù)進(jìn)行邊緣提取操作,以移除深淺顏色帶來(lái)的影響,在完全相同的模型下,預(yù)測(cè)準(zhǔn)確率立即有了提升。其實(shí),已有的研究者也有提出類似的處理方式來(lái)提高模型性能,但是他們并沒(méi)有對(duì)這種做法的合理性進(jìn)行解釋。這種聚類的語(yǔ)義還可以用來(lái)解釋模型的錯(cuò)誤分類。例如,有一個(gè)數(shù)字9的圖片被錯(cuò)分為數(shù)字2。但是,一般人可能比較疑惑:為什么圖片中的9如此清晰且沒(méi)有形變,但卻別錯(cuò)分了呢?通過(guò)觀察投影圖,可以看到這個(gè)圖片對(duì)應(yīng)的點(diǎn)正好在“淺色背景上的深色數(shù)字2”附近,那就意味著是模型將圖片中數(shù)字9右邊的邊框錯(cuò)認(rèn)為了一個(gè)形變的數(shù)字2。
圖6:訓(xùn)練后MLP模型中數(shù)據(jù)表示隨層次的演變可視化
通過(guò)將多個(gè)投影圖聯(lián)合起來(lái)觀察,還可以研究模型中數(shù)據(jù)表示的動(dòng)態(tài)變化過(guò)程。圖6中,左側(cè)4張小圖展示的是MLP在每個(gè)隱含層之后,數(shù)據(jù)表示的投影情況。右側(cè)大圖則將同一數(shù)據(jù)點(diǎn)不同層的表示用曲線連接了起來(lái),用顏色表示層間先后關(guān)系。作者同時(shí)采用邊捆綁技術(shù)來(lái)減少視覺(jué)混亂。從圖中可以很容易地看到隨著層次的演進(jìn),數(shù)據(jù)中類內(nèi)部的一致性和類間的區(qū)分性得到了強(qiáng)化。在圖中還能看到一些異常的軌跡,他們的表示在模型中發(fā)生了比較劇烈的變化,可能對(duì)應(yīng)一些錯(cuò)分類的數(shù)據(jù)。通過(guò)類似的方法,還能看到在訓(xùn)練過(guò)程中,每次迭代之后,數(shù)據(jù)的表示是如何變化的。從中也能觀察到類似的類內(nèi)部的一致性和類間的區(qū)分性的強(qiáng)化效果,具體請(qǐng)參見(jiàn)原文。
圖7:訓(xùn)練前后CNN網(wǎng)絡(luò)的數(shù)據(jù)表示投影圖與神經(jīng)元投影圖
接著,作者研究神經(jīng)元間的關(guān)系,即第二個(gè)任務(wù)。圖7中,分別展示了訓(xùn)練前、后數(shù)據(jù)表示的投影圖和神經(jīng)元權(quán)重關(guān)系的投影圖。作者首先在訓(xùn)練后的數(shù)據(jù)表示投影圖中選擇了對(duì)應(yīng)數(shù)字8的數(shù)據(jù)點(diǎn),在神經(jīng)元投影圖中,對(duì)這部分?jǐn)?shù)據(jù)具有高激活的神經(jīng)元被高亮??梢钥吹?,這些神經(jīng)元基本形成了一個(gè)聚類,也就是說(shuō)它們之間比較相似。而這些神經(jīng)元在訓(xùn)練前則是分散在了投影空間中。由此可見(jiàn),隨著訓(xùn)練的進(jìn)行,這些神經(jīng)元逐漸被特化成專門(mén)用于分辨數(shù)字8的“專家”,并且逐漸變得相似。
圖8:根據(jù)激活類別和程度著色的神經(jīng)元投影圖和數(shù)據(jù)表示投影圖
在圖8左側(cè)圖中,作者直接根據(jù)每個(gè)神經(jīng)元最易激活的類別對(duì)它們進(jìn)行著色。其中,編號(hào)460的神經(jīng)元最容易對(duì)數(shù)字3產(chǎn)生高激活值。在對(duì)應(yīng)的數(shù)據(jù)表示投影圖上,我們能看到被這個(gè)神經(jīng)元激活的數(shù)據(jù)點(diǎn)主要對(duì)應(yīng)“淺色背景上的深色數(shù)字3”這一聚類。但同時(shí),有一部分屬于數(shù)字5的數(shù)據(jù)點(diǎn)也有較高的激活值。這意味著,盡管這個(gè)神經(jīng)元比較擅長(zhǎng)識(shí)別數(shù)字3,但在一些數(shù)字5的數(shù)據(jù)上也會(huì)產(chǎn)生錯(cuò)誤。通過(guò)類似的分析方法,研究者可以了解神經(jīng)元的行為與角色,這也是神經(jīng)網(wǎng)絡(luò)研究中的一個(gè)非常重要的問(wèn)題。
總結(jié)起來(lái),作者使用降維的方法探索了深度神經(jīng)網(wǎng)絡(luò)中數(shù)據(jù)表達(dá)之間的關(guān)系和神經(jīng)元之間的關(guān)系。作者使用的可視化技術(shù)比較簡(jiǎn)單與直接。但在面對(duì)這一類數(shù)據(jù)上還是取得了許多的發(fā)現(xiàn),其中有些還是沒(méi)有被已有工作提高過(guò)的未知發(fā)現(xiàn),并且還能間接幫助提高模型性能。