谷歌和OpenAI宣稱解密了神經網路黑盒屬性:好像遊戲地圖
【新智元導讀】Google和OpenAI聯合發布了Activation Atlas(激活地圖),終於將神經網路圖像分類的「黑匣子」用可視化的方式表示出來了!AI的世界真是神奇!
AI眼中的世界就是激活地圖(Activation Atlases)。
近日,谷歌與OpenAI共同創建了Activation Atlases,這是一種可視化神經元之間相互作用的新技術。通過使用特徵反演(feature inversion)來可視化一個圖像分類網路中數以百萬計的激活。
換言之,神經網路圖像分類的黑匣子終於被打開了。這將有助於研究人員更好的理解AI系統在內部決策的過程。
Activation Atalas:神經網路隱藏層可以表示什麼
我們先來看下以往的工作的一些缺陷:
(單個神經元)單個神經元的可視化使隱藏層變得有意義,但是忽略了神經元之間的交互作用——它只向我們展示了高維激活空間的一維正交探針。(成對交互)成對的交互揭示了相互作用的效果,但它們只顯示了具有數百個維度空間的二維切片,而且許多組合是不現實的。(空間激活)空間激活通過對可能激活的子流形進行採樣來向我們顯示許多神經元的重要組合,但它們僅限於給定示例圖像中出現的那些神經元。(Activation Atlas)通過對多種可能的激活進行採樣,Activation Atlase為我們提供了一個更全面的概覽。
Activation Atalas是建立在特徵可視化的基礎上,這是一種研究「神經網路隱藏層可以表示什麼」的技術。
在深入研究Activation Atalas之前,先簡要回顧一下如何使用特徵可視化使激活向量變得有意義,也就是如何「透過網路的眼睛看」事物。 這種技術將成為Activation Atalas的基礎。
註:本文關注的神經網路是InceptionV1,也稱GoogLeNet。
因為InceptionV1是一個卷積網路,每層每幅圖像都不只有一個激活向量。
這意味著相同的神經元運行在前一層的每個patch上。因此,當通過網路傳遞整幅圖像時,每個神經元將被評估數百次,每一個重疊的圖像塊被評估一次。
結果是一個特徵可視化網格,每個patch都有一個。這向我們展示了網路如何看到輸入圖像的不同部分。
(左)從ImageNet輸入的圖像;(右)來自InceptionV1的激活網格,mixed4d層。
這是單幅圖像的情況,但如果圖像的數量是數以百萬計的,那麼AI的反應又將如何呢?
先從收集一百萬個圖像的激活開始。
我們將隨機為每張圖像選擇一個空間激活。這就得到了100萬個激活向量。每個向量都是高維的,可能是512維!對於如此複雜的一組數據,如果我們想要一個大的視圖,就需要對其進行組織和聚合。
通過一些先進的降維技術,可以將收集到的激活向量投影到有用的二維布局中,並保留原始空間的一些局部結構。將在創建的2D布局上繪製網格,對於網格中的每個單元格,將位於該單元格邊界內的所有激活平均化,並使用特徵可視化來創建圖標表示。
(左)從不同的訓練示例中收集100萬個激活向量。
(中)將它們排列成2D,以便讓相似的元素更緊密地排列在一起。
(右)對每個單元格的平均添加網格,並對其進行特徵可視化。
mixed4c層,應用到InceptionV1,從左至右:20x20,40x40,80x80,160x160。
這幅地圖集乍一看可能有點讓人不知所措,這種多樣性反映了模型開發的各種抽象和概念。
如果我們看一下地圖集的左上方,我們會看到看起來像動物頭部的東西。
不同種類的動物之間有一些區別,但似乎更多的是一些普通哺乳動物的元素——眼睛、皮毛、鼻子——而不是不同種類動物的集合。
隨著我們向下移動,我們開始看到不同類型的毛皮和四足動物的背部。
在此之下,我們發現不同的動物腿和腳在不同的地面上休息。
在腳的下面,我們開始失去任何可識別的動物部分,並看到孤立的地面和地板。 我們看到歸屬於「沙洲」等環境以及地面上發現的東西,如「門墊」或「螞蟻」。
這些沙質岩石背景慢慢地融入海灘和水體。 在這裡,我們可以看到水面上下的湖泊和海洋。雖然神經網路上確實有「海濱」這樣的特定類別,但我們看到許多海洋動物的屬性,而沒有任何與動物本身有關的視覺參考。
但令人欣慰的是,用於為「海濱」類識別海洋的活動與用於分類「海星」或「海獅」的活動是相同的。在這一點上,湖泊和海洋也沒有真正的區別——「湖邊」和「河馬」的屬性與「海星」和「黃貂魚」混雜在一起。
早期的特徵可視化工作主要集中在單個神經元上。而通過收集成千上萬個神經元相互作用的例子並將其可視化,Activation Atalas從單個神經元轉移到這些神經元共同代表的空間。
現在讓我們跳到地圖集的另一邊,在那裡我們可以看到許多不同的文本檢測器。當識別諸如「菜單」、「web站點」或「book jacket」之類的類時,這些檢測器將非常有用。
再向上看,可以看到許多不同的人。在ImageNet中很少有專門識別人員的類,但人們會出現在很多圖像中。
我們看到人們使用的物品(「鎚子」、「笛子」)、人們穿的衣服(「領結」、「郵筒」)以及人們參加的活動(「籃球」)的屬性。在這些可視化中,膚色是一致的,我們懷疑這反映了用於訓練的數據的分布。
最後,回到左邊,我們可以看到圓形的食物和水果主要是由顏色組成的——我們看到歸屬於「檸檬」、「橘子」和「無花果」。
模型在多層次上發展過程
上述工作中,我們主要關注網路的一個層——mixed4c,它位於網路的中間。而卷積網路通常很深,由許多層組成,且逐步構建更強大的抽象。 為了獲得整體視圖,我們必須研究模型的抽象是如何在多個層次上發展的。
首先,讓我們比較來自網路不同區域的三個層,以了解每個層的不同特徵——mixed3b、mixed4c和mixed5b。我們將關注每層的有助於「捲心菜」分類的區域。
當在網路中移動時,後面的層似乎變得更加具體和複雜。
因為每個層都在前一層的激活之上構建其激活。後一層的接受域也往往比前一層更大(這意味著圖像的子集更大),因此概念似乎包含了更多的整體對象。
還有另一個值得注意的現象:不僅概念正在被提煉,而且新概念正在從舊概念的組合中出現。
最後,如果我們縮小一點,我們可以看到更寬的激活空間的形狀是如何從一層到另一層變化的。通過在幾個連續的層中觀察相似的區域,我們可以看到概念得到細化和區分——在mixed4a中,我們看到非常模糊的通用blob,通過mixed4e將其細化為更加具體的「半島」。
激活地圖中,類的邊界是導致神經網路容易「誤認」主要原因
突出顯示完整地圖集的特定類別激活有助於了解該類如何與網路「可以看到」的完整空間相關聯。
但是,如果我們想要真正隔離有助於特定類的激活,我們 可以刪除所有其他激活。與一般地圖集類似,我們在類特定激活向量上運行維數減少5,以便排列類激活圖集中顯示的特徵可視化。
類激活圖集使我們能夠更清楚地了解網路使用哪些檢測器對特定類進行排名。 在「呼吸管」示例中,我們可以清楚地看到海洋、水下和彩色面具。
不過,在某些情況下,我們希望看到有很強的相關性(比如魚和潛水者)。這些激活本身可能比我們感興趣的類對不同的類有更強的貢獻,但是它們的存在也可以對我們感興趣的類有更大的貢獻。
對於這些,我們需要選擇一種不同的過濾方法。
要立即理解類之間的所有差異可能有點困難。為了便於比較,我們可以將這兩個視圖合併為一個視圖。我們將在水平方向繪製「snorkel」和「scuba diving」屬性之間的差異,並使用t-SNE在垂直方向聚集類似的活動。
在這個對比中,我們可以看到一些鳥一樣的生物和左邊清晰的管子,暗示著與「snorkel」有關,而一些鯊魚一樣的生物和右邊圓形、閃亮、金屬的東西,暗示著與「scuba driver」有關。
讓我們從標記為「snorkel」的ImageNet數據集中獲取一張圖像,並添加類似於此圖標的內容,以查看它如何影響分類分數。
這裡的失效模式似乎是該模型正在使用其探測器用於「蒸汽機車」類來識別空氣罐以幫助對「潛水員」進行分類。
我們稱之為「多用途」功能 - 探測器可以對視覺上相似的非常不同的概念做出反應。 讓我們來看看「灰鯨」和「大白鯊」之間的區別,看看這個問題的另一個例子。
在這個例子中,我們看到另一個似乎扮演兩個角色的探測器:探測棒球上的紅色縫線和鯊魚的白色牙齒和粉紅色的內口。
這個探測器也出現在激活地圖集層混合5b過濾到「大白鯊」,它的歸屬點是各種各樣的球,最重要的是「棒球」。
讓我們將棒球圖片添加到ImageNet中的「灰鯨」圖片中,看看它是如何影響分類的。
所以,這也就是為什麼神經網路經常總會認錯東西了。
TAG:新智元 |