Adversarial Feature Translation for Multi-domain Recommendation
論文情報
tencentの方々(特にWeChatというチャットサービスの方々)
https://gyazo.com/eeeee76744cd47b57c6cae8922469a85
選んだ理由
タイトルが強そうだったから
Multi-domainをトピックタブ-カテゴリタブ、ヘビーユーザー-休眠しかけユーザーなどでうまく使えたらいいなと思ったから
TL; DR
multi-domain recommendtionに初めて敵対的学習(GAN, generative adversarial network) を導入した。
generatorは複数ドメインの情報が入力され、複数ドメインにおける偽のクリックされたアイテムtop-k個を生成する
ターゲットドメイン(推薦を出すドメイン)のエンコードをmasked encoderにすることで特徴抽出を促した
discriminatorはitem/domainの情報とクリックされたアイテム情報が入力され、真のクリックか偽のクリックかを識別する
ユーザーのターゲットドメインにおける嗜好表現を作るために
1st: ドメイン単位の好み + アイテム単位の好み = ユーザーのgeneralな好み
2nd: ユーザーのgeneralな好み(from 1st) + ターゲットドメイン情報 = ターゲットドメインにおける好み
の2段構成でfeature translationを行った。
online/offline両実験の全てのドメインでSOTAを達成。(WeChatで実践)
/icons/hr.icon
そのまえに: multi-domain recommandationとcross-domain recommendation
cross-domain recommendationは2つのドメイン(アイテムの種類の違い、ユーザーの属性の違いなど)のうち、片方をソースドメイン(補助情報)としてターゲットドメイン(本タスクの情報)に転移させて推薦を行うこと。
ターゲットドメインでの性能を上げることが主目的。
target domainに有効な特徴をsource domainから抽出できるかがポイントになる
multi-domain recommendationは複数ドメイン全体で性能を上げることが目的。
domain-specificな特徴抽出と、domain間の相互関係抽出がポイント
しかし(user, item)のクリック履歴がスパースなこと、ドメイン間の相互関係がスパースなことが性能の妨げになる
→スパース性をGeneratorで埋める提案
Related Works
multi-domainの推薦モデルもさまざまなアプローチがある。
協調フィルタリングを複数ドメインで同時に行うように拡張したもの
Graph convolutional network
マルチタスク
domain-specificな特徴獲得とinter-domainな特徴獲得のトレードオフをゲートで調節したもの
/icons/hr.icon
モデル
概観
https://gyazo.com/ff191b5551f6aaa07e60dc9b40392762
Generator
Domain-specific masked encoderでターゲットドメイン以外のドメインから有効な特徴を抽出させる
→上2層でターゲットドメインにおける嗜好を獲得
→獲得した嗜好から偽のクリックアイテム(どのアイテムをクリックしたのか)をk個生成
Discriminator
ユーザーが実際にクリックしたアイテムなのか、偽クリックアイテムなのかを識別する。
feature translationを二段でやったモデルがウリ。
1st: itemとdomainにおけるユーザーの好みベクトルと作成し、この和をユーザーのgeneralな好み表現とする。
2nd: ターゲットドメインの情報を使って、ユーザーのgeneralな好み表現をdomain-specificな好み表現に転移する
もう少し詳しく
https://gyazo.com/6327a48a8a72099dcae86b4481454cbd
Generator
ドメインごとにユーザがクリックした/しなかったアイテム系列をエンコードする。
→ドメイン特徴量($ f_1, ...., f_n )を獲得
ターゲットドメイン:Domain-specific masked encoder
アイテム系列の一部をランダムにMASKしてエンコード(masked language model的)
ターゲットドメイン内のアイテム関係をより獲得しやすくさせる。
実際に推薦するドメイン(target)についてはより詳しく知っておかせたい
ターゲットドメイン以外:普通のEncoder (画像、テキストなどドメインごとによしなにEncoderを用意?しaverage pooling。代替welcome)
Transformerでドメイン特徴量をaggregate
ドメイン間の特徴同士の関係を掴む
Domain-scpecific attentionでターゲットドメインをキーとしてattention
ターゲットドメインに特化したユーザーの好み表現$ h_tができあがる。
他ドメインに含まれる、ターゲットドメインに有効な特徴を強調
fast nearest neighbor serverでtop-kクリック候補を生成
nearest neighbor server(公開されているサーバーがあるらしい)にターゲットドメイン-specificなユーザー表現$ h_tを投げ、ターゲットドメインでクリックされそうなtop-k個のアイテムを生成
あえて$ h_tそのままではなくnearestなtop-kにすることでより高品質な偽物を作る
https://gyazo.com/6327a48a8a72099dcae86b4481454cbd
Discriminator
ドメイン単位、アイテム単位の2粒度でエンコード
generatorと異なりアイテム単位でターゲットドメインはマスクしない
domain-level好み表現(粗い好み)とitem-level好み表現(細かい好み)ができる
二段階feature translation
三組ベースの知識表現学習(KRL, Knowledge representation learning)モデルを参考にした。
三組<head, relation, tail>の各表現について$ e_{head} + relation = e_{tail}に近づくように表現を学習していく。
TransE, ConvEなどが有名。今回はConvEの考え方を使った。($ e_{head}と$ relationを畳み込んだ結果が$ e_{tail}になるよう学習。モデルはCNNと平滑化で実装)
提案モデルでは、
1st:ユーザーの <item-levelの嗜好> + <domain-levelの嗜好> = <generalな嗜好>
2nd: <userのgeneralな嗜好> + <target domain情報> = <userのtarget domainにおける嗜好>
最適化
ロス関数は discriminatorのロス + generatorのロス + dissimilarity loss
Discriminator loss: itemがクリックされた or されなかったを正しく識別できたか
Generator loss: 強化学習ベース。generatorが生成した偽クリックアイテムを入力した場合にdiscriminatorの尤度が高くなる(本物と見間違えている)ほど報酬が大きくなる。報酬を最大化するように更新。
Dissimilarity loss: 真のクリックアイテムと生成された偽クリックアイテムが似ないようにする。 = クリックされてないけどクリックされそうな負例を作りたい。
提案モデルの利点
GANの仕組みにより高品質なnegative sampleができる。スパース性と過学習の課題を解決◎
他ドメインからの特徴抽出を促す仕組み:generator内のdomain-specific masked encoderではターゲットドメインの特徴がmaskされてしまうので、他ドメインの特徴から学習せざるを得ない。
解釈性:Discriminatorの2段階translationでは陽に(item, domain, user)のgeneral/specificな表現を扱っており解釈しやすい。
実験
データセット
Netflix: 映画の評価データセット。historyとromanceカテゴリを仕様。
MDR-5B: WeChatの5つのheteroな推薦ドメイン(article, long video, short video, program, application)からあらたに作成したデータセット。
両データセットのデータ量
https://gyazo.com/c4615084f9b4a348d90c0ce36d605af6
比較モデル
単一ドメインのみの推薦モデル(single)
マルチドメインの推薦モデル(multi)
マルチタスク学習の推薦モデル
提案モデル AFT(adversarial feature translation)
本体、GAN使ったもの(D+G, discriminator + generator)
Discriminatorのみ(D) : クリックされなかったアイテムを負例としてdiscriminatorにかけた
Ganaratorを既存の強いnegative samplingモデル heard negative miningに置換した(D+HNM)
オフライン実験
評価:Recall@N
AFT is deployed in the matching module, which focuses more on whether good items are retrieved rather than their specific ranks
結果:全勝。Discriminatorのみの時点でほぼ勝っている。
https://gyazo.com/4137b49a5f22c4fc743c09c5a37b0394
https://gyazo.com/3b5c73f2683ee999b6dfb51f9c4d26a4
オンライン実験
WeChat上に提案モデルを実装、A/Bテストを実施。(7日間約50million人)
画面が色々あるうちWeChat Top StoriesとWeChat Readingの結果を公開。
(他のフィードはどうだったのか気になる)
既存モデルは複数のsingle-domain, multi-domain, rule-basedモデルのアンサンブル(すでに強そう)
評価:CTRと平均クリック数(average click number per capita)
結果:全勝。
(感想)Cold-start users, Push feedでの上昇幅が大きいことからあまりアクティブでないユーザーへの効果が特に高いと受け取れる。これはGeneratorで偽クリックを生成したことでスパース性への対策がうまくできた効果のように見える。
https://gyazo.com/34b4ff4759780ea4bacf35e280d1eaab
Ablation
MDR-5Bでテスト、Recall@200で評価
ドメインによるが、generatorとfeature translationが特に重要。(=generatorもdiscriminatorも両方重要)
https://gyazo.com/b512c029c69ee72946a6740553f36f61
所感
実際のサービスでゴリゴリのモデルが適用されたことがすごいなぁと感じた。
企業の発表だがモデルについて詳しく書かれていて、敵対的学習までやっていれば参入障壁になるから問題ない、のスタンスなのか気になった。(公開しても平気なのは学習をうまくすすめるためのtipsが実は多いのではないか)
Offline実験の結果を見るとDiscriminatorだけ作って(現状使っているモデル+Discriminator)の多段構成のモデルにするだけでも有効そうだと思った。