天天看點

Diss所有深度生成模型,DeepMind說它們真的不知道到底不知道什麼

選自arXiv

作者:Eric Nalisnick等

機器之心編譯

盡管識别檢測等任務在實際中應用廣泛,但判别模型真的搞不定未見過的資料。是以很多研究者認為生成模型對輸入建立了完整的機率分布,說不定它就可以檢測到不在分布内的「新奇」樣本,例如在貓狗資料集上訓練的生成模型能知道手寫數字與訓練集不太一樣。但近日 DeepMind 發表論文否定了這一觀點,他們表示深度生成模型真的不知道它們到底不知道什麼。

深度學習在應用層面獲得了巨大成功,這些實際應用一般都希望利用判别模型建構條件分布 p(y|x),其中 y 是标簽、x 是特征。但這些判别模型無法處理從其他分布中提取的 x,也就是說模型在沒見過的資料上表現很差。例如,Louizos 等人表示僅僅旋轉 MNIST 數字,模型就會預測錯誤。

表面上看,避免此類錯誤預測的方法是訓練機率密度模型 p(x; θ)(θ 指參數)來逼近輸入的真實分布 p ∗ (x),并拒絕為任何機率密度顯著低于 p(x; θ) 的 x 進行預測。但是從直覺上來說,判别模型并沒有觀察到足夠的樣本以作出可靠的決策,是以它們對異常樣本的判斷通常都是不準确的。

異常檢測是另外一個刺激我們尋求精準機率密度的契機,這一應用導緻研究者對深度生成模型的廣泛興趣。深度生成模型有很多種形式,比如變分自編碼器、生成對抗網絡、自回歸模型(PixelCNN)和可逆隐變量模型(Glow)。後兩類模型尤其吸引研究者的注意力,因為它們提供了對邊際似然度(marginal likelihood)的精确計算,且無需近似推斷技術。

這篇論文調查了現代深度生成模型是否能夠用于異常檢測,并期望經過良好訓練的模型對訓練資料配置設定的機率密度高于其他資料集。但是,結果并非如此:在 CIFAR-10 資料集上訓練模型時,VAE、自回歸模型和基于流的生成模型在 SVHN 資料集上配置設定的機率密度高于訓練資料。研究者發現這一觀察結果非常令人困惑且并不直覺,因為 SVHN 資料集中的數字圖像與 CIFAR-10 資料集中的狗、馬、卡車等圖像視覺差異太大。

研究者繼續在基于流的模型上研究這一現象,因為基于流的模型允許計算精确的邊際似然度。初始實驗表明雅可比行列式的對數項可能是導緻 SVHN 高密度的原因,但是研究者發現該現象也适用于常量體積(constant-volume)流的情況。之後研究者介紹了一系列分析,展示了該現象可以從輸入分布的方差和模型曲率的角度來解釋。此外在實驗中,基于流的模型剔除了一些關鍵實驗變量,如常量體積 vs 非常量體積的變換效果。最後,分析結果提供了一些簡單卻通用的公式,用于量化兩個資料集之間的模型機率密度之間的差異。研究者期望能有更多的工作研究深度生成模型在訓練分布之外的屬性,因為了解模型行為對它們在現實世界中的應用很關鍵。

論文:DO DEEP GENERATIVE MODELS KNOW WHAT THEY DON'T KNOW?

Diss所有深度生成模型,DeepMind說它們真的不知道到底不知道什麼

論文位址:https://arxiv.org/pdf/1810.09136.pdf

摘要:現實世界中部署的神經網絡可能需要根據來自不同分布(而不是訓練資料)的輸入進行預測。許多研究表明,找到或合成神經網絡非常自信但錯誤的輸入非常容易。人們普遍認為,生成模型對于這種錯誤的置信度是魯棒的,因為模組化輸入特征的密度可以用來檢測新的、不符合分布的輸入。在本文中,我們向這一假設發起了挑戰。我們發現,來自基于流的模型、VAE 和 PixelCNN 的模型密度無法将普通物體(如狗、卡車和馬)的圖像(即 CIFAR-10)與門牌号碼的圖像(即 SVHN)區分開來,當模型在前者上進行訓練時,後者的似然度更高。

我們的分析主要集中在基于流的生成模型上,因為它們是通過精确的邊際似然性來訓練和評估的。我們發現,即使我們将流模型限制為恒定體積轉換,這種行為仍然存在。可以對這些轉換進行一些理論分析,而且我們表明,這些似然度的差異可以通過資料的位置和差異以及模型曲率來解釋,這表明這種行為非常普遍,而不僅僅局限于我們實驗中使用的資料集對。我們的結果表明,在足夠了解深度生成模型在分布外輸入上的行為之前,盡量不要使用模型中的密度估計來識别類似于訓練分布的輸入。

3 啟發性的觀察結果

鑒于深度生成模型取得了令人印象深刻的進步,我們嘗試測試他們的量化能力,即當輸入來自不同的分布而不隻是訓練集時的分辨能力。這種對分布外資料的校準在安全領域等應用上非常重要,例如我們可以将生成模型當做判别模型來過濾輸入。

對于本論文的實驗,我們訓練了與 Kingma & Dhariwal (2018) 的描述相同的 Glow 架構,隻不過模型要小很多,是以我們能使用 1 塊 GPU 在 NotMNIST 和 CIFAR-10 上訓練模型。我們随後會計算對數似然函數(越高越好)和 BPD(bits-per-dimension,越低越好),這兩個度量标準分别在相同次元的不同資料集 MNIST (28 × 28) 和 SVHN (32 × 32 × 3) 上計算得出(測試集)。我們期望模型能給出較低的機率,因為它不是在這兩個資料集上訓練的。

從 NotMNIST 和 MNIST 資料集開始,下圖 1 的左表展示了每一個測試分割的平均 BPD,而模型隻在 NotMNIST-Train 上進行訓練。而對于 CIFAR-10 和 SVHN,下圖 1 的右表展示了在訓練資料集上的 BPD(CIFAR10-Train)、分布内的測試資料(CIFAR10-Test)和分布外的測試資料(SVHN-Test)。

Diss所有深度生成模型,DeepMind說它們真的不知道到底不知道什麼

圖 1:測試分布外屬性。對數似然(機關:bits per dimension)是 Glow (Kingma & Dhariwal, 2018) 在 MNIST、NotMNIST、SVHN 和 CIFAR-10 上的結果。

Diss所有深度生成模型,DeepMind說它們真的不知道到底不知道什麼

圖 2:NotMNIST vs MNIST 和 CIFAR10 vs SVHN 的 Glow 對數似然圖示。

Diss所有深度生成模型,DeepMind說它們真的不知道到底不知道什麼

圖 3:在 CIFAR-10 上訓練模型,在 SVHN 上測試模型:PixelCNN 和 VAE 的對數似然結果。所用 VAE 模型見 Rosca et al. (2018)。

4 深入了解基于流的模型

以上我們觀察到了 PixelCNN、VAE 和 Glow 在 CIFAR-10 vs SVHN 資料集上的現象,我們現在縮小探索範圍,聚焦于可逆生成模型。

1.分解變量代換目标

Diss所有深度生成模型,DeepMind說它們真的不知道到底不知道什麼

圖 4:分解 NVP-Glow 的似然度。該直方圖展示了将 Glow 的對數似然分解為 z-分布和體積元的貢獻。(a)和(b)展示了 NotMNIST-MNIST 的結果;(c)和(d)展示了 CIFAR-10-SVHN 的結果。

2.體積是罪魁禍首嗎?

Diss所有深度生成模型,DeepMind說它們真的不知道到底不知道什麼

圖 5:CV-Glow 的似然度。我們在 Glow 的常數體積變體上重複了 CIFAR-10 vs SVHN 的實驗(僅使用了平移操作)。子圖(a)展示了 CIFAR10-訓練(黑色)、CIFAR10-測試(藍色)和 SVHN(紅色)的對數似然估計。我們觀察到 SVHN 仍然能達到更高的似然度/更低的 BPD。子圖(b)報告了訓練過程中的 BPD 變化,表明該現象遍及整個訓練過程,并且不能通過早停方法消除。