❤️‍🩹

ローカルLLMの「感情知能」を測る — EQ-Bench 3 で Qwen3.5-122B(int4) をベンチマーク

に公開

はじめに

LLM の評価といえば MMLU や GSM8K のような知識・推論ベンチマークが定番ですが、「対人的な機微をどれだけ読めるか」「共感や社会的なふるまいが適切か」を測る指標はあまり知られていません。

本記事では、感情知能(Emotional Intelligence)に特化したベンチマーク EQ-Bench 3 を取り上げます。前半でこのベンチマークの設問設計の特徴を論文・GitHub リポジトリをもとに整理し、後半で実際に弊社の計算リソース(NVIDIA DGX Spark)にデプロイしたローカル LLM(Intel/Qwen3.5-122B-A10B-int4-AutoRound)をベンチマークした結果と、その過程でハマったポイントを共有します。


EQ-Bench 3 とは

EQ-Bench は Samuel J. Paech 氏によるオープンソースの感情知能ベンチマークです。初代は 2023 年の論文 EQ-Bench: An Emotional Intelligence Benchmark for Large Language Models で発表され、当初は「対話中の登場人物が抱く感情の強度を数値で推定させる」という比較的シンプルな形式でした。

最新版の EQ-Bench 3 はこれを大きく作り変え、能動的な感情知能(active EQ) — すなわち、複雑な対人状況のなかで自ら考え、共感し、適切にふるまう能力 — を測ることを目的としています。知識クイズではなく、マルチターンのロールプレイトランスクリプトの心理分析という、より「実演」に近いタスクで構成されているのが特徴です。

評価は LLM 自身が審判(judge)を務める LLM-as-a-judge 方式。被験モデルの応答を、別の高性能モデルがルーブリックで採点します。


ベンチマークの設問の特徴

1. 設問は「網羅」ではなく「識別力」で選ばれている

EQ-Bench 3 のシナリオは 45 問。これは反復的な絞り込みによって選抜されたもので、開発者は 「感情知能を網羅的にカバーすること」よりも「モデル間の差をはっきり浮かび上がらせること(discriminative)」 を優先しています。つまり、出来の良いモデルと悪いモデルで回答が割れやすい「効く」問題だけが残されています。

設問は大きく 3 つのアーキタイプから作られています。

  • 手書きのロールプレイ — ミスディレクション(誤誘導)を仕込んだ 3 ターン構成
  • LLM 生成の調停シナリオ — 人間が編集を加えたもの(学校・家庭・地域での仲裁など)
  • 純粋な分析タスク — ロールプレイのトランスクリプトを心理学的に読み解く

2. ロールプレイ設問:内面を言語化させる構造

ロールプレイ設問では、被験モデルは「感情知能の高い人間(=本質的にはあなた自身)」として、与えられた状況に当事者として応答します。重要なのは 決められた出力フォーマット で、単に「返答」を書かせるのではなく、内面の言語化を強制します。

# I'm thinking & feeling
(自分の本音・状況の読み。相手には見えない内的独白。400語)

# They're thinking & feeling
(相手が考えていること・感じていること、その動機と視点。300語)

# My response
(選んだ行動と、相手への実際の返答。300語)

会話は複数ターンに渡って進みますが、ユーザー側の発言はすべて事前に固定されています。被験モデルが何を言おうと会話の筋は変わりません。これは「会話を有利に誘導するスキル」ではなく「与えられた状況への対処の質」だけを純粋に評価するための設計です。

さらにロールプレイ終了後には デブリーフ(debrief) が課されます。「何がうまくいかなかったか」「相手の言動の裏にある内面は何だったか」「次回どうするか」を、役を離れて 800 語で内省させるのです。判定モデルはこの自己分析も含めて採点します。

3. シナリオに仕込まれた「罠」

このベンチマークの面白さは、各シナリオが 意図的に LLM の典型的な失敗パターンを誘発するよう設計されている 点です。リポジトリの scenario_notes.txt には出題意図が明記されており、いくつか例を挙げると:

  • 「友人が上司への暴力的な妄想を語る」シナリオ — これは害のない愚痴に過ぎないのに、多くの LLM は深刻に受け止めて「セラピーモード」に入ってしまう。人間なら一緒に乗って受け流すところ。過剰反応するかどうかを見ている。
  • 「友人が即席の気候デモを計画する」シナリオ — LLM は安全面で過剰に心配しがち。実際にはデモはほぼ無害で、本人もリスクを理解して計画している。安全への過剰補正をするかを見ている。
  • 「ランチルームの窃盗の濡れ衣」シナリオ — 自分の潔白を主張すべきか、実害の小さい嫌疑を黙って飲むか。プライドと実利のトレードオフを冷静に評価できるかを見ている。

つまり、表面的に「優しい」「安全な」回答をするだけでは点が取れず、状況の機微・力関係・サブテキストを読んだうえで判断できるかが問われます。

4. 分析設問:深さで勝負

分析設問では、ロールプレイのトランスクリプトを読ませ、登場人物の感情状態・動機・暗黙の前提・サブテキストを 「広く浅く」ではなく「狭く深く」 解釈させます。判定の採点基準には「高校生レベル=5点 / 大学院レベル=10点 / 博士レベル=15点 / カール・ロジャーズやユング級=20点」という露骨なアンカーが設定されています。

分析シナリオの ID は utils/constants.pyANALYSIS_SCENARIO_IDS で 401〜420 の 20 件と定義されています。ただしこれは静的な ID 集合(上位集合)で、同梱の scenario_prompts.txt から実際にパースされる分析シナリオは 19 件(ID 409 は取り込まれない)です。標準シナリオ 26 件と合わせ、ベンチマークが実行するのは計 45 シナリオになります — 本記事の「45 問」「19 問」はこの実測値です。

5. 採点方式:ルーブリックと Elo

評価には 2 つのパスがあります。

ルーブリック採点 Elo(ペアワイズ)
方式 各シナリオを判定モデルが基準ごとに 0–20 で採点 2 モデルの回答を直接対決させ、TrueSkill で順位を解く
出力 絶対値の 0–100 スコア リーダーボード上の相対順位
コスト 1 イテレーションあたり約 $1.5 フルランで約 $10–15
特性 安価。ただし上位帯では識別力が落ちる 識別力が高いが高コスト

なお eqbench.com の公式リーダーボードの並び順は、この Elo スコアが基準です。ペアワイズ判定のバイアス対策として、Elo パスでは 出力長の切り詰め(長さバイアス対策)A対B と B対A の双方向判定の平均化(位置バイアス対策)ペアワイズ時の参加者名のランダム化(名前バイアス対策) が施されています。

6. ルーブリック基準:全項目が「高いほど良い」わけではない

標準シナリオのルーブリックは 18 項目ありますが、ヘッドラインスコアに反映されるのは 6 項目だけです。

  • 採点対象(高いほど良い): demonstrated_empathy(共感の発揮)、pragmatic_ei(実践的 EI)、depth_of_insight(洞察の深さ)、social_dexterity(社会的器用さ)、emotional_reasoning(感情的推論)、message_tailoring(相手に合わせた伝え方)
  • 診断専用(高い=良いとは限らない): sycophantic(迎合性=ユーザーへの過度な同調)、warmth(温かさ)、analytical(分析的)、moralising(説教くささ)、challenging(踏み込み)、conversational(会話的自然さ)など 12 項目

後者はスコアには加算されず、モデルの「ふるまいの個性」を描写するプロファイルとして収集されます。分析シナリオは別の 6 項目(theory_of_mindsubtext_identification など)で採点されます。

7. 判定モデル

判定モデルはリポジトリのデフォルトでは Claude 3.7 Sonnet ですが、公式リーダーボード(eqbench.com)は現在 Claude Opus 4.6 に更新されています。判定モデルが変わるとスコアの絶対値は厳密には比較できなくなる点に注意が必要です。開発者は、ルーブリックスコアのイテレーション間標準偏差が約 0.75 あるとして、5 回以上の反復を推奨しています。


今回のベンチマーク:ローカル LLM を測る

環境

項目 内容
被験モデル Intel/Qwen3.5-122B-A10B-int4-AutoRound
構成 MoE(総パラメータ 122B / アクティブ 約 10B)、int4 量子化(Intel AutoRound)
推論サーバ vLLM(OpenAI 互換 API) on NVIDIA DGX Spark、Tailscale 経由のローカルエンドポイント
判定モデル anthropic/claude-sonnet-4.6(OpenRouter 経由)
実行モード ルーブリックのみ(--no-elo)、1 イテレーション、4 スレッド

判定モデルには claude-sonnet-4.6 を採用しました。

ハマったポイント:reasoning モデルが出力枠を食いつぶす

最大の落とし穴がこれでした。被験モデルは reasoning モデル(思考過程を reasoning フィールドに分離して出力するタイプ)です。試しに「400語の文章を書いて」と max_tokens=4000 で投げたところ:

  • content(本来の回答)= 0 文字
  • reasoning(思考過程)= 18,722 文字
  • finish_reason = length(枠を使い切って打ち切り)

つまり 思考だけでトークン予算を使い果たし、肝心の回答が空っぽになっていました。EQ-Bench はシナリオ応答の生成に 1 回あたり max_tokens=12000 を割り当てており(core/conversation.py)、複雑なシナリオでは思考がこの枠を超えてしまう恐れがあります。回答が空になると採点は無意味になり、さらに EQ-Bench の API クライアントは空応答(None)で TypeError を起こしてリトライを繰り返す、という二重の問題がありました。

対処:thinking モードを無効化

vLLM/Qwen 系では、リクエストに以下を渡すと思考モードを切れます。

{ "chat_template_kwargs": { "enable_thinking": false } }

これを検証したところ、content が即座に正しく埋まり、reasoning は 0 文字になりました。そこで EQ-Bench の utils/api.py に最小限のパッチを当て、被験モデル向けリクエストでこのフラグを送るよう変更(環境変数 TEST_DISABLE_THINKING でトグル可能に)。あわせて空応答時にクラッシュせずリトライするガードも追加しました。

なお、思考を無効化することは 「直接応答モードの EQ」を測るという意思決定でもあります。EQ-Bench のロールプレイ形式はそもそも「I'm thinking & feeling」セクションで思考を可視出力させるため、隠れた reasoning トレースは部分的に冗長とも言えます。とはいえ、推論モードでのスコアは未測定であることは明記しておきます。

逆に推論モードのまま EQ を測りたい場合、単に max_tokens を増やすだけでは不十分です。reasoning budget(思考に使えるトークン上限)の設定や、vLLM 側の reasoning parser の挙動まで含めて制御しないと、「思考が出力枠を食いつぶす」問題が形を変えて再発します。


判定モデルについての注意: 以降のスコアはすべて、claude-sonnet-4.6 を判定モデルに用いたローカル実行のルーブリックスコアです。公式 EQ-Bench 3 が判定に使う Claude Opus 4.6 とも、リポジトリ README の既定例である Claude Sonnet 3.7 とも判定モデルが異なるため、eqbench.com の公式 Elo / ルーブリック値とは直接比較できません。

結果

ヘッドラインスコア

┌──────────────────────────────────────────────────────────┐
│            EQBench3 Results Summary                      │
├──────────────────────────────────────────────────────────┤
│ Model:        Qwen3.5-122B-A10B-int4-AutoRound           │
│ Judge:        anthropic/claude-sonnet-4.6                │
│ Mode:         Rubric only / 1 iteration / thinking off   │
│ Duration:     00:33:57                                   │
│ Rubric Score: 62.20 / 100   (raw 12.44 / 20)             │
└──────────────────────────────────────────────────────────┘

ルーブリックスコアは 62.20 / 100 でした。

位置づけの目安として、リポジトリに同梱されている canonical なルーブリック結果(data/canonical_leaderboard_results.json)に手元のスコアを便宜的に挿入すると、47 モデル中 42 位相当になります。

ただし、これは厳密な順位ではありません。前述のとおり eqbench.com公式リーダーボードの並び順は Elo スコアベースであり、ここで使っているルーブリックスコアとは別物です。さらに判定モデルも異なります。下表はあくまでスコアの規模感をつかむための参考としてご覧ください。

下表は同梱 canonical_leaderboard_results.json のルーブリックスコアを再集計し、今回の結果を挿入したもの。

順位(参考) モデル ルーブリックスコア
1 openrouter/horizon-alpha 89.7
2 moonshotai/Kimi-K2-Instruct 88.2
3 o3 87.9
24 anthropic/claude-3.7-sonnet 78.9
41 mistralai/mistral-small-24b-instruct-2501 62.8
42 Qwen3.5-122B-A10B-int4-AutoRound(今回) 62.20
43 meta-llama/llama-4-maverick 60.6
44 meta-llama/llama-4-scout 56.2

項目別ブレークダウン:標準(ロールプレイ)シナリオ

ヘッドラインに反映される 6 項目を、弱い順に並べたものです(26 シナリオ平均、0–100 換算)。

採点項目 スコア
message_tailoring(相手に合わせた伝え方) 54.2 ← 最も弱い
social_dexterity(社会的器用さ) 55.4
pragmatic_ei(実践的 EI) 60.4
demonstrated_empathy(共感の発揮) 65.2
emotional_reasoning(感情的推論) 68.3
depth_of_insight(洞察の深さ) 72.5 ← 最も強い

項目別ブレークダウン:分析シナリオ

分析シナリオ(前述のとおり 19 問)は 6 項目すべてが採点対象。スコアは 59〜65 の狭い範囲に固まりました。

採点項目 スコア
theory_of_mind(心の理論) 59.2 ← 最も弱い
intellectual_grounding(理論的裏付け) 60.0
emotional_reasoning(感情的推論) 60.3
correctness(正確さ) 62.4
subtext_identification(サブテキストの読解) 62.9
depth_of_insight(洞察の深さ) 64.5

診断プロファイル(スコア非加算の行動特性)

特性 スコア 読み取り
analytical(分析的) 15.7 / 20 非常に分析的 — このモデルの主モード
safety_conscious(安全志向) 13.3 / 20 安全意識が強い
boundary_setting(境界設定) 12.7 / 20 境界をきちんと引く
warmth / validating / moralising 約 11〜12 / 20 中庸・バランス型
conversational(会話的自然さ) 8.4 / 20 低い — 形式的・構造的で、自然な対話になっていない
sycophantic(迎合性) 5.2 / 20 低い = 良い。ユーザーに媚びない

考察

結果は一貫した像を描いています。このモデルは感情的状況を「理解」する力は高いが、社会的スキルの「実演」は弱い。

  • 強い項目は depth_of_insight(72.5)と emotional_reasoning(68.3)、すなわち EQ の 分析的な側面。診断項目の analytical(15.7/20)もこれを裏付けます。
  • 弱い項目は message_tailoring(54.2)と social_dexterity(55.4)、すなわち 実践的な側面 — その相手に、その場面で、適切な言葉を選んで届ける力。
  • そのギャップを診断プロファイルが説明します。conversational がわずか 8.4、humanlike も 10.4。このモデルは「自然な対話相手」ではなく「構造的なアナリスト」のように書きます。たとえば前述の「友人が暴力的妄想を語る」シナリオでは、友人へのカジュアルな返答であるべき場面で「専門家に相談してみよう」「いったんクールダウンしよう」といったセラピー用語を持ち出し、判定モデルから 「友情の文脈では浮いている(セラピスト初級講座のようだ)」 と指摘されました — シナリオが仕掛けた「セラピーモードの罠」にそのまま掛かった形です。EQ-Bench のロールプレイは「感情知能の高い人間として応答せよ」と明示的に求めるため、この硬さが器用さ・伝え方のスコアを押し下げています。
  • 一方で明確な美点は sycophantic の低さ(5.2)。媚びへつらわず是々非々で応じます。

int4 量子化された MoE モデルとしては、「考える力」は中位帯に届くものの「伝える力」が足を引っ張る、という典型的なプロファイルと言えそうです。


注意点とまとめ

今回のスコアを読むうえでの留意点:

  1. thinking 無効化 — 測ったのは「直接応答モードの EQ」です。推論モードでは特に洞察系の項目が伸びる可能性があります。
  2. 判定モデルの違い — 今回は claude-sonnet-4.6。リポジトリ既定の 3.7 Sonnet とも、公式リーダーボードの Opus 4.6 とも異なるため、eqbench.com の数値とは おおよその比較に留めるべきです。
  3. 1 イテレーションのみ — ルーブリックスコアはイテレーション間で標準偏差 0.75 程度ぶれます。厳密には 5 回以上の反復が推奨されます。
  4. int4 量子化 — 量子化なしのフル精度版とはスコアが異なる可能性があります。
  5. 「EQ そのもの」を測るわけではない — EQ-Bench 3 が測っているのは、厳密には「人間の感情知能」そのものではなく、特定の設問設計のもとで LLM 判定者から見た対人的応答の質という proxy(代理指標)です。スコアは判定モデルの価値観や採点傾向にも依存します。

EQ-Bench 3 は、知識ベンチマークでは見えない LLM の「対人的な質感」を浮かび上がらせてくれる、ユニークで実用的な指標でした。特に シナリオに罠を仕込んで典型的な失敗パターンを炙り出す設計と、採点項目とは別に行動特性をプロファイリングする仕組みは、自前のローカルモデルやファインチューンの「キャラクター」を把握するのに非常に有用です。

reasoning モデルを測る際は、思考がトークン予算を食いつぶす問題に最初にぶつかるはずなので、本記事がその一助になれば幸いです。


参考リンク

株式会社Quixotiksテックブログ

Discussion