拡散モデルのソースを表示
←
拡散モデル
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
機械学習分野における'''拡散モデル'''(かくさんモデル、英:diffusion model)は[[潜在変数]]モデルの一種で、'''拡散確率モデル'''(かくさんかくりつモデル)とも呼ばれる。これは変分ベイズ法を用いて訓練された[[マルコフ連鎖]]である<ref name=":0">{{cite journal |last1=Ho |first1=Jonathan |last2=Jain |first2=Ajay |last3=Abbeel |first3=Pieter |title=Denoising Diffusion Probabilistic Models |date=19 June 2020 |arxiv=2006.11239}}</ref>。拡散モデルの目標とするところは、データの各点が潜在空間上で拡散していく振る舞いをモデル化することで、データ集合のもつ潜在構造を学習することにある。コンピュータビジョンの分野では、これは[[ガウス雑音]]によってぼやけた画像から[[ノイズリダクション|雑音を除去]]するために、拡散過程を反転させる学習を通じて訓練された[[ニューラルネットワーク]]に相当する<ref name=":1">{{Cite arXiv |last1=Song |first1=Yang |last2=Sohl-Dickstein |first2=Jascha |last3=Kingma |first3=Diederik P. |last4=Kumar |first4=Abhishek |last5=Ermon |first5=Stefano |last6=Poole |first6=Ben |date=2021-02-10 |title=Score-Based Generative Modeling through Stochastic Differential Equations |class=cs.LG |eprint=2011.13456 }}</ref><ref>{{cite arXiv |last1=Gu |first1=Shuyang |last2=Chen |first2=Dong |last3=Bao |first3=Jianmin |last4=Wen |first4=Fang |last5=Zhang |first5=Bo |last6=Chen |first6=Dongdong |last7=Yuan |first7=Lu |last8=Guo |first8=Baining |title=Vector Quantized Diffusion Model for Text-to-Image Synthesis |date=2021 |class=cs.CV |eprint=2111.14822}}</ref>。コンピュータビジョンで用いられる一般的な拡散モデルの枠組みを表現する3つの例が、拡散モデルの雑音除去、ノイズ条件付きスコアネットワーク、そして確率微分方程式である<ref>{{cite arXiv |last1= Croitoru |first1=Florinel-Alin |last2= Hondru |first2= Vlad |last3= Ionescu |first3=Radu Tudor |last4= Shah |first4= Mubarak |title=Diffusion models in vision: A survey |date=2022 |class=cs.CV |eprint=2209.04747}}</ref>。 拡散モデルは[[熱力学|非平衡熱力学]]を動機として、2015年に導入された<ref>{{Cite journal |last1=Sohl-Dickstein |first1=Jascha |last2=Weiss |first2=Eric |last3=Maheswaranathan |first3=Niru |last4=Ganguli |first4=Surya |date=2015-06-01 |title=Deep Unsupervised Learning using Nonequilibrium Thermodynamics |url=http://proceedings.mlr.press/v37/sohl-dickstein15.pdf |journal=Proceedings of the 32nd International Conference on Machine Learning |language=en |publisher=PMLR |volume=37 |pages=2256–2265}}</ref><ref>{{Cite web |title=Introduction to Image Generation - Introduction to Image Generation |url=https://www.coursera.org/lecture/introduction-to-image-generation/introduction-to-image-generation-geDgG |website=Coursera |access-date=2023-11-12 |language=ja}}</ref>。 拡散モデルは画像の雑音除去、修復、[[超解像技術|超解像]]、画像生成、データ圧縮など様々な操作に応用できる。例えば画像生成モデルはランダムノイズの画像を初期値とし、自然画像の拡散過程を逆向きに学習することによって、新たな自然画像を生成することが可能となる。2022年4月13日に公開された[[OpenAI]]の文章画像生成モデルDALL-E 2は最近の例である。DALL-E 2は拡散モデルを、画像生成モデルの事前分布と最終的な画像生成のデコーダの両方に用いている<ref>{{cite arXiv |last1=Ramesh |first1=Aditya |last2=Dhariwal |first2=Prafulla |last3=Nichol |first3=Alex |last4=Chu |first4=Casey |last5=Chen |first5=Mark |title=Hierarchical Text-Conditional Image Generation with CLIP Latents |date=2022 |class=cs.CV |eprint=2204.06125}}</ref>{{Sfn|岡野原|2023|pp=109-110}}。拡散モデルを利用した[[データ圧縮]]には符号化が不要と言った利点があり、従来の最高性能の圧縮手法に比べても性能が高い{{Sfn|岡野原|2023|pp=109-110}}。 == 数学的原理 == === 画像生成 === 画像生成という問題を考える。<math>x </math>を画像とし、画像空間上の確率密度関数を<math>p(x)</math>とおく。もし<math>p(x)</math>自体が与えられているならば、特定の画像が生成される確率を明確にすることができるが、一般には確率を知ることは難しい。 たいていの場合、特定の画像が生成される具体的な確率には興味がない。むしろ興味の対象は、その特定の画像が近傍の画像と比較してどの程度生成されやすいかである。例えば2本のひげが生えた猫の画像があるとき、その画像のわずかな変種(たとえば3本のひげが生えた猫の画像や、何らかのガウス雑音が加わった画像)と比較してどの程度生じやすいのか、が問題である。 したがって、興味の対象は<math>p(x)</math>そのものではなく、むしろ<math>\nabla_x \ln p(x)</math>である。これは2つの効果をもたらす。 * 第一に<math>p(x)</math>を正規化する必要がなく、<math>\tilde p(x) = Cp(x)</math>を用いることができる。ここで<math>C = \int \tilde p(x) dx > 0</math>は任意の定数であり、具体的な値は計算に何の影響も与えない。 * 第二に、<math>p(x)</math>とその近傍画像の確率<math>p(x + dx)</math>を、<math>\frac{p(x)}{p(x+dx)} =e^{-\langle \nabla_x \ln p, dx \rangle}</math>によって比較できる。 スコア関数を<math>s(x) := \nabla_x \ln p(x)</math>とおくと、<math>s(x)</math>は<math>p(x)</math>から{{仮リンク|確率的勾配ランジュバン動力学|en|Stochastic gradient Langevin dynamics}}(SGLD)を用いた標本抽出を可能にする。これは本質的に[[マルコフ連鎖モンテカルロ法]]の無限小バージョンである<ref name=":1" />。 === スコア関数の学習 === スコア関数はnoising-denoisingによって学習可能である<ref name=":0" />。 == 主要な変種 == === 分類器誘導 === あらゆる画像群から標本抽出するのではなく、画像に関する記述によって条件付けされた範囲から抽出することを考える。一般的な画像群から取り出さず、例えば「赤い目の黒猫」といった記述に合致する画像から取り出すということである。一般に、これは<math>p(x|y)</math>という分布上での標本抽出を意味する。ここで画像<math>x</math>は全ての画像の範囲から得られるのに対して、画像<math>y</math>の範囲はある画像のクラスに限定される(「赤い目の黒猫」はかなり詳細なクラスであり、それに対して「猫」はかなり漠然とした記述である)。 [[雑音のある通信路モデル]]の観点に立つことで、この過程を以下のように理解することができる。記述<math>y</math>が与えられた条件のもとで画像<math>x</math>を生成しようとするとき、画像を生成したい人は実のところ画像<math>x</math>を思い描いているのだが、その画像は雑音のある通信路を通ってきたために文字化けした結果、記述<math>y</math>として受信されている、と想像するのである。この場合、画像生成とは生成したい人が本来思い描いていた<math>x</math>を推定する操作に他ならない。 言い換えると、条件付き画像生成は単に「文字で表現された言語を画像で表現された言語に翻訳する」ということである。そこで雑音のある通信路モデルと同様に、ベイズの定理から <math display="block">p(x|y) \propto p(y|x)p(x) </math> を得る。すなわち、もしも全画像空間に関する良質なモデル(<math>p(x)</math>)と、画像→クラスの良質な翻訳器(<math>p(y|x)</math>)が得られるのであれば、それらから労せずしてクラス→画像の翻訳器を得られるということである。 SGLDでは以下の等式を用いる。<math display="block">\nabla_x \ln p(x|y) = \nabla_x \ln p(y|x) + \nabla_x \ln p(x) </math>ここで<math>\nabla_x \ln p(x)</math>は前述のように学習したスコア関数であり、<math>\nabla_x \ln p(y|x)</math>は微分可能な画像分類器を用いて導かれる。 === 温度の導入 === 分類器誘導型の拡散モデルでは<math>p(x|y)</math>から標本抽出を行うが、これは[[最大事後確率]]による推定値<math>\arg\max_x p(x|y)</math>の周辺に集中することになる。もしモデルを[[最尤推定|最尤推定値]]<math>\arg\max_x p(y|x)</math>に強制的に近づけたいのであれば、以下の式を用いればよい。<math display="block">p_\beta(x|y) \propto p(y|x)^\beta p(x) </math>ここで<math>\beta > 0 </math>は[[逆温度]]とみなすことができる。拡散モデルの文脈においては、<math>\beta</math>は誘導スケールと呼ばれることが多い。<math>\beta</math>が大きいほど、モデルに対して<math>\arg\max_x p(y|x)</math>周辺に集中した分布からの標本抽出を強制する。これはしばしば生成される画像の品質を改善する<ref>{{Cite arXiv |last1=Dhariwal |first1=Prafulla |last2=Nichol |first2=Alex |date=2021-06-01 |title=Diffusion Models Beat GANs on Image Synthesis |class=cs.LG |eprint=2105.05233 }}</ref>。 温度の導入は、SGLDにおいて<math display="block">\nabla_x \ln p_\beta(x|y) = \beta\nabla_x \ln p(y|x) + \nabla_x \ln p(x) </math>とおくだけで実現できる。 === 分類器フリー誘導(CFG) === 分類器<math>p(y|x)</math>が無い場合でも、画像モデル自体から以下のように分類器を抽出することが可能である<ref>{{Cite arXiv |last1=Ho |first1=Jonathan |last2=Salimans |first2=Tim |date=2022-07-25 |title=Classifier-Free Diffusion Guidance |class=cs.LG |eprint=2207.12598 }}</ref>。<math display="block">\nabla_x \ln p_\beta(x|y) = (1-\beta) \nabla_x \ln p(x) + \beta \nabla_x \ln p(x|y) </math>このようなモデルは通常、<math>(x, y)</math>と<math>(x, None)</math>の双方を与えることで訓練され、それによって<math>\nabla_x\ln p(x|y)</math>と<math>\nabla_x\ln p(x)</math>をともにモデル化できる。 CFGはGLIDE<ref>{{Cite arXiv |last1=Nichol |first1=Alex |last2=Dhariwal |first2=Prafulla |last3=Ramesh |first3=Aditya |last4=Shyam |first4=Pranav |last5=Mishkin |first5=Pamela |last6=McGrew |first6=Bob |last7=Sutskever |first7=Ilya |last8=Chen |first8=Mark |date=2022-03-08 |title=GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models |class=cs.CV |eprint=2112.10741 }}</ref>や[[DALL-E]]<ref>{{Cite arXiv |last1=Ramesh |first1=Aditya |last2=Dhariwal |first2=Prafulla |last3=Nichol |first3=Alex |last4=Chu |first4=Casey |last5=Chen |first5=Mark |date=2022-04-12 |title=Hierarchical Text-Conditional Image Generation with CLIP Latents |class=cs.CV |eprint=2204.06125 }}</ref>、Google Imagen<ref>{{Cite arXiv |last1=Saharia |first1=Chitwan |last2=Chan |first2=William |last3=Saxena |first3=Saurabh |last4=Li |first4=Lala |last5=Whang |first5=Jay |last6=Denton |first6=Emily |last7=Ghasemipour |first7=Seyed Kamyar Seyed |last8=Ayan |first8=Burcu Karagol |last9=Mahdavi |first9=S. Sara |last10=Lopes |first10=Rapha Gontijo |last11=Salimans |first11=Tim |last12=Ho |first12=Jonathan |last13=Fleet |first13=David J. |last14=Norouzi |first14=Mohammad |date=2022-05-23 |title=Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding |class=cs.CV |eprint=2205.11487 }}</ref>といったモデルの必要不可欠な部分となっている。 == 脚注 == {{脚注ヘルプ}} {{reflist}} == 参考文献 == * {{Cite book | 和書 | author = 岡野原大輔 | authorlink = 岡野原大輔 | date = 2023年2月17日 | title = 拡散モデル:データ生成技術の数理 | publisher = 岩波書店 | isbn = 978-4-00-006343-2 | ref = {{SfnRef|岡野原|2023}} }} * 岡野原大輔:「生成AIのしくみ〈流れ〉が画像・音声・動画をつくる」、岩波書店 (岩波科学ライブラリー 328) 、ISBN 978-4-00-029728-8 (2024年12月20日)。※ 数式を避けて言葉で解説された入門書。 == 関連文献 == * [https://benanne.github.io/2022/05/26/guidance.html Guidance: a cheat code for diffusion models]. Good overview up to 2022. ==関連項目== * [[拡散過程]] * [[マルコフ連鎖]] * [[変分ベイズ法]] * [[変分オートエンコーダー]] {{Probability-stub}} {{DEFAULTSORT:かくさんもてる}} [[Category:機械学習アルゴリズム]] [[Category:数学に関する記事]]
このページで使用されているテンプレート:
テンプレート:Cite arXiv
(
ソースを閲覧
)
テンプレート:Cite book
(
ソースを閲覧
)
テンプレート:Cite journal
(
ソースを閲覧
)
テンプレート:Cite web
(
ソースを閲覧
)
テンプレート:Probability-stub
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:Sfn
(
ソースを閲覧
)
テンプレート:仮リンク
(
ソースを閲覧
)
テンプレート:脚注ヘルプ
(
ソースを閲覧
)
拡散モデル
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報