---
title: "BST（Behavior Sequence Transformer）とは？Alibabaの推薦モデルの仕組み・実装・性能"
url: "https://www.issoh.co.jp/tech/details/5574/"
published: 2025-02-27
updated: 2026-09-27
categories: ["AI"]
publisher: "株式会社一創"
---

# BST（Behavior Sequence Transformer）とは？Alibabaの推薦モデルの仕組み・実装・性能

BSTという略語には英国夏時間（British Summer Time）や二分探索木など複数の意味がありますが、本記事が扱うのは推薦システムの**Behavior Sequence Transformer**です。BSTは、Alibabaが自社ECのTaobaoで実用化し2019年（DLP-KDD/arXiv:1905.06874）に発表した、ユーザーの行動系列をTransformerで捉えるCTR予測モデルを指します。閲覧・クリック・購入といった行動を「起きた順序ごと」学習する点が、順序を捨てていた従来手法との決定的な違いです。仕組み・従来手法との差・PyTorch実装・論文で報告された実測性能までを、水増しを削って要点だけまとめます。

## まとめ：この記事の結論

- BST＝Behavior Sequence Transformer。AlibabaがTaobaoの推薦ランキング（Rank段）で使うCTR予測モデルで、行動系列にTransformerの自己注意を適用する。
- DINは注意機構で「どの過去行動が効くか」を重み付けするが順序は無視する。BSTはTransformerで**行動の順序（系列依存）**まで取り込む点が上乗せ価値。
- 位置エンコーディングはsin/cosではなく「推薦時刻とクリック時刻の差」を使う。Transformer層は**1層が最良**で、積むほど精度は下がった。
- 論文実測はオフラインAUC 0.7894（WDL 0.7734／DIN 0.7866を上回る）、オンラインCTR**+7.57%**、平均応答20ms。
- 豊富な行動ログとランキング段があるECには有効。行動系列が短い・コールドスタート主体の場面では投資に見合わないことが多い。

## BST（Behavior Sequence Transformer）とは：行動系列で次の関心を予測する推薦モデル

BSTは、ユーザーが直近にとった行動の並び（行動系列）を入力にとり、「次にこのアイテムをクリックする確率」を出力する推薦向けのCTR予測モデルです。核心は、自然言語処理で成果を上げた[Transformerの自己注意機構](https://www.issoh.co.jp/tech/details/13446/)を、単語列ではなく**商品ID列**に適用したことにあります。単語の並びから文脈を読むのと同じ要領で、「スマホを見た→ケースを見た→充電器を見た」という行動の流れから次の関心を推定します。Alibabaの論文では推薦全体の入れ替えではなく、候補を並べ替えるランキング（Rank）段の一部として組み込まれました。

## BSTが生まれた背景：WDL・DINが取りこぼした「行動の順序」

それ以前のTaobaoの主力はWDL（Wide & Deep Learning、Embedding＋MLP型）で、行動履歴を集約はするものの順序情報を持ちません。続くDIN（Deep Interest Network）は注意機構を導入し「対象商品に関連の深い過去行動を強く見る」ことを可能にしましたが、これも**各行動を独立に重み付けするだけで並び順は考慮しない**設計でした。実際のユーザー行動は「昨日スマホを買った直後にケースを探す」のように順序に強い意味があります。この順序依存を明示的に学習させるためTransformerを持ち込んだのがBSTで、DINの注意にさらに系列モデリングを重ねた位置づけになります。

## BSTのアーキテクチャ：埋め込み・位置エンコーディング・Transformer・MLP

BSTは大きく、行動系列を数値化する埋め込み層、系列を読むTransformer層、CTRを出すMLPの3段で構成されます。それぞれ実装上の勘所が異なるため分けて見ます。

### 埋め込み層と「時刻差」ベースの位置エンコーディング

各行動アイテムのIDと属性を埋め込みベクトルに変換し、系列の最後に予測対象アイテムを連結します。特徴的なのは位置エンコーディングで、Transformer標準のsin/cosではなく、アイテム`v_i`の位置を`pos(v_i) = t(v_t) - t(v_i)`——推薦を行う時刻`t(v_t)`とそのアイテムをクリックした時刻`t(v_i)`の差——で与えます。「いつの行動か」を実時間で持たせるこの方式が、論文の比較では標準の位置エンコーディングより高精度でした。

### Transformer層（自己注意）と「1層が最良」という知見

連結した系列に自己注意（マルチヘッド、8ヘッド）を適用し、行動間の関連度を学習します。注目すべきは層数で、論文はTransformerブロックを1層（AUC 0.7894）・2層（0.7885）・3層（0.7823）で比較し、**1層が最も高く、深くするほど悪化**しました。機械翻訳のような長距離依存と違い、ECの行動系列は依存構造が単純で、層を積むと過学習しやすいためと説明されています。「Transformerだから深く積む」が常に正しいとは限らない実例です。

### MLPとCTR予測の出力

Transformerの出力を他の特徴量（ユーザー属性・アイテム属性・文脈）と結合し、全結合3層（1024→512→256）に通します。活性化はLeakyReLU、正則化にドロップアウト（0.2）を用い、最後にシグモイドで0〜1のクリック確率を出力します。最適化はAdagrad、学習率0.01、バッチサイズ256が論文設定です。

## 従来手法との違い（協調フィルタリング・WDL・DIN）

順序の扱いと対象アイテムとの関連付けの観点で並べると、BSTの立ち位置が明確になります。数値は論文のオフラインAUC（Taobaoデータ）です。

| 手法               | 行動の順序          | 対象アイテムとの関連付け  | オフラインAUC |
| ---------------- | -------------- | ------------- | -------- |
| 協調フィルタリング        | 考慮しない          | 共起・類似度ベース     | ―        |
| WDL（Wide & Deep） | 考慮しない          | Embedding＋MLP | 0.7734   |
| DIN              | 考慮しない          | 注意機構で重み付け     | 0.7866   |
| BST              | Transformerで考慮 | 自己注意＋対象を系列に連結 | 0.7894   |

協調フィルタリングやコンテンツベースは実装が軽く解釈しやすい一方、順序も文脈も持ちません。推薦手法の系譜と使い分けは[Generative Recommendationと従来手法の違い](https://www.issoh.co.jp/tech/details/12414/)も参考になります。

## PyTorchによる最小実装

論文の骨子（系列末尾に対象アイテムを連結→1層Transformer→MLP）を最小構成で書くと次のようになります。実務では系列以外の特徴量もMLP前で結合します。

```
import torch
import torch.nn as nn

class BST(nn.Module):
    def __init__(self, n_items, d_model=64, n_heads=8, max_len=20):
        super().__init__()
        self.item_emb = nn.Embedding(n_items, d_model, padding_idx=0)
        self.pos_emb = nn.Embedding(max_len, d_model)  # 時刻差を0〜max_len-1にクリップして入力
        layer = nn.TransformerEncoderLayer(
            d_model, n_heads, dim_feedforward=256,  # FFN幅は便宜値（論文指定ではない）
            dropout=0.2, batch_first=True)
        self.encoder = nn.TransformerEncoder(layer, num_layers=1)  # 論文はb=1が最良
        self.mlp = nn.Sequential(
            nn.Linear(d_model, 1024), nn.LeakyReLU(),
            nn.Linear(1024, 512), nn.LeakyReLU(),
            nn.Linear(512, 256), nn.LeakyReLU(),
            nn.Linear(256, 1))

    def forward(self, seq, pos, target):
        h = self.item_emb(seq) + self.pos_emb(pos)     # 行動系列＋位置
        tgt = self.item_emb(target).unsqueeze(1)       # 予測対象アイテム
        h = torch.cat([h, tgt], dim=1)                 # 系列末尾に連結
        h = self.encoder(h)
        pooled = h.mean(dim=1)
        return torch.sigmoid(self.mlp(pooled)).squeeze(-1)
```

Transformer層やAttentionの前提知識は[Transformerとは（自己注意の仕組み）](https://www.issoh.co.jp/tech/details/13446/)を、既製実装やモデル配布の入手は[Hugging Faceの使い方](https://www.issoh.co.jp/tech/details/6108/)を合わせて確認すると理解が早いです。

## 性能：オフラインAUCとオンラインCTRの実測値

論文が報告した数値を整理します。オフライン評価ではBSTがWDL・DINを上回り、Taobaoでの本番A/Bテストでも改善が確認されています。

| モデル | オフラインAUC | 平均応答時間(ms) |
| --- | -------- | ---------- |
| WDL | 0.7734   | 13         |
| DIN | 0.7866   | 16         |
| BST | 0.7894   | 20         |

オンラインではWDLを対照群としてCTRが**+7.57%**改善しました。応答時間は20msで、自己注意を挟んでもWDL（13ms）・DIN（16ms）から実用範囲に収まっています。AUCの絶対差は小さく見えますが、CTR予測では大規模流量下でわずかなAUC改善が収益差になり、実際この0.7894はTaobaoの本番A/Bで+7.57%のCTR改善につながっています。

## BSTを採用すべき場面・避けるべき場面

BSTが効くかどうかは、行動ログの長さとランキング段の有無でほぼ決まります。導入前に自社データと照らして判断すべきです。

**向く場面**：ユーザーあたりの行動ログが十分に長く（数十件規模の系列が取れる）、候補を並べ替えるランキング段が既にあり、そこにms単位の推論を差し込めるEC・大規模サービス。順序に意味がある回遊型の購買行動ほど効きます。

**避けるべき場面**：行動系列が数件しか取れない、または新規ユーザー・新規アイテムのコールドスタートが主戦場のケース。BSTは既存の行動系列から学ぶモデルで、系列が無い相手には強みを出せません。この場合はコンテンツ特徴や共起ベースの手法を土台にし、系列が溜まってからBSTを重ねる順序が現実的です。学習・運用コスト（Transformerの推論レイテンシとGPU）に見合う流入規模が無いうちは、DINやWDLで足ります。

## よくある質問

### BSTとは何の略ですか？

文脈によります。IT・推薦分野ではBehavior Sequence Transformer（本記事の主題）ですが、一般には英国夏時間（British Summer Time）、データ構造の二分探索木を指すこともあります。推薦・機械学習の文脈で出てきたBSTは、ほぼBehavior Sequence Transformerと考えて差し支えありません。

### DINとの違いは何ですか？

DINは注意機構で過去行動を重み付けしますが並び順は見ません。BSTはTransformerで行動の順序（系列依存）まで学習します。論文のオフラインAUCはDIN 0.7866に対しBST 0.7894で、順序を取り込んだ分の上乗せが確認されています。

### Transformerは何層積むべきですか？

BSTでは1層が最良でした（AUC 1層0.7894／2層0.7885／3層0.7823）。ECの行動系列は機械翻訳ほど依存構造が複雑でないため、層を増やすと過学習で精度が落ちます。まず1層で試すのが定石です。

### 位置エンコーディングは通常のTransformerと同じですか？

違います。sin/cosの代わりに「推薦時刻とクリック時刻の差」`pos(v_i)=t(v_t)-t(v_i)`を位置として与えます。実時間の経過を持たせるこの方式が、標準の位置エンコーディングより高精度でした。

### 小規模データでも効果はありますか？

限定的です。BSTは十分な長さの行動系列があって初めて力を発揮します。系列が短い・データが少ない段階では、協調フィルタリングやDINなど軽量な手法のほうが費用対効果は高くなります。

## 関連記事

- [Transformerとは？自己注意の仕組みとBERT・GPTの違いを実装目線で解説](https://www.issoh.co.jp/tech/details/13446/)
- [Generative Recommendationの基本的な仕組みと従来手法との違い](https://www.issoh.co.jp/tech/details/12414/)
- [AIレコメンドエンジンの比較｜選び方と主要サービス【2026年版】](https://www.issoh.co.jp/column/details/2690/)
- [Hugging Face（ハギングフェイス）とは？できること・使い方・料金を初心者向けに解説](https://www.issoh.co.jp/tech/details/6108/)

---

出典: [BST（Behavior Sequence Transformer）とは？Alibabaの推薦モデルの仕組み・実装・性能](<https://www.issoh.co.jp/tech/details/5574/>)（株式会社一創）
