-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[2006.11239] Denoising Diffusion Probabilistic Models [paper-reading] #62
Comments
diffusion process で生成モデル!みたいな話をよく聞くようになったが、内容を全然知らないので一つ論文を読んでみることにした。 |
この論文は diffusion probabilistic model https://arxiv.org/abs/1503.03585 の発展である。 非平衡熱力学というとなんか凄そうな話に聞こえるが、実態は画像にステップごとに gaussian noise をのせていくものを拡散過程と呼び、最終的に平行状態(標準正規分布からサンプルした noise )になるところを持って非平衡熱力学から inspire されたと言ってるのみ。それくらいなので別に非平衡熱力学とかを殊更に意識する必要はない。 この拡散過程を forward process と呼び、対応づける形で reverse process を学習することで、表現力と tractability を兼ね備えたモデルが作れるというのが元の論文の主張である。 この仕組みで high quality な画像生成をやったという話はこれまでなかったが、それをやったというのがこの論文の主張(元論文は CIFAR10 とかの結果で今から見るとかなり primitive な感じ)。 この辺の意味するところを読み解いていく。 |
この論文の基本となる diffusion process についてみていく。 reverse process は Markov chain で定義されていて、標準正規分布(これからサンプルしたものを initial の noise とする)から画像を生成していくものとなっている。これは $ t → t-1 $ の transition を gaussian で表現している。 forward process も同様に gaussian で transition する Markov chain で定義している。 どちらも gaussian で定義すると言ってえいやと与えているが、ここで気になるのは reverse process(最終的にはこれで画像生成をする)の表現力が十分なものであるか?ということである。この表現力が十分でないと良い画像生成ができないわけだが、ここでは何も考えずに gaussian で transition するものとして与えているだけである。 この点に関して上で挙げた論文で既に言及されている。 ステップが細かく($ T $ が十分大きく)て $ β_t $ が小さければ、という前提の下に成り立っている議論であることを頭に入れておく必要がある。 |
これを学習するにはよく使う negative log likelihood の variational bound を使えばよい。 ここで一つ注目すべき性質は、forward process q において、解析的に取り扱いがしやすい gaussian 関数を用いているため、任意の timestep $ t $ において $ x_t $ が closed form で sampling できるという点である。 |
導出した $ L $ を以下のように KL divergence で書き直すとより分散を減らすことができる。 これは KL divergence を使って $ p_θ (x_t-1 | x_t) $ と forward process posteriors $ q $ を直接比較することを可能としている。 (当然)これも gaussian となるので、objective function たる $ L $ は全て gaussian 間の比較となり、分散が大きくなるモンテカルロではなくて closed form で Rao-Blackwellized 的に計算できるようになる。 ここまでが diffusion model の基本的な話で、この論文の新しい発見は含まれてない。 |
diffusion model は latent variable model の一クラスとなるが、実装の自由度は大きい。
どういう方針で進めるかを objective function (5) 式の各項を詳細に見ていくことで理解する。 forward process q と L_T termこれは簡単のため $ β_t $ が学習可能ということを無視して constant として手で与える。 |
reverse process p_θ と L_{1:T-1} term$ p_θ (x_t-1 | x_t) = N(x_t-1 ; μ_θ (x_t, t), \sum_θ (x_t, t)) $ におけるパラメタをモデル化する。 まず、分散は学習するものではなく時間依存の定数 $ \sum_θ (x_t, t) = σ^2_t I $ とする。 次に本丸の $ μ_θ (x_t, t) $ を見ていく。 $ C $ は $ θ $ に寄らない定数。 これからもう一歩踏み込んでピクセル値の言葉で表現するために、(4) 式により、$ ε \sim N(0, I) $ としたときに $ x_t(x_t, ε) = \sqrt{ \bar{α} } x_0 + \sqrt{ (1 - \bar{α}) } ε → \sqrt{ \bar{α} } x_0 = x_t(x_t, ε) - \sqrt{ (1 - \bar{α}) } ε $ と書けることに注意して、簡単な計算を経て以下の表式を得る。 今考えているのは $ L_{t-1} $ であり、その際に $ x_t $ は given であることを考えると、結局のところモデルで表現したいのは $ ε_θ $ であり、平均 $ μ_θ $ は以下のような parametrization が取れることになる。 この parametrization を用いると、objective function は次のように ε の言葉で書ける。 これは最初の $ μ $ の言葉で書かれていたときよりももっと直接的に意味がわかりやすい。 |
data scaling, reverse process decoder, and L_0データは {0,1,...,255} のピクセル値を取るとして、それを [-1, 1] に rescale する。 $ D $ はデータ次元。
|
以上で differentiable な objective function が手に入ったが、この論文では以下の簡単化したものが生成画像の質を高めるのにも有効だし実装も楽だと言っている。 $ t $ は 1 から $ T $ までを取るもので uniform distribution からサンプルする。 $ L_T $ に関しては $ β_t $ を const として扱っているので無視して影響なし。 この論文では以降はこの簡単化した objective function を使用する。 |
ということで、学習とサンプリング(画像生成)のアルゴリズムは以下のように書ける。 学習においては任意の time step $ t $ で objective function が計算できるということから、元画像 $ x_0 $ を与え、time step $ t $ を uniform distribution からサンプリングして、その time step $ t $ で objective function を計算してその微分を計算してパラメタを更新する。 サンプリング(画像生成)においては、初期値となる標準正規分布からノイズをサンプルし、reverse process を辿って各 step で書くピクセルから学習した $ ε_θ $ でノイズを取り除いていく。その際に別途 noise $ z $ を加えているが、これは $ t $ が小さくなるにつれ弱くしていって、最後のステップでは 0 となるものである。 ちなみにここの Algorithm 2 は $ ε_θ $ を potential term としたときに Langevin dynamics となるので似ていると言っている。 |
あとは実験で性能を確かめる。
これは最初の方に述べて以下を満たすために設定している。十分なのか?というのは実験結果以外からは読み取れないのでそんなもんなのかな、って思うくらいしかできないが。
reverse process を表現するために PixelCNN++ を踏襲したアーキテクチャを使っている。 画像生成のクオリティを Inception Score などで測った結果が以下。 Inception Score や Fréchet Inception Distance は画像生成でよく使われる指標で、NLL Test (Train) は negative log likelihood をテスト(学習)画像で計算したもの。 Table 2 の方は色々書いてあるが、結論としては ε を予測するもので簡単化した objective function のものが一番良い結果であるということ。
画像生成系は metrics だけ見てもなかなか判断が難しいが、実際生成された画像は以下のような感じ。 |
その他にも信号処理の問題と捉えて rate-distortion の振る舞いもチェックしている。 これで各 time step において rate/distortion をプロットしたものは以下(distortion は root mean squared error で計算)。 distortion は早い段階から減るが、rate が上昇するのは後半になってからである。 これは面白そうな話ではあるが、如何せん他のモデルとの比較は不十分なので diffusion model でない生成モデルの場合と比べてどうなのかは気になるところではある。 |
diffusion model での生成の振る舞いを見るためにいくつかの additional な実験もしている。 まずはどのように denoise されて画像が生成されていくか。 次に $ x_{0, given} $ から始めて diffusion process のある time step $ t $ での $ x_{t, given} $ を取得し、その $ x_t $ で条件づけて $ p_θ (x_0 | x_{t, given}) $ をサンプルしたもの。 最後は画像の補間で、まず元画像として $ x_0, x'_0 $ の 2 つを準備し、それを forwar process で noise にした $ x_t, x'_t $ にする。その foward process で $ \bar{x}_t = (1 - λ) x_t + λ x'_t $ として中間点を取り、それを reverse process で元画像空間での画像にする(論文の $ \bar{x}_t $ の表式は間違っているので注意)。 非常に新しい発見があるというわけではないが、モデルを使って色々面白い振る舞いが観察できるのは画像生成系の楽しいところ。 |
ということで一通り読み終えた。 この論文の主題ではないけど、そもそも diffusion model の基礎が分かってなかったのでそこをある程度計算を追って理解できたのはよかった。 diffusion model はその後の発展でより面白い結果を出しているものがありそうなので、次はその辺を読んでいこう。 |
論文リンク
https://arxiv.org/abs/2006.11239
公開日(yyyy/mm/dd)
2020/06/19
概要
新しいタイプの画像生成モデルである denosing diffusion probabilistic models を提案した論文。
diffusion model は画像にノイズを載せていく forward process とそれを denoise していく reverse process からなり、それらを対応づけながら解析的に扱いやすい形で variational bound を用いた objective function を定式化。gaussian distribution と markov process をベースにしており解析的に綺麗に扱える部分が多く、さらにモデルとしての表現力も高い。
実験的にも既存手法と同等以上の性能を発揮することを示した。
Langevin dynamics や denoising score matching との類似性を示しており、今後より研究が広がっていきそうな題材である(この論文を読んだタイミングではむしろ色々研究が広まった後であり、その辺を理解していくためにまずはこれを読んでみることにしたという次第)。
公式実装: https://github.com/hojonathanho/diffusion
The text was updated successfully, but these errors were encountered: