當前位置:
首頁 > 新聞 > 生成式模型入門:訓練似然模型的技巧

生成式模型入門:訓練似然模型的技巧

機器之心編譯

參與:李志偉、Geek AI


生成模型不止有 GAN,本教程討論了數學上最直接的生成模型(易處理的密度估計模型)。讀罷本文,你將了解如何定量地比較似然模型。

散度最小化:生成模型的一般框架

生成模型(其實都是統計機器學習模型)旨在從一些(可能是條件的)概率分布 p(x) 中取樣本數據,並學習對 p(x) 進行近似的模型 pθ(x)。建模過程使我們可以基於給定的原始數據外推觀察到的信息。以下是可以通過生成模型實現的各種各樣的操作:

  • 從 p(x) 中抽取新樣本
  • 學習解釋觀測值 x 的分層潛變數 z
  • 你可以對潛變數進行干預,從而檢查干預分布 p_θ(x|do(z))。請注意,只有當你的條件分布對正確的因果關係 z→x 建模,並且我們假設可忽略性(ignorability)成立,這樣做才有效。
  • 在我們的模型分布下查詢新數據點 x" 的似然,從而檢測異常

由於我們可以將分類和回歸問題解釋為學習生成模型的過程,對條件分布進行建模具有更廣泛的直接應用:

  • 機器翻譯 p(句子的英語翻譯 | 法語句子)
  • 字幕 p(字幕 | 圖像)
  • 像最小化均方誤差 min{1/2(x?μ)^2} 這樣的回歸目標函數在數學上等價於具有對角協方差的高斯分布的最大對數似然估計:max{?1/2(x?μ)^2}

為了使 pθ(x) 接近 p(x),我們首先必須提出兩個分布之間距離的概念。在統計學中,更常見的是設計一種較弱的「距離」概念,我們將其稱為「散度」。與幾何距離不同,散度並不是對稱的 (D(p,q)≠D(q,p))。如果我們可以定義概率分布之間形式化的散度,我們就可以嘗試通過優化來最小化它。

我們可以定義各種各樣的散度 D(p_θ||p),並且通常選用適應於生成模型演算法的散度。在這裡,我們只列出其中很少的一部分:

  • 最大平均差異(MMD)
  • Jensen-Shannon 散度(JSD)
  • Kullback-Leibler 散度(KLD)
  • 反向 KLD
  • KernelizedStein 散度(KSD)
  • Bregman 散度
  • Hyv?rinen 得分
  • Chi-Squared 散度
  • Alpha 散度

與幾何距離不同,兩個分布之間的散度不需要是對稱的。通過在無限的數據上進行無數次的計算,所有這些散度都得出相同的答案,即 D(p_θ||p)=0 當且僅當 p_θ≡p。請注意,這些差異與感知評估指標(如 Inception 得分)不同,後者無法保證在高數據限制下收斂到相同的結果(但如果你關心圖像的視覺質量,這些指標是有用的)。

然而,大多數實驗只涉及數量有限的數據和計算,因此對度量的選擇就十分重要,這實際上可以改變最終學習到的生成分布 p_θ(x) 的定性行為。例如,如果目標密度為 p 是多模態的且模型分布 q 的表達較弱,則最小化前向 KL D_KL(p || q) 將學習模式覆蓋行為;而最小化反向 KL D_KL(q||p) 將導致模式丟棄行為。對於其原因更詳細的解釋,可以參閱下面的博文:https://blog.evjang.com/2016/08/variational-bayes.html。

在散度最小化的框架下考慮生成模型是很有用的,因為這讓我們可以仔細思考:為了進行訓練,我們對生成模型有何要求。它可能是隱式的密度模型(GAN),此時採樣相對容易,而並不能計算對數概率;它也可能是基於能量的模型,此時無法進行採樣,而(非標準化的)對數概率則易於計算。

這篇博文將涉及到使用最直接的指標(Kullback-Leibler 散度)訓練和評估的模型。這些模型包括自回歸模型,歸一化流和變分自編碼器(近似地)。優化 KLD 等價於優化對數概率,我們將在下一節中推導出原因!

平均對數概率和壓縮

我們想對一些數據生成隨機過程的概率分布 p(x) 建模。通常,我們假設從足夠大的數據集中採樣與從真實數據生成過程中採樣的情況大致相同。例如,從 MNIST 數據集中抽取出一張圖像,等價於從創建 MNIST 數據集的真實手寫過程中抽取出一個樣本。

給定一組從 p(x) 中採樣得到的獨立同分布的測試圖像 x_1,...,x_N,以及通過 θ 參數化的似然模型 p_θ,我們希望最大化下面的目標函數:

生成式模型入門:訓練似然模型的技巧

生成式模型入門:訓練似然模型的技巧

由於我們實際上無法對所有的 x_i 進行枚舉,平均對數概率是對真實似然 p 和模型似然 p_θ 之間的負交叉熵的蒙特卡羅估計。簡而言之,這意味著「最大化數據的平均似然」,或者相當於「最小化真實分布和模型分布之間的負交叉熵」。

通過一些代數運算,負交叉熵可以用 KL 散度(相對熵)和 p 的絕對熵重寫:

香農(Shannon)的信源編碼定理(1948)告訴我們,熵 H(p) 是你可以構造的任何編碼的平均編碼長度的下界,以無損地傳遞來自 p(x) 的樣本。更大的熵意味著更大的「隨機性」,這是無法壓縮的。特別是,當我們使用自然對數 log_e 計算熵時,它採用「自然信息單位」(或簡稱 nat)。用 log_2 計算熵時,結果的單位是我們熟悉的「位」。H(p) 項與 θ 無關,因此最大化 L(θ) 實際上恰好等價於最小化 KL(p,p_θ)。這就是最大似然也被稱為最小化 KL 散度的原因。

KL 散度 KL(p,p_θ) 或相對熵,是對來自 p(x) 的數據編碼所需的「額外的 nat」的數量,該過程使用基於 p_θ(x) 的熵編碼方案。因此,負交叉熵的蒙特卡羅估計 L(θ) 也用 nat 表示。

將二者放在一起,交叉熵只不過是使用基於 p_θ 的碼本,傳送來自 p 的樣本所需的平均編碼長度。無論(最優編碼)如何,我們都會支付 H(p) nat 的「基本費用」,我們還會為 p_θ 與 p 的任何偏差支付額外的「精細的」KL(p,p_θ) nat。

我們可以用一種可解釋性很強的方式比較兩個不同模型的交叉熵:假設模型 θ_1 具有平均似然 L(θ_1),模型 θ_2 具有平均似然 L(θ_2)。減去 L(θ1)-L(θ2) 使得熵項 H(p) 抵消,最終得到 KL(p,p_(θ_1))-KL(p,p_(θ_2))。該數是「從 p_(θ_1) 轉換到編碼 p_(θ_2) 時需要支付的減少的懲罰值」。

表達能力,優化和泛化能力是一個良好的生成模型的三個重要特性,而似然則提供了可解釋的度量,用來在我們的模型中調試這些屬性。如果生成模型不能記憶訓練集,則表明在優化過程(會卡住)或表達能力(欠擬合)的方面存在困難。

Cifar10 圖像數據集包含 50,000 個訓練樣本,因此我們知道能完美地記憶數據的模型將為訓練數據集中的每個圖像分配恰好 1/50000 的概率質量,從而得到 log_2(1/50000) 的負交叉熵,或者說為每個圖像分配 15.6 位(這與每個圖像有多少像素無關!)。當然,我們通常不希望我們的生成模型過擬合這種極端情況,但在調試生成模型時,記住這個上限,作為一種檢合理性檢查是很有用的。

比較訓練和測試似然之間的差異可以告訴我們,網路是在生硬地記憶訓練集還是學習泛化到測試集的東西,或者在模型無法捕獲的數據上是否存在語義上有意義的模式。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

ACL 2019提前看:預訓練語言模型的最新探索
晶元技術被「卡脖子?」這是中國對抗封鎖最有效的「武器」

TAG:機器之心 |