Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

LT13(後半)Workshipにおけるレコメンドエンジン実装

243 views

Published on

Workshipにおけるレコメンドエンジン実装(僕ならこうやる)を公開
※ 株式会社GIGでは毎月社内勉強会を実施しています

GIG inc.
Good is good.
We provide opportunities to the SEKAI by fusing technology and ideas.

テクノロジーとクリエイティブでセカイをより良くする。小さなチームからスタートした多くの先人達が、世界をより豊かなモノに変革してきました。通信、UX、デバイス、技術の変化と共に世界はまだまだ加速度的に変わります。

Good is good. いいものはいい。GIGは、関わったユーザーやクライアントが前に進める“きっかけ”をつくりつづけます。

■ お問い合せ
https://giginc.co.jp/contact/

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

LT13(後半)Workshipにおけるレコメンドエンジン実装

  1. 1. Workshipにおける レコメンドエンジンの実装について 〜僕ならこうやる〜 1
  2. 2. 目次 ● 発表の目的 ● 参考論文の紹介 ● Workship のレコメンドエンジンの精度を上げるための提案 2
  3. 3. Workship のレコメンド精度 を上げる提案をする 3
  4. 4. Deep Neural Networks for YouTube Recommendations YouTube で使用されているレコメンドエンジンに関する論文。 4
  5. 5. 全体の構造 1. 全ビデオから候補生成 ○ ユーザ情報や視聴履歴を 考慮 2. 選ばれしビデオをラン キング ○ 特別な候補を追加 ○ ユーザ周辺情報に加え、 ビデオ情報を考慮 3. さらに選ばれしビデオ を提供 5
  6. 6. Neural Network の基礎 - 全体 ● 脳内ネットワークを簡単に模倣した モデル ○ 脳は、およそ150億のニューロンという 神経細胞がシナプスによって結合した莫 大なネットワーク ● 説明事項 ○ 各ノードは複数の入力を用いて出力を決 定 ○ 右図の縦のノードの集合を層と呼ぶ ○ 層間の結合は全結合 (であることが多 い) 6
  7. 7. Neural Nets の基礎 - ノード内部 ● ノード内部において、活性化関数 f を用いることで、入力値に応じ てどのような出力をするのかを決 定する ○ 右図のノードにおいては以下を入力と する。w を重みと呼び、各入力の重要 度を決定づける ○ 最終的に、上記の入力を任意の関数 f にかませて出力 y を得る 7
  8. 8. 候補生成 ● 訓練フェーズ a. 入力ベクトル作成 b. ReLU に 3 回突っ込む c. softmax で正規化し、各ビデオ の視聴確率を算出 ● 本番フェーズ a. ユーザ情報と各ビデオの視聴確 率を用いて協調フィルタリング b. トップから N 個を候補に認定 8
  9. 9. ReLU (Rectified Linear Unit) ● 負の入力値を 0 とし、正数には干 渉しない活性化関数 ○ Deep Learning 界隈では、シンプルか つ強力であるためにしばしば用いられ る 9 ReLU 層を通すことで機械が特 徴を勝手に見つけてくれること が重要!
  10. 10. softmax ● 出力を確率として扱いたいときに利用される活性化関数 ○ 自分の値を全体の値で割って確率を出しているだけ ○ ただし、ネイピア数 ( e = 2.72… ) の乗数で考えているため、max 値が強調される ● 例:当たりが必ず 1 つだけ含まれているクジ 10 本 10 のびた しずか すねお たけし 引いたクジ数 1 2 2 5 softmax 値 0.016... 0.045... 0.045... 0.89...
  11. 11. ランキング ● 訓練フェーズ a. 入力ベクトル作成 b. ReLU に 3 回突っ込む c. ロジスティック回帰モデル に入力し、各ビデオの視聴 時間と照らし合わせて ReLU層を最適化 ● 本番フェーズ a. 訓練された ReLU 層の出 力から視聴時間を予測 b. 予測時間にもとづいてラン キング 11
  12. 12. ロジスティック回帰 ● (元々は) 確率を予測するアルゴリズム ○ 機械学習系では予測した確率をもとにクラス分類を行うことが多い ■ 確率がある閾値を超えていれば A, そうでなければ B に分類 ● 目的:正事象の確率を p とするとき、最適な重み w を求めること ● Workship における使用例 ○ ある案件をクリックする確率を p とするとき、x (過去の閲覧履歴、性別、年齢、etc...) を 入力すると訓練によって求められた w を用いて p を算出 ○ 上記を案件毎に計算し、p の大小にもとづいて表示順序を決定 12 x : 入力 (説明変数)
  13. 13. 提案セクション 13
  14. 14. Workship のレコメンド精度をあげる手段 ● 0 or 1 から [0, x] へ ● ReLU による新たな特徴ベクトルの獲得 ● 大量のデータ獲得後は候補生成とランキングを変更 ● A/B テストで試行錯誤 14
  15. 15. 0 or 1 から [0, x] へ ● 値を 0 or 1 の2値ではなく、複数の離散値か範囲のある連続値にする ○ つまり、空間を広げて線引きしやすくする 15https://www.albert2005.co.jp/knowledge/marketing/recommendation_basics/collaborative_filtering
  16. 16. ReLU による新たな特徴ベクトルの獲得 ● ReLU を通すことによって、 元々の入力値を機械が整形し、 謎だけど良い感じの特徴ベクト ルを獲得 ○ 意味のある (人間が理解できる) 特 徴ベクトルをモデルに直接入力して もある程度精度は出るが、そもそも 機械はそれぞれの特徴量を等しく扱 うため、抽象化しても何の問題もな い。むしろ抽象化し、機械にとって わかりやすい表現にすることで、精 度を上げるべき。ただし、人間にと っては意味がわからなくなり、説明 できないものになる。 16
  17. 17. 大量のデータ獲得後は候補生成とランキングに分割 ● 大量のデータ全てに対し、全特徴量を用いて計算を行うことは時間的に困難 ● 解決方法 ○ 候補生成 ■ 全データに対して、少ない特徴量を用いてそこそこの精度で選び出す ○ ランキング ■ 選ばれしデータに対して、多くの重要な特徴量を用いて高い精度で順位づける ● 重要な特徴量:出力に関連度合いの強い特徴量。例えば、ある商品が売れる確率 に対して、現在の価格は重要な特徴量であるが、過去の価格は重要な特徴量であ るとは限らない。 ● 特徴量エンジニアリング ○ 手持ちの特徴量のどれを用いるか選択したり、新たな特徴量を生成することによって、(でき る限り) 最適な特徴ベクトルを構築 ○ 例:ある部屋を賃貸する確率 ■ 生成:費用に対する洋間の広さ (畳/円) 17
  18. 18. A/B テストで試行錯誤 ● 戦略の良さは、結局のところやってみて統計をとらないとわからないことが 多いため、コストが莫大でない限りはとりあえずやってみよう ● YouTube のA/Bテストシナリオ ○ YouTube は初めはクリック率を判断基準としていた ○ しかし、誤クリックや開始 5 秒での離脱率、視聴回数アップを狙う攻撃などのノイズが精度 を低くする要因となってしまった ○ そこで、「興味のあるビデオは長い時間見られるはずだ」という仮定のもと、視聴時間を判 断基準とすることとした ○ 視聴時間を算出するようにモデルを改造し、A/Bテストを行なった結果、おすすめ動画の視 聴時間が増大することを確認した 18 判断基準として、適切な指標を 用いることが重要!
  19. 19. まとめ ● YouTube の事例 ○ 候補生成とランキングに分割 ○ 候補生成ではざっくり協調フィルタリング、 ランキングでは精密にロジスティック回帰 ● Workship のレコメンド精度向上手段 ○ 0 or 1 から [0, x] へ ○ ReLU による新たな特徴ベクトルの獲得 ○ 大量のデータ獲得後は候補生成とランキン グを変更 ○ A/B テストで試行錯誤 19
  20. 20. 参考 ● Deep Neural Networks for YouTube Recommendations ○ https://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/45530.pdf ● 協調フィルタリングとは ○ https://www.albert2005.co.jp/knowledge/marketing/recommendation_basics/collaborative_filtering ● Scikit-learn でロジスティック回帰 (確率予測編) ○ https://qiita.com/0NE_shoT_/items/c42d8093e2fed9bf1b7a ● Softmax って何をしてるの? ○ http://hiro2o2.hatenablog.jp/entry/2016/07/21/013805 ● ニューラルネットワークの基礎を初心者向けに解説してみる ○ https://www.yukisako.xyz/entry/neural-network ● ニューラルネットワーク ○ https://ja.wikipedia.org/wiki/%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A9%E3%83%AB% E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF 20
  21. 21. Good is good. We provide opportunities to the SEKAI by fusing technology and ideas. テクノロジーとクリエイティブでセカイをより良くする のこと

×