Xが推薦アルゴリズムを再公開──「手作業の特徴量を全廃」した新版
xAIがX(旧Twitter)の「For You」推薦システムを公開。2023年版から刷新され、手作業の特徴量を排してGrokベースのTransformerに集約された。

目次
3行まとめ
- xAIがXの「For You」推薦システムをGitHubに公開したのは2026年1月で、2026年5月に大幅な刷新が入った(本記事が対象にしているのは5月時点の版)
- 手作業の特徴量を全廃し、Grokベースのコンテンツ理解に集約された
- 重みは非公開のため、投稿者への示唆はあくまで仮説にとどまる
xAIが X(旧Twitter)の「For You」フィードを動かす推薦システムを GitHub に公開したのは2026年1月で、2026年5月に大幅な刷新が入った(コミット履歴で確認)。2023年の twitter/the-algorithm とは別物。本記事が対象にしているのは、この5月の刷新後の版である。
変わった点
- 手作業の特徴量を全廃:ハッシュタグ数やURL有無などを直接効かせる旧設計をやめ、Grokベースのコンテンツ理解に集約
- 15アクションの予測:いいね・返信・リポストから「興味なし」「報告」まで15種の確率を予測し、重み付けでスコア化
- 2系統の候補取得:フォロー中(in-network)とフォロー外(out-of-network)を別経路で扱う
投稿者への示唆(推論)
公開されているのは構造であって重みは非公開のため、あくまで仮説だが——タグ詰めでの順位上げは効きにくくなった可能性が高く、本文の意味的な明確さがより重要になったと読める。
リポジトリはその後2回更新されている(2026年8月14日確認)
本記事は2026年5月の更新時点で書いた。GitHub API でコミット履歴を確認したところ、xai-org/x-algorithm のコミットは5件で、日付は次のとおり(すべてUTC)。
| コミット日時(UTC) | 位置づけ |
|---|---|
| 2026-01-20 02:31 | 最初の公開 |
| 2026-05-15 07:28 / 21:54 | 本記事が扱った更新(2件) |
| 2026-08-13 17:09 / 17:23 | 直近の更新(2件) |
ライセンスは Apache License 2.0、デフォルトブランチは main、主要言語は Rust(いずれもGitHubのリポジトリ情報およびREADMEの記載による)。
READMEの「Latest update — August 13th, 2026」節によると、8月13日の更新で加わったのは主に次の3点。
- 主要な設定パラメータ。予測した各行動の値を1つのスコアに合成する重みを含む
- 投稿がFor Youフィードから除外されるかどうかに関わる仕組みのコード(
visibility-filtering/と、ラベルを付与するルール群botmaker/scarecrow/、アカウントを様々な軸でスコアリングするモデル群agatha/bdsm/user-cred-v2/など) - Phoenixのデモ用モデルを、実際にフィードで使われているモデルの学習コードに差し替え。合成データ生成コードも同梱され、概念実証レベルの学習を手元で回せる
本記事は「重みは非公開」と書いたが、そのうちスコア合成の重みは公開された。学習済みモデル本体は依然として非公開(後述)。
Xのコード公開そのものの経緯は、マスクの「全コードベース公開」宣言を追った記事にまとめている。
Phoenixが予測する行動は15種から24種になった
本文で「15アクション」と書いたのは、2026年5月15日時点のREADMEの記載に基づく。当時 P(favorite) の形式で列挙されていたのは次の15種で、これは2026年1月の初回公開時から変わっていなかった。
favorite / reply / repost / quote / click / profile_click / video_view / photo_expand / share / dwell / follow_author / not_interested / block_author / mute_author / report
2026年8月14日に確認した現在のREADMEでは、5カテゴリ・計24種に整理し直されている。
| カテゴリ | 行動(READMEの表記) |
|---|---|
| Engagement(7種) | favorite / reply / repost / quote / share / share via DM / share via copy link |
| Clicks(6種) | post / profile / link / photo expand / video open / quoted post |
| Attention(5種) | video quality view / dwell / dwell time / click dwell time / active seconds |
| Author(1種) | follow author |
| Negative(5種) | not interested / mute author / block author / report / not dwelled |
候補取得はout-of-networkが2系統になった
本文で「2系統の候補取得」と書いた部分も、8月13日の更新で simclusters/ が加わり、現在は3コンポーネント構成になっている。
| 区分 | コンポーネント | READMEの説明 |
|---|---|---|
| In-Network | thunder/ |
公開された最近の投稿をメモリ上に保持し、閲覧者がフォローしているアカウントの投稿を返す |
| Out-of-Network | phoenix/ retrieval |
閲覧者と各投稿をベクトルとして埋め込み、閲覧者に最も近い投稿を返す |
| Out-of-Network | simclusters/ |
誰が何に反応したかでアカウントと投稿をクラスタリングし、そのクラスタを使って候補を探す |
スコアリング段はREADMEの構成図では次の順に並ぶ。軽量ランカー/重量ランカーという2段構成の呼び方はREADMEには出てこない。
PhoenixScorer— 閲覧者が取りうる各行動の確率を出すRankingScorer— 重み付き和を取り、同一著者の連投減衰・out-of-network割引・新規著者ブーストをかけるVMRanker—vm-ranker/の再ランキングサービスを呼ぶ。埋め込みに対する行列式点過程(DPP)で、スコアを少し譲って隣り合う投稿どうしの類似度を下げるTopKScoreSelector— 最終スコアで並べ替え、上位K件を残す
その後の選択後フィルタで、VFFilter が visibility-filtering/ の判定(ALLOW/INTERSTITIAL/DROP)に従って投稿を落とす。スコアリング前のフィルタには、48時間より古い投稿を落とす AgeFilter などがREADMEの表に17個並んでいる。
スコア合成の重みの既定値
home-mixer/params/param.rs に書かれている既定値。ファイル冒頭には // mirrored from config feature-switch defaults; last sync 2026-08-12T04:09:22Z とあり、設定システム側の値を写したものとされる。
重みの定義ブロックには次のコメントが付いている(原文からの訳)。
これらの重みは、ランキングにおいてその行動をどれだけ価値あるものと見なすかと、Xネットワーク全体でのその行動の起こりやすさ(例:ネガティブフィードバックは全体として稀)の組み合わせを反映している。
数値の大小は「効き目の強さ」だけでなく「その行動がどれくらい珍しいか」も含んでいる。通報の −234.0 を「いいねの468倍効く」と読むのは誤りになる。
| 行動 | パラメータ名(rust_home_mixer_ は省略) |
既定値 |
|---|---|---|
| 返信 | reply_weight |
5.0 |
| └ 相互フォロー相手への返信の上乗せ | bidirectional_follow_reply_weight_boost |
15.0 |
| 引用 | quote_weight |
5.0 |
| リンクコピーでの共有 | share_via_copy_link_weight |
20.0 |
| DMでの共有 | share_via_dm_weight |
5.0 |
| 共有 | share_weight |
2.0 |
| 著者をフォロー | follow_author_weight |
4.0 |
| リポスト | retweet_weight |
1.0 |
| いいね | favorite_weight |
0.5 |
| 投稿クリック | click_weight |
0.4 |
| リンクを開く | open_link_weight |
0.2 |
| プロフィールクリック | profile_click_weight |
0.0 |
| 写真の拡大 | photo_expand_weight |
0.05 |
| 動画を開く | video_open_weight |
0.05 |
| 動画の品質視聴(vqv) | vqv_weight |
0.05 |
| 滞在(dwell) | dwell_weight |
0.0 |
| 滞在時間(連続値) | cont_dwell_time_weight |
0.004 |
| 未探索の投稿 | post_unexplored_weight |
0.02(post_unexplored_weight_in_network_only が既定 true) |
| 興味なし | not_interested_weight |
−43.2 |
| 著者をブロック | block_author_weight |
−31.2 |
| 著者をミュート | mute_author_weight |
−58.8 |
| 通報 | report_weight |
−234.0 |
| 滞在しなかった | not_dwelled_weight |
−0.02 |
いいね 0.5 に対して返信 5.0、相互フォロー相手への返信はさらに 15.0 が上乗せされる。リンクコピーでの共有 20.0 がプラス側で最大値になっている。
重み付き和のあとにかかる補正の既定値
READMEは重み付き和のあとに3つの補正がかかると文章で説明しており、param.rs には名前の対応するパラメータが並ぶ(下表の対応づけはパラメータ名からの推測を含む)。
| READMEの説明 | パラメータ名 | 既定値 |
|---|---|---|
| 同一著者の2投稿目以降に減衰係数、下限あり | author_diversity_decay / author_diversity_floor |
0.5 / 0.25(enable_author_diversity は既定 true) |
| フォロー外の投稿に1未満の係数 | oon_weight_factor |
0.75 |
| 同上・トピック経由 | topic_oon_weight_factor |
0.5 |
| インプレッションが閾値未満の著者の投稿を、目標位置まで引き上げ | cold_start_impression_threshold |
1000 |
| 同上・引き上げ先のスロット | cold_start_slot_min / cold_start_slot_max |
15 / 16 |
| 同上・フォロワー数の上限 | cold_start_follower_cap |
1000 |
| 同上・対象投稿の経過時間の上限 | cold_start_max_post_age_secs |
86400(24時間) |
公開リポジトリに含まれていないもの
- 学習済みモデルは公開されていない。
phoenix/QUICKSTART.mdには "Production data, checkpoints, orchestration, and scale are not included."(本番のデータ、チェックポイント、オーケストレーション、スケールは含まれない)と明記されている。手元で回せるのは合成データによる概念実証まで。本文の「重みが非公開だから投稿者への示唆は仮説」という但し書きは、モデル本体についてはそのまま有効 param.rsの値は既定値であって、いま自分のタイムラインにかかっている値そのものとは限らない。 READMEは、実運用の主要値をリポジトリのコードに反映させるcronスクリプトを回していると書いている。また、10%以上のトラフィックで走る実験がリポジトリから見えるようにすることを「目指している(our aim is)」としている。いずれも保証ではない- 意図的に公開していないファイルがある。 READMEの "What's not in this repo?" 節は、Groxのプロンプト(LLMプロンプトを含むj2ファイル)と一部のbotmakerルールを、システムを出し抜かれるリスクを下げるため公開していないと明記している
- READMEに2023年版
twitter/the-algorithmとの差分の記述はない。 「手作業の特徴量を全廃」の根拠は、5月15日時点のREADMEにあった "We have eliminated every single hand-engineered feature and most heuristics from the system."(手作業で設計した特徴量をすべて、ヒューリスティクスの大半をシステムから排除した)という一文で、2023年版との逐条比較ではない - 公開の起点は2026年5月ではなく2026年1月。 本文は5月の更新を「公開」と書いたが、コミット履歴上の最初の公開は2026年1月20日(UTC)で、5月15日はその更新にあたる
- 上記はすべて github.com/xai-org/x-algorithm の公開リポジトリの記載による(確認日2026年8月14日)。更新が続いているため、値は今後変わりうる
cronスクリプトと実験可視化の記述を分けた修正
- 2026-08-14: 「cronスクリプトを回していること」と「10%以上のトラフィックの実験可視化」を1文で「目指している(our aim is)」とまとめていた記述を分割。README原文ではcronスクリプトの運用は断定形の実施事実(L391)、"Our aim is" が付くのは実験可視化の方だけ(L389)であることをREADME原文で確認し、それぞれのモダリティ通りに修正。
thunder/の説明に原文の "recent" に対応する「最近の」を補足。botmaker/scarecrow/(ラベル付与ルール)とagatha/bdsm/user-cred-v2/(スコアリングモデル)をREADMEの区分に合わせて書き分け
このニュースを受けて、当サイトでは投稿前チェックツールも公開しています(ツール一覧)。
出典・参照資料
更新・訂正履歴
- 公開時期の記述を訂正。3行まとめと本文冒頭で「xAIが2026年5月に公開した」と書いていたが、GitHubのコミット履歴で確認すると初回公開は2026年1月で、2026年5月に入ったのは大幅な刷新だった。本文の後段ではこの区別を正しく書いていたにもかかわらず、露出面(3行まとめ・冒頭)に初出時の誤りが残っていた。初回公開と刷新を分けて書く形に直した。
この記事の解説動画
YouTubeで見る ↗AIニュースの解説を動画でも
YouTubeでは注目ニュースの背景を解説し、Xでは新着記事をお知らせしています。
コメント
まだコメントはありません。最初のコメントを書いてみませんか?
AIについて聞きたいことはありますか?
質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。
質問箱を見る →新しい記事をメールで受け取る
AIの新しい発表を、出典付きで整理して届けます。