RecSys 2018のペーパーを読んでいく(1) - レビュー文から推薦理由を生成する話

今年はRecSys 2019 に行こうと思っているがいろいろ足りないので勉強します。

まず、2019/04 はひたすら、論文を読みます。ルール。

  • 1日ひとつ
  • 読み終わらなくてもOK
  • 理解と疑問点を毎日まとめる

今日は、"Why I like it: Multi-task Learning for Recommendation and Explanation".

時間かかりすぎて明日から不安。

 

Abstract : Rating と 推薦理由を同時に生成するモデルをつくったよ。MF と Sequence to Sequence Learning を組み合わせたよ

 

Introduction:

  • MF でRecSys をつくった場合、潜在変数が推薦理由をわかりにくくする
  • レビューで補う、ということは現実でよく実施されている
  • レビューからrating を推定するのもよく実施されている
  • ここでは、Rating と レビュー生成を組み合わせて、個々のRatingに対応する推薦理由を生成するモデルを開発した
  • ざっくりいうと、Rating : MF 、推薦理由= seq2seq でモデリング、MF の潜在変数と seq2seq のautoencoder を明示的に関連づけることにより、推薦理由の生成モデルを構築した(んだと思う)

Approach :

  • およそこんな感じ

Fig.1

Figure 1: System architecture of multi-task learning model.
  • seq2seqの学習
    • ユーザのレビューから、encoder を学習し、ユーザのレビューの特徴を表すベクトルをつくる
    • ユーザベクトルを入力として、その人が書きそうなレビューを生成する
    • 生成は、直前の単語+ユーザベクトルを入力として、続く単語を予測する形式
    • 本当のユーザレビューと生成されたユーザレビューを区別するdiscriminatorにgenaratorの評価をさせる
    • discriminator は 1. 人工的なレビューか? 2. その人が書いたレビューか?を見極める
    • このままだとつながらないので、MFの ユーザ行列で、テキストのユーザ行列を正規化する(と書いてあったけどちょっとよくわからなかった)
  • その人のそのもののレビュー文の推定は、ユーザとアイテムのベクトル両方を入力として単語を推論することにより実現
  • MF では、レビューから学習したユーザ・アイテムの情報を、ユーザ行列・アイテム行列の事前分布として組み込んだ
  • EMアルゴリズムっぽい手法で2つのモデルを同時に最適化

Evaluation:

  •  Rating の 評価指標 = MSE はすごくよくなった
  • レビュー文の評価はユーザテスト実施中。(あまりよくない方法だけど)perplexity で評価した場合はよい説明が得られていた
  • discriminator の評価もした。結構いい感じでその人のレビュー・他人のレビューを識別できていた

Discussion:

  • 課題はgenerator。この手法でユーザの嗜好・商品の着眼点やpos/neg はだいたい表現できる。ただ実際のレビューには使った感想なども含まれていて、そこを予測してレビュー文を生成するのはかなり困難

Conclusion:

  • Offline 評価したい