Forest-based Deep Recommender
2022/09/08
著者: 中国科学技術大学、Microsoft の方々
https://gyazo.com/228c8c3f5d53cfdbd2fb4a55e17635b9
選んだ理由
木構造による高速な予測というものに惹かれたため
どんなもの?
木構造を用いたディープな推薦システム
基本的には alibaba の下記論文の拡張版
Learning Tree-based Deep Model for Recommender Systems
https://www.youtube.com/watch?v=w_Q-5D-Scls
top K な item 推薦を高速に行うことを目的にした
木構造にはあるノードにおけるユーザーの preference $ p が子ノードよりも親ノードの方が大きくなるように制約を設ける(max-heap assumption)
とはいえ目的関数の制約できっちり決められているわけではないっぽい
高速化のために計算を簡略化しているところもあるので、あくまでベストエフォート感
$ p^{j}(n \mid u)=\frac{\max _{n_{c} \in \text { node }} n^{\prime} \text { s children } p^{(j+1)}\left(n_{c} \mid u\right)}{\alpha^{j}}
上記の制約があるため、ビームサーチを用いることで top K の推薦が高速に行える
本論文にはなかったが alibaba では production に入れて 5ms
CTR: 2.1%, eCPM 6.4% の向上らしい
モデルの概要図
https://gyazo.com/6220d654f46e9ce8b35126bfdeb3ca3d
先行研究と比べてどこがすごい?
先行研究の課題
max-heap assumption が十分に満たされていなかった
モデル概要図における同じレイヤーの node 間の比較が欠如しているため
元論文を読んだが root から leaf に向けて node の 2 値分類をしているようだった
横軸方向の探索に不向きな学習
top K の取得時は幅優先探索をするため、横軸方向の探索を行う
しかし、上記に関連してモデルの学習は縦方向に行われており、学習時と予測時でギャップが大きい
学習データにおける不均衡性の課題
2 値分類での学習であるため、negative sample の影響を受けやすい
上記の解消法
Tree の Level ごとの多クラス分類を入れた
??各 Level には必ず positive な sample がないと成立しない気がする
このあたりの制約をどう設けているかは謎だった
技術や手法のキモはどこ?
大きく 2 つのモデルがある
それぞれのモデルを片方固定をして、もう片方の学習を動かす
Preference Model
図の左側のモデル
User Profile
適当な Widow size に区切ったユーザーの interaction
item の embedding
各 node の embedding
各 item を click するかどうかの予測を行う
item から node への単射関数 $ \Pi(item_i) = n_{leaf}
ここの更新方法が謎だった・・・
ユーザーの item について下記 score を最大化する node を割り当てる
各 $ \hat{p} は Preference Model の出力に基づく
$ \operatorname{Score}\left(\text { item }_{i}, n_{j}\right)=\sum_{\left(u, i t e m_{i}\right) \in \mathcal{A}_{i}} \log \hat{p}\left(n_{j} \mid u\right)
$ \hat{p}\left(n_{j} \mid u\right)=\frac{\exp o_{u}^{j}}{\sum_{k=1}^{c} \exp o_{u}^{k}}
多クラス分類化
上記の図の SoftMax を取り除いて Preference Model の主力を 1 要素に
木構造の葉ノードから親ノードに上がっていくとどこかに positive な要素がある
その Level において多クラス分類を仕掛け、Cross Entropy を取る
木の全 Level に対してこれを行い、Cross Entropy の和を取って Prefrence Model の Loss とする
https://gyazo.com/2ab39d5d8b401665fc207ed5916df8c4
SoftMax 関数の高速化
多分 Negative sampling 的な話だとは思う
数式メインだったので割愛
どうやって有効だと検証した?
多クラス分類が有効であることを確認するため木構造の更新をせずに既存モデルと比較した
既存: JTM (TDM)
JTM, TDM のアルゴリズムの差分は木構造の更新方法だけなので、1 つの結果にまとまっている
提案手法: DeFoRec
https://gyazo.com/991ddf76c1d8499c332647bb29da1c9d
各結果より良い結果がでたので、多クラス分類による方法は有効であることがわかった
既存の他のモデルとの比較 -> 良かった
https://gyazo.com/a38c43d25d7710f0820f522cabbeb7e5
木の数を増やしたときの metrics の変化
そもそも TDM の木の学習方法の意味がほぼないことは既存論文でも指摘されていた
node の embedding で順に KNN にかける方法
木を増やすと結果が良くなっているので、本提案手法の木構造の学習方法が効率的であるということがわかった
https://gyazo.com/9767be51e5458eade50e26c3f4db0c43
所感
node と item の関係性がいまいち理解しきれなかった
木構造で index を作って、高速に推論という考え方は面白いなと感じた
alibaba の最初の提案論文ではオンラインの A/B テストでかなりいい結果を出していたのでよさそう
かつ速いので production で使われることが意識されたモデルだなと思った
図が引用論文ままで提案手法の図がなかったのが・・・