1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

学習なしで“体感”を上げる:Qwenに層コンセンサスとMC合議を差し込んで比較

Last updated at Posted at 2025-11-06

TL;DR

  • 重み・追加データいじらず推論器(デコーダ)だけを改造:
    層コンセンサス(中間層ロジットをJSD重みで統合)
    MC合議(最終隠れ状態にDropoutを注入してK本平均)
  • Colabで再現できるノート付き。greedy / max_new_tokens=1024で比較。
  • 手元の難問5題では、Layer-Consensus(A)が最も堅実、MC合議(B)は長尺で冗長化が出やすい

配布ノート:Open In Colab

ねらいと前提

  • ねらい:学習なしで、取り違え・冗長化の抑制など「体感」を改善できるかを検証。
  • 前提:モデル改造=推論器(デコード時処理)に限定。重み・追加データは一切使いません。

比較する3モード

  • Baseline:最終層ロジットのみで次トークン決定(合議なし)。

  • Consensus-A(層コンセンサス)

    • output_hidden_states=True で選択層の隠れ状態を取り出し、lm_headで語彙ロジット化。
    • 各分布を Jensen–Shannon 距離に基づく重みで合成し、元の最終分布と blend
    • 不一致ゲート:平均JSDが閾値超え時に温度を下げ、上位語彙のユニオン以外を抑制。
  • Consensus-B(MC合議)

    • モデルはevalのまま、最終隠れ状態 h_last にだけ Dropout を注入して K本サンプリング
    • それぞれを lm_head に通して分布を平均(Aの合議に併載)。
    • repetition penalty を強めに設定(暴走抑制)。
    • 注:層の再前向きはしないため、キャッシュ破壊なしでオーバーヘッドは軽微(lm_head相当×K)。

いずれも LogitsProcessor相当の実装方針で、モデル重みは不変。vLLM等でも常時ON運用がしやすい設計です。

実験条件(ノート既定値)

  • モデルQwen/Qwen2.5-1.5B-Instruct

  • System公式デフォルト(= userメッセージのみをchat templateに通す)

  • 生成do_sample=False(greedy)、max_new_tokens=1024

  • 外部ツール/フォーマットクランプ:不使用

  • ハイパラ(抜粋)

    • A:layer_select=(0.33,0.66,-1.0), blend=0.55, jsd_gate=0.06, agree_top_k=60, rep_penalty=1.1
    • B:A+mc_k=3, mc_p=0.1, blend=0.45, rep_penalty=1.12

問題セット(暗記不要な短推論/手続き系・5題)

  1. 二段算術(括弧+割算)
  2. うるう年境界の 曜日
  3. 論理(A→B, B→C, ¬C ⇒ ¬A ?)
  4. 三段ソート(得点↓ → 日付↑ → 名前↑、名前のみ出力
  5. 文字列操作(母音除去 → 逆順

正答(参照)

  • Q1:(((97×43 − 58×29) + (125×16 − 2048)) ÷ 7) = 2441 / 7 = 348.7142857…
  • Q2:2000-02-28 → +3日 = 2000-03-02(木)
  • Q3:はい。理由:A→C が成り立ち、¬C なら ¬A(モーダス・トーレンス)
  • Q4:kato, abe, sato, suzuki
  • Q5:'algorithmic' → 母音除去 lgrthmc → 逆順 cmhtrgl

結果(このノートの実行例)

  • Q2(曜日):Baseline / A / B 全員正解
  • Q3(論理)A が正解、Baseline/B は理由に破綻。
  • Q1・Q4・Q5:全体に崩れ(冗長化・取り違え・出力形式逸脱)が見られ、Aが相対的にマシだが満点ではない。
  • 合計(5題中):Baseline 1/5A 2/5、B 1/5(実行ログ準拠)。

所感

  • A(層コンセンサス)は取り違え抑制に効きやすい。
  • B(MC)は多様性が出る一方、長尺(1024)で冗長化しやすい。
  • 公式System固定・クランプなしのため、出力の短文化はプロンプト/パラメータ次第

すぐ試せる調整(学習なし)

  • Aを堅実寄りblend=0.50jsd_gate=0.08agree_top_k=40rep_penalty=1.25
  • Bの暴走抑制mc_k=2mc_p=0.08blend=0.40rep_penalty=1.30
  • 実装側の小改良(必要なら):JSD重みの鋭さ(例 alpha=12)、n-gramブロック(3-gram重複の強制抑止)、早期停止(改行/句点で停止)など。

使い方

  1. ノート(上の配布用)を開き、上から順に実行
  2. 1枚GPUでOK(Device: cuda を確認)。
  3. モデル変更は MODEL_ID のみ。ハイパラは CFG_A / CFG_B を編集。
  4. 出力は逐次 printで、各問 Baseline → A → B の順に表示。

まとめ

  • 学習なしでも、層コンセンサス+MC合議推論器改造で、Qwenの取り違え/冗長の抑制を狙える。
  • 今回の設定では A が最も安定。B はケースによって有効だが、長尺では冗長化しやすい。
  • いずれも 重み不変・常時ON運用に向く実装で、試行コストが低い。まずは A常用+Bは状況併用が無難。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?