メインコンテンツまでスキップ

[24.06] MAR

nbswords
Research Engineer

再び生成の秩序を鍛え直す

Autoregressive Image Generation without Vector Quantization


備考

本記事は nbswords の Medium に同時公開されています。

現在の自己回帰型画像生成モデルは、NLP 分野の自己回帰モデルの成功を模倣するために、画像をベクトル量子化(VQ)して複数のトークンに離散化する手法が一般的ですが、著者はこの離散空間が自己回帰型画像生成に必須ではないと考え、連続空間に基づく自己回帰画像生成モデルを提案しました。これにより、より高い精度と高速な推論時間を両立しています。

背景知識

ベクトル量子化(Vector Quantization, VQ)

これは長年用いられているベクトル探索の高速化技術であり、特徴空間のベクトル(埋め込みベクトル)を複数のグループに分割し、各グループを代表するベクトルをインデックスとして扱い、すべての代表ベクトルのインデックスを含むコードブックを通じてベクトル群を管理します。

VQ

詳しい方法は Survey Of Vector Space SearchVector quantization wiki を参照してください。

自己回帰型画像生成(Auto-regressive image generation)

初期の Visual Autoregressive Model (VAR)は、画像生成タスクを GPT のような自己回帰型テキスト生成として直接模擬し、画像の各ピクセルを一つのカテゴリとして扱い、モデルは categorical cross entropy で多クラス予測を行います。Google のImage Transformer, 2018や OpenAI のImageGPT, 2020がこの方法に該当します。

画像生成速度を上げるため、現在の自己回帰画像生成モデルでは VQ を導入した 2 段階学習が一般的です。第 1 段階で latent space 上で画像復元に用いる codebook を学習し、第 2 段階で学習した codebook に基づいて自己回帰的に画像を生成します。

  • 例としてVQ-VAE, 2017

    • Encode 段階では CNN で画像特徴を抽出し、feature map zez_e に対して VQ を行い、各グループの代表ベクトル(紫色のベクトル、e1e_1eKe_K)を取得します。次に zez_e の各特徴点と代表ベクトル間の距離を計算し、最も近い代表ベクトルのインデックスで置換し q(zx)q(z|x) を得ます。これが離散特徴です。
    • Decode 段階では qq からマッピングされた ZqZ_q を用いて画像を生成します。

VQ-VAE

自己回帰モデルで VQ を使い画像生成を高速化するのは魅力的ですが、欠点はないのでしょうか?

もちろんあります。1. VQ エンコーダの訓練が難しい 2. VQ によって復元画像の品質が低下する点です。

方法

VQ を捨てて、Diffusion を採用

Diffusion モデルは画像の全ピクセルやトークンの結合確率分布を表現できるなら、なぜ各トークンの条件付き確率分布を表現できないのか?

  • Diffusion は入力のプロンプトや画像を条件にノイズから画像を生成する

diffusion+text_prompt

  • 今回はTransformerの出力を条件としてノイズから生成(Transformerの入力については後述)

diffusion+transformer

彼らの手法は、各トークンの条件付き潜在変数 z を自己回帰的に予測し、小さな MLP の Diffusion モデルでノイズ除去(denoising)を行い、出力 x の確率分布 p(x|z) を得る

autoregressive_diffusion

元のカテゴリカルクロスエントロピーに代えて Diffusion Loss を提案

diffusion_cal

diffusion_cal_2

  • εε は(0,1)の正規分布からサンプリングされたノイズ

  • εθε_θ は小さな MLP で、εθ(xtt,z)ε_θ(x_t|t,z) は時間 tt と条件 zz をもとに入力 xtx_t からノイズベクトル εθε_θ を推定するモデル

    • tt はノイズスケジュールのタイムスタンプ、zz は Transformer が文脈から生成した条件ベクトル

最後に、DDPM 同様に推論時には逆拡散過程(reverse diffusion process)で画像を生成(xtx_t から x0x_0 へ)

reverse_diff

また、Diffusion モデルの画像生成では「温度(temperature)」という超パラメータがあり、温度が高いほど生成のランダム性が大きく、低いほど少ない。今回のモデルでは温度 τ\tau * σtδ\sigma_t \delta を使い調整。この手法はDiffusion Models Beat GANs on Image Synthesisに由来。

これは VAE の条件生成と DDPM のノイズ除去を巧みに組み合わせ、VAE で画像特徴を圧縮し DDPM で画像を生成するという非常に洗練された手法である。

VAE_and_Diffusion

Autoregressive と Masked Generative Models の概念を融合

本モデルはMAE (Masked Autoencoders Are Scalable Vision Learners), 2021の作者である愷明氏の発想を踏襲し、MAE の考えを取り入れている。

  • 主に MAE の後続研究MaskGIT, 2022MAGE, 2022を参考に、いずれも Transformer を用いた Masked Autoregressive(MAR)である。MaskGIT は bidirectional transformer decoder で複数トークンを同時予測する点が貢献、MAGE は画像表現学習と画像合成の統合が貢献。

  • 本作でも MAE の双方向注意機構を用い、マスクトークン [m]を中間層に置き全トークンが互いを参照可能にし、マスクされていないトークンのみで損失を計算する。

    • これは一般的に言われる causal attention や bidirectional attention とは異なるため、理解したい場合は MAE 論文を参照。
    • この設計により画像生成性能が向上する反面、Transformer の訓練・推論で kv cache を使った高速化ができなくなる。ただし複数トークンを同時予測するため速度低下は限定的。

bidirect

  • 下図は通常の順次 AR、ランダム順序での AR(1 トークンマスク)、今回の複数トークン同時予測 AR(複数トークンマスク)の比較。ここで Transformer への入力が masked image である理由が明かされる。

AR_and_MAR

実装

  • Diffusion Loss:cosine 型ノイズスケジュール、訓練時は DDPM を 1000 ステップ、推論時は 100 ステップで実行
  • Denoising MLP(小型 MLP):3 層 1024 チャネルブロック、各ブロックに LayerNorm、線形層、SiLU 活性化関数、Residual 接続を含む。実装上は AdaLN で Transformer の出力 z を LayerNorm 層に組み込む
  • Tokenizer:LDM 公開の Tokenizer を利用、VQ-16 と KL-16 を含む。VQ-16 は VQ-GAN ベースで GAN loss と知覚損失を用い、KL-16 は KL ダイバージェンス正則化で VQ に依存しない
  • Transformer:Tokenizer 処理済みのトークン列を受け取り、位置エンコードと [CLS] トークンを付加、32 層 1024 チャネルの Transformer ブロックを通す ViT を使用
  • Masked autoregressive models:訓練時は [0.7, 1.0] のマスキング率で、0.7 はランダムに 70%のトークンをマスク。短すぎるシーケンスを避けるため常に 64 個の [cls] トークンでパディング。推論時はマスキング率を 1.0 から 0 へ段階的に下げ、cosine スケジュールでステップ数調整。デフォルトは 64 ステップ。
  • ベースラインの Autoregressive Model:causal attention を用いた GPT モデルで、入力に [cls] を付け、kv cache と温度パラメータを利用。

実験

モデル実験設定はすべて AR/MAR-L(約 4 億パラメータ)、400 エポック、ImageNet 256×256

Diffusion Loss と Cross-entropy Loss の比較

すべての AR/MAR バリエーションにおいて、Diffusion Loss を使った方が性能が良い。中でも AR の改善は最小で、下に行くほど改善が大きく、MAR+bidirect+複数予測モデルの改善が最大。Diffusion Loss が MAR モデルにとって重要であることが示されている。

  • Diffusion Loss は他の拡散モデルでも使われる CFG(Classifier-Free Guidance)を用いて生成性能を向上させている
  • Fréchet Inception Distance (FID) は数値が低いほど良い、Inception Score (IS) は高いほど良い。両者は生成画像の品質評価指標

Diffusion Loss

トークナイザー

異なるトークナイザーを使い Diff Loss と組み合わせた効果を検証。離散空間から連続空間へ脱却したため、トークナイザーは制限されず、Diff Loss は連続・離散どちらのトークナイザーにも適用可能。

  • VQ-16:VQ-VAE の VQ 前の連続潜在表現をトークン化したもの。前述の通り、VQ-16 と KL-16 は LDM 提供のもので、ImageNet で学習している(OpenImages ではない)
  • Consistency Decoder:非 VQ のトークナイザーで、DALL·E 3由来
  • reconstruction FID (rFID):低いほど良く、トークナイザー評価指標

Tokenizers

結果として、連続型トークナイザーの KL-16 は離散型 VQ-16 より良い性能を示し、Consistency Decoder のような異なるトークナイザーにも対応可能なことを示している。

Denoising MLP

パラメータ数の異なる MLP の性能比較。幅(width)1024 が最良の性能を示す。

Denosing MLP

Diffusion Loss のサンプリングステップ数

Diffusion のステップ数による生成品質の影響。ステップ数 100 で十分良い性能を得られる。

Sampling steps of Diffusion Loss

Diffusion Loss の温度パラメータ

Diff Loss における温度設定も重要。

Temperature

スピードと精度のトレードオフ

kv cache を使用できないため、この評価は重要。A100 を用い、バッチサイズ 256 で計測。

Speed

  • MAR: 各点は異なる自己回帰ステップ数(8 ~ 128)
  • DiT: 各点は異なる拡散ステップ数(50, 75, 150, 250)、DiT-XL を使用
  • AR: kv cache を使用

kv cache なしでも推論速度は悪くないが、デフォルト設定(ステップ 64)はやや遅い。

システムレベルの比較

他モデルとの比較。最大モデル MAR-H が最良の性能を示すが、MAR-L も十分良好。

System-level comparison

結論

本研究は自己回帰画像生成の従来手法を打破し、Diffusion と MAE を融合した新たな方向性を切り拓いた。単純な DDPM を使った実証に留まるが、より優れた拡散モデルの適用でさらなる性能向上が期待される。今後の派生研究に期待したい。

最後に一部の生成画像を掲載。

result

参考文献

https://zhouyifan.net/2024/07/27/20240717-ar-wo-vq/

☕ 1杯のコーヒーが支えになります

AIやフルスタックの情報発信を続けるため、ご支援お願いします。

cta-button
AI・開発・運用まで一括対応 icon
ALL

AI・開発・運用まで一括対応

アイデアからリリースまで、技術面はまるごとお任せください。

対応内容
  • 技術相談 + 開発 + デプロイ
  • 継続サポート & 拡張

🚀 次のプロジェクト、始めましょう!

カスタム開発や長期支援をご希望の方は、ぜひご相談ください。