深度學習模型表述的難點與意義
深度神經網絡(DeepNeuralNetwork,DNN)作為當前人工智能應用的首選模型,在圖像識別,語音識別,自然語言處理,計算生物,金融大數據等領域成效顯著。但深度神經網絡又被稱為黑盒模型,多層隱藏結構,數據/特征矢量化,海量決策關鍵元等因素讓模型使用者犯難:模型決策的依據是什么?應該相信模型么?特別是對于金融,醫藥,生物等關鍵型任務,深度學習模型的弱解釋性成為人工智能項目落地的最大障礙。
云腦科技自主研發的Deepro深度學習平臺利用可視化技術,集成了最前沿的各類深度神經網絡可視化組件,分析與顯化內部隱藏結構與模型輸出的關系,解決黑盒難題。
深度神經網絡的可視化
作為理解人工智能系統的主要技術,模型可視化是一個由來已久而且寬泛的話題。模型可視化與數據可視化屬于不同的范疇,數據可視化通過降維,主成分分析等技術來分析數據的結構,模型可視化針對的是對機器學習模型本身的理解。深度神經網絡又是最為復雜的機器學習模型,其可解釋性與可視化性更加具有挑戰性。網絡模型為什么起作用,它是否足夠好,圖像識別是如何抽象出貓這個概念的?本段分析了幾種典型深度神經網絡可視化技術,詳盡展示了前沿的可視化原理以及解釋性效果。
云腦Deepro采用的CNN可視化
作為最有效的神經網絡之一,CNN(ConvolutionalNeuralNetwork,卷積神經網絡)解決了大量復雜的機器學習實際問題。CNN被廣泛應用于圖像識別,語音識別,語義識別等系統。最近的研究表明CNN在包含自動駕駛在內的自動復雜智能系統中也大展身手。CNN結構通常由一個或多個卷積層和頂端的全連通層組成,同時也包括關聯權重和池化層(poolinglayer)。這一結構使得卷積神經網絡能夠利用輸入數據的二維結構。相比較其他深度、前饋神經網絡,CNN需要的參數更少,能夠更好的利用GPU作大規模并行處理,使之成為一種頗具吸引力的深度學習結構。
舉個CNN的栗子
CNN帶來了高精度的預測模型,但是同時也留下重要的問題,在復雜的多層非線性網絡結構中,究竟是什么讓訓練好的CNN模型給出近乎完美的預測答案?從CNN被大規模研究使用以來,學者們持續不斷的探索可以理解和解釋CNN的方法,其中可視化技術被證明是解釋CNN內部結構最有效的方法之一。CNN可視化技術包括,獨立單元激活的可視化,圖案和區域生成法,維度縮減空間表示法等。
獨立單元激活的可視化
理解CNN內部網絡的操作需要追蹤多層網絡中每一層的特征狀態,而中間層的狀態可以通過一種叫做DeconvNet(DeconvolutionalNetwork,去卷積網絡)的技術反向映射回輸入層的圖像像素空間。DeconvNet可以理解成另一個CNN,利用同樣的網絡結構,包括卷積元,池化等,但相對于CNN是反向的。DeconvNet主要作用是把CNN從像素學會的特征給還原成像素。一個多層CNN網絡中每一層都會對應一個DeconvNet,這樣做的好處是得到的DeconvNet也是連續的,可以從任意一個輸出層或者中間層反推到輸入層的對應像素。
CNN與DeconvNet
設定好DeconvNet后,如果對CNN網絡的某一個激活元感興趣,只需保留該單元而把其它單元設為0值后提交給DeconvNet。DeconvNet進行反池化,非線性化,去卷積化等操作,每一層DeconvNet重復此操作后直至到達最初的像素空間。
CNN隱藏層的可視化
該圖展示了CNN在ImageNet訓練后得到的模型中每一層CNN中最強的激活特征單元(灰度圖片),以及該激活單元通過DeconvNet后生成的像素圖(彩色的圖片)。通過DeconvNet可以非常清楚的理解每一層CNN的作用。
通過DeconvNet分析得出,CNN第一層訓練學習的是以邊為單位的基本元,第二層學習了角,圓等其他圖像元,KUKA機器人電路板維修,之后的第三層則開始學習復雜圖案,而且會把相似的圖案歸類到一起。限于篇幅的原因后面更深的CNN層圖片就不放出了,通過DeconvNet可以分析出CNN第四層開始出現物體的特征,比如狗的臉部,鳥的腿部等,第五層開始出現整個物體,以及物體的不同姿勢和形態。
DeconvNet清楚的證明了CNN高效的學習能力:通過學習圖像中物體從小至大的特征而歸納出物體的整體特征。由此得出結論CNN網絡中海量的內部隱藏特征元并不是隨機或者不可解釋的。該結論極大的增加了使用者對于CNN模型的理解,從而進一步信任模型的結果。DeconvNet技術除了可以觀察解釋CNN內部結構外,還可以用來排除模型建立和調試時遇到的問題,以及通過分析內部結果來得到更好的模型。研究表明CNN模型一大優勢就是預測精確度與內部隱藏層的局部結構有很強的關聯。
圖案和區域生成法
除了從CNN內部結構著手的DeconvNet,圖案和區域生成法也是有效的模型可視化手段。通過進行數值優化技術來生成圖案,CNN預測的結果可以被更好的可視化并帶有解釋性。以常見的圖像分類問題來舉例,CNN在大量圖像數據集上訓練得出一個分類器模型:給定的一張圖像會被標注為一個或多個類別,比如一張貓的照片會標記為貓或某種貓。對于一個特定的標注類,圖案生成法通過數值優化生成可以表述為CNN分類分數的圖像,也就是把CNN理解分類的過程給畫了出來,如下圖所示。
CNN所理解的:洗衣機,鍵盤,狐貍,鵝,鴕鳥,轎車
從生成的圖像中可以看出CNN對于圖像分類的判斷與人對圖像的判斷有一定的相似之處,物體的部分特征可以表述出來。但是CNN又學會了自有和特有的判定條件,而有一些條件從人類的角度上來看可能是顯而易見的錯誤,比如上圖中鵝有多于兩條腿等。通過圖像生成可視化可以幫助理解CNN模型,從而進行更好的排錯和優化。
圖像生成法的另一類應用是圖像的區域識別。區域識別是圖像識別應用中廣泛需求的技術,在安防人臉識別,自動駕駛環境識別等應用中是識別準確的關鍵步驟。圖像生成法先建立CNN分類與圖像空間的映射關系,通過反向梯度傳導來更新映射關系中的權重,最終得到一個完整的類顯著映射集。給定一個CNN指定分類和原始輸入圖像,該映射集可以生成特征圖案。
映射集生成灰度圖案,白色部分是CNN標注的顯著區域
利用單次反向梯度傳導就可以快速得到上圖中的映射集,從而可以顯示出CNN判斷分類的特征和區域。比如通過生成法可以理解CNN學習的過程同時包含從圖像中找到小狗的位置,并加以判斷這是一只小狗。用生成法產生的映射集可以進一步結合GraphCut顏色分割技術來進行圖像區域識別和物體分割。通過生成法產生的映射集劃定了圖像的大體邊界,加上顏色分割技術的細節修正可以快速高效的識別物體區域。
原圖(左)映射生成圖(中1中2)產生分割圖(右)
生成法利用CNN分類模型實現了區域識別。原圖中的物體不僅被標識為正確類別,同時也標注出物體的區域和邊界。整個過程又可以通過映射集可視化。
云腦Deepro采用的RNN可視化