概要
- System one型意思決定モデル の仕組みと利点を解説
- 出力制約 による高速な選択肢推論プロセスを紹介
- Qwen/Qwen3-1.7B を用いた実装例と精度検証を提示
- キャリブレーション(温度スケーリング) による信頼度の調整手法を説明
- GitHubリポジトリ での実践的な実装案内
System one型意思決定モデルの概要
- System one は、あらかじめ決められた選択肢から 確率的に即座に回答 を選ぶモデル
- 通常の言語モデル では、JSONなど構造化出力のためにトークンごとに逐次生成が必要
- 例:11トークンの出力なら 11回の推論パス が必要
- System one型 では、 選択肢(A,B,C,D,Eなど) に出力を制約
- 語彙をマスキング し、他のトークンは選択不可
- 最も確率の高い選択肢 を一回の推論で決定
- 出力が 制約内 に限定されるため、 高速化 とシンプルな信頼度推定が可能
- ただし、 正解保証はなく、確率は「次のトークンの自信度」に過ぎない場合が多い
Qwen/Qwen3-1.7Bによる実装例
- Python + HuggingFace Transformers で簡易実装可能
- モデル名: Qwen/Qwen3-1.7B
- 選択肢:["A", "B", "C", "D", "E"]
- 選択肢ごとにトークンID を取得し、 logits から該当部分のみ抽出
- softmax で確率化し、最も高いものを予測結果とする
- 入力例:
- 質問:「What color is the sky?」
- 選択肢:A:Red, B:Blue, C:Green, D:Purple, E:I don't know
- 出力例:B(Blue)が0.9988で最も高い確率
コード例(抜粋)
- トークンID取得
option_token_ids = [tokenizer.encode(opt, add_special_tokens=False)[0] for opt in options]
- 出力確率計算
probs = torch.softmax(logits[option_token_ids].float(), dim=-1)
精度評価とファインチューニング
- CommonsenseQA データセットで精度評価
- サンプル精度:約0.594(1.7Bモデル)
- ファインチューニング後、精度やF1スコアが向上
- 各選択肢ごとのprecision/recall/f1 を測定し、全体の マクロF1スコア も算出
信頼度キャリブレーションの問題
- 曖昧な問題 では、モデルが 過剰な自信 を持つ傾向
- 例:「Where would you most likely find a bat?」のような複数解釈が可能な設問
- 生の出力確率 と実際の正答率が乖離
- 例:0.9~1.0の確率帯で正答率70%程度に留まる
- 温度スケーリング で分布を平坦化し、 信頼度と実際の精度を整合
- 最適温度(例:3.797...)を設定し、 キャリブレーション を実施
- 各信頼度帯での正答率がより一致するように調整
実践・応用
- GitHubリポジトリ にて
- データセット作成
- 評価・ファインチューニング
- キャリブレーション手順を公開
- 他の大型モデル でも同様の手法を試行可能
- 選択肢制約型推論 と 信頼度キャリブレーション の組み合わせによる高効率な意思決定AIの構築が可能