[メモ]論文読み"A Meta-Learning Perspective on Cold Start Recommendations for Items"

# 論文
* A Meta-Learning Perspective on Cold Start Recommendations for Items
  * (https://research.google.com/pubs/pub46346.html)
  * NIPS 2017
  * Twitter, Google Brainの人たちの論文

# 概要
* リコメンデーションでよく使われているプリミティブなmatrix factorization(MF)はcold-start問題に弱い。
* item cold start問題に対応できる手法を提案している。
  * few-shot learningの応用
  * 少ないデータから予測ができるようにモデルを学習させる。
  * ユーザやアイテムのメタデータは使用しない。

# 問題設定
* アイテム $t_i$ に対するユーザ $u_j$ のengagement を $e_{ij} \in \{0, 1\}$ とする。
  * engagementは、例えば動画をみたかどうか、広告をクリックしたかどうか、tweetをいいねしたかどうかなどを表す。
* 解くべき問題は、情報が少ないアイテム $t_i$ に対して、ユーザ $u_j$ のengagementの確率を計算すること。

$$P(e_{ij}=1|t_i, u_j) \ \ \ \ \ \ (1)$$

* ユーザごとに違う問題、または'episode'とみなし、各ユーザのengageの履歴 $V_j$ から $P(\cdot)$ を生成するmeta-leaningの問題としている。
  * ユーザがengageした商品の集合を $T_j$ とし、 $V_j = \{(t_m, e_{mj}) : t_m \in T_j \}$ とする。
  * 式(1)をパラメータ $\theta$ で定義される関数 $f$ によって定義する。
  * パラメータ $\theta$ は、各ユーザごとに関数 $\mathcal{H}$ によって$\mathcal{H}(V_j)$ と求める
$$P(e_{ij}=1|t_i, u_j)=f(t_i; \mathcal{H}(V_j))$$

# 提案手法
## 共通
* アイテムIDによるembeddingをおこなう。$F(t_m) \in R^n$とする。
* 各ユーザの$c=\{0, 1\}$ に対するembedding $R_j^c$ は関数$G: \{F(t_m)\} \mapsto R^n$ によって求める。

$$R_j^c = G(\{F(t_m)\}: t_m \in T_j, e_{mj} = c)$$

* $G$の候補として、単純な平均や、アイテムの新鮮さ(最新さ)によって重み付けした平均などが考えられる。

## Linear Classifier with Task-dependent weights
* Linear Weight Adaptation(LWA)

$$[b, (w_0 R_j^0 + w_1 R_j^1)] = \mathcal{H}(V_j)$$

$$P(e_{ij} = 1|t_i, u_j) = \sigma(b + F(t_j) \cdot (w_0 R_j^0 + w_i R_j^1))$$

* $b$, $w_0$, $w_1$ はスカラー
* タスク(ユーザ)ごとに $F(t_j)$ に対するウエイト($w_0 R_j^0 + w_i R_j^1$)が異なる。
* 一方でバイアス $b$ は全タスクで共通。

<img width="827" alt="lwa.png" src="https://qiita-image-store.s3.amazonaws.com/0/199247/f4d58b27-5a25-03a7-8454-4ad63ef1e033.png">

## None-linear Classifier with Task-dependent bias
*  Non-Linear Bias Adaptation (NLBA)

$$[v^0 R_j^0 + v^1 R_j^1, w, \{V_l^0 R_j^0 + V_l^1 R_j^1\}_{l=1}^H, \{W_l\}_{l=1}^H] = \mathcal{H}(V_j)$$

* LWAとは異なり、$F(t_j)$ に対するウエイト($\{W_l\}_{l=1}^H$, $w$)は全タスク(ユーザ)で共通。
* 一方、各層と最後のバイアス($\{V_l^0 R_j^0 + V_l^1 R_j^1\}_{l=1}^H$, $v^0 R_j^0 + v^1 R_j^1$)がタスクごとに異なる。

<img width="838" alt="nlba.png" src="https://qiita-image-store.s3.amazonaws.com/0/199247/03ec5840-e197-0441-1753-034042ccf88d.png">

## Selecting Historical Impressions
ユーザのengagementの履歴のサイズを決める方法を考える。一般に問題依存になる。また、negative engagement($e_{ij} = 0$)のものよりもpositive engagement($e_{ij} = 1$) は圧倒的に少ない可能性もある。例えば、動画の視聴履歴や広告のクリック履歴などは positive engagement($e_{ij} = 1$) が比較的少ない。

そこで、各ユーザの履歴をportive/negativeともに最大 $k$ 個使うことにする。関数$G$は $\{F(t_i)\}$ の平均をとる関数なので、各ユーザ、各engagementでサイズが異なっても問題にならない(と思う)。

# 評価
* Twitterのデータを使って提案手法を評価する。
* データは公開されていない(と思う)。
  * 参考:
    * [Never miss important Tweets from people you follow](https://blog.twitter.com/official/en_us/a/2016/never-miss-important-tweets-from-people-you-follow.html)
    * [Using Deep Learning at Scale in Twitter’s Timelines](https://blog.twitter.com/engineering/en_us/topics/insights/2017/using-deep-learning-at-scale-in-twitters-timelines.html)
* 学習方法
  * cross-entropy loass を最小化する。
  * SGDを使う。
* 評価方法
  * AUROCを使い、Baselineモデルから改善率で評価する。

## LWA
<img width="375" alt="result_with_lwa.png" src="https://qiita-image-store.s3.amazonaws.com/0/199247/c1728065-da87-fa43-522f-6fc90b06a9d5.png">

## NLBA
<img width="375" alt="result_with_nbla.png" src="https://qiita-image-store.s3.amazonaws.com/0/199247/efb2848c-b607-bfc8-5901-c3a3df3662d8.png">