閱讀68 返回首頁    go 阿裏雲 go 技術社區[雲棲]


能幫你更好理解分析深度卷積神經網絡,今天要解讀的是一款新型可視化工具——CNNVis,看完就能用!

首發地址https://yq.aliyun.com/articles/64813

本文由北郵@愛可可-愛生活 老師推薦阿裏雲雲棲社區組織翻譯。

以下為譯文

 82c230d3c2a8c4a421fdd062223672d39ee3f9a0

1 CNNVis一個能夠幫助專家理解分析與改進深度卷積神經網絡的視覺分析工具

摘要深度卷積神經網絡CNNs在許多模式識別任務中取得了很大的性能突破 然而高質量深度模型的發展依賴於大量的嚐試這是由於沒有很好的理解深度模型是怎麼工作的在本文中提出了一個可視化分析係統CNNVis幫助機器學習專家更好的理解、分析、設計深度卷積神經網絡。

關鍵詞深度卷積神經網絡矩形填充矩陣排序邊緣捆綁雙聚類

1 引言

深度卷積神經網絡在許多模式識別任務上較傳統的方法而言已經展示了很大的提升比如語音識別圖像分類和視頻分類。然而由於其費解的函數和不清楚的工作原理深度卷積神經網絡也被稱為黑盒子模型。

對於理解和分析深度卷積神經網絡而言麵臨兩個技術挑戰首先是CNN可能是由幾十或幾百的層組成、每層有幾千的神經元其次是CNN是由許多函數分量組成並且其值之間的關係也不好理解。

為了解決這個問題提出了一個交互式視覺分析係統稱作CNNVis該係統是為了幫助機器學習專家更好的理解分析與改進CNNs基於深度CNN的結構構思出DAG其中每個節點代表一個神經元每個邊代表神經元對之間的連接基於DAG表示提出了混合可視化另外基於Held-Karp算法設計了矩陣重新排序算法等。

本文中使用圖像分類作為一個例子第一種情況幫助去說明CNN模型結構的性能影響第二種情況學習CNNVis是如何幫助分析潛在的失敗訓練情況第三種情況是幫助為改進CNN結構並提高性能。

本文工作的關鍵技術貢獻是

可視化分析係統幫助專家理解分析和改進深度卷積神經網絡

混合可視化結合了DAG矩形填充矩陣可視化和邊緣捆綁等方法

2 相關工作

為了說明每個神經元學習的特征一般是由一個實像或者合成圖像的部分來表示。現存的方法分為兩類代碼反演和激活值最大化。代碼反演主要是從一個特點層中的激活向量來合成一個圖像激活值最大化方法主要是找到一幅圖像最大化給定神經元上述方法使用基於網格表示來展示神經元的特征。具體分析請見原文。

不像上述方法製定了深度CNN作為一個DAG基於DAG表示又提出了一個混合可視化是由矩形填充矩陣排序和基於雙聚類的邊緣捆綁。

3 背景

047a0b85b29d4a6ef848d9748a40c76a0c85607b

2 典型的卷積神經網絡結構

329e8e7c7953fab0ca2178953fa0732abff89839 

3 卷積操作示意圖

在介紹可視分析係統之前我將簡要的介紹卷積神經網絡。

結構圖2展示的是一個典型的卷積神經網絡結構。這個網絡包含兩個卷積層convolution layer兩個池化層pooling layer和一個全連接層fully connected layer。

卷積層采用各種卷積核對輸入圖片進行卷積處理基本卷積過程如圖3a所示。卷積操作具有平移不變性。因而能夠支持神經元學習到魯棒性比較高的特征。

激活函數非線性的變換。根據一係列的輸入值神經元之間連接的權值以及激勵規則刺激神經元。

典型的激活函數ReLU和Softmax函數具體公式請見原文。    

池化池化層的操作是一種降采樣操作。該操作是在一個小區域內采取一個特定的值作為輸出值。比如圖3b在每個特定的小區域內選取最大值作為輸出值。池化層的操作可以達到一定的空間不變性效果。使用最大的是最大池化。

歸一化歸一化是CNNs中的一個優化操作是為了加快訓練過程中的收斂速度和減少陷入局部最優解的可能。

損失函數在訓練階段用於評估網絡輸出結果與實際值的差異。然後用損失函數的值更新每個神經元之間的權重值。卷積神經網絡的訓練目的就是最小化損失函數值。

4 CNNVis

共用的深度學習框架包括CaffeTheano,Torch和TensorFlow。但是研究人員使用這些框架時發生錯誤後無法找到出錯點因此其需要一個能夠幫助他們更好地理解CNN中的內在原理的工具。

4.1 需求分析

基於討論和前期工作認定以下高等級的需求具體原因請參考原文。

R1-提供一個神經元的學習特征的概述

R2-交互式修改神經元的聚類結果

R3-探索神經元的多麵性

R4-揭示低層次的特征是如何聚合成高層次特征

R5-檢查調試信息

4.2 係統概述1ada853b0e0ca9dc0153b532677bcf043204c6b2                                                                       4  CNNVis的設計流程圖

可視化分析係統CNNVis的設計流程圖如圖4所示主要包含四個部分

1DAG規劃模塊將CNN轉換成DAG並從概述上總結神經元和層R1,R4

神經元聚類可視化模塊揭示神經元的多麵性R3

基於雙聚類的邊緣捆綁減少由於大量連接造成的視覺混亂R4

提供交互模塊R2和顯示調試信息R5

為了有效的表示一個大的CNN網絡DAG製定模塊在每一層聚類神經元。然後送入到神經元聚類可視化模塊該模塊使用矩形填充算法去展示每個神經元的學習特征。之後基於雙聚類的邊緣捆綁減少視覺混亂。

17bf1417838fa94cfcd308f2d1f468bbab4b9210

 圖5 DAG轉換及聚類過程

5 DAG 構想

CNN可以被構想成DAG其中每個節點表示神經元每條邊表示神經元間的連接。由於一個卷積神經網絡往往會有很多層每一層會有很多神經元。為了提供總覽圖方便用戶建立對整個卷積神經網絡的認識他們首先對層進行了聚類。然後在每個層聚類中對內部的神經元進行了聚類如圖5所示。

在CNNVis中采用兩種聚類方法分別為K-Means和MeanShift。

6 可視化

6.1 概述

基於DAG構想設計了混合可視化能夠直觀說明神經元節點聚類和神經元之間的連接邊。 f566002259d2fd312129021953760deb303473a7

6 可視化概述 

每一個神經元聚類用一個大的矩形表示如圖6A所示。其中每個學習特征是由更小的矩形編碼得到如圖6B1神經元激活值由矩陣的可視化來表示如圖6B2在輸入與輸出聚類之間加入一層“in-between”如圖6C所示在該層中每個雙聚類在DAG中看成是節點。

6.2 神經元聚類可視化

6.2.1 矩陣填充學習特征

計算神經元的學習特征。采用矩陣填充技術將群簇內神經元的輸出圖像填充成一個矩陣來表示該群簇特征。同時為了方便用戶分析每個神經元在不同類別上性能采用矩陣形式來表示此類信息。一個群簇用一個矩陣表示。在矩陣中每一行表示一個神經元每一列表示一個類別顏色的深淺表示該神經元在該類別上的判別能力如圖6所示。為了更好的表現出該群簇的特點對矩陣中的行進行了重排序最大化鄰近的兩個行的相似性之和。

 17c1bcda75fad01e7d69e7604474c46a6b11f35b

  圖7 分層矩形填充的說明

布局。構想圖片快的布局作為矩形填充的問題目標是將給定的矩形填充到最小區域的包圍矩形。采用混合填充算法該算法主要分為以下三個步驟詳細過程請見原文。

步驟1混分層聚類。

步驟2計算每個聚類的布局區域。

步驟3每個聚類的矩形填充。

6.2.2  激活值作為矩陣可視化

矩陣可視化被采用來說明神經元的激活值

9378480e6f45b3631b4f8b02382e90c5d4f14c76

8 矩陣排序的說明

矩陣排序。列聚類的順序在不同的神經元聚類中應該是一致的因此隻需要重新排序矩陣中的行神經元。

6.2.3 交互

為了更好的理解每個神經元聚類的多麵性CNNVis提供用戶的交互性。

交互式聚類結構修正用戶可以將一個神經元從神經元聚類中或另外的神經元聚類中提取出。

選擇神經元的一部分可視化用戶可以選擇一組聚類並顯示在這些類中的強激活的神經元。

在多麵之間切換用戶可以切換查看學習到的特征或激活矩陣。

6.3 基於雙聚類的邊緣捆綁

3152ef0e5903967a3469028c77ec3760e778ef3e

9 基於雙邊聚類的邊捆綁技術示意圖

提出了基於雙邊聚類的邊捆綁技術。此處的雙邊分別指兩層之間輸入的邊和輸出的邊。如圖9所示雙邊聚類之後對每個聚類結果分別進行邊捆綁操作。圖中綠色表示邊的權值為正紅色表示其權值為負。

7 應用

7.1 概述

選擇基本CNN模型並設計案例研究

BaseCNN。 首先設計了包含10個卷積層4個池化層和2個全連接層的卷積神經網絡BaseCNN使用普遍的ReLU激活函數普遍的損失函數交互熵。網絡結構如圖10所示。將該網絡用於CIFAR10數據庫中在測試的時候實現了11.32%的錯誤率。

4c91c1cec7ab7c05b33c38e72e11e87bc2ac8cf3 

10 BaseCNN結構

案例研究的設計

首先基於BaseCNN,構建幾種變種目的是為了研究網絡結構對於性能的影響

其次需要分析訓練過程看是否未能收斂

6a9a40513c107fc6a785b63d4214b4c110749fb0

11 用CNNVis分析BaseCNN

7.2 案例研究 網絡結構的影響

為了分析卷積神經網絡的結構對最後結果的影響設計了另外兩種卷積神經網絡來分析網絡的深度對結果的影響。表1展示了這三種網絡的基本信息。與BaseCNN相比ShallowCNN少了三層卷積層和一層池化層DeepCNN的卷積層和池化層數量是BaseCNN的兩倍。

網絡深度。進一步研究網絡的深度對神經元學習特征的影響。

表1不同深度之間的CNN性能比較

59136399ab0a9092c58e852337a85a6418336dcd 

 12 模型深度對性能的影響

網絡寬度。進一步研究網絡的寬度對神經元學習特征的影響。嚐試分析每個神經層內神經元的數量對結果的影響。為此設計了以下五種網絡如表2所示。

733bb1446f9b7aa89178a748ee79563817d02d08

13 用CNNVis分析DeepCNN的高層神經元性能

從上圖可以發現DeepCNN的高層神經層之間的邊都是綠色表明其權重都是正值這就說明這內部存在冗餘現象。神經元之間的學習都是正值基本沒有進行結果的糾正。

 47abf9e8379eb2e48f4bf6a0198989e30efe8e17

從表2可以發現BaseCNN*4的訓練錯誤率很低但是測驗錯誤率卻比較高。這說明這個網絡出現了過擬合現象。圖14展示了其在CNNVis係統中的現象。我們可以發現在圖14a的矩陣中大部分行都非常的相似這就說明這些神經元在學習相同的特征。這是一種冗餘現象。

 e0a10e641884017d2b5a5c507db46073b2ce6acb

14不同寬度的模型之間性能比較

7.3 案例研究訓練分析

 2803ae796aeb16e7d9030a531f0c8a55f3a22062

15 探索神經元之間的連接

ad5d3af5268769f0b44f0fc50c1fd44fc097a00a

16 探索神經元聚類

該案例研究表明CNNVis是怎樣幫助專家分析一個失敗的訓練過程。

改進後的模型在CIFAR-10數據庫上實現了分類錯誤率為9.43%使得專家很滿意。

8 結論

本文提出一種新型的可視化分析係統能夠幫助機器學習專家更好的理解、分析與改進CNNs進一步提高網絡性能。

以下還有一些工作去進一步提升該係統CNNVis關注CNN模型在訓練過程中快照分析而訓練狀態是實時更新的關鍵點在於難以有些的選擇快照的表示形式並做出很好的比較。另外一個有趣的未來工作在於將CNNVis應用於其他那些不能被構想成DAG的深度模型比如RNN等主要瓶頸在於設計一個有效的可視化以方便專家理解通過不同的深度模型的數據流。

文章原標題《Towards Better Analysis of Deep Convolutional Neural Networks》作者Mengchen Liu 等人

文章為簡譯更為詳細的內容請查看原文        

 翻譯海棠

最後更新:2017-07-12 22:09:29

  上一篇:go  程序猿必備“三伏天降溫”大全
  下一篇:go  簡單自學機器學習理論——正則化和偏置方差的權衡 (Part III )