X推奨アルゴリズム公開:Phoenixモデル統合と没入型動画スコアリング、可視性フィルタリングの全貌
X(旧Twitter)の推奨アルゴリズムリポジトリが更新され、Rust製home-mixerパイプラインにおけるPhoenix候補抽出、没入型動画(Immersive Video)専用のスコアラー・カルーセル処理、および厳格な可視性フィルタリング機構(Gizmoduck連携・作者ルール・ポリシー判定)の詳細が公開されました。
わかりやすい説明
Xのタイムライン生成処理がオープンソースとして更新され、特に縦型動画などの「没入型動画」を評価する専用スコアラーとカルーセル機能が強化されました。また、Phoenixと呼ばれる機械学習モデルを通じておすすめ候補を抽出し、Gizmoduckユーザー情報をもとにスパムや制限対象の投稿を弾く「可視性フィルタ」の構造が明らかになりました。これにより、動画コンテンツの優遇と規約遵守コンテンツの選別がより厳密に行われます。
重要ポイント
- 1Phoenix機械学習モデル(recsys_model.py)とRust製home-mixerパイプラインの本格統合
- 2没入型(縦型)動画専用のスコアラー(immersive_video_scorer)とカルーセルフィルタの導入
- 3Gizmoduckクライアントと連携した閲覧者・作者特徴量の高速ハイドレーション
- 4Limited Actions PolicyやAuthor Rulesに基づく厳格な可視性フィルタリングと判定説明機構(explain)
技術的な詳細
本コミットでは、Rustで構築されたhome-mixer内に`phoenix_candidate_pipeline.rs`および`immersive_video_scorer.rs`が整備され、Phoenix推薦モデル(`recsys_model.py`)へのリクエスト構築・候補生成フローが具現化されています。動画カルーセル向けのフィルタリング(`video_carousel_filter.rs`)とシーケンスハイドレーションにより動画エンゲージメント予測を最適化。さらに`visibility-filtering`クレートでは、`gizmoduck_client`を通じた作者・閲覧者データの非同期ハイドレーション、`author_rules`や`limited_actions_policy`による判定ロジック、および判定理由を可視化する`explain.rs`が体系化されています。
影響を受けるユーザー
Xの「おすすめ(For You)」タイムラインおよび動画タブを閲覧する全ユーザー、動画クリエイター、およびアカウントの安全評価がエンゲージメントに直結するコンテンツ発信者。
変更前後の比較
従来は汎用候補パイプラインと単一のスコアリングモデルが主流でしたが、更新後はPhoenix基盤と没入型動画専用のスコアリング・フィルタリングパイプラインに分流され、ポリシー違反や制限アカウントの除外判定がハイドレーション段階でより明確にモジュール化されました。
アクションアイテム
- 動画コンテンツ(特に縦型動画)の投稿頻度と視聴完了率(リテンション)を最優先で改善する
- Gizmoduckハイドレーションで制限フラグが立たないよう、利用規約の遵守とアカウントステータスの健全性を維持する
- カルーセル表示の文脈に適合するよう、視聴者の関心を即座に惹きつけるサムネイルと冒頭3秒のフックを設計する
収益化・活用ヒント
- 没入型動画スコアラーは高いエンゲージメントシグナルを重視するため、長尺よりも最後まで見切られる動画のほうがインプレッションを拡大しやすい
- ポリシー制限を受けると可視性フィルタリングによりカルーセルやPhoenix候補から完全に除外されるため、シャドウバン要因を徹底排除することが収益化の基盤となる
FAQ
Q. 「Immersive Video Scorer」とは何ですか?
TikTokのような縦型フルスクリーンの動画フィードやカルーセル向けに、動画の再生時間やエンゲージメント確率を特化して予測・スコアリングする専用コンポーネントです。
Q. Visibility Filtering(可視性フィルタリング)に引っかかるとどうなりますか?
Author RulesやLimited Actions Policyに該当した場合、スコアリング以前に候補リストから除外され、タイムラインやカルーセルに一切表示されなくなります。
変更ファイル一覧
- + home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs
- + home-mixer/filters/video_carousel_filter.rs
- + home-mixer/models/candidate.rs
- + home-mixer/models/query.rs
- + home-mixer/params/param.rs
- + home-mixer/query_hydrators/immersive_scoring_sequence_query_hydrator.rs
- + home-mixer/query_hydrators/mod.rs
- + home-mixer/scorers/immersive_video_scorer.rs
- + home-mixer/scorers/mod.rs
- + home-mixer/selectors/top_k_score_selector.rs
- + home-mixer/util/phoenix_request.rs
- + home-mixer/util/video_carousel.rs
- + phoenix/xrex/models/recsys_model.py
- + visibility-filtering/clients/gizmoduck_client.rs
- + visibility-filtering/explain.rs
- + visibility-filtering/filter.rs
- + visibility-filtering/hydration/decode/author.rs
- + visibility-filtering/hydration/decode/viewer.rs
- + visibility-filtering/hydration/execute.rs
- + visibility-filtering/hydration/inventory.rs
- + visibility-filtering/hydration/metrics.rs
- + visibility-filtering/hydration/mod.rs
- + visibility-filtering/hydration/plan.rs
- + visibility-filtering/hydration/store.rs
- + visibility-filtering/models/verdict.rs
- + visibility-filtering/params.rs
- + visibility-filtering/params/limited_actions_policy.rs
- + visibility-filtering/retweet.rs
- + visibility-filtering/rules/author_rules.rs
- + visibility-filtering/rules/catalog.rs