今回の論文
今回取り上げるのは、Yung-Sung Chuangらの「DoLa: Decoding by Contrasting Layers Improves Factuality in Large Language Models」です。2023年にarXivで公開され、ICLR 2024で発表されました。公開元はarXivおよびICLR、URLは https://arxiv.org/abs/2309.03883 、研究分野はLLMの推論・デコード最適化と事実性です。
選んだ理由は、モデルを再学習せず、RAGの検索器も増やさずに、既存LLMの内部層を推論時に読み替えるだけで回答の事実性を改善するからです。モデルを「一つの黒箱」として扱わず、同じ生成過程にある複数段階の予測差を品質信号にする考え方は、LLMアプリの低コストな改善に直結します。
どんな技術か
DoLa(Decoding by Contrasting Layers)は、Transformerの最終層と途中層が出す次トークン予測の差を強調して生成するデコード手法です。最終層だけで「次に何を出すか」を決める通常の生成に対し、DoLaは途中層のもっともらしい予測を基準に、最終層で新たに強まった候補を選びやすくします。
論文の観察では、文法的に自然な単語や入力文のコピーは中間層までに予測が固まりやすい一方、人名・日付などの事実知識を必要とするトークンでは上位層まで予測分布が変化します。DoLaはこの変化を使い、表面的に自然だが誤った候補より、最終層が追加した知識を反映した候補を浮かび上がらせます。追加学習なし、外部知識なしで使える推論時の後処理です。
課題
LLMは自然な文章を作れても、もっともらしい誤情報を生成することがあります。とくに固有名詞、日付、制度、科学的事実では、文脈に合う定番表現が正解より高く選ばれやすいことがあります。
- 次トークン予測で学習したLLMは、文章として頻出・自然な続きに確率を寄せます。そのため、事実と矛盾していても流暢な候補を選び得ます。
- RAGは外部根拠を与えられますが、検索失敗、文書整備、レイテンシ、運用コストという別の問題を持ちます。最新情報が不要な質問にも毎回検索をかけるとは限りません。
- 事実性のためのファインチューニングや介入学習は、データ、GPU、再評価を必要とします。モデルの重みを触れない場合や、既存のオープンモデルをすぐ改善したい場合には導入しにくいです。
実際には、社内ナレッジ検索の前段回答、技術サポートの定型説明、モデルの素の知識で答えるオフラインアシスタントなどで問題になります。DoLaは外部根拠の代わりではありませんが、「モデル内部に既にある知識をより使わせる」推論制御としてこの隙間を狙います。
用語解説
- ロジット(logit)
- softmaxで確率へ変換する前の、語彙ごとのスコアです。DoLaは最終層と途中層のロジット由来の予測を比較するため、確率そのものよりも「どの候補がどれだけ相対的に強まったか」を扱えます。
- デコード
- LLMが次トークンの確率分布から実際に出力するトークンを選ぶ推論処理です。DoLaはモデルの重みを変えず、この選択規則だけを置き換えます。
- 早期退出(early exit)
- 最終層まで通さず中間層の出力で予測する考え方です。DoLaでは速度目的で止めるのではなく、同じ語彙ヘッドを途中層へ適用し、比較対象となる「未成熟な予測」を得るために使います。
- Jensen-Shannon Divergence(JSD)
- 二つの確率分布の違いを対称的に測る指標です。DoLaは各生成ステップで、最終層と最も食い違う途中層を選び、知識が変化した箇所を動的に捉えます。
- 適応的もっともらしさ制約(APC)
- 最終層で確率が極端に低い語を比較対象から外す制約です。途中層との差分だけが大きい不自然な語を誤って選ばず、通常の言語的な妥当性を保つために重要です。
技術の仕組み
DoLaは、既存Transformerを一回だけ順伝播させた途中で複数の層出力を取り出します。そのため別の小型モデルを用意するContrastive Decodingとは異なり、同じモデル自身を比較相手にできます。
最終層と途中層を同じ語彙空間へ写す
入力列を通した第j層の最後の隠れ状態をh_j、最終層をh_N、語彙ヘッドをφとします。通常のLLMはsoftmax(φ(h_N))だけで次トークンを選びます。DoLaでは候補となる途中層jにも同じ語彙ヘッドを適用し、q_j = softmax(φ(h_j))を作ります。
残差接続を持つTransformerでは、中間層の表現も最終層と完全に無関係ではありません。したがって専用の出力ヘッドを訓練しなくても、途中層の予測を比較材料として使えます。ただし、これは論文で検証されたLLaMA系を中心とする経験的な前提であり、全モデルで同程度に機能する保証ではありません。
トークンごとに比較する途中層を選ぶ
固定した一層を常に引くのではなく、DoLaは最終分布q_NとのJSDが最大の途中層を選びます。つまり、各生成ステップで「最終層に至るまで予測が最も変わった層」を未成熟層Mとして選びます。
候補層は全層を無制限に探すのではなく、深さを2〜4個のバケットに分け、検証セットでどの範囲を使うかを決めます。さらに論文では偶数番目の層だけを候補にして計算を抑えています。事実を問う短い回答では上位層のバケット、長文事実性や推論では下位層のバケットが選ばれる傾向があり、用途ごとに同じ設定でよいわけではありません。
確率の比で最終層の新情報を強める
選んだMに対し、DoLaは候補語wのスコアを概念的にlog q_N(w) - log q_M(w)、すなわちlog(q_N(w) / q_M(w))として再計算し、softmaxで正規化します。最終層で急に確率が上がった語ほど高くなり、途中層からずっと高いだけの語は相対的に抑えられます。
しかし、途中層でほぼゼロだった不自然な語は比が不安定になります。そこで最終層確率が最大候補のα倍未満の語を除外するAPCを使います。論文の設定はα=0.1です。長い推論では繰り返しが増える場合があるため、反復ペナルティθ=1.2も加えています。
実験と結果
論文はLLaMA 7B、13B、33B、65Bを使い、選択式の事実性、自由生成の事実性、Chain-of-Thought推論、チャット応答で評価しました。比較対象は通常のデコード、別の小型LLMを比較相手にするContrastive Decoding(CD)、ラベル付き線形分類器を使うInference Time Intervention(ITI)です。
TruthfulQAとFACTORでの事実性
TruthfulQAの自由生成では、真実性と情報量を掛けた%Truth×Infoが、LLaMA-7Bで26.9から40.8、13Bで32.4から44.6、33Bで31.7から49.1、65Bで34.8から49.2へ向上しました。真実性だけを上げるために回答拒否が増えたわけではなく、情報量は各サイズで90%超、拒否率は10%未満でした。
選択式TruthfulQAでも、例えば7BのMC3は19.2から32.1、65Bは22.7から34.3になりました。長い段落の正誤を選ぶFACTORでは改善幅はより小さいものの、NewsとWikiで概ね2〜4ポイント改善しました。短い事実問題と長文では有効な比較層の範囲が違ったことも、実運用での検証が必要な理由です。
推論・チャットへの影響
StrategyQAでは四つのモデルサイズで1〜4ポイント、GSM8Kでは7Bを除く多くのサイズで約2ポイントの精度改善を報告しています。一方、算数推論を万能に強化する手法ではありません。DoLaの主目的は事実性であり、推論の形式・プロンプト・モデル世代によって効果を測る必要があります。
Vicuna QAではGPT-4によるペア比較で、通常デコードより好まれる結果を示しました。ただし、LLM-as-a-judge評価には評価器の偏りがあり、製品判断では自社の質問セットと人手レビューも併用すべきです。
速度コスト
貪欲デコードのレイテンシは、7Bで45.4ms/tokenから48.0ms/token、13Bで77.3から83.1ms/tokenとなり、論文では1.01〜1.08倍の増加でした。複数の中間層で語彙分布を得るぶんコストはゼロではありませんが、別モデルをもう一つ実行するCDより構成を増やさずに済みます。実際の差は語彙サイズ、候補層数、推論サーバーの実装で変わります。
何に使える?
RAGの「検索なし」分岐
質問分類で、時点依存性が低くモデル内知識で答えられる問い合わせを検索なしに振り分ける場合、DoLaを候補にできます。毎回検索するよりレイテンシと検索基盤コストを下げられる可能性があります。ただし回答を根拠付きにする用途では、DoLaだけで出典を作れないため、RAGを置き換えるのではなく補助的に使います。
オープンモデルのサポート回答
製品仕様・FAQのような固定知識を扱うローカルLLMでは、再学習前にDoLaをA/B評価する価値があります。正答候補がモデル内部にあるのに、定型的で誤った説明を選ぶ失敗なら改善余地があります。モデルの重みやデータを変更しないため、量子化版モデルのデコード実験としても切り分けやすいです。
生成品質の診断信号
層間JSDを常に使わなくても、大きな差が出たトークン位置をログに残せます。日付・製品名・数値のような重要スパンで差が大きい回答を再検索・人手確認へ送る、といった不確実性ルーティングの特徴量になります。これは論文が直接検証した製品機能ではなく、層間差を品質監視に転用する応用上の推測です。
開発や事業へのヒント
まずはデコードを交換可能にする
LLMアプリでは、モデル・プロンプト・検索器を差し替え可能にしても、デコード器は固定されがちです。温度、top-p、繰り返しペナルティと同様に、DoLaの有無、対象層バケット、αを実験設定として分離すると、再学習なしの改善余地を比較できます。
正答率ではなく失敗型ごとに評価する
DoLaは「正解を外部から注入する」技術ではありません。社内FAQなら、もっともらしい誤日付、固有名詞の取り違え、根拠のない補完、回答拒否という失敗型に分け、通常デコード・DoLa・RAGを比較する設計が有効です。DoLaが効くのは、正答がモデル内にありつつ表層的な候補に負けるケースです。
小さな検証からRAGと組み合わせる
DoLaは出典提示や最新情報への追随を保証しないため、高リスク回答を単独で任せるべきではありません。一方で、検索結果の要約・引用以外の補足文、検索が失敗したときの暫定回答などに限定し、根拠一致評価とセットで試せます。推論時制御、検索、検証器を役割分担させる設計が現実的です。
限界
DoLaは事実データベースではありません。学習時に誤って覚えた知識、学習後に変化した情報、モデル内にない情報は直せません。最新の価格、法令、社内の更新情報には検索や信頼できるツール呼び出しが必要です。
また、論文の主な評価はLLaMA 7B〜65Bと定められたベンチマークです。新しいアーキテクチャ、指示チューニング、MoE、量子化、独自語彙ヘッドでも同じ層分業があるとは限りません。中間層の出力を取得できない閉鎖APIには適用できません。
実装面では、候補層のロジット計算、JSD、層バケット選択が増えます。小さい遅延増でも高スループット環境では効くため、バッチ処理時の性能を実測すべきです。固定層を選ぶDoLa-staticはデータ分布に敏感で、論文でも動的選択がより頑健とされます。さらに、実例ではDoLaが詳細だが誤った回答を作る反例もあり、事実性の改善は個々の回答の正しさを保証しません。
よくある質問
Q. DoLaはRAGの代わりになりますか?
A. なりません。DoLaはモデルに内在する知識の出し方を変えるだけで、外部文書を参照しません。最新情報、社内文書、引用付き回答が必要ならRAGやツール呼び出しが必要です。検索なしで答える固定知識の質問を改善する補助として考えるのが適切です。
Q. DoLaを使うにはLLMを再学習する必要がありますか?
A. 必要ありません。推論時に最終層と候補となる中間層の出力を取得し、選択規則を置き換えます。ただし、タスクに合う層バケットとAPCの設定を小さな検証セットで確認することは必要です。
Q. API経由のLLMにも導入できますか?
A. 通常は難しいです。DoLaには各Transformer層の隠れ状態またはロジットが必要ですが、多くのホスト型APIは最終出力しか返しません。モデル内部を取得できるオープンウェイトモデルや自前推論基盤が対象です。
Q. どれくらい遅くなりますか?
A. 論文の貪欲デコードでは1.01〜1.08倍のレイテンシ増でした。候補層数を絞り、同じ順伝播から中間表現を取り出すため、別モデルを動かす方式より軽くできる可能性があります。ただし実際のGPU、バッチサイズ、語彙サイズで測定してください。
Q. DoLaは数学やコード生成も改善しますか?
A. 論文ではStrategyQAとGSM8Kに一定の改善がありましたが、万能な推論強化ではありません。コード生成や厳密な計算では、テスト実行、型検査、外部検証器、サンプル比較など、タスク固有の検証を優先すべきです。
今日の学び
この論文は、LLMが自然でも誤った候補を選ぶハルシネーションの課題を扱いました。DoLaは、最終層と途中層の予測差をトークンごとに比較し、最終層で強まった知識をデコードへ反映します。
得られるヒントは、モデル改善を再学習かRAGの二択にしないことです。既存モデルの内部信号を、推論時の選択・監視・再検証の判断材料として使えるかを評価すると、低コストで品質を上げられる余地があります。