Normalization Flow (標準化流) 總結
最近系統的看了一下Normalization flow的相關文章,在這裡做一下總結。
0。 Preliminary
從Eric Jang的blog裡看到了一個很有啟發的結論,“Change of variables, change of volume”,記在最前面。
讓
服從均勻分佈
,讓變數
,即Y是X的仿射變換,如圖所示:
綠色正方形和藍色長方形分別表示兩個分佈
和
的機率分佈,由於任何一個機率分佈的積分均為1,所以他們的面積都是1。也就是說,當
水平被拉長兩倍後,豎直方向上也會相應的被壓縮成原來的一半。
我們用微分的角度來分析。給
一個變化量
之後,
的變化量記為
。由於要保證二者的變化量相等,則有:
進一步地,轉換後的機率分佈
,取對數之後得到:
接下來考慮多變數的情況。先考慮兩個變數的情況,給定一個邊長為1的小方塊,給它乘以矩陣
之後,就變成了一個平行四邊形,如圖所示:
此時,平行四邊形的大小變為
,正是矩陣
的行列式。在高維情況時依舊成立,即線性變換之後的體積等於轉換矩陣的行列式。
當變換是非線性時,每個點對應的體積變化是
,這裡
代表變換函式逆函式的雅可比矩陣,也就是
的高維形式。
作為總結,
也就是說,行列式可以被認為是變換
的區域性線性體積變化率。
1。 Normalization Flow
接下來我會主要follow[1]這篇文章來介紹一下Normalization flow(標準化流)的概念。
在variational inference中,我們通常是在最佳化所謂的evidence lower bound(ELBO),即:
在(3)式中,讓第一項為0的條件就是我們找到了一個與資料的後驗分佈一樣的分佈
,但一般的高斯分佈沒有辦法擬合足夠複雜的後驗分佈。因此,normalization flow應運而生。NF用一系列的可逆對映將原始分佈轉換成新的分佈,透過最佳化這一系列分佈,即可實現將簡單的高斯分佈轉換為複雜的真實後驗分佈的目的。
具體的,給定一個可逆對映
,用它將隨機變數
變換為新的變數
後,新變數的分佈為:
第二項即是上一節中所講的逆函式的雅克比矩陣。接著,為了構建足夠複雜的分佈,我們可以用多個類似的可逆對映,對映套對映:
用這樣的方式,當計算轉換後的分佈
的pdf時,不用顯式地計算
,而是透過初始分佈
的pdf以及對映的雅克比矩陣即可計算。而一般函式的雅克比矩陣的計算複雜度達到了
,在NF的應用中顯然不可行。因此,NF需要找到雅克比矩陣可以被高效運算的可逆對映函式。
在原文中,作者給出了兩種對映函式的選擇,分別是:
1)。 Planar Flow
其中,
是要學習的引數,
是element-wise的非線性變換。該對映的雅克比可以在O(D)的時間複雜度內計算:
2)。 Radial Flow
Planar flow和radial flow分別是在平面空間和球形空間中對原分佈進行變換。下圖形象的表示了NF的不同長度(也可以叫層數)K與最終分佈的關係。
這兩種簡單的對映函式只適用於低維的情況,為了處理高維的依賴,Autoregressive Flows(自迴歸流)是一種合適的選擇。
2。 Autoregressive Flows
關於自迴歸流,有三篇比較經典的文章,包括Real-NVP[2],MAF[3]和IAF[4]。這裡先講Real-NVP和IAF,MAF和IAF想法是映象的,就不贅述了。
需要說明的是,所有自迴歸流的模型都是建立在這樣的一條理論基礎上的:
三角矩陣的行列式是其對角元素的乘積。
形式上,第
維的變數
的生成只依賴於之前生成的變數
,即:
2.1 Real-NVP
這篇文章引入了affine coupling layer(仿射耦合層)的概念。給定一個
維的輸入
,
,則該層的輸出
如下計算:
和
分別對應上面的
和
。也就是說,Real-NVP將輸入的一部分維度保持不變,而另一部分維度進行變換。這樣得到的對映函式的雅克比矩陣為:
它的行列式可以被簡單的計算:
。並且由於計算行列式的過程不依賴於
或
的行列式,所以可以選取任意複雜的函式作為
和
。
此外,這樣的對映函式還有一個性質,即它的逆對映的計算複雜度和正向的計算複雜度相等:
也就是說,sampling和inference的時間複雜度相等,而且由於逆對映的計算也不依賴於
和
的逆,所以其函式的選擇可以任意複雜。
可以看出來,一層affine coupling layer只能變換輸入的部分維度,要想實現對整體的變換,可以將多層affine coupling layer堆疊起來。同時,用一個二元的mask
,即可高效的實現該層的計算:
但在實驗中,Real-NVP的效果並沒有IAF和MAF好。最近在語音合成這個任務中,有兩篇文章[5,6]應用了Real-NVP,取得了不錯的效果。
2.2 IAF
Autoregressive Flow的sampling過程如下:首先隨機sample一個噪聲
,其對應的變數
,對於
,
。顯然這個過程是沒有辦法並行的,sample時速度很慢。IAF可以看做是上式的reparametrisation,即:
其中,
。由於上式中
的計算不依賴於之前生成的
,因此可以被並行的計算:
。也就是說,在sampling的時候,IAF可以被高效的並行。但是在inference的時候,想要得到
,還是需要根據
依次計算,所以在訓練過程中,IAF是比較慢的。
相反的,MAF在訓練時快,sample時慢。Parallel-Wavenet實現了兩者的結合,用MAF作為teacher model,負責訓練時提供分佈的指導資訊;而用IAF作為student model,負責最終的sample。這個基於knowledge distillation的方法在語音合成上取得了很好的效果,同時也保證了生成語音的速度。
2.3 WaveGlow and FloWavenet
這裡再介紹一下Normalization Flow在語音合成上比較新的工作。WaveGlow[8]和FlowWavenet[9]的模型基本相同,也是同時放出來的,這裡按照WaveGlow的模型進行介紹。流程圖如下:
WaveGlow引入了Real-NVP中的affine coupling layer,每一次對輸入向量的一半維度進行變換,另一半保持不變。上圖右側的轉換過程可以表示為:
其中,
和
是將
等分的結果,FlowWavenet中是按照索引的奇偶來分的。
是任意的變換函式,兩篇文章均用的non-causal Wavenet,也可以說是non-autoregressive的wavenet。該變換的雅克比矩陣的行列式為:
前面提到過,Real-NVP每一層只能變換一部分的輸入。為了實現完整的變換,WaveGlow引入了與Glow[10]中相似的1x1 Invertible Convolution,因為還沒看過Glow,所以先留作一個坑。FlowWavenet中,作者則簡單的交換了輸入向量奇偶索引上的元素來實現這一目的。此外,兩個模型還有一些微小的差異,但motivation和idea都是一樣的。
3。 Conclusion
Variational inference中對後驗機率的估計一直是機器學習中很火的命題。Normalization Flow提供了一條可以efficient且flexible的擬合任意分佈的解決方案,即用一系列可最佳化的對映函式將簡單分佈對映為任意的複雜分佈。近幾年NF在語音生成等任務上取得了SOTA的效果,其在其他任務上的可擴充套件性值得期待。此外,理論上,Real-NVP和IAF都屬於finite flows,在[1]中作者還提出了infinitesimal flows,包括Langevin Flow和Hamiltonian Flow,由於時間關係還沒仔細調研,留待日後學習。
此外,本文的形成還參考了Eric Jang的兩篇Bl og及其中文版,特此致謝。
Reference
[1] Variational Inference with Normalizing Flows
[2] Density estimation using Real NVP
[3] Masked Autoregressive Flow for Density Estimation
[4] Improving Variational Inference with Inverse Autoregressive Flow
[5] WaveGlow: A Flow-based Generative Network for Speech Synthesis
[6] FloWaveNet : A Generative Flow for Raw Audio
[7] Parallel-Wavenet
[8] WaveGlow
[9] FlowWavenet
[10] Glow: Generative Flow with Invertible 1x1 Convolutions
上一篇:我把你當朋友,你卻想上我?
下一篇:設計模式(九):組合模式