「点数」の正体
+20点は「コピーされたら加算」ではない。AIの予測確率に掛かる係数である。
この章で分かること
- 「リンクコピー+20点」の本当の意味が説明できる
- 「通報1件でいいね468件が消える」が誤りである理由が分かる
- 自分で点数を計算できるようになる
この章だけで、世間に出回っている誤解のほとんどが片づきます。ここを外すと、公開コードを読んでも全部ずれます。
世間で言われていること
−234とコピーの+20は、いまも `param.rs` の既定値です。いいねは0.66に変わったので、割り算すると約355になります。ただ、値が変わっても変わらなくても、この読み方そのものが誤りです。
正しくはこうです
「リンクコピーされたら +20点」ではありません。「この閲覧者は、この投稿を見たらリンクコピーしそうか?」をAIが確率で予測し、その予測確率に20を掛けるのです。
コードにすると、たったこれだけです。
fn apply(score: Option<f64>, weight: f64) -> f64 {
score.unwrap_or(0.0) * weight
}score はAIの予測値、weight が公開されている係数です。scoring.rs:57-59たとえばAIが「この人がこの投稿をリンクコピーする確率は3%」と予測したなら、加算されるのは 0.03 × 20 = 0.6 です。誰かが実際にコピーしたかどうかは、この計算に一切関係ありません。
X自身がコードで否定している
この誤解については、X自身がコードのコメントで説明しています。要点は4つです。scoring.rs:28-56
- 01係数は予測確率に掛かる。生の件数には掛からない。
- 02だから「通報1件=いいね468件」という読み方は誤りである。
- 03通報の基礎発生確率はいいねの1000分の1以下なので、係数を大きくしないとランキングに影響できない。
- 04推薦は個人化されているため、悪意ある大量通報は「その通報者に似た人」の画面にしか主に効かない。
実際に計算してみる
ある投稿・ある閲覧者について、AIが次のように予測したとします。数値は説明のための仮定です。
| 予測される行動 | 確率 | 係数 | 点数 |
|---|---|---|---|
| いいねする | 40% | 0.66 | +0.264 |
| 返信する | 5% | 5.0 | +0.250 |
| リンクをコピーして共有 | 3% | 20.0 | +0.600 |
| 作者をフォローする | 0.5% | 4.0 | +0.020 |
| 滞在する | 30秒 | 0.006 | +0.180 |
| 通報する | 0.01% | -234.0 | −0.023 |
| この6項目の合計 | 約 +1.29 |
係数20のリンクコピーは、この仮定では確率3%でも最大の貢献をしています。これが「係数が大きい」ことの意味です。一方で係数0.66のいいねも、確率が40%と高いのでしっかり効いています。なお秒数に掛かる項目(滞在時間)は単位が違うので、係数の数字だけで確率の項目と比べることはできません。
そして通報は、係数が −234 もあるのに、この仮定では確率が0.01%なので影響は −0.023 です。ここが「1通報でいいね何百件ぶん」という換算が成立しない理由です。逆に、ある閲覧者に通報の確率が高く予測されれば、影響は大きくなります。
自分で動かしてみる
下の計算機は、公開されている既定値で、コードと同じ順番に点数を計算します。最初は home-mixer の基本スコアで、切り替えると vm-ranker の調整込みになります。左のつまみは「AIがそう予測した確率や秒数」です。実際のフィードの順位を再現するものではありませんが、どの項目がどれだけ効くのかを確かめられます。
スコア計算機
左は「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
26項目のウェイト分布
home-mixer が名前付きで持つ係数は26項目で、そのうち22項目が0以外です。0以外のものを係数の絶対値が大きい順に並べると、こうなります。
- 通報する-234
- 作者をミュートする-58.8
- 「興味がない」を押す-52.272
- 作者をブロックする-31.2
- リンクをコピーして共有+20
- 返信+5
- DMで送る+5
- 引用リポスト+5
- 投稿をきっかけに作者をフォロー+4
- 共有ボタンを押す+2
- リポスト+1
- いいね+0.66
- クリック後の滞在時間(1秒あたり)+0.4
- 投稿をクリックする+0.3
- リンクを開く+0.2
- 写真を拡大する+0.05
- 滞在した(あり/なしの二値)+0.05
- 引用元の投稿をクリックする+0.05
- 動画を開く+0.02
- 滞在せずに流された-0.02
- 未探索の投稿+0.015
- 滞在時間(1秒あたり)+0.006
プラス側の上位を見てください。リンクコピー、DM送信、引用、返信、作者フォロー。どれも手間のかかる行動で、ワンタップのいいねは0.66です。ただし、係数の大きさは「Xがどれだけ大事にしているか」だけでなく、行動の起きやすさも反映しています。X自身のコメントにも、そう書かれています。