今回は最近公開された
Xのフィードアルゴリズムについてです

解説動画はこちら





Xのフィード・アルゴリズムの仕組みについて

Xのアルゴリズムコードはこちらになります。

xai



システムの4つの主要コンポーネント



Xのフィードアルゴリズムは
大きく4つのコンポーネントで構成されています。

4components



1. Home Mixer:
全体の司令塔(オーケストレーション層)です。

候補の抽出からランク付け、フィルタリングまでの全工程を管理します。
パイプラインは以下のステージで構成されています:

    1.Query Hydration - ユーザーのエンゲージメント履歴とメタデータを取得
    2.Candidate Sources - ThunderとPhoenixから候補を取得
    3.Hydration - 候補に追加データを付与
    4.Pre-Scoring Filters - 不適格な投稿を除外
    重複、古い投稿、自分の投稿、ブロック/ミュートしたアカウント、ミュートキーワードなど
    5.Scoring - 複数のスコアラーを順次適用
      Phoenix Scorer (ML予測)
      Weighted Scorer (予測の重み付け結合)
      Author Diversity Scorer (多様性のための減衰)
      OON Scorer (Out-of-Network調整)
    6.Selection - スコアでソートし、上位K件を選択
    7.Post-Selection Filters - 最終検証 (削除済み/スパム/暴力的コンテンツなど)
    8.Side Effects - キャッシュとログ記録


2. Thunder:
フォロー中ユーザーの投稿をリアルタイムで追跡するメモリ内ストアです。

ミリ秒単位の高速な読み込みを可能にします。

主要機能:
    1.Kafkaからのリアルタイム取り込み - 投稿の作成/削除イベントを消費
    2.ユーザー別ストア管理 - オリジナル投稿、リプライ/リツイート、動画投稿を分類
    3.サブミリ秒ルックアップ - 外部データベースにアクセスせずに高速検索
    4.自動トリミング - 保持期間を超えた古い投稿を自動削除

パフォーマンス最適化:
    1.タイムアウト機能 (デフォルト設定可能)
    2.ユーザーあたりの投稿数制限
    3.メモリ効率化のための自動容量調整


3. Phoenix:
機械学習(ML)を担当する心臓部です。

検索: フォロー外から好みに合う投稿を見つけ出します。
ランキング: ユーザーがその投稿に反応(いいねやリプライなど)する確率を予測します。

・アルゴリズムの詳細

2つのステップ

1. Retrieval(Retrieval段階):
数億のツイートから、2タワーモデル(Two-Tower Model)を用いて
「関連がありそうな数千件」をミリ秒単位で抽出します。

2. Ranking(ランキング段階):
抽出された数千件に対し、トランスフォーマーモデルを用いて
いいねやリポストなどの「具体的なエンゲージメント確率」を
詳細に予測・採点します。


Retrieval: Two-Tower Model (2タワーモデル)
   1. User Tower(ユーザー側): 
   ユーザーの属性(User Hashes)と、過去のエンゲージメント履歴(History)を
   トランスフォーマーで処理し、ユーザーの「現在の興味」を
   1つの数値ベクトル(User Representation)に凝縮します。

   2. Candidate Tower(ツイート側): 
   ツイート内容や投稿者情報を同様にベクトル化(Candidate Representation)します。

近さの計算(ドット積)
   「近さ」の採点は、ユーザーベクトルと
   ツイートベクトルの**ドット積(内積)**で行われます。

   ベクトル同士の向きが近い(興味が一致する)ほどスコアが高くなります。
   全てのツイートが事前にベクトル化されているため
   数億件の中から瞬時に上位K件を取得可能です。


Multi-Action Prediction (複数アクション予測)
   P(favorite)      - いいね
   P(reply)         - リプライ
   P(repost)        - リツイート
   P(quote)         - 引用ツイート
   P(click)         - クリック
   P(profile_click) - プロフィールクリック
   P(video_view)    - 動画視聴
   P(share)         - シェア
   P(dwell)         - 滞在時間
   P(follow_author) - フォロー
   P(not_interested) - 興味なし (負の重み)
   P(block_author)  - ブロック (負の重み)
   P(mute_author)   - ミュート (負の重み)
   P(report)        - 報告 (負の重み)


最終スコア計算:

   Final Score = Σ (weight_i × P(action_i))

ポジティブなアクションは正の重み、ネガティブなアクションは負の重みを持ちます。


4.Candidate Pipeline:
推薦システムを構築するための再利用可能なフレームワークです。
   Source データソースから候補を取得
   Hydrator 候補に追加特徴を付与
   Filter 表示すべきでない候補を除外
   Scorer ランキング用のスコアを計算
   Selector 上位候補をソート・選択
   SideEffect 非同期サイドエフェクト実行 (キャッシュ、ログ)
   QueryHydrator クエリコンテキストを準備




おすすめが表示されるまでの流れ


フィードが生成されるまでには、以下のステップを踏みます。
flow


1. データの準備 (Hydration): ユーザーの過去のエンゲージメント履歴や
フォローリストを読み込みます。

2. 候補の抽出: 「Thunder(フォロー内)」と「Phoenix(フォロー外)」の
両方から候補となる投稿を集めます。
   
3. フィルタリング(前処理): 重複した投稿、古すぎる投稿
自分がブロックしている相手の投稿、既に見た投稿などを除外します。

4. スコアリング(ランク付け):
 Grokベースのモデルが「いいね」「リプライ」「リポスト」
 「クリック」などの発生確率を個別に予測します。
 それらを重み付けして最終スコアを算出します。
 特定の著者ばかりに偏らないよう「著者多様性スコア」で調整をかけます。

5. 最終選定: スコアの高い順に並べ替え、最終的な表示候補を選び出します。

6. フィルタリング(後処理): 削除済み、スパム、暴力的なコンテンツなどが
混じっていないか最終チェックを行います。


おすすめに表示されやすくなるポイント

ポジティブエンゲージメント
以下のアクションが予測されるとスコアが上昇:

いいね、リツイート、リプライ
動画視聴 (一定時間以上の動画)
フォロー
クリック、シェア、滞在時間

In-Network(フォロー中)
フォローしているアカウントの投稿は優遇されます。

新鮮な投稿 古すぎない
タイムリーな投稿が優先されます。

動画コンテンツ 一定時間以上の動画は
特別な重み付けを受けます。



おすすめに除外されやすくなるポイント

ネガティブシグナル 以下が予測されると
スコアが低下:

興味なし、ブロック、ミュート、報告

ブロック・ミュートしたアカウント
完全に除外されます。

ミュートキーワード
設定したキーワードを含む投稿は除外。

自分自身の投稿
自分の投稿は「For You」から除外。

既に見た投稿
過去に表示された投稿は除外(Bloom Filter使用)。

古すぎる投稿
一定期間以上経過した投稿は除外。

削除済み・スパム・暴力的コンテンツ
最終段階で除外されます。



スコアリングの仕組み

最終スコア = Σ (重み × 各アクションの予測確率)

= P(いいね) × いいね重み
+ P(リツイート) × リツイート重み
+ P(リプライ) × リプライ重み
+ ...
+ P(ブロック) × ブロック重み (負の値)
+ P(ミュート) × ミュート重み (負の値)
処理順序:

1. Phoenix Transformer → ML予測
2. Weighted Scorer → 重み付け結合
3. Author Diversity Scorer → 多様性調整
4. OON Scorer → In/Out-of-Network調整
5. Selection → 上位K件選択



ポジティブシグナルの重み

以下のアクションが予測されると、投稿のスコアが上昇します:

アクション 説明 重要度
いいね (Favorite) ユーザーがいいねする確率 ⭐⭐⭐
リツイート (Retweet) リツイートする確率 ⭐⭐⭐
リプライ (Reply) リプライする確率 ⭐⭐⭐
引用ツイート (Quote) 引用ツイートする確率 ⭐⭐
クリック (Click) 投稿をクリックする確率 ⭐⭐
プロフィールクリック 投稿者のプロフィールをクリック ⭐⭐
動画視聴 (Video View) 動画を視聴する確率 ⭐⭐⭐
画像展開 (Photo Expand) 画像を展開する確率 ⭐⭐
シェア (Share) 外部にシェアする確率 ⭐⭐
滞在時間 (Dwell) 投稿に滞在する時間 ⭐⭐
フォロー (Follow Author) 投稿者をフォローする確率 ⭐⭐⭐


実践的アドバイス

表示されやすくするには:
✅ エンゲージメントを促す投稿(いいね、RT、リプライされやすい)
✅ 動画・画像付きコンテンツ
✅ タイムリーな情報
✅ フォロワーとの関係構築

除外されないために:
❌ スパム的な投稿を避ける
❌ 暴力的・不適切なコンテンツを避ける
❌ ミュートキーワードに引っかからない
❌ 重複投稿を避ける



まとめ

今回のXのアルゴリズム更新のポイントは
「人間による調整を徹底的に排除し
AI(Grokベースのモデル)に判断を委ねたこと」にあります。

システムは「フォロー内」と「フォロー外」の投稿を統合し
膨大なユーザー履歴から
「あなたが次にどのボタン(いいね、リプライ等)を押すか」
を精密に予測して並べ替えます。

また、多様性を確保しつつ、不適切なコンテンツや重複を
二段階のフィルタリングで排除する
非常に高度かつクリーンな構成になっています。


アルゴリズムの詳細コードを見たい方は
ぜひgithubの方を見てみてください

それでは。