3行でいうと

  • 拡散モデルは、「砂嵐のようなランダムな点の模様」から出発して、少しずつ砂嵐を取り除きながら絵を取り出す、と公式の技術文書は説明しています。
  • 頼みごとの文章は、取り除く向きを決める「道しるべ」の役目をします。同じ頼みごとでも、出発点の砂嵐が違えば、別の絵になります。
  • ChatGPTやGeminiのヘルプは、内部の方式までは説明していません。「どのサービスも拡散モデル」とは、僕らが読んだ範囲では確認できていません。

この記事は、公式の文書を読んでまとめたものです。この記事は、実際に使って確かめた記録ではありません。たとえ話と、「見立てです。」で始まる段落は僕らの考えで、公式の文書に書かれていることとは分けて書きました。

先に結論

  1. 学ぶとき: 絵に、少しずつランダムな点(ノイズ)を足していき、何の絵か分からなくなるまで崩します。そのうえで、崩れた絵を「ひとつ前の、少しきれいな状態」に戻す練習を、大量の絵で繰り返します。
  2. 作るとき: 最初から砂嵐の状態を用意して、学んだ「戻し方」を何回も当てはめ、絵を浮かび上がらせます。
  3. 頼みごとの文章: 戻す向きを、頼みごとの内容に近づける働きをします。
  4. サービスの中身: ChatGPTやGeminiが同じ方式かどうかは、ヘルプには書かれていません。ここで説明するのは、Stable Diffusionなどの技術文書にある、代表的な方式です。

たとえ話:曇った窓ガラスを、少しずつ拭く

僕らのたとえです。公式の文書にあるものではありません。

冬の朝、窓ガラスが真っ白に曇っているとします。ガラスの向こうには景色があるはずですが、何も見えません。そこでガラスを何回かに分けて拭くと、輪郭、色、細かい形の順に、景色が見えてきます。

拡散モデルは、これを逆にしたような学び方をします。まず、景色(絵)を少しずつ曇らせて、真っ白にします。その曇り方の途中経過を、たくさんの絵で見て、「この曇り具合なら、ひとつ前はこう」を学びます。作るときは、最初から真っ白(砂嵐)の窓ガラスを用意し、学んだ拭き方を何十回も当てはめます。すると、まだ誰も見たことのない景色が浮かんできます。

このたとえは、「砂嵐から、少しずつ取り出す」ことを覚えるためのものです。実際のAIが「景色を知っている」のかどうかは、読んだ資料には書かれていません。

公式の技術文書が説明している手順

ステップ1:絵を、わざと崩す(学ぶとき)

AWSの「Stable Diffusionとは」のページは、この方式をこう説明しています。学ぶ段階で、モデルは絵に少しずつランダムなノイズを足して、元の絵が分からなくなるまで崩します。これを「順方向の拡散」と呼びます。

ステップ2:崩れた絵を、元に戻す練習をする

次に、崩れた絵から、少しずつ元に近づける練習をします。これが「逆方向の拡散」です。ページには、猫の画像と犬の画像の2枚だけで学ばせたとしたら、戻す操作は猫か犬のどちらかに寄ってしまい、その中間の絵は出ない、というたとえがあります。実際の学習では、何十億枚もの画像が使われる、とも書かれています。

練習を支えるのは、「いまの絵にどれくらいノイズが混ざっているか」を当てる部分です。AWSは、その部分が各ステップでノイズを見積もって取り除くと説明しています。

ステップ3:砂嵐から出発して、何回も繰り返す(作るとき)

Hugging Faceの技術文書(Diffusersの解説ページ)は、作るときの手順を短くまとめています。

  1. 作りたい絵と同じ大きさの、ランダムなノイズを用意する。
  2. モデルが「いまのノイズの量」を見積もる。
  3. 見積もりをもとに、ノイズを少し減らした、ひとつ前の状態の絵を作る。
  4. その絵を次の入力にして、2と3を決まった回数、繰り返す。

文書のコードの例では、繰り返しは25回や50回です。AWSのページは、繰り返す回数は使う人が決められる、と書いています。回数を変えると仕上がりが変わるのですが、その細かい関係は、読んだ範囲には書かれていませんでした。

ステップ4:頼みごとの文章が、向きを決める

文字の頼みごとは、そのままでは使えません。AWSのページによると、頼みごとの言葉を数字の並び(ベクトル)に直して、ノイズを見積もる部分に渡します。すると、取り除く向きが、頼みごとに合う方向へ寄ります。Hugging Faceの文書は、さらに「頼みごとありの見積もり」と「頼みごとなしの見積もり」の差を使って、頼みごとにどれだけ寄せるかを調整する方法(「ガイダンス」)を紹介しています。

同じ頼みごとなのに、絵が違う理由

出発点の砂嵐が、毎回違うからです。AWSは、乱数の種(シード値)を変えると、同じ頼みごとでも違う絵になる、と説明しています。Hugging Faceの例のコードには、最初のノイズを作るために乱数の種を固定する行(コメントは『初期のノイズを作るための種』)があります。

見立てです。「もう1枚お願い」と頼んで、毎回少しずつ違う絵が出てくるのは、この「出発点が違う」ことが関わっているのだと思います。ただ、ChatGPTやGeminiがどんな仕組みで違いを出しているかは、ヘルプに書かれていません。

誤解されやすい点

「ネット上の絵を切り貼りしている」わけではない、という説明です。 公式の技術文書が書いているのは、ノイズを取り除くやり方を学ぶ、という説明です。ただし、学習に使った絵や著作権の扱いについては、今回読んだページでは確かめていません。

「必ず思いどおりになる」わけではありません。 OpenAIのヘルプは、絵の一部を選んで直すとき、選択は正確とは限らず、範囲の外まで変わることがあると注意しています。

「文字入り画像は苦手」と決めつけることもできません。 Googleのヘルプは、文字の描画が改善された、と説明しています。OpenAIのヘルプも、画像に文字を入れる作業を挙げています。どれくらい正確かは、読んだページには書かれていません。

今日からできること、やってはいけないこと

今日からできること(僕らの提案です)

  1. ChatGPTやGeminiで画像を作る。気に入らなかったら、頼みごとを足して作り直す。OpenAIのヘルプによると、作った画像や、アップロードした画像を、会話の中で直せます。
  2. 同じ頼みごとを2回出して、絵がどれくらい違うか見る。出発点が違う、という説明を、目で確かめられます。
  3. 作った画像には「AIが作った」という印が付くことがあるので、その仕組みを知っておく(次の節)。

やってはいけないこと

「AIが作った」という印はあるのか

OpenAIのヘルプによると、ChatGPTなどで作られた対応する画像には、作った道具や日時を記録する「C2PAコンテンツクレデンシャル」というメタデータと、画像自体に埋め込む見えない透かし「SynthID」が付きます(2026年10月16日に確認)。openai.com/verifyにアップロードして確かめられる、とも書かれています。C2PAは、デジタルの内容の出どころや編集の履歴を確かめられるようにする、公開の標準を作っているグループです。Googleのページによると、SynthIDは人の目には見えず、切り抜きやフィルターなどの加工に耐えるよう設計された透かしです。ただし、取り除けない、とまでは、読んだページには書かれていませんでした。

ただし、OpenAIは限界も書いています。印が見つかっても、中身が正しいことや、権利があることまでは保証しません。印が見つからなくても、OpenAIの作ではない、とは言えません。保存や共有の途中でメタデータが消えることがあるからです。また、この確認はOpenAI以外のAIの画像を見分けるものではありません。

「小さくして作る」しくみ(潜在空間)

Stable Diffusionの技術文書によると、実際の絵(たとえば512×512の画像)を、そのまま扱うのではなく、いったん小さな表現(64×64)に圧縮して、その中でノイズを取り除きます。AWSのページは、これで扱う数が約48分の1になり、8GBのメモリを積んだグラフィックスカードがあるパソコンでも動く、と説明しています(ページの表記は「RAM」で、どのメモリを指すかは確かめていません)。最後に、小さな表現を元の大きさの絵に戻します。この「小さな表現の世界」が「潜在空間」です。

Hugging Faceの例のコードでは、絵の大きさは512×512、小さな表現は縦横が8分の1(512÷8で64×64。この計算は僕らのものです)、ガイダンスの強さは7.5、繰り返しは25回です。これは文書の中の一例で、サービスの設定ではありません。

AWSのページは、拡散モデルのほかに、GAN、VAE、トランスフォーマーも、生成AIの方式として挙げています。画像生成のすべてが拡散モデルというわけではありません。

気をつけること

出典

更新履歴