圖/文 歐尼克斯實境互動工作室 許哲豪 2020/8/27
2012年Alex Krizhevsky和其指導教授知名圖靈獎得主Geoffrey Everest Hinton以「AlexNet」卷積神經網路(Convolution Neural Network, CNN)贏得大規模視覺辨識挑戰賽(ImagNet Large Scale Visual Recognition Competition, ILSVR),並以低於第二名10%以上的錯誤率受到極大矚目,從此打開人工智慧及「深度學習」的新紀元。雖然CNN利用多層卷積(Convolution)、池化(Pooling)層及扁平化(Flatten)、全連結(Full Connected)構成的模型(神經網路)有著極佳地分類能力,但沒有人可以理解其背後意義,不像傳統機器學習技術中的決策樹(Decision Tree, DT)或支援向量機(Support Vector Machine, SVM)有著清楚的特徵及物理意義。
在上一期專欄「如何應用高維資料可視化一眼看穿你的資料集」[1]中已從資料集的面向討論了如何準備合適的資料集,讓神經網路能較容易訓練出較具分辨性的模型參數(權重值),而這一期將從「神經網路可視化」為大家進一步介紹如何理解訓練完成後的模型參數。
早期卷積神經網路(CNN)層數較少,通常不超過十層,網路結構單純,模型權重值頂多數萬個,所以勉強可以透過一些直覺式的視覺工具來觀察卷積核(Kernels)或經卷積核處理後的特徵圖(Feature Maps)。但隨著新的模型不斷推陳出新,層數已達到數百層,權重值個數更是突破億級,甚至有極為複雜串並聯、前後相連的結構產生,所以根本很難直接觀察已訓練完成模型的權重值,更難以確認模型是否已經有提取出重要的特徵或已達到最佳訓練狀態。
為了更清楚訓練的結果,於是開始有些學者利用一些可視化(Visualization)工具來打開這個黑箱,企圖揭開這些卷積神經網路(CNN)背後的祕密,就像紅外線熱像儀顯示的熱力圖(Heatmap),一眼就能看出有誰在發燒,關注的特徵是否被強調出來。一般可視化工具可能還包含網路架構定義及繪製、網路(模型)權重及熱力圖、訓練過程漏失及正確率變化及其它分析項目,這裡僅介紹網路權重值及所反應的結果影像(如熱力圖)的可視化技術。常見的神經網路可視化方法相當多,包括
- 分層特徵圖(Layer Feature Maps)
- 敏感度分析(Sensitivity Analysis, SA)
- 有向非循環圖 (Directed Acyclic Graph, DAG)
- 反卷積網路(Deconvolution Network, DeconvNet)
- 類別活化映射(Class Activation Mapping, CAM)
- 梯度加權類別活化映射(Gradient-weighted CAM, Grad-CAM)
- 梯度加權類別活化映射改良(Grad-CAM++)
- 分數加權類別活化映射(Score-CAM)
本次先就前四項為大家簡單介紹,其餘部份靜待下回分解。
分層特徵圖(Layer Feature Maps)
早期卷積神經網路模型層數都不多、結構單純、參數(權重值)不多,若想知道模型訓練好的結果,就直接計算不同層經卷積核(Convolution Kernels)推論後的特徵圖(Feature Maps),再以人工方式觀察即可,如Fig. 1所示。從這些特徵圖大致就能感受到圖中究竟提取出何種特徵,不過當模型架構很複雜、輸出項目太多且特徵圖數量過於龐大時,就很難透過這種直覺式觀察法來理解整體模型。
Fig. 1 左上:簡易卷積神經網路,右上:卷積過程示意圖,中下:各層經卷積核產生的特徵圖結果。左下:特徵圖放大。[2] (Aug. 2020 OmniXRI整理繪製)(點擊圖放大)
敏感度分析(Sensitivity Analysis, SA)
在深度學習物件偵測技術尚未發展之前,人們就已花了許多時間在研究,如何找出一張影像中人們最關心的區域(或物件),透過影像像素間色彩聚合、區塊間梯度(邊緣)複雜度及同類影像間相似特質等特徵,再依據不同重視程度組合出一張顯著圖(Saliency Map)就能一眼看出影像中最重要的內容,就像紅外線熱像儀產生的熱力圖(Heatmap),會依不同溫度以不同顏色表示,如Fig. 2左圖。
卷積神經網路技術興起後,一開始大家對於模型參數究竟提供了何種貢獻難以理解,於是想到採用類似顯著圖輸出的方式直接觀察最後的結果即可,不用去探究各層產生的內容。於是Karen Simonyan等人提出了一個簡單的想法[3],就是根據輸入影像的每個點去計算對輸出影像產生的影響力(敏感度)大小,而最直覺的想法就是從模型輸出Top-1結果類別去反推梯度大小,如Fig. 1中及右行下圖所示,越亮的點(梯度越大)影響力越大,若再經假色彩(Pseudo Coloring)處理後就能更清楚看出。不過這樣的作法雖然計算上很簡單,但輸出的結果明顯和物件的位置有明顯關連,不能很正確表示出真正的特徵位置,只能說是找出資料集中大部份同類物件較可能存在的位置。
Fig. 2 左行圖:紅外線熱像儀原始灰階及假色彩強化影像。中、右行圖:彩色原始影像及經敏感度分析後產生的顯著圖影像。[3] (Aug. 2020 OmniXRI整理繪製)(點擊圖放大)
有向非循環圖(Directed Acyclic Graph, DAG)
目前CNN網路越來越大也越複雜,Mengchen Liu等人提出了一個方便理解網路結構、診斷不易收歛的訓練過程及發現提升模型調整方向的一種工作流程,稱之為CNNVis。其工作流程主要包括四個部份,首先把卷積神經網路轉換成有向非循環圖(Directed Acyclic Graph, DAG)並把神經元及層進行聚類(Clustering),簡化網路關係方便人工閱讀,如Fig.3上圖。接著建立一個矩陣填入各聚類的特徵並加以排序,可更清楚呈現聚類間關連。每一列表示一個神經元,每一行代表一個聚類,而顏色深淺則視為在該類的影響力,顏色越深則越重要。再來為了減少顯示上的複雜度及連線的交叉程度,提出了基於雙聚類的邊緣綁定(Biclustering-based Edge Bundling)技術,如Fig. 3下圖所示。最後另有提供一些工具方便人為介入調整顯示結果。
這樣的方式雖已可解決一定複雜度的網路顯示,但仍不能支援無法轉成有向非循環圖的網路。經實驗後發覺對於層數太淺或太深的網路仍會有部份神經元在聚類時不易收歛或分錯的問題產生,導致產生過擬合或欠擬合現象,有待改進。
Fig. 3 CNNVis運用有向無循環圖(DAG)轉換及神經元聚類後,再建立可視化關係矩陣並排序,最後基於雙聚類的邊緣綁定簡化視覺複雜度及線交叉程度,達到方便分析網路訓練成果。[4] (Aug. 2020 OmniXRI整理繪製)(點擊圖放大)
反卷積網路(Deconvolution Network, DeconvNet)
一般卷積神經網路架構大致上會如Fig. 4下圖所示,由卷積層(Convolution Layer)、最大池化層(Max. Pooling)、扁平化層(Flatten Layer)、全連結層(Full Connected Layer)及輸出層(Output Layer)組成。在訓練時各層的參數(如卷積核、特徵圖數量、移動量、池化大小、激活函數類型及輸出類型等)都會被如實記錄,且都具備反向操作能力,只有最大池化層只保留最大值內容而沒有保留最大值位置,無法反向操作。
卷積神經網路可以利用卷積核產生特徵圖,進而得到類別結果,因此Zeiler, Matthew D.等人就提出反向思路,改以輸入特徵圖進行反卷積而得到可視化結果[5]。通常最大池化時沒有記錄最大值位置,所以反卷積網路就要在最大池化時多記錄最大值產生的位置,如此後續在執行最大反池化(Max. Unpooling)時才順利產生對應關係。不過這裡若只記錄最大值位置而沒有記錄其它值相對大小時,那最大反池化時其它位置只能填入零(或自身值),則還原特徵圖時就會有所失真,因此作者加上最大值定位開關(Max. Locations Switches)的方式來修正還原所產生的失真,如Fig. 4左上圖所示。最後根據不同層所產生的視覺化結果影像,如Fig. 4右上圖所示,大致可看出那些像素對特定類別結果具有較大的反應,藉此便可了解模型參數是否有效提取出特定特徵。
小結
這幾年卷積神經網路帶動了人工智慧及深度學習新一波的快速發展,雖然在影像分類、物件偵測、影像分割及其它影音辨識領域優異的表現令人驚豔,但其背後複雜的網路結構及巨量的參數也造成難以解釋的神祕黑箱作業。目前雖然可透過如本文所提及的可視化工具幫助我們找出模型參數訓練後部份特徵的對應關係,進而更容易了解模型訓練的方向是否有偏離,但離人類可以理解的範圍還有很漫長的路要走。期待不久的將來可解釋型的人工智慧逐漸發展,讓人工智慧不再是黑箱作業。想要了解更多神經網路可視化技術,本文未完待續,敬請期待下回分解。
*本文同步發行於歐尼克斯實境互動工作室部落格及AI HUB,歡迎連結至AI HUB網站【社群互動】下【AI技術交流區】瀏覽更多精采文章*
參考文獻
[1] 許哲豪,”如何應用高維資料可視化一眼看穿你的資料集”
https://omnixri.blogspot.com/2020/08/ai-hub_22.html
[2] 許哲豪,"【Maker玩AI】使用Google Colaboratory免費資源學AI,正是時候!"
http://omnixri.blogspot.com/2018/06/makeraigoogle-colaboratoryai.html
[3] Karen Simonyan, et al. "Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps"
https://arxiv.org/abs/1312.6034
[4] Mengchen Liu, et al. "Towards Better Analysis of Deep Convolutional Neural Networks"
https://arxiv.org/abs/1604.07043
[5] Zeiler, Matthew D., et al. "Visualizing and understanding convolutional networks."
https://cs.nyu.edu/~fergus/papers/zeilerECCV2014.pdf
延伸閱讀:
許哲豪,”黑箱AI真的能被解釋?”
https://omnixri.blogspot.com/2020/05/ai.html
沒有留言:
張貼留言