拡散言語モデルとは?LLaDA論文で理解する文章生成の仕組み

LLaDAのマスクから文章を生成する仕組みを表すアイキャッチ

LLaDAのマスクから文章を生成する仕組みを表すアイキャッチ

拡散言語モデルは、情報を壊した状態から文章を復元する過程を学び、その過程を使って文章を生成するモデルです。 代表例のLLaDAは、回答の各位置をマスク(内容を隠す特殊な記号)で埋めた状態から、段階的に文章を作ります。

一般的なLLM(大規模言語モデル)が左から次のトークンを追加していくのに対し、LLaDAでは離れた位置の候補も同じ段階で予測できます。ただし、複数の位置を同時に予測することと、文章全体が一度で完成することは別です。

本記事はShen Nie氏らのLarge Language Diffusion Models論文v3を基に、初代LLaDAの仕組みを解説します。LLaDAはLarge Language Diffusion with mAskingの略です。後継のiLLaDAなどの性能とは分け、モデルの実行結果ではなく原論文と独自の教材例を使います。

「左から足す」と「空欄を埋める」の違い

自己回帰型(それまでの出力を基に次を予測する方式)の文章生成では、例えば「猫が」の後に「窓辺で」、さらに「外を」と続きを追加します。

LLaDAのマスク拡散生成では、最初に回答用の枠を用意し、その中身をすべて隠します。そこから候補を予測し、段階ごとにマスクを減らします。

比較軸 左から生成する自己回帰型 LLaDAのマスク拡散生成
開始時 質問や指示などの入力 入力と、回答用のマスク列
生成の進め方 末尾へ次のトークンを追加 マスク位置を予測し、段階的に埋める
参照する文脈 基本的に前方の入力・生成済み部分 入力列の両側にある見えている部分
設定で注目するもの 最大生成長など 生成する枠の長さ、反復回数、再マスク方法など
主な注意点 生成の依存関係が左からつながる 複数箇所を予測しても、反復計算は必要

以降の図では、「猫が/窓辺で/外を/見ている」を四つの区画として扱います。これは説明用の区切りで、実際のトークナイザー(文章を処理単位へ分割する仕組み)の分割結果ではありません。

自己回帰型の左からの生成とマスク拡散の段階的生成の比較

*原論文の概念を基にした独自図です。途中の段階を省略しており、上下の同じ行が同じ処理時間を示すわけではありません。*

LLaDAもTransformer(文章中の要素の関係を計算するニューラルネットワーク構造)を使います。Transformerをやめたのではなく、学習対象と生成の進め方を変えています。初代LLaDAでは、右側を見えなくする因果マスクを使わず、入力全体を参照できる構造です。原論文・2.2節

自己回帰型の基礎はDecoder-only Transformerの解説で扱っています。

学習では、隠した箇所を当てる

LLaDAは、学習用の文章の一部をマスクに置き換え、元のトークンを当てるように学習します。

例えば、元の文章が「猫が/窓辺で/外を/見ている」なら、教材の一例は「猫が/[マスク]/外を/[マスク]」です。見えている情報を使い、隠した部分の予測を元の文章と比べます。

隠す割合を固定しない

原論文では、0〜1の範囲から値\(t\)を選び、各位置を確率\(t\)で独立にマスクします。隠れる箇所が少ない状態から、ほとんど隠れた状態まで学ぶことになります。

\(t=0.5\)は、各位置が50%の確率で隠れるという意味です。短い文章で必ず半分が隠れることを保証する値ではありません。

損失(予測の誤りを学習へ伝える値)はマスクした位置で計算し、原論文の式には\(1/t\)の重みも含まれます。単に固定割合の穴埋め問題を繰り返すだけでなく、生成モデルとしての目的関数が定義されています。原論文・2.1節

指示に答える学習では、回答側だけを隠す

SFT(指示と望ましい回答の組による教師あり追加学習)では、指示文を見えるままにし、回答のトークンだけをマスクします。

例えば「猫の様子を一文で書いて」という指示は保持し、回答側を「猫が/[マスク]/外を/[マスク]」にします。モデルは指示と見えている回答部分を手掛かりに、隠した箇所を予測します。著者公式ページ:Method

事前学習とSFTでマスクする範囲の違い

*原論文の概念を基にした独自図です。区画は説明用で、実際のトークン分割ではありません。*

学習時には、比較する元の文章があります。一方、利用時の新しい質問には正解の回答文が用意されていないため、学習した分布から候補を生成します。

生成では、予測候補の一部をマスクに戻す

ここからは、四つの区画を使った独自の教材例です。実際のモデル出力や確率ではありません。

質問・指示は見えるまま保持し、回答側を四つのマスクから始めます。

段階 モデルへ渡す回答側の状態 説明
開始 [マスク]/[マスク]/[マスク]/[マスク] 回答はまだ埋まっていない
1回目の予測 猫が/庭で/外を/見ている すべてのマスク位置に候補を出す
次へ残す状態 猫が/[マスク]/[マスク]/見ている 今回残す候補だけを保持し、他はマスクへ戻す
次の予測・確定 猫が/窓辺で/外を/見ている 残ったマスクを、見えている文脈から予測する

予測した候補の一部をマスクへ戻し次の段階で埋める過程

*原論文の概念を基にした独自の生成例です。途中の文章はモデルの実出力ではありません。*

この例では、1回目に候補として出た「庭で」をまだ確定せずマスクへ戻しています。次の予測では、残した周辺の情報を使って「窓辺で」という候補が出たと考えます。

重要なのは、予測した候補の一覧と、次の段階へ渡す状態を区別することです。 一度すべての候補が出ても、その時点で完成した回答とは限りません。

原論文には、候補をランダムに再マスクする考え方と、確信度(モデルがその候補へ与えた確率に基づく目安)の低い候補を再マスクする方法があります。後者はlow-confidence remaskingと呼ばれます。モデルの確信度が高いこと自体は、内容が現実に正しい保証にはなりません。原論文・2.4節

また、ここで示した流れは、確定して残したトークンまで毎回すべて書き換えるという意味ではありません。再マスクするのは、その段階でマスク位置に予測した候補の一部です。

原論文のLLaDAは、どこまでできた?

初代LLaDAは8B(約80億パラメータ)規模まで拡張され、8Bモデルは2.3兆トークンでゼロから事前学習されています。原論文では、言語理解、数学、コードなどの評価を行っています。

次は原論文v3のTable 1から、事前学習済みのBaseモデル同士の結果を抜粋したものです。

評価項目 LLaDA 8B Base LLaMA3 8B Base 提示する例の数
MMLU:幅広い分野の知識問題 65.9 65.4 5例
BBH:複数の難しい推論課題 49.7 62.1 3例
GSM8K:算数の文章題 70.3 48.7 4例

数値は原論文の評価スコアで、高いほどよい指標です。「提示する例の数」は、質問とともに与える例題数を指します。MMLUでは近い結果、GSM8KではLLaDAが高い一方、BBHではLLaMA3が高く、すべての課題で優位という結果ではありません。原論文・Table 1

学習データや学習量も同一ではないため、差をすべて生成方式だけの効果とみなすことはできません。原論文には同じデータで学習した自己回帰ベースラインとの規模比較もありますが、上の既存モデルとの比較表とは分けて読む必要があります。

本記事は報告された数値を紹介したもので、再測定は行っていません。また、2026年9月時点の最新モデルとの順位比較ではありません。

同時に予測できるなら、必ず速くなる?

同じ数のマスクを埋める設定なら、反復回数を減らすほど、一回の処理で確定する位置を増やすことになります。ただし、その分だけ予測を進める段階が減るため、品質との兼ね合いがあります。

例えば、説明用に8個のマスクを均等に減らすなら、次のように考えられます。

反復回数 1回あたりに確定する枠の数 計算
8回 1個 8÷8
4回 2個 8÷4
2回 4個 8÷2

この表は枠の数の算術例です。所要時間がそのまま2倍・4倍速くなることを意味しません。各回で処理する入力長、実装、ハードウェア、回答品質も影響します。

原論文v3の付録B.7では、A100 80GBを1枚、バッチサイズ1、出力長256などの条件で、速度と品質の関係を検証しています。GSM8KとMathではLLaMA3と同程度の性能を得る設定でスループット(単位時間あたりの生成量)の改善を報告していますが、別の課題では同じ傾向になりません。原論文・付録B.7

公式リポジトリのFAQにも、固定長の処理やキャッシュの利用、反復回数に関する効率上の注意が記載されています。したがって、拡散型という分類だけで速度を決めず、対象モデル・生成長・反復回数・品質をそろえて比較するのが適切です。LLaDA公式FAQ

BERTや画像の拡散モデルとの違い

BERTも穴埋めをするのでは?

BERT(文脈から文章の表現を学ぶモデル)にもマスクした部分を当てる学習があります。LLaDAの公式FAQでは、固定的なマスク率との違いや、0〜1にわたるマスク率と生成モデルとしての学習目的を説明しています。

「穴埋め」という見た目が似ていても、全マスク状態から繰り返し文章を生成する仕組みと、そのための学習を含めて比べる必要があります。公式FAQ:BERTとの違い

画像生成のノイズと同じものを文章へ加える?

画像の拡散モデルには、連続的な値へノイズを加え、そこから復元する方法があります。一方、本記事のLLaDAは、離散的なトークンをマスクに置き換える方式です。文章の文字を画像のようにぼかす処理ではありません。

拡散言語モデルには複数の設計があるため、すべてがLLaDAと同じマスク方式という意味でもありません。画像側の例はStable DiffusionとLatent Diffusionの解説で扱っています。

よくある疑問

回答の長さはどう決める?

初代LLaDAの基本的な生成では、最初に用意するマスク列の長さを設定します。生成後、EOS(文章の終わりを示すトークン)より後を除くため、用意した枠の数と表示される回答長は常に同じではありません。原論文・2.4節

左から順番に生成することはできない?

LLaDAは柔軟な生成方法を扱え、原論文では自己回帰的な生成や、区間ごとに進めるブロック拡散も検討しています。本記事は、全マスクから始める基本的な拡散生成を中心に説明しました。生成順序を変えたときの品質も、同じとは限りません。

マスクに戻せば、間違いを必ず修正できる?

候補を確定せず予測し直す余地は作れますが、誤りを検出する万能な仕組みではありません。事実確認や外部資料への照合は、生成方式とは別に必要です。

参考資料

文の区切り・中間候補・枠数の計算は説明用の独自例です。図は概念を再構成して作成し、原論文の図版やコードは転載していません。

コメント

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