拡散モデルとは|画像生成AIがノイズから絵を作る仕組み

ノイズから戻す AIの仕組みと用語

画像生成AIは絵を描いていません。やっているのは、消すことです。

砂嵐のようなノイズから始めて、少しずつノイズを取り除いていく。その先に絵が残る。この考え方が拡散モデルです。

壊す手順を覚えて、逆をやる

訓練の段階でやっているのは、画像を壊す作業です。

1枚の写真に、少しだけノイズを足す。もう少し足す。それを繰り返すと、最後には元が何だったか分からない砂嵐になります。この過程を大量の画像で覚えさせる。

覚えさせるのは「どんなノイズが足されたか」です。ノイズの足し方が分かれば、引き算もできる。

生成のときは、この手順を逆に回します。適当な砂嵐から始めて、「ここに乗っているはずのノイズ」を予測して引く。何十回か繰り返すと、絵が浮かび上がる。

同じ砂嵐から始めても、指示する言葉が違えば別の絵になります。何を引くべきかの判断が変わるからです。

計算が重すぎた

この方式には難点がありました。重すぎたのです。

2021年12月に公開された論文が、当時の状況をこう書いています。強力な拡散モデルの最適化には、しばしば数百GPU日を要し、生成の推論も逐次的な評価のために高くつく。

画素をそのまま扱っていたからです。1024×1024の画像なら100万個以上の画素があり、その全部についてノイズを予測する処理を何十回も繰り返す。

圧縮した空間で処理する

Robin Rombach氏ほかによる High-Resolution Image Synthesis with Latent Diffusion Models が示した解決策は、場所を変えることでした。

画素の空間ではなく、学習済みの符号化器が作る圧縮された表現の空間で拡散を回す。論文の言葉では、複雑さの削減と細部の保存のあいだで、ほぼ最適な点を突いた形になります。

扱う情報量が桁で減るので、計算も桁で軽くなる。画素ベースの拡散モデルと比べて計算資源の要求を大幅に減らしながら、競争力のある結果を出したと報告されています。

この論文が、画像生成が手元のパソコンで動くようになった転機でした。研究機関のGPUクラスタでしか回せなかったものが、個人の手に降りてきた。

生成の設定が何を指しているか

仕組みが分かると、画像生成サービスの設定項目の意味も見えてきます。

設定 何を変えているか
ステップ数 ノイズを引く回数。多いほど丁寧だが時間がかかる
シード 最初の砂嵐の形。同じ値なら同じ砂嵐から始まる
指示への忠実さ 言葉にどれだけ従うか。強すぎると絵が硬くなる
ノイズ除去の強さ 元画像をどれだけ残すか。画像を渡して変換するときに効く
名称はサービスによって異なる

シードを固定すると同じ絵が出るのは、出発点の砂嵐が同じになるからです。逆に言えば、シードを変えれば同じ指示でも別の絵になる。

動画生成も同じ考え方の延長にある

動画を作るモデルの多くも、拡散の枠組みを使っています。

ただし1枚ずつ独立に作ると、コマごとに顔や服が変わってしまう。そこで時間方向のつながりも一緒に扱う形に拡張されています。前後のコマとの整合を保ちながらノイズを引いていく。

扱う情報が枚数ぶん増えるので、計算はさらに重くなります。動画生成の料金が画像より桁違いに高いのは、ここが理由です。秒単位で課金される仕組みになっているのも同じ事情でしょう。

尺を伸ばすと費用が線形以上に増える場合があるので、長さを決めてから見積もりを取ったほうが安全です。

指示が効きにくいときに試すこと

思ったものが出ないとき、書き足す前に見直せる点があります。

忠実さの設定を上げすぎていないか。強くしすぎると、言葉には従うのに絵として不自然になります。中間あたりが扱いやすい。

ステップ数を増やしても、たいていは変わりません。丁寧になるだけで、構図や内容は動かない。時間と費用を使うわりに効果が薄いところです。

効くのは、指示の具体性です。言葉で結果が変わる部分と同じで、抽象的な形容をいくら重ねても動きません。光の向き、画角、質感。目に見えるものを書くと変わります。

なぜ手や文字が苦手なのか

よく言われる弱点にも、この仕組みが関係しています。

ノイズを引く処理は、画像全体で同時に進みます。「指は5本」といった規則を数えながら描いているわけではない。それらしい形が浮かべば、そこで止まります。

文字も同じです。文字らしい模様は作れても、正しい綴りである必要を理解していません。近年のモデルはかなり改善しましたが、根本の性質は残っています。

出典

計算資源の課題と、圧縮空間での処理についての記述は、下記の論文に基づきます。ノイズ除去の基本原理については、拡散モデルの基礎を築いた下記の原論文も参照しました。

タイトルとURLをコピーしました