本文へ移動
X解体新書
第8章第四部11分

Phoenix ─ AIは何を見ているか

予測しているのは「あなたがどうするか」。今回の更新で、反応数の特徴量も公開設定に入った。

この章で分かること

  • モデルが何を入力に取っているかが分かる
  • 反応数の扱いが公開設定でどう変わったかが分かる
  • リアルタイム性の正体が分かる

点数の元になる予測を出しているのが「Phoenix」というAIです。よく誤解されますが、Phoenixは投稿の良し悪しを判定しているのではなく、「この閲覧者がこの投稿にどう反応するか」を予測しています。

どんなAIか

項目値
種別Transformer(候補分離マスク付き)
層数8
埋め込み次元2,560
履歴の長さ1,022トークン
候補の長さ64トークン
出力の枠二値は64の倍数・連続値は8の倍数に切り上げ
公開されている学習設定の値です。本番の配信モデルがこの設定と完全に同じかは確認できません。xrecsys.py:260-294

1トークン = 1つの体験

モデルに入る「履歴」は、閲覧者の過去の体験の列です。1つの位置が「この人は、いつ、誰の、どの投稿を見て、何をして、何秒滞在したか」を表します。

位置の並べ方に工夫があります。最新の1件が常に同じ場所に置かれる設計(right_anchored_rope)になっているため、履歴が短い人でも長い人でも、「直近の1件」の扱いが揃います。

公開設定でモデルが見ているもの

分類中身
閲覧者IPアドレス由来の特徴・国・言語・位置・性別・年齢など(インストール済みアプリは公開設定ではオフ)
各体験投稿と著者のハッシュ・投稿の古さ・時間帯・意味コード・フォロー関係
投稿の反応数いいね・返信・リポスト・引用・表示数(log2をとって入力)
候補のみ14日を超えた古い投稿かどうかの印
履歴のみその位置で起きた行動・滞在時間
xrecsys.py:294-319

ただし、これは「いいね数に係数が掛かる」という意味ではありません。係数が掛かるのは、あくまで閲覧者ごとの予測です。反応数は、その予測をするモデルへの手がかりの1つです。どれくらい効いているかは、公開コードからは分かりません。

投稿の中身はどう伝わるのか

本文の意味は「Semantic ID(意味コード)」という形で渡されます。エンコーダが投稿の情報をベクトルにし、それを6階層×256通りのコードに量子化したものです。xrecsys.py:287-291

今回の更新でXが書いていること

  • 10月8日:ランキングモデルの滞在時間の予測を改善した、とREADMEにあります。README.md:44
  • 10月13日:Phoenix retrieval を、最後まで読まれる投稿を出せるように学習させた、とREADMEにあります。README.md:40

「最後まで読まれるとどれだけ有利か」という数値は公開されていません。ここから言えるのは、Xが滞在や読了を以前より予測の改善対象にしている、ということまでです。

リアルタイム性の正体

「アルゴリズムはすぐ学習するのか?」という質問への答えは、少し意外です。モデルの再学習を待たなくても、入力が変わります。

home-mixer は閲覧者の行動の列を、リクエストごとにモデルへ渡します(既定で最大1024件)。したがって直前の行動も、次のリクエストの入力に含まれ得ます。param.rs:982-987

モデルは「あなたを覚えている」のではなく、「毎回あなたの直近を読み直している」。