全文共2280字,預計學習時長4分鐘
目前在可視化方面,我們已經掌握了許多不同的技術。本文將介紹在卷積神經網絡(CNN)中,針對圖像的某些部位可視化從而做出判斷的不同技術。
類激活映射(CAM)是一種生成熱力圖的技術,用於突出圖像的類的特定區域。
熱力圖效用
下面是一個典型的熱力圖:
這張圖片中,一隻貓被紅色高亮顯示為「貓」類,表示網絡在進行分類判斷時正在查看正確位置。
視覺化神經網絡正在查看的位置大有用處,因為它幫助我們理解神經網絡是否在查看圖像的適當部位,或者神經網絡是否在進行誤導。下列是一些神經網絡在做分類決判斷時可能進行誤導和錯誤查看位置的例子:
· 卷積神經網絡將一張圖片分類為「火車」,而實際上它是在尋找「火車軌道」(這意味著它會錯誤地將一張火車軌道圖片單獨分類為「火車」)。
· 卷積神經網絡將x光胸片分類為「高患病機率」,依據的不是疾病的實際表現,而是放在病人左肩上的金屬「L」標記。重點是,這個「L」標記只有在病人躺下的時候才會被直接放在病人的身體上,而病人也只有虛弱到無法忍受才會躺下接受x光檢查。
參考:Zech et al. 2018,Confounding variables can degradegeneralization performance of radiological deep learning models.
· CNN可根據數據集中五分之一的馬圖像中出現的左下角源標記將該圖像分類為「馬」。但如果將這個「馬的源標記」放在一幅汽車圖像上,那麼網絡仍將該圖像分類為「馬」。
參考:Lapuschkin et al. 2019, Unmasking Clever Hans Predictors and Assessing What Machines Really Learn.
相關論文集
這張圖顯示了有關卷積神經網絡可視化熱力圖的幾篇論文之間的關係。文章左上角可見這篇文章的關鍵——類激活映射(CAM):
以下是完整類激活映射論文的連結:Zhou et al. 2016 「Learning Deep Features for DiscriminativeLocalization.」
此處特別推薦查看圖1和圖2。
CAM:類激活映射
類激活映射結構
類激活映射背後的原理是利用一種特殊的卷積神經網絡結構生成可視化熱力圖。
參考:this post for a review of convolutional neural networks
其結構如下:卷積層,全局池化層,然後是一個輸出分類判斷的全連接層。
在以上示意圖中,可以看到一些通用的卷積層,形成了「倒數第二個卷積層」(即網絡中倒數第二層,也是卷積層的最後一層)。在這個「倒數第二個卷積層」中存在K特徵圖。在這個示意圖中,對於特徵映射A1、A2和A3, K = 3。
但實際上K可以是任何值——例如,可能會有64個或512個特徵映射。
根據文章中的標註,特徵圖高度為v和寬度為u:
全局池化層 (GAP)
全局池化層是通過對特徵圖中的數字求平均值,從而將特徵圖轉換為單個數字。若有K=3個特徵圖,則在全局池化之後,我們將得到K=3個數字。這三個數字用上圖中的三個小正方形表示:
以下是用於描述全局池化層的標註符號:
因此,在全局池化中,對特徵圖Aij的元素進行求和,從i =1到u(全寬),從j = 1到v(全高),然後除以特徵圖中的元素總數,Z = uv。
全連接層和分類數
在執行全局池化後,我們將得到K個數字。通過全連接層將這K個數字轉換為分類判斷:
請注意,為避免混淆繪圖,圖中並未顯示全連接層中的每個權重。實際上,紅色數字(由GAP(A1)輸出)通過權重連接到每個輸出類,綠色數字(由GAP(A2)輸出)通過權重連接到每個輸出類,藍色數字(由GAP(A3)輸出)通過權重連接到每個輸出類。
參考:this post for review offully-connected layers.
僅看「貓」輸出類上,有三個權重,w1、w2和w3,這三個權重將全局池化輸出連接到「貓」輸出節點。使用上圖所示的方程為"貓"類生成一個分數y^貓,對應於y^貓 = (w1)(紅色)+ (w2)(綠色)+(w3)(藍色)。
類激活映射
現在完成了整個類激活映射結構,從輸入圖像到分類數。最後一步是得到類激活映射可視化熱力圖,步驟如下:
這看起來很像計算y^貓分數的方法,但不同之處在於,我們不是將權重w1、w2和w3乘以特徵圖Ak上的全局池化層生成的單個數字,而是直接將權重乘以特徵圖。因此,雖然分數的輸出是數字,但是類激活映射實際輸出的是數字網格。而這個數字網格就是熱力圖!
總結
下面是一頁草圖,總結了整篇類激活映射論文:
留言 點讚 關注
我們一起分享AI學習與發展的乾貨
歡迎關注全平臺AI垂類自媒體 「讀芯術」