今回は最近公開された
Xのフィードアルゴリズムについてです
解説動画はこちら
Xのフィード・アルゴリズムの仕組みについて
Xのアルゴリズムコードはこちらになります。
xai
システムの4つの主要コンポーネント
Xのフィードアルゴリズムは
大きく4つのコンポーネントで構成されています。

1. Home Mixer:
全体の司令塔(オーケストレーション層)です。
候補の抽出からランク付け、フィルタリングまでの全工程を管理します。パイプラインは以下のステージで構成されています:
2. Thunder:
フォロー中ユーザーの投稿をリアルタイムで追跡するメモリ内ストアです。
ミリ秒単位の高速な読み込みを可能にします。
3. Phoenix:
機械学習(ML)を担当する心臓部です。
・アルゴリズムの詳細
2つのステップ
近さの計算(ドット積)
Multi-Action Prediction (複数アクション予測)
最終スコア計算:
ポジティブなアクションは正の重み、ネガティブなアクションは負の重みを持ちます。
4.Candidate Pipeline:
推薦システムを構築するための再利用可能なフレームワークです。
おすすめが表示されるまでの流れ
フィードが生成されるまでには、以下のステップを踏みます。

おすすめに表示されやすくなるポイント
いいね、リツイート、リプライ
除外されないために:
アルゴリズムの詳細コードを見たい方は
ぜひgithubの方を見てみてください
それでは。
Xのフィードアルゴリズムについてです
解説動画はこちら
Xのフィード・アルゴリズムの仕組みについて
Xのアルゴリズムコードはこちらになります。
xai
システムの4つの主要コンポーネント
Xのフィードアルゴリズムは
大きく4つのコンポーネントで構成されています。

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タワーモデル(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件を取得可能です。
数億件の中から瞬時に上位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 クエリコンテキストを準備
おすすめが表示されるまでの流れ
フィードが生成されるまでには、以下のステップを踏みます。

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ベースのモデル)に判断を委ねたこと」にあります。
「人間による調整を徹底的に排除し
AI(Grokベースのモデル)に判断を委ねたこと」にあります。
システムは「フォロー内」と「フォロー外」の投稿を統合し
膨大なユーザー履歴から
「あなたが次にどのボタン(いいね、リプライ等)を押すか」
を精密に予測して並べ替えます。
膨大なユーザー履歴から
「あなたが次にどのボタン(いいね、リプライ等)を押すか」
を精密に予測して並べ替えます。
また、多様性を確保しつつ、不適切なコンテンツや重複を
二段階のフィルタリングで排除する
非常に高度かつクリーンな構成になっています。
二段階のフィルタリングで排除する
非常に高度かつクリーンな構成になっています。
アルゴリズムの詳細コードを見たい方は
ぜひgithubの方を見てみてください
それでは。
