這篇文章提出了一個可視分析系統,CNNVis,支援機器學習專家更好的理解、分析、設計深度卷積神經網路。
深度卷積神經網路(CNNs)在特徵識別相關任務中取得的效果,遠比傳統方法好。因此,CNNs常用於影像識別、語音識別等。但是,因為CNNs結構龐大,一般都會包含幾十個神經層,每一層,又有數百至數千個神經元;同時,CNNs任意兩層之間神經元的相互影響錯綜複雜。這兩個主要的因素,導致CNNs難以理解、分析。
為此,使用者很難從失敗或成功的例子中學習到如何設計一個好的卷積神經網路。因此,設計一個效果好的神經網路,往往需要依靠大量的嘗試。
這篇文章提出了一個 可視分析系統 ,CNNVis,支援 機器學習 專家更好的理解、分析、設計深度卷積神經網路。
在介紹可視分析系統之前,我將簡要的介紹卷積神經網路。
圖1. 典型的卷積神經網路結構
上圖展示的是一個典型的卷積神經網路結構。這個網路包含兩個卷積層(convolution layer),兩個池化層(pooling layer)和一個全連線層(fully connected layer)。
圖2. 卷積操作示意圖
卷積層,採用各種卷積核對輸入圖片進行卷積處理,基本卷積過程如圖2所示。卷積操作具有平移不變性。因而,能夠支援神經元學習到魯棒性比較高的特徵。
圖3. 最大池化層。從特定區域中,選取最大值作為輸出值
池化層的操作,是一種降取樣操作。該操作是在一個小區域內,採取一個特定的值作為輸出值。比如圖3,在每個特定的小區域內,我們選取最大值作為輸出值。池化層的操作可以達到一定的空間不變性效果。
卷積神經網路中的激勵函式,根據一系列的輸入值,神經元之間連線的權值以及激勵規則,刺激神經元。
卷積神經網路中的損失函式,在訓練階段,用於評估網路輸出結果與實際值的差異。然後用損失函式的值更新每個神經元之間的權重值。卷積神經網路的訓練目的就是最小化損失函式值。
圖4. CNNVis的設計流程圖
CNNVis的設計流程圖如圖四所示,主要包含四個部分。
DAG轉換主要是將卷積神經網路轉換為有向非迴圈網路(directed acyclic graph);神經元群簇視覺化的目的在於,給使用者一個直觀的視覺化形式分析神經元群簇在整個網路中的作用;基於雙邊聚類的邊捆綁技術的目的是減少檢視的混亂;此外,系統還支援一系列的互動,比如支援使用者修改聚類結果等,以便使用者更好的分析探索整個卷積神經網路。
圖5. DAG轉換及聚類過程
DAG轉換環節,由於一個卷積神經網路往往會有很多層,每一層會有很多神經元。為了提供總覽圖,方便使用者建立對整個卷積神經網路的認識,他們首先對層進行了聚類。然後在每個層聚類中,對內部的神經元進行了聚類(如圖5所示)。
圖6. CNNVis中,矩陣表現形式
在神經元群簇視覺化部分,他們採用矩陣填充技術,將群簇內神經元的輸出影像填充成一個矩陣來表示該群簇特徵。同時,為了方便使用者分析每個神經元在不同類別上效能,他們採用矩陣形式來表示此類資訊。一個群簇用一個矩陣表示。在矩陣中,每一行表示一個神經元,每一列表示一個類別,顏色的深淺表示該神經元在該類別上的判別能力(如圖6所示)。
為了更好的表現出該群簇的特點,他們對矩陣中的行進行了重排序,最大化鄰近的兩個行的相似性之和。
圖7. 基於雙邊聚類的邊捆綁技術示意圖
接著,為了減少檢視的混亂,線的交叉,他們提出了基於雙邊聚類的邊捆綁技術。此處的雙邊分別指兩層之間輸入的邊和輸出的邊。如圖7所示,雙邊聚類之後,對每個聚類結果分別進行邊捆綁操作。圖中,綠色表示邊的權值為正,紅色表示其權值為負。
接下來,我將通過一個樣例,展示CNNVis的實用性。在這個例子中,專家們首先設計了包含10個卷積層, 4個池化層和2個全連線層的卷積神經網路BaseCNN,該網路主要用於影像識別。在CNNVis中,專家們發現在比較低的層,神經元傾向於學習一些簡單的模式(圖8(A)),比如邊緣,顏色,條帶燈;在比較高的層,神經元能夠檢測到一些抽象的特徵(圖8(C)),比如整輛轎車等。
圖8. 用CNNVis分析BaseCNN
為了分析卷積神經網路的結構對最後結果的影響,他們設計了另外兩種卷積神經網路來分析網路的深度對結果的影響。表1展示了這三種網路的基本資訊。與BaseCNN相比,ShallowCNN少了三層卷積層和一層池化層;DeepCNN的卷積層和池化層數量是BaseCNN的兩倍。
表1. 用於分析卷積神經網路的深度對結果的影響的三種神經網路
圖9. 用CNNVis分析ShallowCNN的高層神經元效能
從圖9,我們可以發現,ShallowCNN的高層神經層,依舊存在好多混亂的群簇(群簇內的影像屬於多種實體)。這表明它沒有足夠多的神經層來區分各種實體。
圖10. 用CNNVis分析DeepCNN的高層神經元效能
從圖10,我們可以發現,DeepCNN的高層神經層之間的邊都是綠色,表明其權重都是正值,這就說明,這內部存在冗餘現象。神經元之間的學習都是正值,基本沒有進行結果的糾正。
接下來,他們嘗試分析,每個神經層內神經元的數量對結果的影響。為此,他們設計了以下五種網路,如表2所示。
表2. 用於分析卷積神經網路的寬度對結果的影響。BaseCNN * w表示其每個神經層內神經元的個數是BaseCNN的w倍
觀察表2,我們可以發現,BaseCNN * 4的訓練錯誤率很低,但是測驗錯誤率卻比較高。這說明,這個網路出現了過擬合現象。圖11展示了其在CNNVis系統中的現象。我們可以發現,在圖11(a)的矩陣中,大部分行都非常的相似,這就說明,這些神經元在學習相同的特徵。這是一種冗餘現象。
圖11. (a)BaseCNN * 4 在CNNVis中的表現;(b)BaseCNN在CNNVis中的表現
此外,在表2中,我們可以發現BaseCNN * 0.25的訓練錯誤率和測試錯誤率都很高,這是一種欠擬合現象。圖12展示了其在CNNVis中的現象,我們可以發現,即使是高層的神經元簇,每個群簇內的結果都比較混亂。這說明,該網路沒有足夠的神經元學習影像中的特徵,進而區分不同類別的影像。
圖12. BaseCNN * 0.25的高層神經元在CNNVis中的表現
總的來說,該工作提出了一個可視分析系統來支援機器學習專家更好的理解,分析,設計深度卷積神經網路。很多機器學習演算法都有與卷積神經網路相似的特點,難以理解、分析,引數設定麻煩等。結合適合的可視分析技巧,個人覺得可以有效的將這些黑盒子透明化,方便相關的研究者更好的理解、分析、設計這些機器學習演算法。
摘自:網路大資料