本文へ移動
X解体新書
第2章第一部10分

「点数」の正体

+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

  1. 01係数は予測確率に掛かる。生の件数には掛からない。
  2. 02だから「通報1件=いいね468件」という読み方は誤りである。
  3. 03通報の基礎発生確率はいいねの1000分の1以下なので、係数を大きくしないとランキングに影響できない。
  4. 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.4505
プラスの合計
+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
プラスマイナス棒の長さは係数の絶対値です。係数は「実際の回数」ではなく、予測確率または予測秒数に掛かります。滞在時間の2項目は秒数に掛かるので、他の項目と長さだけで比べないでください。param.rs:396-514

プラス側の上位を見てください。リンクコピー、DM送信、引用、返信、作者フォロー。どれも手間のかかる行動で、ワンタップのいいねは0.66です。ただし、係数の大きさは「Xがどれだけ大事にしているか」だけでなく、行動の起きやすさも反映しています。X自身のコメントにも、そう書かれています。