破解AI大腦黑盒邁出新一步!谷歌現在更懂機器,還開源了研究工具

破解AI大腦黑盒邁出新一步!谷歌現在更懂機器,還開源了研究工具

來自專欄 量子位

夏乙 問耕 發自凹非寺

量子位 出品 | 公眾號 QbitAI

「還認為神經網路是黑盒子?再想想吧 :)」

幾個小時前,谷歌AI領域的高級研究科學家Greg Corrado在推特上發出這樣一句話。隨後,谷歌傳奇人物Jeff Dean也跟進轉發。

之所以說出略帶「挑釁」色彩的話,是因為谷歌一項進行很久的研究,今天正式對外公布。這項研究由谷歌大腦團隊的天才少年Chris Olah領銜完成,題目叫做:The Building Blocks of Interpretability。

這項研究,展示了機器如何工作,如何做出一項決定。

整體來講,這項研究探討了特徵可視化如何與其他可解釋性技術結合,從而更好地了解神經網路,包括決策的過程,以及如何影響最終的輸出結果。

以谷歌大腦為主的研究團隊,探索了神經元激活的情況,並為每個神經元配上可視化的圖片。谷歌將此比作為神經網路的MRI(核磁共振成像)。

谷歌的這項研究將將神經網路的可解釋性向前推進一步。了解神經網路如何工作這件事,已經變得原來越重要。因為它們正在越來越多的代替人類作出決定。

谷歌不但放出了相關研究,而且把與之相關的研究工具也進行了開源。

其中包括Lucid,一個建立在DeepDream之上的神經網路可視化庫。地址如下:

github.com/tensorflow/l

還有colab notebooks,這些筆記內容,讓重現研究中的可視化變得非常簡單。嗯,你只需要打開筆記本,點擊一個按鈕即可運行代碼,無需安裝。地址如下:

github.com/tensorflow/l

這些工具可以顯示每個神經元試圖識別什麼,哪些是成功的,以及神經元們作出的努力是怎樣結合在一起來確定圖片內容的。

Chris Olah表示,谷歌的這項研究可以幫助確定為什麼神經網路容易出錯,並在某些情況下解釋這種行為是如何學會的。研究人員相信,這有助於最大限度的減少「對抗性樣例」的威脅,幫助神經網路防止受惡意圖片的欺騙。

當然這項研究仍然處於起步階段。

供職於Uber AI Lab的機器學習科學家Jason Yosinski警告說,想要理解計算機的思維永遠不是一件易事。隨著神經網路越來越複雜,理解這件事也越來越困難。他說:「這有點像試圖理解人類如何做決定。」

不過谷歌還是對這項研究相當重視,為了配合這次研究的發布,他們還特別找了兩分鐘讀論文團隊,為這次的研究做了個視頻解讀版。

量子位搬運視頻如下(中文字幕為機器翻譯)

undefined_騰訊視頻?

v.qq.com圖標

說一千道一萬,谷歌這項研究到底細節如何?

量子位把研究的主要內容搬運如下,對細節和詳情感興趣的朋友,推薦前往distill查看英文全文。

地址:distill.pub/2018/buildi

The Building Blocks of Interpretability

神經網路越成功,解釋這種成功的需求就越強烈。

人們不希望神經網路是一個黑盒子,人們不滿足於只看到模型有用,還一定要知道為什麼有用。例如神經網路在複雜的現實世界中會如何表現,是否存在偏見等等。

為此,既需要構建深度抽象,又需要將其以豐富的交互界面呈現出來。但目前還很少有可解釋性的研究真正同時做好這兩點。

一方面,研究人員的主要興趣都在開發強大的方法來推理神經網路,例如特徵可視化、歸因和降維。不過這些研究目前並沒有很好的結合起來。另一方面,人機交互界面越來越豐富,但還沒有深入研究其中的抽象感念。

在本文中,我們使用圖像分類模型GoogLeNet為例,來演示關於人機交互界面的概念。

揭秘隱藏層

大部分關於可解釋性的工作,主要關注神經網路的輸入和輸出層。因為這兩層的含義很明確。在計算機視覺中,輸入層的數值代表圖像中每個像素的紅綠藍三色通道的數值,而輸出層則是不同的分了標籤和相關的概率。

但是,神經網路的力量來源於中間的隱藏層。

每個隱藏層,網路都會發現新的輸入表示。在計算機視覺領域,我們讓神經網路在圖像的每個位置都同樣運行多個特徵檢測器。可以把每個隱藏層學到的表示視作一個三維立方體。立方體中的每個單元格都是一個激活,或者說神經元激發。

如下圖所示,x軸y軸代表位置,z軸代表所運行的通道(或者說檢測器)。

想理解這些激活並不容易,因為它們通常表示為抽象向量,寫出來是這樣的:

a10,11 = [50.2, 0, 0, 46.3, 51.5, 0, 139.6, 0, 18.6, 0, 0, 40.1, …]

a4,7 = [0, 0, 103.2, 6.80, 0, 0, 0, 0, 0, 0, 0, 0, …]

然而,通過特徵可視化,我們可以將這個抽象向量轉換成更有意義的「語義字典」。

為了製作一個語義字典,需要將每個神經元激活與其可視化進行配對,並根據激活的大小進行排序。激活與特徵可視化的結合改變了我們與潛在數學對象的關係。激活現在映射到了圖標表示,而不是抽象的索引。

通過為隱藏層賦予意義,語義字典為我們現有的可解釋性技術設置了可組合的構建模塊。

神經網路看到了什麼?

語義字典讓我們能對激活進行細緻的考察:每個神經元能檢測到什麼?建立這種表示,我們也可以把激活向量作為整體進行考慮。除了對單個神經元進行可視化,我們還能對在任意位置激活的神經元組合進行可視化。

將這種技術應用於所有的激活向量,我們不僅可以看到神經網路在每個位置檢測到的內容,還可以了解網路對整個輸入圖像的理解程度。

通過跨層(例如mixed3a、mixed4d)研究,我們可以查看網路理解如何進化發展:從早期圖層的邊緣檢測,到後期更複雜的形狀和對象識別等等。

不過這些可視化忽視了一個關鍵信息,那就是激活的大小。通過按照激活向量的大小來縮放每個單元的面積,我們可以表明網路在某個位置檢測到特徵的強度:

概念如何組合?

特徵可視化有助於我們搞清楚網路看到了什麼,但並不能回答神經網路如何把這些信息組合起來,以及如何做出最後的決定。

歸因是一組通過解釋神經元之間的關係來回答上述問題的技術。最常見的歸因界面稱為顯著圖,這是一種簡單的熱圖,但這種方法也有自身缺陷。

在上面這個界面里,我們提供了更靈活的歸因關係。通過上面這個圖標,我們已經開始考慮更高層次概念的歸因。例如在特定的位置,許多概念糾纏在一起,這個界面仍然很難把它們分開。於是就有了下面通道歸因的嘗試。

這個圖與之前相似,但層到層的歸因是通過通道而不是空間位置。

通過上述兩種方式可以揭示模型的強大之處,特別是組合起來使用時。當然這些方法一樣有不足之處,例如耗時較長以及過程損耗等等。

「人類尺度」

如果想構建一個有用的交互界面來解釋神經網路,僅僅能理解它是不夠的。前面提到的三種方法,就各有各的缺點。神經網路處理的信息對人類來說會造成過載,我們需要將它處理、精簡到「人類尺度」。

這個處理過程的關鍵,就在於找到更有意義的方式來將激活分解開來。很多時候,某些通道或者空間位置高度相關相互協作,可以視為一個單位;而其他通道或位置激活很少,從高層視角來看可以忽略不計。所以,如果找到合適的工具,我們應該可以更好地分解這些激活。

有一個名叫矩陣因子分解的領域,就在研究分解矩陣的最佳策略。將我們前面提到的cube攤平到一個空間位置和通道構成的矩陣中,就可以運用這個領域的研究成果,來為神經元尋找更有意義的分組方式了。

構建這些組是為了解釋神經網路在某張圖像上的行為,同樣的分組可能無法用到其他圖像上,每張圖像都需要重新計算一組自己的分組方式。

在用戶看到的界面上,因子分解得到的組相當於原子。

用戶界面的目的會影響我們矩陣因子分解中的優化方向。比如說,如果「網路檢測到了什麼」優先,因子分解就該完整描述激活;如果「什麼能改變網路的行為」優先,就要完整描述梯度;如果「什麼因素造成了當前行為」優先,就完整描述歸因。當然,也可以平衡這些方面。

下圖顯示了激活優先、通過用非負矩陣分解(NMF)對激活進行分解來構建的分組,可以注意看一下大量的神經元是如何精簡成這些分組的:

上圖只展示了神經網路中的一層,如果要同時理解多層,就要讓每一層的因子分解互相兼容,這也是因子分解的一個優化方向。

要為理解神經網路尋找更好的原子,上面這些可視化圖表只是一個開始。

解釋性界面

本文所講的界面包括特徵可視化和歸因等模塊,這些模塊不能隨意結合,而是要根據用戶界面的目的,遵循一定的結構。

我們可以把這個界面看成各個元素的組合:

如上圖所示,每種元素都通過特定的展現方式(PRESENTATION),展示了某一類內容(CONTENT),這個內容的基質可以描述成網路的層(LAYERS)如何劃分為原子(ATOMS)。比如說,用特徵可視化來展現隱藏層神經元的激活,就是一種向用戶解釋神經網路的界面。

我們可以將神經網路的基質以網格的形式展現出來,內容和展現形式則是網格中的點或關係符號:

這就為我們提供了一個探索解釋性界面的框架。比如說,我們可以看看這樣的解釋性界面如何幫我們比較開頭示例圖片的兩種潛在分類:

先用特徵可視化來探索mixed4d層的通道,再通過計算輸出的歸因來過濾特定的類別,然後,通過仔細研究各個通道,我們可以得到一幅空間激活的熱力圖,再通過研究空間位置得到精確到神經元的歸因。

本文探索的只是最表面的可能性,涉及的每個模塊背後都有很多技術。文中提到的特徵可視化、歸因、矩陣因子分解都有很多替代工具。

文中所列出的模塊也可能並不完善,可能還有新的模塊可以增加。比如數據集樣例、模型參數,也可能對模型的行為有影響。如果將樣例也考慮進來,我們的分析流程就會變成這樣:

另外,對多個模型作對比也是解釋性界面的一個非常exciting的發展方向,比如說去觀察模型在訓練過程中如何變化,在遷移到新任務上時做出了哪些改變等等,甚至是比較完全不同的模型。

結語

在與枚舉演算法的交互中有豐富的設計空間,我們相信與神經網路的交互也存在著同樣豐富的空間。

要為可解釋性構建強大、可信的界面,我們還有很多工作要做。如果成功了,可解釋性必將能讓人類構建出更公平、安全、一致的AI系統,更好地管理它們。

最後放一張作者列表。

以及Olah小哥哥長這樣~

歡迎大家關注我們的專欄:量子位 - 知乎專欄

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。

量子位 QbitAI · 頭條號簽約作者

?? ? 追蹤AI技術和產品新動態


推薦閱讀:

阿里全面進軍IoT,語音將是人與IoT最自然的交互方式
谷歌AI部門大改組:搜索與人工智慧分家,Jeff Dean升任AI總負責人
Python學習路線分享 零基礎學Python看什麼書好?
工大高新擬更換公司全稱 人工智慧業務或將「實至名歸」
人工智慧思維的邊界在哪裡?2018.03.NO.5(Note)

TAG:人工智慧 | 神經網路 | 谷歌Google |