基於流嘅生成模型(英文:Flow-based generative model)係機器學習當中用嘅一種生成模型,種模型旨在顯式噉建模出一個概率分佈,當中用到歸一化流(normalizing flow)[1]呢種方法、一種憑藉變量變化公式(change-of-variable formula)捉簡單分佈轉換為複雜分佈嘅統計方法。
直接建模概似性(英文:likelihood)會有啲優勢。譬如,負對數概似率可以直接計算得出而且可以作爲損失函數來最細化。另外,仲可以透過採返初始分佈嘅樣本並應用流變換嚟生成新樣本。
相比之下,好多生成建模方法作爲替代嘅(例如變分自動編碼器(VAE)同埋生成對抗網絡)都冇明確表示到個概似函數。
設
係具有分佈
嘅隨機變量(可能係多變量)。
對於序數
,設
係一條隨機變量序列、啲
係從
遍歷轉換而嚟嘅,噉樣一趟「遍歷」亦即係所謂嘅「流」[2]。其中啲函數
要係可逆嘅,即存在有反函數
。個最終輸出
就可以幫目標分佈建模。
個對數概似係:

為唨有效噉計得出呢個對數概似,啲函數
要滿足:
1.容易求逆;
2.容易計出Jacobi行列式。
喺實踐當中,啲函數
係用深度神經網絡建模嘅,並透過訓練嚟幫目標分佈啲數據樣本嚟最細化佢個負對數概似,亦即係最佳化個損失函數。啲架構通常係設計成僅衹需要到神經網絡個前向傳遞功能(forward pass),就計得出個逆同埋啲Jacobi行列式。噉樣嘅架構包括有示例似NICE[3]、RealNVP[4]同埋Glow[5]。
考慮有
同
,根據變量變化公式:

呢條式表示變化前後嘅總概率保持係1。
對於變化前後嘅一細橛範圍,保持總概率對應(方向可以掉轉,所以加絕對值)有:

留意有
,亦即係
,攞一般意義下嘅變量變化公式嚟表示
個分佈:

其中
係
嘅Jacobi矩陣(經常攞嚟表示向量導數)個行列式。
通常嚟講,條式適用於任何
同埋
,所以可以透過歸納法一路從目標分佈推到某個理想分佈(好多時係高斯分佈):

兩頭取對數得到編碼器嘅對數概似:

當中左右都跟目標樣本
有關,所以從目標樣本當中取樣可以訓練出一串聯
出來,個串聯表示一串變換,捉啲目標樣本
逆推出最啱理想分佈
嘅啲
嘅。
對於變量變化公式應用反函數定理掉轉個行列式嘅分子分母(由
好易睇得出):

因
(
係一個可逆矩陣),有:

所以原本嘅分佈式又可以表示成:

注意右便唔會再同左便嘅輸出相關,所以可以攞嚟生成。
同樣經過遞歸同埋對數化可以得到生成模型嘅對數概似:

其中
可以由
取逆好容易噉得到,表示一串聯變換,可以捉理想分佈
底下啲樣本
轉換成目標分佈。
比起按函數組合構造流,另一種方法即連續歸一化流(continuous normalizing flow,CNF)係將個流就公式化成一種連續時間動態(continuous-time dynamic)[6]。 設
係具有分佈
嘅潛在變量。映射呢個潛在變量到數據空間可以用返呢種流函數:

其中
係一個任意函數,可以用神經網絡之類幫佢建模。
個反函數就自然係:[6]

嘅對數概似即為:[6]
![{\displaystyle \log(p(x))=\log(p(z_{0}))-\int _{0}^{t}{\text{Tr}}\left[{\frac {\partial f}{\partial z_{t}}}dt\right]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a0e0f7d723db6c1821efadc5387b44f43cf4a7e7)
由於使到積分,喺實踐中可能要用到類似神經常微分方程(Neural ODE)[7]之類嘅技巧。
基於流嘅生成模型已應用於各種建模任務,包括: