CNN神經網路內部知識表達的「黑」與「白」

關於神經網路內部的知識表達,深究下去是個很複雜的問題,我很難給出一個面面俱到的答案。所以在這篇知乎里,我從自己兩篇AAAI 2018的論文說起,只是希望提出問題,拋磚引玉。

文題中的「黑」與「白」指的是神經網路的black-box的知識表達和我希望的white-box的可解釋性模型。作為博後研究員,我在UCLA帶領幾個學生探索一種語義層面可解釋的神經網路特徵表達,或者把black-box網路特徵表達轉化成white-box圖模型。

文章第一部分主要介紹了神經網路特徵表達中可能存在的bias,第二部分,我討論了如何把一個訓練好的神經網路的特徵表達轉化成一個可解釋性的圖模型。

1. Potential representation bias

近年來神經網路已經充分顯示出強大的flexibility和classification accuracy。那麼,在測試樣本上的很高的精確度,能否證明模型表達的正確性呢?這難道這不是不言而喻的嗎?"Examining CNN Representations with respect to Dataset Bias" in AAAI2018一文分析了Convolutional Network中可能的biased representations。

比如在上圖中,我們用一個Convolutional Network去判斷一個人是否塗了口紅(口紅這一屬性的分類正確率應該在90%以上)。然而,當我們人為遮住嘴巴的部分或者ps上另一張嘴時,我們發現神經網路的分類值並沒有出現預想中的大幅度的變化。進一步,當我們把某個conv-layer上的對口紅屬性敏感的feature map區域顯示出來,我們發現Network其實很大程度上在用眼睛和鼻子區域的特徵對口紅屬性進行判斷。因為在訓練樣本中,口紅往往與精緻打扮的眼睛、眉毛、鼻子同時出現,而神經網路使用了co-appearing, but unreliable contexts去建模對應的屬性。當然了,很多contextual information是有意義的,甚至是必不可少的,而另一部分contexts是有問題的。

因為測試樣本往往具有與訓練數據相似的data collection bias,所以在測試樣本上的高正確率無法反應這種representation bias。

怎樣在少量人工標註的前提下,自動分辨correct和biased representations?「Examining CNN Representations with respect to Dataset Bias」一文提出了一種間接檢測representation bias的方法。我們僅僅需要標註一些ground-truth屬性關係,比如口紅屬性與頭髮顏色沒有關係,而是否塗口紅與「濃妝艷摸」屬性有正相關性,與「男性」屬性有負相關性(屬性層面的標註數量一般遠遠少於訓練樣本數量)。然後,我們提取神經網路中每個屬性與中層conv-layer的feature maps上觸發單元的對應關係。進一步,基於這種對應關係,我們可以計算出各個屬性在神經網路中層表達上的相關性(哪些屬性相互正相關,負相關,或不相關)。這樣我們可以通過計算KL divergence of 標註的ground-truth屬性關係和演算法挖掘出來的屬性關係,來判斷biased representations。這些biased representations,包括blind spots(網路沒有學習到一些本應改建模的特徵)和failure modes(在哪類樣本上可能做出錯誤的判斷)。

Ground-truth屬性關係和挖掘出的神經網路建模到的屬性關係

2. Disentangling CNN representations into graphical models

其實在black-box表達中,之前提到的representation bias是很難避免的。相比之下,傳統的white-box圖模型往往不存在這樣的問題。因為傳統圖模型中,每個節點本身往往具有某種語義。即使模型學到了某種biased representations,圖模型本身的語義結構也會幫助人們很快找到表達的錯誤。甚至很多情況下,圖模型的結構就是人為手動設定的,這種設計保證了特徵的正確性。但是讓人尷尬的是,恰恰是神經網路black-box表達保證了特徵提取的flexibility和信息表達的效率(見information bottleneck理論)。

那麼,我們在white-box表達和模型的performance上如何取捨呢?沒有答案。對於工業界來說,這個問題很簡單,毋庸置疑演算法的效果決定一切。

然而對於學術研究來說,夢想總是還要有的。如何能夠找到一種white-box的表達方式,同時又具有神經網路表達的flexibility和信息效率,這是一個很難的問題。很多人說這是不可能的,給出不少理由,而且很多理由是很有道理的。但是做研究就是要發現新的問題、找到新的解法,如果遇到困難就一幫子打死,那還是不要做研究了。目前我們團隊提出了幾個想法,但是距問題的徹底解決還離得很遠。

"Interpreting CNN Knowledge via an Explanatory Graph" in AAAI, 2018一文提出了用一個graphical model,namely explanatory graph去解釋一個Pre-trained Convolutional Network的conv-layers上的中層表達結構 (semantic hierarchy hidden inside a pre-trained CNN)。

上圖充分顯示了一個神經網路某個高層conv-layer的混亂的知識表達。圖中,我們列出了四個不同的filters,在不同圖像上的feature map的觸發分布狀態。我們可以看到,同一個filter,在第一幅圖上被尾巴和腳觸發,在第二張圖像上卻表示了頭部。這樣,given

the feature map of a specific filter of a certain conv-layer,我們很難從feature map上看出來每個觸發單元所表示的object parts。

我們要做的工作就是把高層conv-layer中這種混雜的表達拆分開來,表示成一個個子pattern。

這個filter到底表示了多少種不同的patterns of object parts?

哪些filters的哪些patterns是同時觸發的?

這些同時觸發的patterns具有怎樣的空間結構呢?

進一步,Given a feature map,請告訴我每個神經觸發的背後對應哪個object part?

如上圖所示,

1)一個explanatory graph有很多層,分別對應Convolutional Network的不同conv-layer。

2)神經網路的某個conv-layer的某個filter,可能建模了不同object parts的特徵。演算法自動disentangle the mixture of patterns from each filter,然後用不同的node去表示這個filter上對應的不同的parts。

3)explanatory graph中每一個node,表示某個特定的object part。只要這個node被觸發,那麼代表這個這個node對應的filter檢測到了這個object part。這個node需要在空間上去魯棒物體的shape deformation或pose的變化,在不同物體上把對應的part檢測出來。

4)explanatory graph中每一條edge,表示相鄰兩個conv-layer上的兩個node/pattern的co-activation關係和空間關係。

5)我們可以認為這個explanatory graph是對神經網路各個conv-layer層的feature map信息的高度壓縮。一個神經網路有很多conv-layer,每個conv-layer有幾百個filter,每個filter輸出一個很大的feature map。我們把這千千萬萬個feature maps上的千千萬萬輸出單元的信息,用幾千個nodes表達出來。即,這些feature maps表達了那些part patterns (nodes)?這些part patterns分別對應了feature map的哪些區域?

6)一個explanatory graph的每一層有幾千個nodes,這些nodes可以看作一個字典。任意給定一張輸入圖像,神經網路可能僅僅觸發了explanatory graph中的一小部分nodes。

上圖顯示了利用每個graph node在各個圖像上做inference的結果。每個node只對應一個feature map上的某個activation peak,而在不同圖像上這個peak往往對應相同的語義。比如第一個node,表示頭部,第二個node表示腳部。

演算法:簡單的來說,我們假設每個filter包含了N個patterns(nodes),就像GMM一樣,我們用mixture of patterns去擬合對應的feature maps。同時我們要建模不同conv-layer間patterns的空間關係。即,本conv-layer層的patterns的位置不但要充分的擬合出當前的feature map形狀,而且要與上一層相關的patterns保持特定的空間關係。演算法的核心就是去學習patterns之間的相關性,去學習每個pattern與上層patterns的空間關係。我們用這種空間關係去disentangle feature maps of conv-layers。

演算法本身很簡單。我們從標準GMM公式中衍生出三、四個新公式,去建模pattern的空間關係。這裡我就不贅述演算法細節了。

這個演算法隱含了某個前提假設。即,如果一個pattern可以在上一個conv-layer找到數十個共同觸發的patterns,並且這些patterns在各個圖像中都保持穩定的空間關係。那麼這一組patterns往往都表示某種特定的object part。

2.1 Evaluation metric

我們希望把Convolutional Network轉化成一個interpretable graphical model,那麼如何去評價一個特徵表達的interpretability是一個很重要的問題。周博磊在CVPR17提出了一種評價方法。我們在AAAI18中提出了另一種評價標準,即location instability,用來評價某個object-part pattern的interpretability。

我們假設,如果一個pattern在各個圖像中,都表示相同的object part,那麼這個pattern在不同圖像上的檢測位置與物體上某些ground-truth landmarks的相對距離應該保持相對穩定。比如,這個pattern總是被身體和尾巴的連接處觸發,那麼在不同圖像上,pattern的檢測位置和尾尖landmark的相對距離應該保持相對穩定(我不考慮蛇等特殊物體類別)。這樣,我們就可以用這些相對距離在不同圖像上的標準差,去評價這個pattern的location instability。我們可以設定多個landmarks,計算得到關於各個landmark的location instability的平均值。實驗中Nodes in the explanatory graph的location instability遠遠低於各個baselines。

2.2 Potential applications

Explanatory graph可以作為一個事先訓練好的視覺字典。當我們成功訓練了一個神經網路去做某個類別的分類時,我們相信這個神經網路的conv-layers已經建模了大量的object part特徵。我們的explanatory graph就是把這些混雜在一起的特徵表達,一一拆分出來。每個node表示了千百個同類物體的共有的part特徵,所以這些node有很高的transferability。

這些nodes可以用在one/multi-shot part localization上。當我標註一個bounding box of an object part,我可以用這一個bounding box從explanatory graph中提取數百個相關的node去表示這個part,從而在新的圖像中去定位這個object part。比起傳統的方法,我們的方法降低了約1/3 localization errors。

推薦閱讀:

AI安全如何入門(上)
data scientist 有什麼常見 machine learning 相關的面試問題?
李宏毅機器學習2016 第六講 深度學習
如何評價猿輔導分散式機器學習庫ytk-learn、分散式通信庫ytk-mp4j?

TAG:深度学习DeepLearning | 计算机视觉 | 机器学习 |