官术网_书友最值得收藏!

1.2.3 流模型

流模型是一種想法比較直接但實際不容易構造的生成模型,它通過可逆的非線性變換等技巧使得似然函數可以被精確計算出來。相較于FVBN,流模型添加了隱變量的概念,并通過某種確定性的映射關系建立了隱變量到觀察變量之間的聯系。

我們首先介紹流模型的基本思想。對于一個分布比較簡單(例如高斯分布)的隱變量z,其概率密度分布記為pzz),這時若存在一個連續、可微、可逆的非線性變換gz),將簡單的隱變量z的分布轉換成關于樣本x的一個復雜分布,我們將非線性變換gz)的逆變換記為fx),即有x=gz)和z=fx),則可得到樣本x的準確的概率密度函數pxx):

注意,非線性變換g(z)會引起空間的變形,即px(x)≠pz(f(x)),但有pz(z)dz=px(x)dx。對于可逆矩陣有det(A-1)=det(A)-1,故px(x)也可寫為:

若上述模型構建成功,則生成樣本時只需從簡單分布pz(z)中隨機采樣然后使用非線性變換將其變換為x=g(z)即可。

為了使用極大似然估計法訓練上述生成模型,我們必須計算樣本的概率密度函數pxx)。分析上式,要計算概率密度函數pxx),就需要計算pzz)和雅可比矩陣的行列式絕對值。pzz)理論上可以具備任意的形式,但是通常設計為簡單的分布,例如高斯分布N(0,I),這樣便于進行計算和采樣。我們將pzz)為標準高斯分布的流模型稱為標準流模型(normalizing flow model);對于雅可比矩陣,要將fx)設計為某種特殊的形式,使得雅可比矩陣的行列式易于計算。另外,變換的可逆性要求樣本x和隱變量z具有相同的維度。綜上,我們需要將上述模型精心設計成一種易于處理且靈活的雙射模型,使其逆變換fx)存在,且對應的雅可比矩陣的行列式可高效計算。

在實際的流模型中,非線性映射f(x)是由多個映射函數f1,f2,…,fk組合而成的,即z=fk°…°f1x)和x=z),一個變量連續流過多個變換最終“形成”另一個變量,這就是流模型中流的意義。相應地,雅可比矩陣的行列式可分解為:

此處,我們介紹兩種非常基本的流:仿射流(affine flow)和元素流(element-wise flow)。在仿射流中,非線性映射fx)=A-1x-b)將樣本x映射到標準正態分布,其中可學習參數A為非奇異方陣,b為偏置向量,采樣過程為先采樣獲得z,再根據x=Az+b獲得樣本。仿射流模型中的雅可比矩陣為A-1,即行列式的計算難度源于矩陣的維度數目是多少。在元素流中,映射是逐元素進行的,即fx1,…,xn)=(fx1),…,fxn)),則雅可比矩陣為對角矩陣:

其行列式也容易計算,即:

為了使讀者對流模型有更深刻的理解,我們對NICE模型4進行詳細的介紹。NICE模型的逆變換f(x)由多個加性耦合層和一個尺度變換層構成。在每個加性耦合層中,首先將n維樣本x分解為兩部分,x1x2,例如可以將x的第1,3,5,…個元素劃入x1部分,將第2,4,6,…個元素劃入x2部分,每個部分的維度均為n/2;也可以將x的第2,4,6,…個元素劃入x1部分,將第1,3,5,…個元素劃入x2部分;還可以使用其他劃分方式。然后對兩部分進行變換:

其中m()為任意函數,注意這里要保證m()的輸出結果維度與x2一致,NICE模型使用多層全連接網絡和ReLU激活函數來構建m()。容易發現,使用加性耦合層作為逆變換f(x)的一部分,它是可逆的,并且雅可比矩陣的行列式也是容易計算的。當已知h1h2時,可得其逆變換:

其雅可比矩陣為:

根據三角矩陣的性質,其行列式為對角元素的乘積,故加性耦合層雅可比矩陣的行列式絕對值為1。當將多個加性耦合層串聯時,NICE模型結構如圖1-10所示。由于每層的逆變換是容易計算的,因此串聯后的逆變換仍然是容易計算的。此時的雅可比矩陣為:

圖1-10 NICE模型結構

根據矩陣行列式的性質,有:

需要說明的是,必須注意在不同的加性耦合層使用不同的劃分策略,使得樣本不同維度的信息充分混淆。在尺度變換層,定義了一個包含n個非負參數的向量s=[s1,s2,…,sn],將加性耦合層的輸出結果h(l)s逐元素相乘可得到對應的隱變量z。這里s用于控制每個維度的特征變換的尺度,可以表征維度的重要性,對應維度的數值越大,表明這一維度的重要性越低。顯然,尺度變換層的逆變換只需逐元素乘1/s,因此生成樣本時隱變量需要先經過尺度變換層,需要逐元素乘1/s。尺度變換層作為一種元素流,其雅可比矩陣為:

由此,其雅可比矩陣的行列式為s1s2sn。現在,我們就構造了可逆的、雅可比矩陣的行列式絕對值易于計算的逆變換f(x)。對于隱變量z,NICE模型假設其n個維度彼此獨立,即

若選擇z為高斯分布,則樣本x的似然函數為:

若選擇z為logistic分布,即:

則樣本x的似然函數為:

此時,我們可以使用極大似然法對NICE模型進行訓練,訓練完成后也得到了生成模型g(z)。若z為高斯分布,則直接從高斯分布中采樣可得到z;若選擇z為logistic分布,則可先在0-1之間的均勻分布中采樣得到ε,然后使用變換z=t(ε)得到隱變量。根據兩個隨機變量的映射關系

則有t(ε)=logε-log(1)。對隱變量z進行非線性變換g(z),即經過尺度變換層的逆變換、多個加性耦合層的逆變換可得到生成樣本x

NICE模型的核心代碼如下所示:

Real NVP5模型和Glow6模型在NICE模型的基礎上進行了改進,例如在耦合層中引入了卷積操作,添加了多尺度結構等,進一步提升了生成樣本的質量。此外,在自回歸模型中引入非線性映射可構建為自回歸流模型,主要包括掩膜自回歸流(Masked Autoregressive Flow,MAF)、以及逆自回歸流(Inverse Autoregressive Flow,IAF)兩大類,它們由于設計方法存在較大差異,故在計算似然函數的速度上分別具有不同的優勢。總體而言,流模型通過精巧的設計使得樣本的概率密度函數可以精確計算,具有非常優雅的理論支撐,但不足之處在于運算過程復雜,并且訓練時間過長,實踐效果與GAN等模型仍有差距。

主站蜘蛛池模板: 鄂州市| 乌鲁木齐县| 湄潭县| 万盛区| 白朗县| 岳普湖县| 阜新市| 招远市| 苗栗县| 宕昌县| 类乌齐县| 彭阳县| 博爱县| 分宜县| 区。| 绥阳县| 美姑县| 泰顺县| 尼玛县| 安庆市| 文登市| 新安县| 色达县| 高陵县| 灵石县| 独山县| 新巴尔虎左旗| 广南县| 吉木乃县| 潢川县| 玉屏| 黔西| 涿鹿县| 长武县| 峨边| 监利县| 九龙城区| 慈利县| 新巴尔虎右旗| 海原县| 博爱县|