Phoenix ─ AIは何を見ているか
予測しているのは「あなたがどうするか」。今回の更新で、反応数の特徴量も公開設定に入った。
この章で分かること
- モデルが何を入力に取っているかが分かる
- 反応数の扱いが公開設定でどう変わったかが分かる
- リアルタイム性の正体が分かる
点数の元になる予測を出しているのが「Phoenix」というAIです。よく誤解されますが、Phoenixは投稿の良し悪しを判定しているのではなく、「この閲覧者がこの投稿にどう反応するか」を予測しています。
どんなAIか
| 項目 | 値 |
|---|---|
| 種別 | Transformer(候補分離マスク付き) |
| 層数 | 8 |
| 埋め込み次元 | 2,560 |
| 履歴の長さ | 1,022トークン |
| 候補の長さ | 64トークン |
| 出力の枠 | 二値は64の倍数・連続値は8の倍数に切り上げ |
1トークン = 1つの体験
モデルに入る「履歴」は、閲覧者の過去の体験の列です。1つの位置が「この人は、いつ、誰の、どの投稿を見て、何をして、何秒滞在したか」を表します。
位置の並べ方に工夫があります。最新の1件が常に同じ場所に置かれる設計(right_anchored_rope)になっているため、履歴が短い人でも長い人でも、「直近の1件」の扱いが揃います。
公開設定でモデルが見ているもの
| 分類 | 中身 |
|---|---|
| 閲覧者 | IPアドレス由来の特徴・国・言語・位置・性別・年齢など(インストール済みアプリは公開設定ではオフ) |
| 各体験 | 投稿と著者のハッシュ・投稿の古さ・時間帯・意味コード・フォロー関係 |
| 投稿の反応数 | いいね・返信・リポスト・引用・表示数(log2をとって入力) |
| 候補のみ | 14日を超えた古い投稿かどうかの印 |
| 履歴のみ | その位置で起きた行動・滞在時間 |
ただし、これは「いいね数に係数が掛かる」という意味ではありません。係数が掛かるのは、あくまで閲覧者ごとの予測です。反応数は、その予測をするモデルへの手がかりの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
モデルは「あなたを覚えている」のではなく、「毎回あなたの直近を読み直している」。