T-RoPEとは何か——LLMのRoPEを「時刻」で回す、推薦システムの時間認識
はじめに:推薦モデルはなぜLLMの「そのまま」ではうまくいかないのか
大規模な推薦システムの設計は、ここ数年で大きく様変わりした。かつてはユーザーとアイテムの行列分解や、クリック履歴を入力にした二値分類が主流だったが、いまは「次のアイテムを1つずつ生成する」という逐次生成(sequential generative)のレシピが採用されるようになっている。これは大規模言語モデル(LLM)が文章を生成する際の設計をそのまま持ち込んだもので、Transformerを推薦に適用したHSTUのようなモデルは、すでに本番環境の規模で稼働している。
ただし、LLM由来の部品をそのまま流用すると噛み合わない部分がある。本記事の出発点はそこにある。とりわけ問題になるのが位置エンコーディング、とくに回転位置埋め込み(RoPE: Rotary Position Embedding)だ。RoPEはクエリとキーのベクトルを「何番目か」という整数インデックスに応じて回転させ、内積が相対的な位置関係だけに依存するようにする仕組みで、テキストでは非常に強力に働く。
ところが推薦のログにおいて、この「何番目か」はイベントの並び順しか表していない。ユーザーが昨日購入した商品と半年前に購入した商品は、系列上ではどちらも「直前の1件」として同じ位置に置かれてしまう。つまりトークンの並び順と、行動が実際に発生した時刻はまったくの別物であり、経過時間・行動の周期性・暦上の位相といった時間情報が、位置エンコーディングの段階で捨てられているのだ。
flowchart TB
subgraph LLM["LLMのトークン列(均等間隔)"]
direction LR
T1["t=1"] --> T2["t=2"] --> T3["t=3"] --> T4["t=4"] --> T5["t=5"]
end
subgraph REC["ユーザー行動列(発生時刻は不揃い)"]
direction LR
A1["昨日 購入"] -.->|2日空く| A2["3日前 閲覧"]
A2 -.->|2週間空く| A3["17日前 購入"]
A3 -.->|約半年空く| A4["約6か月前 購入"]
end
上の図が示すとおり、LLMの入力は隣接トークンがほぼ等間隔で並ぶのに対し、推薦の入力は行動の発生間隔が秒・日・月・季節のスケールで大きくばらつく。この差を無視したまま位置エンコーディングを使うと、「順序」は扱えても「いつ起きたか」は扱えない。本記事では、この盲点を体系的に指摘し、タイムスタンプを回転角に埋め込む時間認識型の位置エンコーディングであるT-RoPEが、何をどう変えたのかを順に見ていく。
前提知識:RoPE(Rotary Position Embedding)とは何か
RoPE(Rotary Position Embedding、回転位置埋め込み)は、Transformerの自己アテンションに位置情報を注入する方式のひとつで、クエリとキーのベクトルを「何番目のトークンか」という整数インデックスに応じた角度だけ回転させる。回転行列を R(φ) と書くと、位置 m のベクトルには角度 φ_m = m·θ_d(θ_d は次元ごとに決まる基準角)が与えられ、m 番目のクエリと n 番目のキーの内積は R(φ_m)q と R(φ_n)k の積になる。回転行列の性質により、この内積は個々の角度そのものではなく角度差 φ_n − φ_m だけに依存する。つまりアテンションスコアは「2つのトークンが何個離れているか」という相対位置の関数になり、絶対位置には依存しない。
flowchart LR
Q["クエリ q(位置 m)"] --> RQ["R(φ_m) で回転"]
K["キー k(位置 n)"] --> RK["R(φ_n) で回転"]
RQ --> DOT["内積 q·k"]
RK --> DOT
DOT --> S["スコアは角度差 φ_n − φ_m のみに依存<br/>= 相対位置 m−n で決まる"]
この性質がLLMで強力に働く理由は3点ある。第一に、相対位置推論が自然に得られるため「直前の語」と「10語前の語」を同じ基準で扱える。第二に、学習時より長い系列への外挿性(長文への汎化)が比較的よい。第三に、回転は要素ごとの掛け算で書けるため計算が軽く、位置ごとの回転結果をキャッシュできる。
ここで重要なのは、RoPEが扱う「位置」が系列上の順序を表す整数インデックスにすぎないという点だ。言語ではトークンがほぼ等間隔に並ぶため、順序がそのまま時間の近似になる。しかし推薦の行動ログでは、隣接する2件が数秒後であることも半年後であることもある。位置インデックス m は「何番目の行動か」しか語らず、その行動がいつ起きたかは位置エンコーディングの段階で捨てられている。
flowchart TB
subgraph IDX["インデックス型の位置(RoPEが扱う情報)"]
direction LR
P1["位置 1"] --> P2["位置 2"] --> P3["位置 3"] --> P4["位置 4"]
end
subgraph TIME["実際の発生時刻(捨てられる情報)"]
direction LR
D1["10:00"] --> D2["10:01"] --> D3["3週間後"] --> D4["半年後"]
end
IDX -.->|"順序は一致するが"| TIME
TIME -.->|"間隔の情報は届かない"| IDX
上の図のように、系列上のオフセットが同じなら「昨日の購入」と「半年前の購入」は区別できない。この盲点が出発点となり、タイムスタンプを回転角に直接埋め込む時間認識型の拡張が出てくることになる。
なぜ位置インデックスでは不十分なのか——失われる3つの時間信号
RoPEは、クエリとキーのベクトルを「何番目のトークンか」という整数インデックスに応じた角度だけ回転させる。テキストではこれが自然に機能する。トークンの並び順がそのまま意味の順序であり、隣り合うトークンの間隔は常に等しいからだ。しかし推薦システムでは事情がまったく異なる。ユーザー行動の系列は秒・分・時間・日・週・月・季節といった不揃いな実時間間隔で発生し、位置インデックスはその順序だけを記録して、実際の経過時間を捨ててしまう。このとき失われる時間信号は3つある。
1つ目は真の時間間隔(true time gaps)だ。 ユーザーが昨日購入した商品と半年前に購入した商品は、系列上のオフセットが同じ(たとえば直前と10個前)であれば、位置インデックスでは区別できない。行動同士の実際の距離が推薦の意味を大きく変えるにもかかわらず、モデルはその差を見ることができない。
2つ目はマルチスケール周期性(multiscale periodicity)の欠如だ。 人間の購買行動には、1日・1週間・1か月・1年といった複数スケールのリズムがある。食品の買い物は週単位、ファッションは季節単位、給料日やセール時期は月単位で繰り返す。位置インデックスの均等な回転は、こうした重なり合う周期を同時に表現できない。
3つ目は絶対カレンダー位相(absolute calendar phase)への到達不能だ。 標準的なインデックス型アテンションは相対オフセット(m−n)にしか依存しない。この性質は「時間並進不変性(time-translation invariance)」と呼ばれ、全タイムスタンプを同じ定数だけずらしてもスコアが変わらないことを意味する。経過時間は扱えても、「クリスマス直前」のようなカレンダー上の位置は区別できず、同じ履歴でも季節文脈の違いを反映できない。
既存手法もこの壁を完全には破っていない。各手法が3つの信号をどこまで扱えるかを整理すると次のようになる。
| 手法 | タイムスタンプ | 学習可能 | マルチスケール | シフト | 非定常 |
|---|---|---|---|---|---|
| 標準RoPE | × | × | × | × | × |
| TiSASRec | 部分 | × | × | × | × |
| TO-RoPE | ✓ | 部分 | ✓ | × | × |
| T-RoPE | ✓ | ✓ | ✓ | ✓ | ✓ |
TiSASRecは離散化した時間間隔をアテンションバイアスに注入するが、連続的なマルチスケール周期性やカレンダー位相には届かない。HSTUのTime RABは時間差をバケット化したスカラーとしてロジットに加算するだけで、クエリとキーの幾何構造自体は変えない。TO-RoPEはRoPE角にタイムスタンプを入れるが、クエリとキーが同じ回転のままで時間並進不変性が残る。
これら3つの信号——経過時間・マルチスケール周期性・絶対カレンダー位相——を1つの回転表現に統合することが、T-RoPEの設計目標になる。
T-RoPEの仕組み:5つの部品で時間を回転に埋め込む
T-RoPE(Time-Aware Rotary Position Embedding)は、回転位置埋め込み(RoPE)の回転角の意味を「系列上の順序」から「実時刻」へ置き換えた位置エンコーディングだ。回転角を絶対Unixタイムスタンプから計算し、改良は5つの部品に分解できる。各部品は経過時間・周期性・カレンダー位相という別々の時間信号を担当する。
flowchart LR
A["絶対Unixタイムスタンプ t"] --> B["回転角 φ = t/β"]
B --> C["学習可能な時間係数 α で重み付け"]
C --> D["マルチスケール周波数バンク β_d"]
D --> E["クエリのシフト整列 t_m+1"]
D --> F["非定常キー R(−φ) で逆回転"]
E --> G["アテンションスコア"]
F --> G
タイムスタンプ基準の回転
整数インデックス m を絶対Unixタイムスタンプ t_m(秒)に置き換え、回転角を φ = t_m / β_d とする。β_d は周期のスケールを決める基準周波数だ。2つの行動の相対位相は実時間差 (t_n − t_m) / β_d の関数になり、系列上は隣接していても時間的に離れた行動は回転円上で大きく離れ、短時間に集中したバースト行動は角度が密集する。均等間隔のインデックス回転では表現できなかった「行動間隔の粗密」が、そのまま幾何に現れる。
学習可能な時間係数
クエリとキーそれぞれに学習可能な係数 α^q_d、α^k_d を導入し、各周波数の寄与度をデータから学ぶ。食品は7日・30日、ファッションは季節、市場は給料日やセール周期と、支配的な周期はドメインや層で異なる。学習の結果、クエリとキーの係数は多くの次元で符号と大きさが揃う一方、層ごとのRMSは大きく異なり、各層が独自の時間感度を獲得する。
マルチスケール周波数バンク
各回転平面 d に、幾何級数的に異なる基準周波数 β_d(既定で10^2〜10^8秒の対数スケール)を割り当てる。単一周波数では1つの時間スケールしか解像できないが、複数を並べれば分〜年スケールの行動周期を同時に表現できる。学習係数が「どの周波数帯を強調するか」を決めるため、クリスマスのような特定イベントを明示しなくても周期的パターンが浮かび上がる。
クエリのシフト整列
位置 m のクエリは「次の行動の時刻 t_{m+1}」で回転させ、キーは自分の履歴時刻 t_m を保つ。系列次元に沿った1ステップのシフトで実装できる。学習時は最終スロットをラベル専用にし、推論時は最終クエリに現在時刻 t_now を割り当てる。これにより同じ履歴でも「ホリデーシーズンか平常の補充購買か」でクエリの時間位相が変わり、推論時の文脈に応じてスコアが変化する。
非定常キー符号化
キーに標準回転行列の転置、つまり逆回転 R(−φ) を適用する。すると内積の角度は時間差 (t_{m+1} − t_n) ではなく和 (t_{m+1} + t_n) に依存するようになる。和は共通の時間シフトで変化するため時間並進不変性が破れ、同じ履歴を別のカレンダー位相に置くとアテンションが変わる。回転はノルムを保存するため、RoPE互換のインターフェースは維持される。
完全なT-RoPEの定式化
各平面の回転を合成した最終形では、アテンションスコアが予測時刻 t_{m+1} と履歴時刻 t_n の学習された線形結合(α^q_d t_{m+1} + α^k_d t_n)で決まる。クエリ側とキー側の係数の和 α^q_d + α^k_d がゼロでない次元が1つでもあれば、時間並進不変にはならない。ここが、タイムスタンプをRoPE角に入れるだけの手法との決定的な差になる。
理論的な裏付け:なぜ時間並進不変性を破る必要があるのか
時間並進不変性(time-translation invariance)とは、系列に含まれるすべてのタイムスタンプを同じ定数 c だけずらしてもアテンションスコアが変化しない性質を指す。言い換えれば、モデルが見ているのは「どれだけ時間が経過したか」という差だけであり、「今がカレンダー上のどのあたりか」という絶対的な位相には関与しない。経過時間を扱うには十分だが、季節や曜日、セール時期のような文脈を区別できない。この対称性がなぜ問題なのかを、次の3つの命題で整理できる。
定理1(標準的なタイムスタンプRoPEは不変のまま):クエリとキーが同じ係数を共有し、キーにも通常の回転を適用する構成では、アテンションスコアは時間差 $(t_{m+1} - t_n)$ にのみ依存する。したがって全タイムスタンプを共通シフトしてもスコアは一定である。タイムスタンプをRoPE角に代入するだけの手法もこの性質から抜け出せず、季節のずれを単独では表現できない。
定理2(非定常キーが対称性を破る):キーに逆回転 $R(-\phi)$ を適用すると、内積の角度は差ではなく和 $(t_{m+1} + t_n)$ に依存するようになる。和は共通シフト c に対して $(\alpha^q_d + \alpha^k_d)c / \beta_d$ だけ位相を動かすため、係数の和がゼロでない次元が1つでも存在すればスコアは変化し、時間並進不変性が破れる。これが絶対時刻感度の獲得そのものである。
flowchart TD
A["全タイムスタンプを定数 c だけシフト"] --> B{"キーの幾何は?"}
B -->|"標準回転 R(+φ)"| C["角度は差 t_m+1 − t_n<br/>→ スコア不変(定理1)"]
B -->|"非定常キー R(−φ)"| D["角度は和 t_m+1 + t_n<br/>→ スコア変化(定理2)"]
系1(季節性の表現可能性):有効クエリ角周波数 $\omega^q_d = \alpha^q_d / \beta_d$ が $2\pi r / P$(P は周期、r は非ゼロ整数)の形を満たす次元が存在すれば、予測時刻のカレンダー位相に対して周期 P の周期的な依存を表現できる。7日=週次、30日=月次、365日=年次といったリズムは、複数の周波数平面を用意すれば学習のなかで自然に整列していく。
注意点として、学習係数がゼロ和($\alpha^q_d = -\alpha^k_d$)に退化すると、和の項が消えて不変性が復活する。つまり非定常キーを導入しただけでは十分でなく、クエリ側とキー側の係数の和が実際に非ゼロであることが必要になる。実運用のモデルではこの退化は起きず、むしろ層ごとに異なる時間バイアスが観測される。層によって時間感度が変わることは、浅い層が直近の行動パターンに、深い層がより長い周期に注目するといった役割分担として解釈できる。
実験結果:公開ベンチマーク・産業規模データ・オンラインA/Bテスト
T-RoPE の有効性は、公開データセットでの比較、産業規模データでのアブレーション、そして本番アプリでのオンラインA/Bテストという3段階で検証されている。評価指標はHR@K(上位K件に正解が含まれる割合)、NDCG@K(順位を加味した正解度)、MRR(正解が上位に来るほど高くなる指標)を用いる。以下、順に見ていく。
公開ベンチマークでの検証
公開ベンチマークとしては5つのデータセットが使われている。映画評価のML-20M、書籍レビューのAmazon Books、そして画像・商品系の大規模商用ログであるPixel200K/Pixel1M/Pixel8Mである。いずれも同一のPyTorch実装・同一の前処理・leave-one-out(各ユーザーの最後の1件を正解として残す評価方法)で、SASRec(時間を使わないベースライン)、TiSASRec(時間間隔をバイアスに注入)、HSTU、HSTU+Time RAB、HSTU+TO-RoPEと比較されている。
結果として、HSTU+T-RoPEは全データセット・全指標で最良となった。時間構造が豊かなデータほど改善幅が大きい傾向がある。
| データセット | HR@10 | 主な改善幅(最強ベースライン比) |
|---|---|---|
| ML-20M | 32.37 | +1.0% |
| Amazon Books | 7.65 | +11.0%(指標全体で8〜12%) |
| Pixel200K | 7.41 | +2.8% |
| Pixel1M | 13.35 | +7.1% |
| Pixel8M | 11.47 | +25.5% |
特に疎なPixelRec系では、TO-RoPE比でHR@10が78〜130%、HR@50が72〜112%改善している。一方、密で規則的な行動が並ぶML-20Mでは改善は控えめだが一貫している。「時間的不均一性が大きいデータほど効く」という傾向がここで裏づけられた形だ。
産業規模データでのアブレーション
実運用に近い規模として、約1.5億ユーザー・480万アイテム・60億超インタラクション(複数年分)のECデータで、T-RoPEの各コンポーネントを1つずつ除去するアブレーションが行われた。128次元埋め込み、12のHSTUブロック、最大系列長512という構成で、1日分をホールドアウトして評価している。
flowchart LR
A["フルT-RoPE"] --> B["- 非定常キー<br/>NDCG@50 −4%"]
A --> C["- シフトクエリ<br/>NDCG@50 −10%"]
A --> D["- マルチスケール周波数バンク<br/>NDCG@50 −42%"]
A --> E["- Time RAB<br/>MRR −27%"]
最大の寄与はマルチスケール周波数バンクで、除去するとNDCG@50が約42%落ちる。次いでクエリのシフト整列(約10%)が大きい。非定常キーは除去でNDCG@50が約4%、MRRが約5%下がり、絶対時間感度を担っていることが確認できる。
| 除去したコンポーネント | NDCG@50の変化 | MRRの変化 |
|---|---|---|
| マルチスケール周波数バンク | −42.33% | −48.31% |
| 絶対時間埋め込み | −39.80% | — |
| クエリのシフト整列 | −10.24% | −9.68% |
| 非定常キー | −4.01% | −5.45% |
| Time RAB | — | −27.01% |
注目すべきは、Time RABとT-RoPEが相補的に効く点である。Time RABを外すとMRRが大きく落ちるが、RABなしのT-RoPEでもNDCG@50で約50%改善しており、両者は独立に寄与し、併用時に最良となる。
オンラインA/Bテスト
最後に、ECアプリの本番レコメンダーでT-RoPEあり/なしを比較したオンラインA/Bテストが実施された。オフラインの指標改善が実際のビジネス指標に接続するかを確かめるのが目的である。
| 指標 | 相対リフト | p値 |
|---|---|---|
| コンバージョン率(CVR) | +0.33% | 0.037 |
| 注文数 | +0.63% | 0.094 |
コンバージョン率は統計的有意水準(p<0.05)を満たし、注文数も正の方向で一貫している。ECの推薦において0.3%前後のCVRリフトは無視できない規模であり、オフラインでの改善が実運用の売上指標まで届いたことを示す結果だ。以上から、T-RoPEは学術ベンチマーク上の見かけの改善にとどまらず、産業規模のデータと本番環境の両方で効果を発揮することが確認されている。
計算コストと実装:実運用に載るのか
T-RoPE は、位置エンコーディングの回転角の作り方だけを変える仕組みであり、Transformerの本体構造には手を入れない。そのため追加コストは小さく、実運用に載るかを判断するうえでの焦点は「どの程度のパラメータとFLOPが増え、スループットがどれだけ落ちるか」に絞られる。結論から言えば、追加パラメータはごくわずか、追加計算は系列長に対して線形で、実測スループットはベースラインとほぼ同等である。
追加パラメータは層あたりD個だけ
T-RoPEが学習する新しいパラメータは、各回転平面(周波数)ごとのクエリ・キーの時間係数 α^q_d、α^k_d である。回転平面の数 P はヘッド次元 D の半分(P = D/2)なので、1つのT-RoPEモジュールあたりの追加パラメータは 2P = D 個になる。HSTUを使った実験構成(2層・128次元)では、全体で 2 × 128 = 256個しか増えない。数百万〜数億パラメータの推薦モデルにとって、この増分は無視できる水準である。
追加計算は系列長・ヘッド次元に線形
計算量の面でも、T-RoPEの追加分はすべて系列長 N とヘッド次元に線形で収まる。主な内訳は次のとおりだ。
| 処理 | 概算FLOP | スケール |
|---|---|---|
| 時間角度 Φ^q, Φ^k の構築 | 4NP | 線形 |
| 回転の適用 | 12NHP | 線形 |
| sin/cos の超越関数 | 2NP | 線形 |
| 固定RoPEの逆伝播 | 12NHP | 線形 |
| 学習可能角度の逆伝播 dΦ | 18NHP + 2NP(H−1) | 線形 |
| 係数の勾配 | ≈4NP | 線形 |
ここで N は系列長、H はヘッド数、P は回転平面数である。重要なのは、自己アテンションそのものは依然として系列長に対して二次(O(N²))のままという点だ。T-RoPEが加えるのはすべて線形の項なので、系列長が長くなるほど相対的なオーバーヘッドは小さくなる。ボトルネックはあくまでアテンション本体であり、T-RoPEがそれを押し上げることはない。
flowchart LR
A["タイムスタンプ t_m<br/>(Unix秒)"] --> B["角度計算<br/>Φ = t/β(FP32)"]
B --> C["回転行列の適用<br/>線形コスト"]
C --> D["モデルdtypeに復帰"]
D --> E["自己アテンション<br/>O(N²):支配的コスト"]
実装上の3つの注意点
T-RoPEを実際に組み込む際には、数値安定性に関わる注意点がある。第一に、Unixタイムスタンプは約10^9秒という大きな値になるため、そのままの精度で角度を計算すると丸め誤差が蓄積しやすい。そこで角度計算はFP32で行い、回転を適用した後でモデルのdtype(BF16など)に戻す実装が採られる。第二に、学習可能な角度パラメータに対する勾配は標準の自動微分では扱いにくく、専用の逆伝播(dΦ)を実装する必要がある。第三に、タイムスタンプ由来で係数の勾配が大きくなりやすいため、勾配クリッピングや再スケーリングによる安定化が欠かせない。これらは学習を安定させるための実装ノウハウであり、推論時のコストには影響しない。
実測スループットはベースラインとほぼ同等
実際の訓練スループット(1秒あたりのイテレーション数、単一のH100で計測)は次のとおりである。
| データセット | ベースラインHSTU | HSTU+TO-RoPE | HSTU+T-RoPE |
|---|---|---|---|
| Pixel1M(訓練) | 17.58 ± 0.01 | 16.84 ± 0.05 | 16.95 ± 0.01 |
| Shop(訓練) | 37.19 ± 0.20 | 32.17 ± 0.35 | 32.91 ± 0.05 |
T-RoPEは既存の時間対応手法であるTO-RoPEとほぼ同じスループットを示し、ベースラインHSTUと比べてもわずかな低下にとどまる。実験はすべて2つのTransformerブロック、バッチサイズ128、学習率10^-3、AdamW(betas 0.9, 0.98)、weight decay 0.001、dropout 0.2、128のin-batchネガティブ(SampledSoftmaxLoss、温度0.05)という同一条件で行われており、条件差による見かけの速度差ではない。
以上から、T-RoPEは追加パラメータが層あたりD個、追加計算が線形、実測スループットがベースライン同等という3点で、精度向上の対価としての計算コストが小さい。学習時の数値安定化さえ押さえれば、既存の推薦基盤にそのまま載せられる設計だと言える。
どう使えるか:応用と実務への示唆
T-RoPE は、位置エンコーディングの回転角の作り方だけを差し替える仕組みであり、Transformerブロックの構造やアテンションの計算手順には手を入れない。この「ドロップイン互換」という性質が、実務でどこまで使えるかを大きく左右する。既存のモデルを設計から作り直すのではなく、位置エンコーディングの部品だけを入れ替えられるため、導入の判断は「効果が見込めるデータかどうか」に集約される。
任意のTransformer系推薦バックボーンに差し込める
T-RoPEは自己完結した位置エンコーディングとして提供されるため、生成型推薦の代表的バックボーンであるTIGER、LETTER、ActionPiece、HLLMなどに、原則としてそのまま組み込める。系列内のアイテムをトークンとして扱い、各行動にタイムスタンプが付いているデータであれば、回転角に使う時刻が手に入る。逆に言えば、タイムスタンプを持たない、あるいは順序情報しか残っていないログでは効果を発揮しにくい。導入の第一歩は、学習データの各インタラクションにイベント時刻が保持されているかを確認することになる。
flowchart LR
A["既存バックボーン<br/>(TIGER / LETTER / HSTU など)"] --> B["位置エンコーディング部<br/>を T-RoPE に差し替え"]
B --> C["行動系列 + タイムスタンプ<br/>を入力"]
C --> D["時間認識アテンション<br/>(経過時間・周期・暦位相)"]
D --> E["次アイテム予測<br/>/ ランキング"]
周期性が強い商材・場面ほど効く
T-RoPEが効くのは、時間的不均一性が大きいデータである。具体的には、毎週・毎月の購入周期を持つ食品や日用品、季節で需要が入れ替わるファッション、特定の時期に集中するギフトや季節商品、更新日が決まっているサブスクリプションなどが該当する。公開ベンチマークでも、時間構造が豊かなAmazon Booksのようなデータで最強ベースライン比8〜12%の改善が見られ、疎で商用的なPixelRec系ではHR@10で78〜130%の改善が報告されている。一方、ML-20Mのように密で規則的なデータでは改善は控えめだが一貫している。自社データが「規則的か、それとも季節・周期が強いか」を先に見極めることが、投資判断の材料になる。
「いつ推薦するか」を入力に反映できる
T-RoPEの実務的な利点は、予測時点の時刻をクエリの回転に反映できる点にある。同じ購買履歴を持つユーザーでも、ホリデーシーズンの駆け込み需要と平常時の補充購買とでは、スコアの出方が変わる。これは時間帯・曜日・セール時期といった文脈に応じた出し分けと相性がよく、既存の時間バイアス(HSTUのTime RABなど)とも併用できる。T-RoPEが時間差と暦位相を担い、既存の時間バイアスが別の粒度の信号を担う、という役割分担で相補的に効く。
推薦以外への転用も視野に入る
T-RoPEが解いているのは「時刻付き系列のTransformerに、経過時間・マルチスケール周期性・絶対カレンダー位相を同時に扱わせる」という一般的な問題である。したがって推薦に限らず、ユーザー行動ログ、センサー時系列、ログ解析など、時刻付きの系列を扱う生成モデル全般に転用できる余地がある。導入コストが層あたりD個の追加パラメータと線形の追加計算で済むこともあり、「まずは時間情報を持つタスクで試し、効く領域を広げる」という進め方が現実的だ。
よくある質問
T-RoPEは通常のRoPEを置き換えるものですか、それとも併用するものですか?
T-RoPE は、位置エンコーディングそのものを置き換えるドロップイン互換の部品として設計されています。クエリとキーを回転行列で回す計算インターフェースはRoPEのまま維持し、回転角の意味だけを「何番目のトークンか」という順序インデックスから「いつ発生したか」という時刻に変えるのが違いです。したがってSASRec・HSTU・TIGER・HLLMといったTransformer系バックボーンのRoPE部分を差し替える形で導入できます。HSTUのTime RABのようにアテンションロジットへ時間差を加算する既存の時間バイアスとも排他的ではなく、併用したほうが精度が高くなることが産業規模データのアブレーションで確認されています。
タイムスタンプをRoPE角に入れるだけではだめなのですか?
クエリとキーに同じ係数・同じ回転方向を適用したままタイムスタンプを角度に代入しても、アテンションスコアは2つの時刻の差にしか依存しません。この性質は時間並進不変性と呼ばれ、履歴全体を同じ定数だけ未来にずらしてもスコアが変わらないことを意味します。その結果、「6か月前」と「昨日」の違いは扱えても、その行動がクリスマス前なのか平常の補充購買なのかといったカレンダー上の位相は区別できません。T-RoPEはキー側に逆回転を適用してスコアを時刻の「和」に依存させ、この対称性を意図的に破ることで絶対時刻への感度を獲得します。
マルチスケール周波数バンクはなぜ必要ですか?
回転の基準周波数(周期)が1つだけだと、モデルが解像できる時間スケールも1つに固定されてしまいます。しかし実際の購買行動には、時間帯・曜日・週・月・季節・年といった複数のリズムが重なっており、単一周波数では同時に表現できません。T-RoPEは各回転平面に10^2秒から10^8秒までを対数スケールで割り当てた周波数の束を持ち、どの周期をどれだけ重視するかを学習可能な係数に任せます。産業規模データのアブレーションでは、このバンクを外したときの劣化が最も大きく、NDCG@50で約42%低下しました。
追加コストはどれくらいですか?
追加パラメータは各T-RoPEモジュールあたり次元数D個程度で、HSTUを使った実験設定(2層・128次元)では256個にすぎません。追加計算は系列長とヘッド次元に対して線形で、自己アテンション自体が系列長の二乗で増えることを踏まえると相対的なオーバーヘッドは小さく、実測スループットもベースラインとほぼ同等でした。一方、絶対Unixタイムスタンプ(約10^9秒)を角度に使う都合上、角度計算はFP32で行う必要があり、学習係数の勾配が大きくなりやすいためクリッピングなどの安定化が求められます。
どんなデータで最も効きますか?
行動の発生間隔が不揃いで、時間的な周期性が強いデータほど効果が大きくなります。疎で商用的な性質を持つPixelRec系ではHR@10が78〜130%、Amazon Booksでは8〜12%改善し、季節やセール周期が明確な大規模ECのデータでも全指標で改善しました。逆に、密で規則的に行動が記録されるML-20Mのようなデータでは改善幅は控えめですが、一貫してベースラインを上回っています。
まとめ
T-RoPE は、アテンションを「何番目の行動か」ではなく「いつ起きたか」で回す、時間認識型の位置エンコーディングです。LLMのRoPEは、トークンがほぼ均等間隔で並ぶテキストを前提に設計されています。ユーザー行動の並びにそのまま適用すると、昨日の行動と半年前の行動が系列上のオフセット次第で同じ位置に潰れてしまい、経過時間の情報が失われます。
T-RoPEはこの前提を、5つの部品で置き換えます。タイムスタンプ基準の回転、学習可能な時間係数、マルチスケール周波数バンク、クエリのシフト整列、非定常キー符号化です。これにより、①真の時間間隔(true time gaps)、②時間・週・月・季節といったマルチスケール周期性(multiscale periodicity)、③絶対カレンダー位相(absolute calendar phase)という3つの時間信号を、1つの回転表現に統合します。鍵となるのは非定常キーで、キー側に逆回転を適用してスコアを時刻の「和」に依存させることで、標準RoPEが持つ時間並進不変性(全タイムスタンプを同じ定数だけずらしてもスコアが変わらない性質)を意図的に破り、季節文脈への感度を獲得します。
| 要素 | 担う時間信号 |
|---|---|
| タイムスタンプ基準の回転 | 真の時間間隔 |
| 学習可能な時間係数 | ドメイン・層ごとの時間感度 |
| マルチスケール周波数バンク | 複数スケールの周期性 |
| クエリのシフト整列 | 予測時刻に応じた文脈変化 |
| 非定常キー符号化 | 絶対カレンダー位相 |
効果は公開ベンチマーク・産業規模データ・オンラインA/Bテストで一貫しています。5つの公開データセットでは全指標で最良となり、疎なPixelRec系ではHR@10が78〜130%(TO-RoPE比)、Amazon Booksでは8〜12%改善しました。60億インタラクション超の産業規模データでは、HSTU+Time RAB比で全指標13〜82%改善し、コンポーネント除去ではマルチスケール周波数バンクの寄与が最大でした。オンラインA/Bテストでもコンバージョン率 +0.33%(p=0.037)、注文数 +0.63%という正のリフトが観測され、オフラインの改善が実ビジネス指標に接続しています。
コスト面では、追加パラメータは各モジュールあたり次元数D個程度、追加計算は系列長とヘッド次元に対して線形で、実測スループットもベースラインとほぼ同等です。ドロップイン互換のため任意のTransformer系バックボーンに差し込めるうえ、Time RABのような既存の時間バイアスとも併用できます。推薦に限らず、時刻付きの系列を扱う生成モデル全般にとって、「順序」と「時刻」を分けて扱うという設計指針を示した点が、本手法の本質的な貢献と言えます。
参考資料
- T-RoPE: Time-Aware Rotary Position Embedding for Sequential Recommendation(論文 Abstract)
- 同 論文 HTML 全文
- 同 論文 PDF