検証
誤解の訂正
数字そのものは正しく引用されていることが多いのですが、意味の取り違えが広く定着しています。ひとつずつ、コードと突き合わせます。
14件
- 01誤り
リンクコピー1回で+20点入る。
係数20が掛かるのは「この閲覧者がリンクコピーしそうな確率」で、実際にコピーされた回数ではありません。確率3%なら寄与は0.6です。
計算の実体は score.unwrap_or(0.0) * weight の1行で、score に入るのはPhoenixが出した予測です。Xもコメントで「係数は生の反応数には掛からない」と明記しています。
- 02誤り
通報1件でいいね468件ぶんが消える。
どちらも予測確率に掛かるので、割り算で回数に換算することはできません。ちなみにいいねの係数が0.66に変わったので、割り算の値自体も今は約355です。
X自身がコメントとREADMEでこの読み方を名指しで否定し、通報の基礎確率はいいねの1000分の1より低いので、予測が順位に影響できるよう重くしていると説明しています。
- 03条件つき
大量通報を集めれば、ランキングで潰せる。
ランキングの予測については、効きにくい仕組みだとXは説明しています。推薦は個人化されているので、主に「通報者に似た人」の推薦に影響する、という説明です。ただし通報は別の仕組みの入力にもなります。
コメントは「ホームで配信された投稿の行動でなければランキングに影響しない」とも書いています。一方、ラベルの説明文には「ユーザー通報を受けて」付くものもあり、通報に意味がないわけではありません。
- 04半分正しい
ブックマークが最強のシグナルだ。
26項目に固定の係数はありません。行動の種類としては定義され、ブックマーク数も home-mixer が送るデータにはありますが、公開設定で入力に使う反応数の5項目には入っていません。
係数の一覧 scoring.rs にブックマークの項はなく、ENGAGEMENT_COUNT_ORDER にも入っていません。間接的な効果の大きさは、公開情報からは分かりません。
- 05条件つき
新人アカウントは全体的に優遇される。
優遇は1リクエストにつき1件で、16位相当まで引き上げる席です。今回、対象はフォロワー5万人以下まで広がりましたが、表示200回未満・投稿から2時間以内と狭まった条件もあります。
実装は effective[best_idx] = effective[best_idx].max(target) で、掛け算のブーストではありません。候補の中からトンプソンサンプリングで選びます。
- 06条件つき
リプライを増やせばフォロー外にも伸びる。
公開既定のFor Youでは、フォロー外の返信はスコアリング前に落ちます。ただし返信専用の索引と、それを通すフラグが追加されたので、「絶対に届かない」とは言えなくなりました。
索引は 1fav_reply / 32fav_reply に投入されますが、OONRetweetReplyFilter が EnablePhoenixOonReplies(既定 false)のもとで落とします。実験の割当は公開されていません。
- 07条件つき
シャドウバンでスコアをこっそり下げられている。
公開されている可視性フィルタのHome向けルールに、点数を下げるものは見当たりません。あるのは面ごとの出し分けです。ただ、これで「シャドウバンは存在しない」とまでは言えません。
ルールは Allow・Notice・Interstitial・Drop を返します。一方で、負の係数やフォロー外割引など順位を下げる要素は別にありますし、一部のルールやプロンプトは非公開です。
- 08誤り
相互フォローなら何を投稿してもブーストされる。
対象はオリジナル投稿(引用を含む)だけです。相互フォローでも、返信とリポストにはボーナスが付きません。
条件は、返信でない・リポストでない・相互フォローの著者である、の3つすべてです。滞在ブーストは既定値0.0なので、公開既定では何も起きません。
- 09誤り
フォロワーになってもらえば、投稿は確実に届く。
For Youでは、48時間の年齢制限、閲覧者のミュート語、ブロック関係、既読判定は、フォロー中の相手にも効きます。Thunderの返信の条件もあります。
AgeFilter と ViewerMutedKeywordFilter にフォロー免除はありません。なお、Followingタブなど別の面は別の処理です。
- 10誤り
滞在は見られていない。効くのはいいねや返信だけだ。
滞在に関する項目は3つとも0以外です。二値の滞在は0.05、滞在時間は1秒あたり0.006、クリック後の滞在時間は1秒あたり0.4です。
前回は二値0.0・クリック後0.0でしたが、今回どちらも入りました。Xも10月8日の更新で滞在時間の予測の改善を書いています。秒数に掛かる項目は単位が違うので、確率の係数と数字だけで比べないでください。
- 11誤り
プロフィールクリックを取りにいくと直接効く。
プロフィールクリックの係数は公開既定で0.0です。共有ライブラリにはプロフィール訪問の秒数の項もありますが、home-mixer は0.0に固定しています。
ProfileClickWeight の既定値は0.0で、ProfileVisitSecsWeight も vm-ranker の静的既定は0.0です。公開既定で効くのは、投稿経由の著者フォロー(+4.0)のほうです。
- 12誤り
48時間を過ぎた投稿は、Xのどこからも消える。
48時間はFor Youのスコア対象候補の上限です。Followingタブ、検索、プロフィール、投稿の直接表示などは別の話です。一方、For Youで新しく推薦され続けることは、公開既定ではありません。
AgeFilter はFor Youのパイプラインに登録されていて、Followingの時系列パイプラインには登録されていません。動画の索引にはさらに長い窓があります。
- 13条件つき
同じタイミングに強い投稿があると、自分の投稿の予測値が下がる。
ランキングモデルの候補同士は互いを参照できないので、READMEの説明では、予測はバッチの中身に左右されません。ただし順位は比較で決まり、同一作者の減衰や多様化は他の候補の影響を受けます。
Attentionのマスクで候補は自分自身の位置だけを見ます。候補分離はモデル内の話で、最終的な並びは他の候補と無関係ではありません。
- 14誤り
過去に伸びた実績やいいね数は、モデルには一切入らない。
前回の本書はそう読める説明をしていましたが、今回の公開設定では、投稿のいいね・返信・リポスト・引用・表示数がモデルの入力に使われます。ただし係数が掛かるのは閲覧者ごとの予測です。
xrecsys.py の enable_engagement_counts=True で、log2をとった値が特徴量になります。アカウントの過去の実績そのものに係数が掛かるわけではなく、どれくらい効くかは公開情報からは分かりません。