画像生成AIは絵を描いていません。やっているのは、消すことです。
砂嵐のようなノイズから始めて、少しずつノイズを取り除いていく。その先に絵が残る。この考え方が拡散モデルです。
壊す手順を覚えて、逆をやる
訓練の段階でやっているのは、画像を壊す作業です。
1枚の写真に、少しだけノイズを足す。もう少し足す。それを繰り返すと、最後には元が何だったか分からない砂嵐になります。この過程を大量の画像で覚えさせる。
覚えさせるのは「どんなノイズが足されたか」です。ノイズの足し方が分かれば、引き算もできる。
生成のときは、この手順を逆に回します。適当な砂嵐から始めて、「ここに乗っているはずのノイズ」を予測して引く。何十回か繰り返すと、絵が浮かび上がる。
同じ砂嵐から始めても、指示する言葉が違えば別の絵になります。何を引くべきかの判断が変わるからです。
計算が重すぎた
この方式には難点がありました。重すぎたのです。
2021年12月に公開された論文が、当時の状況をこう書いています。強力な拡散モデルの最適化には、しばしば数百GPU日を要し、生成の推論も逐次的な評価のために高くつく。
画素をそのまま扱っていたからです。1024×1024の画像なら100万個以上の画素があり、その全部についてノイズを予測する処理を何十回も繰り返す。
圧縮した空間で処理する
Robin Rombach氏ほかによる High-Resolution Image Synthesis with Latent Diffusion Models が示した解決策は、場所を変えることでした。
画素の空間ではなく、学習済みの符号化器が作る圧縮された表現の空間で拡散を回す。論文の言葉では、複雑さの削減と細部の保存のあいだで、ほぼ最適な点を突いた形になります。
扱う情報量が桁で減るので、計算も桁で軽くなる。画素ベースの拡散モデルと比べて計算資源の要求を大幅に減らしながら、競争力のある結果を出したと報告されています。
この論文が、画像生成が手元のパソコンで動くようになった転機でした。研究機関のGPUクラスタでしか回せなかったものが、個人の手に降りてきた。
生成の設定が何を指しているか
仕組みが分かると、画像生成サービスの設定項目の意味も見えてきます。
| 設定 | 何を変えているか |
|---|---|
| ステップ数 | ノイズを引く回数。多いほど丁寧だが時間がかかる |
| シード | 最初の砂嵐の形。同じ値なら同じ砂嵐から始まる |
| 指示への忠実さ | 言葉にどれだけ従うか。強すぎると絵が硬くなる |
| ノイズ除去の強さ | 元画像をどれだけ残すか。画像を渡して変換するときに効く |
シードを固定すると同じ絵が出るのは、出発点の砂嵐が同じになるからです。逆に言えば、シードを変えれば同じ指示でも別の絵になる。
動画生成も同じ考え方の延長にある
動画を作るモデルの多くも、拡散の枠組みを使っています。
ただし1枚ずつ独立に作ると、コマごとに顔や服が変わってしまう。そこで時間方向のつながりも一緒に扱う形に拡張されています。前後のコマとの整合を保ちながらノイズを引いていく。
扱う情報が枚数ぶん増えるので、計算はさらに重くなります。動画生成の料金が画像より桁違いに高いのは、ここが理由です。秒単位で課金される仕組みになっているのも同じ事情でしょう。
尺を伸ばすと費用が線形以上に増える場合があるので、長さを決めてから見積もりを取ったほうが安全です。
指示が効きにくいときに試すこと
思ったものが出ないとき、書き足す前に見直せる点があります。
忠実さの設定を上げすぎていないか。強くしすぎると、言葉には従うのに絵として不自然になります。中間あたりが扱いやすい。
ステップ数を増やしても、たいていは変わりません。丁寧になるだけで、構図や内容は動かない。時間と費用を使うわりに効果が薄いところです。
効くのは、指示の具体性です。言葉で結果が変わる部分と同じで、抽象的な形容をいくら重ねても動きません。光の向き、画角、質感。目に見えるものを書くと変わります。
なぜ手や文字が苦手なのか
よく言われる弱点にも、この仕組みが関係しています。
ノイズを引く処理は、画像全体で同時に進みます。「指は5本」といった規則を数えながら描いているわけではない。それらしい形が浮かべば、そこで止まります。
文字も同じです。文字らしい模様は作れても、正しい綴りである必要を理解していません。近年のモデルはかなり改善しましたが、根本の性質は残っています。
出典
計算資源の課題と、圧縮空間での処理についての記述は、下記の論文に基づきます。ノイズ除去の基本原理については、拡散モデルの基礎を築いた下記の原論文も参照しました。

