生成AI 基本

拡散モデルDiffusion Model

ノイズを少しずつ取り除いて絵を得る仕組み

ポイント
  • 拡散モデルはノイズだらけの画面から始めて、それを少しずつ取り除きながら絵を仕上げる仕組みです。
  • 学習するときは逆をたどります。きれいな絵にノイズを一枚ずつ重ねて崩しながら、元に戻す方法を覚えます。
  • 一度に取り除かず何十回にも分けて少しずつ取り除きます。分けるほど仕上がりがなめらかになります。
  • 最初に置かれる**ノイズの模様が結果を決めます。**同じ指示でも出発点の模様が違えば別の絵になります。
  • 取り除いている途中で言葉で方向づけができるので、文章で絵を描かせることが可能になります。
目次

1たとえで理解する

窓に薄いカーテンを一枚かけると、外の景色が少しぼやけます。二枚、三枚と重ねると形がつぶれ、六枚七枚にもなると外に何があるのかまったくわからない白い壁になります。

拡散モデルはこの重ねがけをわざと行います。一枚の絵にノイズを一枚かぶせ、また一枚かぶせて、元が何だったのかわからない画面になるまで覆います。かぶせた順番を知っているので、逆に一枚ずつ取り除くこつも身につけられます。

絵を作るときは、窓の外に何もない場所から始めます。ノイズだけがぎっしり乗った画面を置いて一枚ずつ取り除くと、取り除くたびに形が少しずつ整っていきます。最後の一枚を取り除くと、今までどこにもなかった一枚の絵が残ります。

2くわしく

壊す練習を先にします

学習は絵を作る側からではなく、**壊す側から始まります。**写真を一枚置いて、ごく薄いノイズを一枚かぶせます。その結果にまた一枚、また一枚と重ねていくと、数百回後には元が何だったのかわからない板が残ります。

こうしてできた途中段階はすべて、問題と答えが対になった練習問題になります。ノイズが三枚重なった画面を見せて、直前に重なったノイズがどんなものだったかを当てさせる形です。答えは重ねるときに記録しておいたので、いつでも確かめられます。

この練習を何億回も繰り返すと、どんな画面を見せられても「ここがノイズに見える部分はこれくらい」と指し示せるようになります。絵を作る力ではなく、ノイズを見分ける力を先に育てているわけです。

作るときは逆に取り除きます

絵を作るときは写真ではなく、意味のないノイズ画面を一枚新しくまいて始めます。ここに向かって「ノイズに見える部分はどこか」と尋ねると答えが返ってきます。その答えを少しだけ差し引くと、画面がほんの少し整います。

整った画面をまた差し出して同じ質問をします。この問い直しを何十回も繰り返すと、ノイズの間になかった形が徐々に定まっていきます。元の写真を取り戻すのではなく、**今までどこにもなかった絵が新しく作られます。**出発画面がどんな写真とも無関係だからです。

一気に取り除かない理由があります。ノイズだらけの画面からいきなり完成作へ飛べと言われると、推測が大きく外れます。少し差し引いてまた見る方式なら、毎回の推測がずれた分を次の一歩ですぐ直せます。

最初のノイズ模様が結果を決めます

出発画面のノイズはでたらめにまかれますが、一度まかれるとその模様が結果を大きく左右します。どの場所が少し濃かったかが最初の判断を変え、その判断が次の一歩へとつながっていくからです。

そのため、同じ指示を入れても出発模様が違えば構図も色もまったく違う絵になります。逆に出発模様をそのままにして指示だけを少し変えると、似た構図を保ったまま細部だけが違う絵が得られます。気に入った結果を少しずつ手直しする作業は、この性質の上に成り立っています。

取り除いている途中で方向づけをします

ノイズを指し示すたびに、絵の説明文を一緒に差し出せます。「黄色い野原」という説明がついていれば、ノイズを取り除く方向がそちらへ傾きます。一歩ごとにこの説明を参照し直すので、方向づけは最初の一回だけでなく何十歩もの間ずっと働き続けます。

説明にどれだけ強く従わせるかも調整できます。弱くすると自由になりますが指示から離れ、強くすると指示に忠実になる代わりに色が飽和したり形が硬くなったりしやすくなります。出したくないものを別に書いて反対方向へ押し出す方法も、同じ原理を使っています。

段階を何回踏むかが仕上がりと時間を分けます

何段階に分けて取り除くかは人が決めます。段階が少ないと一度に多く取り除かなければならず推測が粗くなり、結果につぶれた跡が残りやすくなります。段階を増やすとなめらかになりますが、その分計算が増えて待ち時間も長くなります。

**段階を際限なく増やしても良くなり続けるわけではありません。**あるところを超えると目に見える違いがほとんどなくなり、時間だけが増えます。取り除くこつを改良して少ない段階でも似た結果を出す方法が今も次々に出てきています。

3もう少し正確に

拡散モデルは、データに少しずつノイズを加えて完全な無作為状態へ送る過程をあらかじめ決めておき、その過程を逆にたどる方法をニューラルネットワークに学習させた生成モデルです。ニューラルネットワークが実際に出す値は完成した絵ではなく、今の画面に混ざっているノイズの推定値であり、この値を決まった規則に従って差し引きながら一段階ずつ進みます。

たとえがずれる点もあります。カーテンを開けると元からあった景色がそのまま出てきますが、拡散の出発画面の裏には何の絵も置かれていません。結果は取り除いている途中で作られます。またカーテンは手でめくれば済みますが、拡散は一歩ごとに何がノイズかを推測し、その分を差し引く計算を新たに行います。

最近使われる方式は、大きな画面の上で直接取り除く代わりに、画面をずっと小さな要約版に縮めておいてその中で取り除き、最後にまた大きな絵に広げます。計算量が大きく減るので、一般的なコンピュータでも動かせるようになった理由です。

4やってみる

5よくある誤解

  • 拡散がぼやけた写真をくっきりさせる技術だと思われがちですが、実際には何の絵も入っていないノイズ画面から新しい絵をつくり出す方式です。

  • 段階を多く踏むほど必ず良くなると見なされがちですが、実際にはあるところを超えると差がほとんどなく、待ち時間だけが増えます。

  • どこかにあった写真を少しずつよみがえらせていると誤解されがちですが、実際には学習に使った写真は保存されず、取り除きの出発点も写真とは何の関係もありません。

7ひとこと要約

つまり拡散モデルは、絵をノイズで壊す練習を逆にたどり、ノイズ画面から少しずつ取り除きながら新しい絵を得る仕組みです。

誤りや、もっと良いたとえがありますか? 修正を提案する · 最終更新2026-09-02