“馴估學(xué)”(中)

對似然函數(shù)感興趣的讀者,請參閱“馴估學(xué)”(上)

建模圖像,分布若何?

很多方法可以參數(shù)化圖像。例如,3D場景投影(渲染)為2D可以表示圖像?;蛘?,將圖像參數(shù)化為向量化的草圖(如SVG圖形)或拉普拉斯金字塔,甚至是機(jī)械臂的電機(jī)扭矩所途徑的軌跡。簡單起見,研究人員通常將圖像的似然函數(shù),建立在RGB像素上的聯(lián)合分布上。RGB是一種通用數(shù)字格式,已被證明能夠有效地捕獲可見電磁波譜。

每個RGB像素由uint8格式的無符號整數(shù)編碼,有256個可能的值。因此,一幅具有3072個像素的圖像,輔之以256個可能值,組合成256^{3072}個可能的存在狀態(tài)。由于這個數(shù)量是有限的,我們【在理論上】就可以使用一個256^{3072}的骰子來表示一幅圖像。然而這個數(shù)字太大了,無法在內(nèi)存中存儲。哪怕只有3個uint8編碼的像素,聯(lián)合建模又256^{3}= 16777216可能的類別,(對于即使是現(xiàn)代計(jì)算機(jī)來說也)是極為繁重的任務(wù)了。為了使計(jì)算易處理,我們必須將整個圖像的可能性“分解”為條件獨(dú)立的像素分布的組合。一種簡單的因子分解方法如下,使每個像素的概率彼此獨(dú)立:
p(x_1, ..., x_N) = p(x_1)p(x_2)...p(x_N)
這也稱為平均場解碼器(請參閱此注釋,其中名稱來自“均值 - 場”)。每個像素都具有易處理的密度函數(shù)或質(zhì)量函數(shù)。

另一種選擇是令像素似然具有自回歸性,其中每個條件分布具有易處理的密度函數(shù)或質(zhì)量函數(shù)。
p(x_1, ..., x_N) = p(x_1)p(x_2|x_1)...p(x_N|x_1,...,x_{N-1})
我們需要考慮如何為上式中每個條件分布建模。以下是一些常見的做法,以及使用過這些做法的文章:

像素值作為伯努利分布的輸出概率

【注:“輸出概率”或“發(fā)射概率”,在隨機(jī)過程中,與“轉(zhuǎn)移概率”相對?!拜敵龈怕省笔钱?dāng)下時刻每個狀態(tài)的可能性,“轉(zhuǎn)移概率”是對于某狀態(tài)、其轉(zhuǎn)移到其他狀態(tài)的可能性。在本文中,輸出概率指伯努利分布的參數(shù),即一次伯努利實(shí)驗(yàn)正面朝上的可能性?!?/p>

在調(diào)試可能性模型時,先在MNIST、FashionMNIST、NotMNIST數(shù)據(jù)集上實(shí)驗(yàn)是不錯的選擇【, 因?yàn)椤浚?/p>

  • 這些數(shù)據(jù)集可以完全存儲在計(jì)算機(jī)RAM中;
  • 它們不需要大量的網(wǎng)絡(luò)架構(gòu)調(diào)整(你可以只專注于算法方面);
  • 在這些數(shù)據(jù)集上訓(xùn)練較小的生成模型,只需要普通的硬件設(shè)施,例如缺少GPU的筆記本電腦。

選擇伯努利隨機(jī)變量建模像素的條件似然p(x_i)是很常見的做法。 對于像素值只可能為0或1(正面還是反面)的二值化數(shù)據(jù),伯努利分布就夠用了。

MNIST數(shù)據(jù)集中某二值化圖像。二值化數(shù)字雖然能被辨認(rèn),但不適用于自然條件下的圖像

但是,MNIST和幾個類似的數(shù)據(jù)庫,往往被編碼為[0,1]范圍內(nèi)的浮點(diǎn)值。256個整數(shù)被歸一化為位于[0,1]之間的小數(shù)。這就產(chǎn)生了一個數(shù)字表示問題,因?yàn)椴植疾荒茉?到1之間采樣!

對于在非二值化MNIST上訓(xùn)練的論文,我們須將編碼值解釋為相應(yīng)伯努利變量的輸出概率。如果我們看到像素值為0.9,則實(shí)際上表示該像素為1的伯努利似然參數(shù)是0.9,而不是樣本自己的采樣值是0.9。 優(yōu)化目標(biāo)是最小化預(yù)測概率分布的輸出概率(由一個標(biāo)量參數(shù)控制)與數(shù)據(jù)中固有的輸出概率之間的交叉熵。 兩個伯努利的交叉熵用輸出概率可寫成:
H(p, p_\theta) = -\left[(1-p(1)) log (1-p_\theta(1)) + p(1) log p_\theta(1)\right]
根據(jù)本文前半部分的結(jié)論,最小化這種交叉熵會等價于最大化似然!這些玩具圖像數(shù)據(jù)集的平均對數(shù)似然(相對熵)通常以nat為單位報告在論文中。

DRAW論文(Gregor等人2015)將這一想法擴(kuò)展到每通道顏色的建模。 然而,將彩色像素數(shù)據(jù)解釋為輸出概率存在嚴(yán)重的缺點(diǎn)。 【不加任何修正地使用伯努利分布的話,】當(dāng)我們從生成模型中進(jìn)行采樣時,我們會得到雜亂、布滿斑點(diǎn)的圖像,而不是看起來像自然的連貫圖像。 下面這段Python代碼,可以重現(xiàn)這個問題:

import tensorflow_datasets as tfds
import numpy as np
import matplotlib.pyplot as plt
builder = tfds.builder("cifar10")
builder.download_and_prepare()
datasets = builder.as_dataset()
np_datasets = tfds.as_numpy(datasets)
img = next(np_datasets['train'])['image']
sample = np.random.binomial(1,p=img.astype(np.float32)/256)
fig, arr = plt.subplots(1, 2)
arr[0].imshow(img)
arr[1].imshow((sample*255).astype(np.uint8))
左邊為真實(shí)圖像,右邊為伯努利采樣得到的圖像

將像素值解釋為“輸出概率”會產(chǎn)生不合實(shí)際的樣本。這樣做雖然對于手寫數(shù)字和小數(shù)據(jù)庫適用,但是不適用于更大規(guī)模的自然圖像。使用伯努利解碼器的論文通常會顯示輸出概率(例如在重建或插補(bǔ)任務(wù)中)而不是實(shí)際樣本。

像素值作為類別分布

較大的彩色圖像數(shù)據(jù)集(SVHN,CIFAR10,CelebA,ImageNet)是以8位RGB格式編碼的(每個通道是一個uint8整數(shù),其值的范圍為0到255,包括0和255)。

我們可以嘗試在圖像中實(shí)際uint8像素值上對分布進(jìn)行建模,而不是將它們的像素值解釋為伯努利輸出概率。 最簡單的選擇之一是256類的類別分布【離散的隨機(jī)變量,在有限多(K個)可能的類別中,依照各個類別具有的概率,落在其中某個類別上,所形成的分布】。

從分類分布中采樣允許生成模型對圖像進(jìn)行采樣而不是對伯努利輸出概率進(jìn)行采樣。

對于彩色圖像,通常報告各像素以2為底的對數(shù)(比特)為單位的交叉熵,而不是以e為底的對數(shù)。如果測試集的圖像均為3072像素,平均似然的交叉熵(單位nats)為,“每像素比特數(shù)”為。

這個度量受到我們前面討論的啟發(fā),可類比于“平均似然壓縮比”:對于通常使用8位編碼的像素,我們可以使用生成式模型,設(shè)計(jì)一種無損編碼方案(編碼的平均長度恰好等于熵),將整個數(shù)據(jù)集壓縮到平均像素位長為3【=log_2{8}】。

在撰寫本文時,Cifar10數(shù)據(jù)集上訓(xùn)練的稀疏變換器(Sparse Transformers)的最佳生成式模型,測試集上達(dá)到了每像素2.80比特的似然值。作為比較方案,PNG和WebP(廣泛使用的無損圖像壓縮算法)分別在Cifar10圖像上達(dá)到約5.87和4.61比特的水平(如果不計(jì)算像標(biāo)題和CRC校驗(yàn)和那樣的額外字節(jié),PNG格式可低至5.72比特/像素【bpp, bits per pixel】)。

這個結(jié)果令我們歡欣鼓舞,這預(yù)示著利用機(jī)器學(xué)習(xí)我們可以設(shè)計(jì)出比現(xiàn)有壓縮方案更好的、對內(nèi)容有所感知、編碼又最短的方案。高效的無損壓縮可用于改進(jìn)哈希算法,使下載速度更快、改善縮放響應(yīng)。最重要的是,所有這些技術(shù),今天都觸手可得。

像素值作為“隨機(jī)實(shí)數(shù)化”的連續(xù)密度分布

如果我們希望通過優(yōu)化連續(xù)密度模型(例如高斯混合模型),來最大化離散數(shù)據(jù)的對數(shù)似然,可能導(dǎo)致解的“退化”(degeneration)現(xiàn)象,最終得到模型給每個可能的離散值{0,...,255}分配相同的可能性。 即使使用了無限充足的數(shù)據(jù)來訓(xùn)練,該模型也可以通過簡單地“擠壓”尖峰,收窄分布,來實(shí)現(xiàn)任意高的似然。
【從馴估學(xué)(上)得到:
\mathcal{L}(\theta) = \frac{1}{N}\sum_{i=1}^{N}\log p_\theta(x^i) \approx \int p(x) \log p_\theta(x) dx = -H(p, p_\theta)
如果x^i取離散值,則當(dāng)p_\theta(\cdot)在離散值上等于\frac{1}{N},其余各處為0時,\mathcal{L}(\theta)=\frac{1}{N}\sum_{i=1}^{N}log\frac{1}{N}=-N\cdot -\frac{1}{N}log{\frac{1}{N}}=-N\cdot H(p)達(dá)到理論上的最小值。示意圖在下方左圖。】

實(shí)數(shù)化

為了解決這個問題,常見的做法是將噪聲添加到整數(shù)像素值,來對數(shù)據(jù)進(jìn)行“實(shí)數(shù)化”(De-Quantization)【譯者按:通行譯法是“反量化”或“解量化”,但我覺得“實(shí)數(shù)化”更容易理解】。 這個操作寫為,其中來自均勻分布。據(jù)我所知,第一篇在密度建模中使用隨機(jī)實(shí)數(shù)化的文章是Uria等人的工作(2013年),奠基了Dinh等人在2014年Salimans等人在2017的工作,以及建立在這三個工作之上的其他工作,從此隨機(jī)實(shí)數(shù)化成為實(shí)踐中的常見做法。

離散模型在一個個區(qū)間內(nèi)分配概率質(zhì)量(probability mass),而連續(xù)模型則【依據(jù)密度函數(shù)在區(qū)間的每個點(diǎn)上】分配密度。令P(x)的和p(x)分別表示真實(shí)數(shù)據(jù)分布的離散概率質(zhì)量和連續(xù)密度,并令P_\theta(x)的和p_\theta(x)代表模型對二者的估計(jì)。 我們將在下面推導(dǎo)出,依據(jù)實(shí)數(shù)化后的數(shù)據(jù)y,優(yōu)化其連續(xù)似然模型的密度函數(shù)p_\theta(y),可以得到優(yōu)化真實(shí)數(shù)據(jù)的離散概率質(zhì)量模型P(x)的下界。【原文符號寫錯了?!?/p>

將密度函數(shù)在[0,1]區(qū)間上積分,可以得到密度函數(shù)的總質(zhì)量:
P(x) = \int_0^1 p(x+u) du
P_\theta(x) = \int_0^1 p_\theta(x+u) du
我們從真實(shí)數(shù)據(jù)分布中采樣x,采樣噪聲樣本u,得到y=x+u。模型的目標(biāo)是最大化下式中的似然函數(shù):
\mathbb{E}_{y \sim p}\left[ \log p_\theta(y) \right]
根據(jù)期望的定義:
= \int p(y) \log p_\theta(y) dy
展開被積函數(shù):
=\sum_x \int_0^1 p(x+u) \log{p_\theta(x+u)} du
dy=\frac{\partial y}{\partial u}dx+\frac{\partial y}{\partial x}du=udx+xdu,因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=x" alt="x" mathimg="1">只能取離散值,\int \{*** \}udx=0
根據(jù)Cauchy-Schwarz不等式:
\leq \sum_x\{[ \int_0^1 p(x+u)du ] [ \int_0^1 \log p_\theta(x+u)du] \}
代入密度函數(shù)的總質(zhì)量:
= \sum_xP(x)[ \int_0^1 \log p_\theta(x+u)du]
=\mathbb{E}_{x \sim P} [ \int_0^1 \log p_\theta(x+u)du]
根據(jù)Jensen不等式:
\leq \mathbb{E}_{x \sim P} \log \int_0^1 p_\theta(x+u)du
代入密度函數(shù)的總質(zhì)量:
= \mathbb{E}_{x \sim P} \log P_\theta(x)
最近的一篇論文Flow ++中提出,使用學(xué)習(xí)的實(shí)數(shù)化隨機(jī)變量,可以改善變分上界的緊致性。直觀理解,單個重要性采樣q(u|x)的導(dǎo)致的噪聲方差,將小于均勻采樣u\sim U(0,1)在積分\int_0^1 p_\theta(x+u)du上導(dǎo)致的噪聲方差【,而較低的噪聲方差將是上限緊致的關(guān)鍵因素】。由于不同架構(gòu)選擇了迥異的實(shí)數(shù)化方案,所以這一系列工作之間不能以控制變量的方式來公平比較。
【變分法形式化大致如下:
\mathbb{E}_{x \sim P} \log P_\theta(x)
=\mathbb{E}_{x \sim P} [ \log\int_0^1 q(u|x)\frac{p_\theta(x+u)}{q(u|x)}du]
\geq \mathbb{E}_{x \sim P} [ \int_0^1 q(u|x)\log\frac{p_\theta(x+u)}{q(u|x)}du]
=\mathbb{E}_{x \sim P}\mathbb{E}_{u \sim q(\cdot |x)} \log\frac{p_\theta(x+u)}{q(u|x)}

【為了公平】比較Flow ++和均勻采樣的實(shí)數(shù)化框架的生成模型,一種方法是允許研究人員在訓(xùn)練時使用(他們喜歡的)任何一種變分下界,但是在模型評估時將似然評估的值,統(tǒng)一換算成多個樣本的緊密下界。直觀理解,當(dāng)整合了更多樣本后,我們的估計(jì)模型P_\theta(X)可以更好地逼近相應(yīng)離散模型的真實(shí)對數(shù)似然。

例如,我們可以報告從固定的U(0,1)采樣得到的實(shí)數(shù)化分布的多樣本下界,就像VAE文獻(xiàn)中通常所做的那樣,給出的多樣本IWAE下界。有關(guān)VAE和IWAE變分下界的討論超出了本教程的范圍,我會在將來單獨(dú)介紹。

【關(guān)于圖像的討論還未結(jié)束,另外對標(biāo)準(zhǔn)化流也將在“馴估學(xué)”(下)中繼續(xù)。請接著讀下去,加油!】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 按照用途分類出以下統(tǒng)計(jì)函數(shù): AVEDEV 用途:返回一組數(shù)據(jù)與其平均值的絕對偏差的平均值,該函數(shù)可以評測數(shù)據(jù)(例...
    四方院祭司閱讀 3,075評論 0 3
  • 隨機(jī)變量是根據(jù)偶然性取值的變量。我們在談到隨機(jī)變量時,通常是以“概率分布”的形式來描述他們。也即:隨機(jī)變量落在每一...
    小貍投資閱讀 5,964評論 1 7
  • 樸素貝葉斯 在機(jī)器學(xué)習(xí)中,樸素貝葉斯分類器是一系列以假設(shè)特征之間強(qiáng)(樸素)獨(dú)立下運(yùn)用貝葉斯定理為基礎(chǔ)的簡單概率分類...
    七八音閱讀 21,302評論 0 21
  • 這幾天在我家發(fā)生了一個小小的變化,我兒子突然的愛洗臉和刷牙了,以前每天吵著嚷著都不管用,現(xiàn)在變得主動了。還有每天起...
    冰山雪蓮_3282閱讀 286評論 0 3
  • 先上前幾篇的地址第一篇第二篇第三篇接著上一篇直接走吧,在CacheInterceptor執(zhí)行之后 下一個執(zhí)行的攔截...
    范錦浩閱讀 337評論 0 0

友情鏈接更多精彩內(nèi)容