コンテンツにスキップ
Algorithm Exposure

Algorithm Exposure

Updated: 2026-05

1. このページについて

「面白ネタ実験」3部作の2本目。アルゴリズム露出系 — 拡散モデルの内部処理を意図的に変な方向に押して、普段見えないものを見せる実験集。

「綺麗な絵を出す」のは目的ではない。AI の中身を覗くことそのものが目的。授業中に1〜2個ピックアップして見せる。学生にとっての「拡散モデルって本当に動いてるんだ」という実感がここで得られる。

この体験が、後の Runway 演習で「動画生成AIの中で何が起きているか」を想像するベースになる。

2. ネタ A: CFG ゼロの世界

Parameters で CFG は「プロンプトへの忠実度」と説明した。CFG = 0 にすると、プロンプトを 完全に無視 する。

やり方

  • K-Sampler の cfg を 0 に設定
  • プロンプトに何を書いても、結果は無関係になる
  • 出てくるのは「そのモデルが学習データから引き出してくる平均的な何か

SD 1.5 だとぼんやりした顔や風景。Flux だとリアルな何か。モデルの素顔が見える。

3. ネタ B: CFG 極大の壊れ方

逆に CFG を 30 や 50 まで上げる。

  • 標準的なモデル(SD 1.5, SDXL): 過彩度・破綻・燃え尽きたような色
  • Flux dev: 動作しない/崩壊
  • Z Image Turbo: 動作しない/崩壊

CFG が壊れていく境目 を観察することで、なぜ CFG 7〜8 が標準なのかが体感できる。

4. ネタ C: ステップ数 1〜3 の混沌

ステップ数を 1, 2, 3 と極端に少なくする。

  • 1 ステップ: ノイズに近い、何かの輪郭がうっすら
  • 2 ステップ: 形になりかけ、ぼんやり
  • 3 ステップ: ようやく主題が見える

「拡散プロセスは段階的にノイズを削る」を可視化する実験。1 ステップでは 1/20 だけ、2 ステップでは 2/20 だけ削った状態が見える。

例外: Turbo / LCM 系モデルは 1〜4 ステップで完成するよう設計されているので、極小ステップでもそれなりの絵が出る。これは「学習時に 1 ステップで完成するように訓練された」ためで、別の現象。

5. ネタ D: 潜在空間補間

2つのプロンプト(A と B)の中間状態を見る実験。

やり方

  • ConditioningAverage や ConditioningCombine ノードを使う
  • プロンプト A: a cat
  • プロンプト B: a dog
  • 重み 0.0 / 0.25 / 0.5 / 0.75 / 1.0 で5枚生成
  • 「猫から犬への連続変化」が見える

これは CLIP 空間(テキスト解釈ベクトル)の補間。AI が連続的にプロンプトを混ぜている様子が観察できる。

6. ネタ E: 同じシード、違うプロンプト

シードを固定して、プロンプトだけ変える。

  • シード固定 + a cat: 特定の猫が出る
  • 同じシード + a dog: その猫がいた場所に犬が出る(構図が似る)
  • 同じシード + a robot: 同じ位置にロボットが出る

シードが「画像の構図・位置を決める」のに対し、プロンプトが「何が描かれるか」を決めていることが見える。両者の独立性の体感。

7. ネタ F: 途中段階の潜在画像を覗く

K-Sampler は通常、全ステップ完了後に結果を出す。途中段階を見たい場合:

  • ConditioningSetTimestepRange ノードで「何%まで処理するか」を指定
  • 全体を「まず Sampler1 で 0%〜30% だけ」「次に Sampler2 で 30%〜100%」のように分割
  • 途中の潜在画像を VAE デコードしてプレビュー

「ステップ 5/20 でどんな絵か」「ステップ 15/20 で何が見え始めるか」が観察できる。

これは ComfyUI のノードベース UI ならではの実験。Web UI では基本できない。

8. ネタ G: ノイズの注入

K-Sampler の入力(潜在画像)を「少しノイズを足す」処理に通してから渡す。

  • 通常の img2img では「元画像に少しノイズを足してから拡散プロセスへ」
  • ここでは「完全なノイズに少し元画像を混ぜてから」拡散プロセスへ

denoise 値で制御するこの境界を、極端な値(0.95, 0.99)で試すと「元画像のシルエットがうっすら残ったホラーな結果」が出ることがある。

9. ネタ H: VAE をかけ間違える

「VAE デコード」を別 VAE で実行する。

  • 通常: SD 1.5 で生成 → SD 1.5 の VAE でデコード
  • 実験: SD 1.5 で生成 → SDXL の VAE でデコード

潜在画像のフォーマットが違うので、カラーノイズと混ざった結果が出る。「VAE が画像形式の翻訳をしている」ことが体感できる。

10. ネタ I: サンプラーの暴走

通常使わない sampler + scheduler の組み合わせを試す。

  • dpm_2 + ddim_uniform
  • dpmpp_3m_sde_gpu + exponential

サンプラーごとに「ノイズ削減の戦略」が違うので、ハマらない組み合わせは結果が崩れる。

これらは普段 euler/normal で固定して使うが、なぜサンプラーが複数あるのか を体感できる。

11. ネタ J: 同じ画像を何度もループさせる

img2img の出力を入力に戻して、何度も img2img を繰り返す。

  • 1回目: 写真 → img2img (denoise 0.5)
  • 2回目: 1回目の出力 → img2img (denoise 0.5)
  • 3回目: 2回目の出力 → img2img (denoise 0.5)
  • 5〜10回繰り返す

毎回「半分忘れる」を繰り返すので、徐々に 元画像から完全に離れた抽象画になる。AI が連続して「夢を見続ける」プロセスの可視化。

12. 授業での扱い

  • 全 10 ネタを授業で見せる必要はない
  • 1〜2 個を 5 分程度のデモ で実演
  • 学生は「面白そう」と思ったものを後日試す
  • 綺麗な絵が出ない」ことに動揺しない設計(むしろ崩れこそが目的)

13. クレジット予算

ここの実験は SD 1.5 で十分(むしろ SD 1.5 のほうが面白い崩れ方をする)。 1〜2 クレジット/回 × 30〜40 回試行 = 30〜80 クレジット程度。

学生 1 人で全部やる必要はない。先生が事前に試して、面白い1本を授業で見せる運用。

14. このあと

  • Edge Cases — 意図的に壊す実験(ControlNet 衝突など)
  • To Runway — 動画生成AIの全体像と Runway への橋渡し