合計したあとの調整
新人枠の条件が大きく変わった。作者の減衰とフォロー外割引は vm-ranker の再計算で掛かる。
この章で分かること
- 新人枠が「1件だけの席」であること、新しい条件が分かる
- 連投が不利になる度合いを数値で言える
- どの調整がどのサービスで掛かるかを説明できる
項目を合計したあと、いくつかの調整が順番に掛かります。ここを知らないと「点数が高いはずなのに」の説明がつきません。
その前に ─ オフセット変換
まず、合計値が負になった投稿の扱いです。負のスコアは 0 〜 0.001 という狭い帯域に線形に圧縮され、正のスコアには 0.001 が足されます。scoring.rs:161-170
調整① 新人枠 ─ 1リクエストにつき1件
「新人アカウントが全体的に優遇される」仕組みではありません。
effective[best_idx] = effective[best_idx].max(target);max。1件だけを引き上げます。author_cold_start.rs:330-331target は「点数の降順で16番目のスコア」です。公開既定では、毎回のリクエストで条件を満たす投稿の中から1件を選んで、16位相当まで持ち上げます。選び方は今回、単純な点数順からトンプソンサンプリングに変わりました。
| 条件 | 前回 | 今回 |
|---|---|---|
| 返信でない・リポストでない | 必須 | 必須 |
| 著者のフォロワー数 | 1,000人以下 | 50,000人以下 |
| ホームでの表示回数 | 1,000回未満 | 200回未満 |
| 点数付き候補内の順位 | 上位85%以内 | 上位97%以内 |
| 投稿の年齢 | 一部実験群で24時間 | 2時間以内 |
| 引き上げ先 | 16位相当 | 16位相当(15〜16の範囲) |
| 選び方 | 点数が最大の1件 | トンプソンサンプリングで上位2件から |
調整② 同じ作者の連投は減点される
同じ著者の投稿が並ぶと、2本目以降に倍率が掛かります。
倍率 = (1 − 0.25) × 0.5k + 0.25(vm-ranker の静的既定)
k は「同じ作者で、自分より上位にある投稿の本数」です。1本目は減衰なし、2本目で0.625倍、3本目で0.4375倍。下限は0.25倍です。
調整③ フォロー外は0.75倍
フォローしていないアカウントの投稿には ×0.75 が掛かります。
| 状況 | 倍率 |
|---|---|
| フォロー中 × オリジナル投稿 | 1.00 |
| フォロー中 × 返信・リポスト | 0.75 |
| フォロー外 | 0.75 |
| トピック指定時のフォロー外 | 0.50 |
適用の順番と、サービスの分担
home-mixer
Phoenix予測 → Σ(予測値 × 係数) → オフセット変換
→ 新人枠の候補を1件決める
vm-ranker(home-mixer から呼ばれる)
Σ(予測値 × 係数) → オフセット変換
→ 新人枠の引き上げ
→ 同一作者の減衰(×0.75·0.5^k+0.25)
→ フォロー外割引(×0.75)
→ DPP多様化(選外は0)ほかに、実験用の仕組みも vm-ranker にあります。係数の個人別のゆらぎ(WeightPerturbationSigma)、著者別の探索ボーナス、予測の補正(debias)です。公開既定ではどれも無効で、値は0です。params.rs:157-168 params.rs:199-204 params.rs:254-265
下の計算機で、計算を「vm-ranker の調整込み」に切り替えて、つまみを動かしてみてください。同じ予測でも、減衰と割引で結果がどれだけ変わるかが見えます。「home-mixer の基本スコア」では、この2つは掛かりません。新人枠と多様化は含まれていないので、実際のフィードの順位を再現するものではありません。
スコア計算機
左は「AIがそう予測した確率や秒数」で、実際の回数ではありません。公開されている既定値で、コードと同じ順番に計算します。あなたの実際のフィードの順位を再現するものではありません。
- 40.00%×0.66=+0.264
- 5.00%×5=+0.250
- 3.00%×1=+0.030
- 0.60%×5=+0.030
- 0.40%×20=+0.080
- 0.50%×5=+0.025
- 0.80%×2=+0.016
- 0.30%×4=+0.012
- 12.00%×0.3=+0.036
- 4.00%×0.2=+0.008
- 6.00%×0.05=+0.003
- 5.00%×0.02=+0.001
- 1.00%×0.05=+0.001
- 45.00%×0.05=+0.023
- 25秒×0.006=+0.150
- 1.5秒×0.4=+0.600
- 10.00%×0=+0.000
- 0.05%×-52.272=-0.026
- 0.02%×-31.2=-0.006
- 0.02%×-58.8=-0.012
- 0.01%×-234=-0.023
- 55.00%×-0.02=-0.011
- プラスの合計
- +1.528
- マイナスの合計
- −0.079
- 差引
- +1.449
- オフセット変換+0.001
- 1.4505
- 同一作者の減衰この計算では掛かりません
- 適用なし
- フォロー外割引この計算では掛かりません
- 適用なし
home-mixer が手元で計算する基本スコアです。本番の最終スコアは、このあと vm-ranker で計算し直されます。
新人枠の引き上げ、探索ボーナス、debias、DPP多様化、公開されていない実験設定は含みません。
計算手順 scoring.rs:69-140
オフセット scoring.rs:161-170
既定値 param.rs:396-514減衰なし value_model.rs:45-48