業界 | 解釋深度神經網絡訓練全過程:谷歌發佈SVCCA

 2017-11-29 11:39:00.0

原標題:業界 | 解釋深度神經網絡訓練全過程:谷歌發佈SVCCA

SVCCA 是谷歌大腦提出的一個簡單、可擴展的工具,可以幫助開發者獲知各類深度神經網絡在訓練過程中模型內部的表徵,爲開發者們帶來洞見。該工作的論文已經被 NIPS 2017 大會接收,在下週舉行的大會上,谷歌還將更深入展示新工具的特點。

深度神經網絡(DNN)促使計算機視覺、語言理解和語音識別領域出現了前所未有的進步。但是這些成功也伴隨着新的挑戰。尤其是,和之前很多機器學習方法不同,DNN 易受分類中的對抗樣本、強化學習任務中的災難性遺忘,以及生成模型中的模式崩潰的影響。爲了構建更好、更魯棒的 DNN 系統,解釋這些模型就尤爲重要了。具體來說,谷歌希望能有適合 DNN 的表徵相似性(representational similarity)的概念:我們能夠高效確定兩個神經網絡具備相同表徵的時間嗎?

谷歌發佈的論文《SVCCA: Singular Vector Canonical Correlation Analysis for Deep Learning Dynamics and Interpretability》中介紹了一個簡單、可擴展的方法來解決這些問題。兩個特定應用是:對比不同網絡學得的表徵;解釋 DNN 隱藏層學得的表徵。此外,谷歌開源了代碼以便研究社區可以用該方法進行實驗。

項目地址:https://github.com/google/svcca

該設置的關鍵是將 DNN 中的每個神經元解釋爲一個激活向量。如下圖所示,神經元的激活向量是它在輸入數據上生成的標量輸出。比如,有 50 個輸入圖像,DNN 中的一個神經元將輸出 50 個標量值,將每個輸入對應的值進行編碼。這 50 個標量值組成了該神經元的激活向量(當然,實踐中輸入遠遠多於 50 個)。

該 DNN 有三個輸入 x_1、x_2、x_3。看一下 DNN 內的神經元(右圖紅色),該神經元生成標量輸出 z_i,對應每個輸入 x_i。這些標量值構成了該神經元的激活向量。

基於這一基礎觀察和一些公式,谷歌引入了 Singular Vector Canonical Correlation Analysis(SVCCA),該技術採用兩套神經元,然後輸出二者學得的對齊特徵圖。關鍵是,該技術證明了神經元排序中的排列(對比較不同網絡至關重要)等的表面區別,並且能夠檢測其他更直接的對比無法檢測的相似性。

左圖展示了 net1 和 net2 中兩種最高激活(最大的歐式範數)神經元。檢查最高激活神經元是計算機視覺領域中解釋 DNN 的常用方法,但是在該示例中,net1 和 net2 中的最高激活神經元沒有清晰的對應關係,儘管二者實在同一個任務上進行訓練的。然而,使用 SVCCA 後(右圖),兩個網絡學得的隱藏表徵確實有很多相似的特徵。注意上面兩行表示對齊的特徵圖接近一致,次高的對齊特徵圖也是一樣(下面兩行)。此外,右圖中的對齊映射還表明類界限(class boundary)的明確對應,如上面兩行對 Class 8 給出了負輸出,下面兩行對 Class 2 和 Class 7 給出了正輸出。

你可以對多個網絡使用 SVCCA,此外,你還可以對單個網絡使用 SVCCA,研究隨着時間的變化,網絡中不同的層如何收斂至最終表徵。下圖對比了 net1 在訓練 (y-axes) 時的層表徵和訓練 (x-axes) 結束時的層表徵。例如,左上(「0% trained」)中,x 軸表示 net1 在 100% 訓練後層的增加深度,y 軸表示 net1 在 0% 訓練時層的增加深度。每個 (i,j) 方格表明 100% 訓練網絡中層 i 的表徵與 0% 訓練網絡中層 j 的表徵之間的相似度。左下是輸入層,在 0% 和 100% 訓練狀態下表徵一致。谷歌研究者在 CIFAR-10 數據集上對卷積網絡(第一行)和殘差網絡(第二行)的多個訓練點上進行了對比,如 0%、35%、75% 和 100%。

圖中顯示了 CIFAR-10 上的卷積和殘差網絡的學習動態。注意附加結構也是可見的:上面一行的 2×2 block 是由於批規範層而形成的,而下面一行的棋盤格則是因爲殘差連接。

谷歌的研究人員找到了「自下而上」收斂的證據,接近輸入的層先收斂,層越高收斂時間越長。這種現象引出了一個更快的訓練方法「凍結訓練(Freeze Training)」,詳情請參考論文。此外,這種可視化也有助於突出網絡的屬性。上面一行有很多 2×2 block,對應於批規範層,它們與先前層的表徵是相同的。下面一行中,當訓練趨近結束時,我們可以看到出現了棋盤格式紋理,這是由於網絡的殘差連接,表明它們與之前的層有了更多的相似性。

目前,研究人員主要將 SVCCA 應用在 CIFAR-10 上。如果利用離散傅里葉變換的預處理技術,這種方法可以延展到 ImageNet 這樣尺度的模型上去。谷歌將這一技術應用在了 ImageNet 的 ResNet 上,對比了隱藏表徵與不同類別對應表徵之間的相似性:

不同類別隱藏表徵之間的 SVCCA 相似性。研究人員使用了不同層數的 ImageNet ResNet,0 表示輸入,74 表示輸出,比較了隱藏層和輸出類之間的表徵相似度。有趣的是,不同的類別有着不同的學習速度:消防車類別的學習速度要快於不同犬種的學習速度。此外,兩個犬種(哈士奇類和梗犬類)的學習速度相同,這反映出它們的視覺相似性。

谷歌的論文中詳細論述了目前該研究成果的更多細節,同時也探索了不同應用。如通過投影在 SVCCA 輸出來壓縮 DNN,和凍結訓練方法(一種更節省運算量的深度神經網絡訓練法)。在探索 SVCCA 的過程中,研究人員發現了很多令人興奮的新方向——如移動到不同類型的架構上、對比不同的數據集,以及更好的可視化對齊方式。谷歌計劃在下週於加州長灘舉行的 NIPS 2017 大會上發佈這些結果。

論文:SVCCA: Singular Vector Canonical Correlation Analysis for Deep Learning Dynamics and Interpretability

論文鏈接:https://arxiv.org/abs/1706.05806

我們提出了一種新的技術:奇異向量標準關聯分析(Singular Vector Canonical Correlation Analysis,SVCCA),一種快速比較兩種表徵的工具。這種方法既能在仿射變換中保持固定(允許不同層和網絡之間的比較),又能快速計算(可以在不同層和網絡之間進行更多計算比較)。我們使用這一工具來測量層間的固有維度,發現了很多案例中存在一些不必要的過參數化;我們也探究了整個訓練過程中的學習動態,發現神經網絡收斂至最終表徵的過程是自下而上的;我們也可以使用該工具顯示網絡中特定類別信息形成的位置;我們可以利用這一方法找到新的訓練方法,大大節省計算資源,並減少過擬合。

原文地址:https://research.googleblog.com/2017/11/interpreting-deep-neural-networks-with.html


文章來源:機器之心