フローベース生成モデルのソースを表示
←
フローベース生成モデル
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{Machine learning bar}}'''フローベース生成モデル'''(フローベースせいせいモデル'''、'''英:Flow-based generative model)は、[[機械学習]]で使われる[[生成モデル]]の一つである。[[確率分布]]の変数変換則を用いた手法である'''正規化流''' ({{lang-en-short|normalizing flow}})<ref>{{Cite arXiv|arxiv=1505.05770|class=stat.ML|last=Danilo Jimenez Rezende|last2=Mohamed|first2=Shakir|title=Variational Inference with Normalizing Flows}}</ref>'''を活用し確率分布を明示的にモデル化することで、単純な確率分布を複雑な確率分布に変換する。 尤度関数を直接的にモデリングすることには多くの利点がある。例えば、負の対数尤度を損失関数として直接計算して最小化することができる。また、変換前の分布からサンプリングし、フローによる変換を適用することにより、複雑な分布に基づいた新しいサンプルを生成することができる。 これとは対照的に、[[オートエンコーダ|変分オートエンコーダ(VAE)]]や[[敵対的生成ネットワーク|生成的敵対的ネットワーク]]などの多くの代替生成モデリング手法は、尤度関数を明示的に表現しない。 == 方法 == <math>z_0</math>を確率分布 <math>p_0(z_0)</math> に従う(一変数または多変数の)[[確率変数]]であるとする。 <math>i = 1, ..., K</math> について、<math>z_i = f_i(z_{i-1})</math>を <math>z_0</math> から変換された確率変数の列であるとする。ここで関数 <math>f_1, ..., f_K</math>は逆変換可能である必要がある:すなわち、[[逆写像|逆関数]] <math>f^{-1}_i</math>が存在する。最終的な出力<math>z_K</math>はモデル化したい分布を表す。 ここで、<math>z_K</math>の対数尤度は以下の様に表される(''対数尤度の導出''参照): : <math>\log p_K(z_K) = \log p_0(z_0) - \sum_{i=1}^{K} \log \left|\det \frac{df_i(z_{i-1})}{dz_{i-1}}\right|</math> 対数尤度を効率的に計算するためには、関数<math>f_1, ..., f_K</math>は次の性質を満たす必要がある: # 逆変換が容易である。 # ヤコビ行列式を計算しやすい。 実際には、関数<math>f_1, ..., f_K</math>は[[ディープラーニング|ディープニューラルネットワーク]]を使用してモデル化され、対象となる分布からのデータサンプルの負の対数尤度を最小化するように訓練される。これらの手法は通常、逆行列式とヤコビ行列式の両方の計算でニューラルネットワークの順方向演算のみが必要になるように設計される。このような手法の例として、NICE<ref>{{Cite arXiv|arxiv=1410.8516|class=cs.LG|last=Dinh|first=Laurent|last2=Krueger|first2=David|title=NICE: Non-linear Independent Components Estimation}}</ref>、 RealNVP<ref>{{Cite arXiv|arxiv=1605.08803|class=cs.LG|last=Dinh|first=Laurent|last2=Sohl-Dickstein|first2=Jascha|title=Density estimation using Real NVP}}</ref> 、およびGlow<ref name="glow">{{Cite arXiv|arxiv=1807.03039|class=stat.ML|last=Kingma|first=Diederik P.|last2=Dhariwal|first2=Prafulla|title=Glow: Generative Flow with Invertible 1x1 Convolutions}}</ref>がある。 === 対数尤度の導出 === 変数 <math>z_1</math>及び <math>z_0</math> について、<math>z_0 = f^{-1}_1(z_1)</math> であるとする。 [[確率密度関数|確率密度の変数変換公式]]より、 <math>z_1</math>の従う確率分布は以下のように書ける: : <math>p_1(z_1) = p_0(z_0)\left|\det \frac{df_1^{-1}(z_1)}{dz_1}\right|</math> ここで、<math>\det \frac{df_1^{-1}(z_1)}{dz_1}</math>は <math>f^{-1}_1</math> の[[ヤコビ行列]]の[[行列式]]である。 [[逆函数定理|逆関数定理]]により : <math>p_1(z_1) = p_0(z_0)\left|\det \left(\frac{df_1(z_0)}{dz_0}\right)^{-1}\right|</math> 恒等式 <math>\det(A^{-1}) = \det(A)^{-1}</math> により(<math>A</math>は[[正則行列]])、次が導ける: : <math>p_1(z_1) = p_0(z_0)\left|\det \frac{df_1(z_0)}{dz_0}\right|^{-1}</math> したがって、対数尤度は次のようになる。 : <math>\log p_1(z_1) = \log p_0(z_0) - \log \left|\det \frac{df_1(z_0)}{dz_0}\right|</math> 一般に、上記の式は全ての <math>z_i</math>及び <math>z_{i-1}</math> に適用される 。<math>\log p_i(z_i)</math> は <math>\log p_{i-1}(z_{i-1})</math> から非再帰的な項を引いたものに等しいので、[[数学的帰納法]]より以下が示せる。 : <math>\log p_K(z_K) = \log p_0(z_0) - \sum_{i=1}^{K} \log \left|\det \frac{df_i(z_{i-1})}{dz_{i-1}}\right|</math> == 派生 == === Continuous Normalizing Flow(CNF) === 関数の合成によってフローを構築する代わりに、別のアプローチとして、フローを連続時間ダイナミクスとして定式化することができる<ref name="ffjord">{{Cite arXiv|arxiv=1810.01367|class=cs.LG|last=Grathwohl|first=Will|last2=Chen|first2=Ricky T. Q.|title=FFJORD: Free-form Continuous Dynamics for Scalable Reversible Generative Models}}</ref>。<math>z_0</math> を分布 <math>p(z_0)</math> を持つ潜在変数であるとする。以下のフロー関数を使用して、この潜在変数をデータ空間に写す。 : <math>x = F(z_0) = z_T = z_0 + \int_0^t f(z_t, t) dt</math> ここで <math>f</math> は任意の関数であり、ニューラルネットワークなどでモデル化できるとする。 その場合、逆関数は次のようになる<ref name="ffjord">{{Cite arXiv|arxiv=1810.01367|class=cs.LG|last=Grathwohl|first=Will|last2=Chen|first2=Ricky T. Q.|title=FFJORD: Free-form Continuous Dynamics for Scalable Reversible Generative Models}}</ref>。 : <math>z_0 = F^{-1}(x) = z_T + \int_t^0 -f(z_t, t) dt</math> このとき <math>x</math> の対数尤度は以下で与えられる<ref name="ffjord">{{Cite arXiv|arxiv=1810.01367|class=cs.LG|last=Grathwohl|first=Will|last2=Chen|first2=Ricky T. Q.|title=FFJORD: Free-form Continuous Dynamics for Scalable Reversible Generative Models}}</ref>: : <math>\log(p(x)) = \log(p(z_0)) - \int_0^t \text{Tr}\left[\frac{\partial f}{\partial z_t} dt\right]</math> 実用上では Neural ODE<ref>{{Cite arXiv|arxiv=1806.07366|class=cs.LG|last=Chen|first=Ricky T. Q.|last2=Rubanova|first2=Yulia|title=Neural Ordinary Differential Equations}}</ref> などの数値積分手法が必要になる場合がある。 == 応用 == フローベース生成モデルは、次のようなさまざまなモデリングタスクに適用されている。 * 音声合成<ref>{{Cite arXiv|arxiv=1912.01219|class=cs.SD|last=Ping|first=Wei|last2=Peng|first2=Kainan|title=WaveFlow: A Compact Flow-based Model for Raw Audio}}</ref> * 画像生成<ref name="glow">{{Cite arXiv|arxiv=1807.03039|class=stat.ML|last=Kingma|first=Diederik P.|last2=Dhariwal|first2=Prafulla|title=Glow: Generative Flow with Invertible 1x1 Convolutions}}</ref> * 分子グラフ生成<ref>{{Cite arXiv|arxiv=2001.09382|class=cs.LG|last=Shi|first=Chence|last2=Xu|first2=Minkai|title=GraphAF: A Flow-based Autoregressive Model for Molecular Graph Generation}}</ref> * 点群モデリング<ref>{{Cite arXiv|arxiv=1906.12320|class=cs.CV|last=Yang|first=Guandao|last2=Huang|first2=Xun|title=PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows}}</ref> * 動画生成<ref>{{Cite arXiv|arxiv=1903.01434|class=cs.CV|last=Kumar|first=Manoj|last2=Babaeizadeh|first2=Mohammad|title=VideoFlow: A Conditional Flow-Based Model for Stochastic Video Generation}}</ref> == 参考文献 == {{reflist}} == 外部リンク == * [https://lilianweng.github.io/lil-log/2018/10/13/flow-based-deep-generative-models.html Flow-based Deep Generative Models] * [https://deepgenerativemodels.github.io/notes/flow/ Normalizing flow models] {{DEFAULTSORT:ふろおへえすせいせいもてる}} [[Category:確率モデル]] [[Category:統計モデル]] [[Category:機械学習]]
このページで使用されているテンプレート:
テンプレート:Cite arXiv
(
ソースを閲覧
)
テンプレート:Lang-en-short
(
ソースを閲覧
)
テンプレート:Machine learning bar
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
フローベース生成モデル
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報