基於流嘅生成模型(英文: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]
由於使到積分,喺實踐中可能要用到類似神經常微分方程(Neural ODE)[7]之類嘅技巧。
基於流嘅生成模型已應用於各種建模任務,包括: