【論文紹介】Deep Interest Evolution Network for Click-Through Rate Prediction (AAAI2019) - 7月 04, 2019 こんにちは、ぐぐりら(@guglilac)です。 今回は、AAAI2019のDeep Interest Evolution Network for Click-Through Rate Predictionという論文の紹介記事になります。 いつもより自分のためのメモ書き感が強いですが、よろしくお願いします。 ## 3行まとめ user interestを考慮したCTR prediction modelはいくつかあるが、behaviorをinterestと捉えていて効果的にinterestのembeddingを取れていないこと、およびinterestの変化をtarget itemによらず同一のtrackとして取り出すという問題点があった。それらをauxiliary lossおよびAUGRUを用いて改善したDIENを提案。 ## 関連研究 * deep ctr model * user interest考慮 * 行動履歴を使ったもの あたりが挙げられていた deepを使ったCTR modelは、deepFMとかwide and deep、PNNなどが挙げられていて、今回の研究とは直接は関連しないので割愛。 user interestを考慮したものに、Deep Interest Network(DIN)がある。けど、sequencial behaviorを考えていない(未確認なのでこれも読んでみたい) 行動履歴を考えているもの+interestを考えているものもいくつかあって、ATRankとかが該当するらしく。 Two layer GRU Attentionとかも関連しそう ([[1804.09133] Improving Native Ads CTR Prediction by Large Scale Event Embedding and Recurrent Networks](https://arxiv.org/abs/1804.09133)) この辺からの差分はtarget itemごとに違ったinterest evolution trackが得られる、というところ。 行動履歴からuserのinterestの変化を取り出してきて、target itemに対してclickするかどうかを予測する、みたいなことをするのは共通なんだけれど、そのinterestの変化をtarget itemごとに異なるtrackとして引き出してきたいよね、というのがDIENのモチベーションの一つ。 ## 提案手法 モデルの全体図。 入力は、 * behavior history * target item * context * user profile の四つ。 以下では基本的に、各field をonehot encodingしてconcatしたものをembeddingしたvectorの状態で扱うと考える。 下二つはただembeddingしてconcatしてMLPに突っ込むだけなので、大事なのは上二つ。 上二つから、ざっくりいうと「target itemに対する現在のuser interest」の情報を取り出してきて、さっきconcateしてた二つのベクトルと一緒にconcatしてあげる。 このbehavior historyとtarget itemからinterestの情報をいい感じに取り出してくる部分として、二つのlayerを提案。 * interest extractor layer * interest evolving layer の二つ。 それぞれ * 行動履歴から各時刻のinterestのembeddingを得る * target itemに対するinterestの変化を得る というlayerになっている。 それぞれのlayerで一つずつ工夫された点があり、extractorの方はauxiliary lossを使って、evolvingの方はAUGRUを用いている。それぞれ後述。 ## interest extractor layer これまでのinterestの取り出しは、特に工夫せずにGRUのhidden stateを各時刻のinterestだと捉えていたが、各時刻のinterestは次の時刻のbehaviorに現れると考えられるのに、普通にGRUを学習するだけだと最後のhidden stateのみ教師情報があってそれより前の時刻のinterestの表現があまり効果的に取れていない、という問題があった。 それを踏まえて、今回Interest extractor layerでは、通常のlog lossに加えて以下のAuxiliary lossを提案。 各時刻のinterest(hidden state)が、次の時刻のbehaviorのembedding に似るようにlossを設計する。 具体的には、次の時刻のbehaviorのembeddingを正例、それ以外のbehaviorをsampleしてきて負例(negative sampling)として、hidden stateとlabel vectorの内積をsigmoidにかけたものでlog lossをAuxiliary lossとしている。 ## interest evolving layer interest extractor layerが取り出してきた各時刻のinterest vector(GRUのhidden state)をAUGRUというcomponentに入力して、最終時刻のstateを出力とする。(先述したようにこれをcontextとuser profileとくっつけてMLPへ突っ込む) Attention + GRUを用いてevolving layerと作る。 attentionは、target item($e_a$)とinterest hisotry($h_t$)から作る。どの時刻のbehavior,interestに注目するかを表すベクトルで、具体的には以下のように作られる。 $$ a_t = \frac{\exp(h_tWe_a)}{\sum_{j=1}^T \exp(h_jWe_a)} $$ Attention + GRUの組み合わせ方は、この研究での一押しはAUGRUだが、 AUGRUのほかに、AIGRU,AGRUという構造も論文中で記載されているので比較。 * AIGRU(GRU with attentional input) AIGRUは、単純にinterest vectorsとattentionを各時刻ごとに重みづけしたものを二個目のGRUに入れる、というもので、これはうまく動かない。 * AGRU(Attention based GRU) question answeringの分野からヒントを得て考えたものらしい。 二つ目のGRUのupdate gateをattentionで代用しよう、というもの。 これはAIGRUよりいいけれど、attentionは各時刻ではスカラーなので、update gateが各dimensionの情報を捉えられないという問題がある * AUGRU(GRU with attentional update gate) GRUのupdate gateにattentionを取り入れよう、というアイデアはAGRUと同じ。 各dimention の情報を落とさないために、もともとあったupdate gateを完全にreplaceするのではなく、update gateをattentionで重みづけしてからhidden stateの更新に使おう、という手法。 これが一番良かった。 ## 実験 ## dataset * amazon dataset * alibaba dataset amazonの方はpublib datasetで、alibaba datasetは自社のデータセット ## compared methods * BaseModel(DIENの二つのlayerを使わないやつ) * wide and deep * PNN * DIN * Two layer GRU Attention ## 実験内容 * 既存モデルには全部DIENが勝っている * AUGRUと他のevolvingを比較してAUGRUが一番良かった * Auxiliary lossありなしで比較してあったほうが良かった * evolving結果を可視化 最後のは、target itemごとにinterest evolving historyの各時刻をPCAしてどう動くかを可視化。 target itemごとにinterest evolvingの様子が違っていることがわかった。 またtarget itemごとにattentionを可視化してみると、target itemと同じbehaviorをとった時刻にattentionが当たっていたので、予想通り、という結論だった。 ## まとめ Deep Interest Evolution Network for Click-Through Rate Predictionの論文紹介でした。 CTR predictionの論文はいくつか読んではいるのですが、行動履歴からuser modelingしてhogehogeする、みたいな論文は初めて読んだので新鮮でした。 近い分野の論文として、この後ATRankの論文を読もうとTryしたのですが、notationで混乱してしまってモチベが失われてしまったので最後まで読めていません。。。 読み直したら記事にすると思います笑 ありがとうございました。 この記事をシェアする Twitter Facebook Google+ B!はてブ Pocket Feedly コメント
コメント
コメントを投稿