論文
どんなもの
Youtubeの動画レコメンデーションに使用されているアルゴリズムの概要を説明している
論文のポイント
理想は各userごとに全動画のスコアを付けたいが、動画数があまりに多すぎるので、モデルを2段階に分けたというのがポイント。
1つ目のモデル(Candidate generation model)ではtopN個まで推薦する動画の候補を絞り、その候補の中から2つめのモデル(Ranking model)がスコアをつけて、スコアの高いtopM個の動画を返している(推薦している)。
Candidate generation model
各user x 各動画 の協調フィルタリングを行う。rating matrixの値はクリック数。次のranking modelでさらにしっかり絞るので、ここでは粗い特徴量のみを使っている。学習のテクニックとして、MatrixFactorizationをDNNで近似している。
DNNによるMatrixFactorizationの近似
MatrixFactorizationはSVDと呼ばれる近似式を利用してuserベクトルとitemベクトルを予測する方法が一般的だが、SVDの部分をDNNに置き換えてuserベクトルとitemベクトルをそれぞれDNNを通して出力している。DNNで近似することによるメリットは
- 一般のMatrixFactorizationにおいてuserの特徴量はitemへのクリック数のみで表現されるが、DNNを介すことで任意の特徴量(年齢, 言語, 性別などのユーザー属性)を利用できる。
- よって、新しいuser(itemへのクリック数がまだないuser)にも対応できる。(cold-start問題の解消)
Ranking model
Candidate Generation Modleによる協調フィルタリングから選んだN個の候補動画に対して、より細かい学習でスコアを付けている。
各動画に対して具体的に予測するスコアは以下。
score := \frac{視聴時間}{negative\_impression数}
negative impressionとは対象の動画が推薦されたがクリックされなかった回数。推薦されてもクリックされない動画のスコアが落ちるように、視聴時間の長い動画のスコアが伸びるように、モデルが設計されている。
最終的にはこのスコアのtopM個が推薦される。