Skip to main content

evaluate_score_with_buf

Function evaluate_score_with_buf 

Source
pub fn evaluate_score_with_buf(
    logits: &[f64],
    criteria: &Criteria,
    temperature: f64,
    probs_buf: &mut [f64],
) -> Result<Answer>
Expand description

作業用バッファを活用し、Score プリミティブの生ロジットから加重平均スコア実数値、確率分布、および分散確信度を算出する。

§概要

  • 呼び出し側から作業用バッファスライス (probs_buf) を受け取ることでヒープ確保を最小化する。
  • 順序尺度評価配列 (Criteria::List) とロジット列を結合し、$M \in [2, 10]$ 段階の評価を行う。
  • 加重平均期待値 $\hat{s} = \sum_{k=0}^{M-1} k \cdot p_k$ を連続値スコアとして算出する。
  • 確信度には順序尺度のバイモーダル(両極端割れ)と低分散(隣接割れ)を適切に分離する 正規化分散確信度 $C_{\text{var}} = 1.0 - \frac{4 \cdot \text{Var}[S]}{(M-1)^2}$ を採用する。
  • 確率マップのキーには、評価段階ラベルに重複がない場合はそのラベル名を用い、 重複または空文字が存在する場合はインデックス文字列 ("0", "1", …) を用いる。 $M \le 10$ であるため、重複検査はヒープ確保を行わずにスタック上の二重走査で実施する。

§引数

  • logits: 未正規化の生ロジットスライス(f64)。
  • criteria: 順序付けられた評価段階基準の配列。
  • temperature: 適用する較正温度パラメータ $\tau$。
  • probs_buf: 確率分布書き込み用の作業バッファスライス(logits と同長が必要)。

§戻り値

  • 成功時は Score 判定が格納された Answer、入力不正時は CoreError。