フローベース生成モデル

提供: testwiki
ナビゲーションに移動 検索に移動

テンプレート:Machine learning barフローベース生成モデル(フローベースせいせいモデル英:Flow-based generative model)は、機械学習で使われる生成モデルの一つである。確率分布の変数変換則を用いた手法である正規化流 (テンプレート:Lang-en-short)[1]を活用し確率分布を明示的にモデル化することで、単純な確率分布を複雑な確率分布に変換する。

尤度関数を直接的にモデリングすることには多くの利点がある。例えば、負の対数尤度を損失関数として直接計算して最小化することができる。また、変換前の分布からサンプリングし、フローによる変換を適用することにより、複雑な分布に基づいた新しいサンプルを生成することができる。

これとは対照的に、変分オートエンコーダ(VAE)生成的敵対的ネットワークなどの多くの代替生成モデリング手法は、尤度関数を明示的に表現しない。

方法

z0を確率分布 p0(z0) に従う(一変数または多変数の)確率変数であるとする。

i=1,...,K について、zi=fi(zi1)z0 から変換された確率変数の列であるとする。ここで関数 f1,...,fKは逆変換可能である必要がある:すなわち、逆関数 fi1が存在する。最終的な出力zKはモデル化したい分布を表す。

ここで、zKの対数尤度は以下の様に表される(対数尤度の導出参照):

logpK(zK)=logp0(z0)i=1Klog|detdfi(zi1)dzi1|

対数尤度を効率的に計算するためには、関数f1,...,fKは次の性質を満たす必要がある:

  1. 逆変換が容易である。
  2. ヤコビ行列式を計算しやすい。

実際には、関数f1,...,fKディープニューラルネットワークを使用してモデル化され、対象となる分布からのデータサンプルの負の対数尤度を最小化するように訓練される。これらの手法は通常、逆行列式とヤコビ行列式の両方の計算でニューラルネットワークの順方向演算のみが必要になるように設計される。このような手法の例として、NICE[2]、 RealNVP[3] 、およびGlow[4]がある。

対数尤度の導出

変数 z1及び z0 について、z0=f11(z1) であるとする。

確率密度の変数変換公式より、 z1の従う確率分布は以下のように書ける:

p1(z1)=p0(z0)|detdf11(z1)dz1|

ここで、detdf11(z1)dz1f11ヤコビ行列行列式である。

逆関数定理により

p1(z1)=p0(z0)|det(df1(z0)dz0)1|

恒等式 det(A1)=det(A)1 により(A正則行列)、次が導ける:

p1(z1)=p0(z0)|detdf1(z0)dz0|1

したがって、対数尤度は次のようになる。

logp1(z1)=logp0(z0)log|detdf1(z0)dz0|

一般に、上記の式は全ての zi及び zi1 に適用される 。logpi(zi)logpi1(zi1) から非再帰的な項を引いたものに等しいので、数学的帰納法より以下が示せる。

logpK(zK)=logp0(z0)i=1Klog|detdfi(zi1)dzi1|

派生

Continuous Normalizing Flow(CNF)

関数の合成によってフローを構築する代わりに、別のアプローチとして、フローを連続時間ダイナミクスとして定式化することができる[5]z0 を分布 p(z0) を持つ潜在変数であるとする。以下のフロー関数を使用して、この潜在変数をデータ空間に写す。

x=F(z0)=zT=z0+0tf(zt,t)dt

ここで f は任意の関数であり、ニューラルネットワークなどでモデル化できるとする。

その場合、逆関数は次のようになる[5]

z0=F1(x)=zT+t0f(zt,t)dt

このとき x の対数尤度は以下で与えられる[5]

log(p(x))=log(p(z0))0tTr[fztdt]

実用上では Neural ODE[6] などの数値積分手法が必要になる場合がある。

応用

フローベース生成モデルは、次のようなさまざまなモデリングタスクに適用されている。

  • 音声合成[7]
  • 画像生成[4]
  • 分子グラフ生成[8]
  • 点群モデリング[9]
  • 動画生成[10]

参考文献

テンプレート:Reflist 

外部リンク