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.

jubabanditの紹介

11,630 views

Published on

jubabanditの紹介

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

jubabanditの紹介

  1. 1. jubabanditの紹介 NTTソフトウェアイノベーションセンタ 宇田川 拓郎 Copyright©2016 NTT corp. All Rights Reserved.
  2. 2. 1 今日の話 • jubabanditとMulti-Armed Bandit問題について • jubabanditの使い方について • jubabanditを使ってみたデモの紹介 Copyright©2016 NTT corp. All Rights Reserved.
  3. 3. 2 jubabanditとは • Jubatus 0.7.0で実装された、Multi-Armed Bandit (多腕バンディット) 問題のための機能 ※Multi-Armed Bandit問題 • 報酬が未知である複数の選択肢から1つ選ぶ試行を 繰り返す過程において、得られる報酬を最大化する 問題 • 報酬のフィードバックを得ながらオンラインで最適 化 Copyright©2016 NTT corp. All Rights Reserved.
  4. 4. 3 Multi-Armed Bandit問題の例 例)報酬の期待値がわからない3台のスロットマシンがあり、これらを100 回プレイするときに得られる報酬を最大にするには? どの台をどうやって選ぶのが得なのだろうか・・・? player : armを選ぶ人 arm: 各選択肢 A B C Copyright©2016 NTT corp. All Rights Reserved.
  5. 5. 4 Multi-Armed Bandit問題の例 • 真の期待値がわかれば最大のものを選び続けるのが良い 例)報酬の期待値がわからない3台のスロットマシンがあり、これらを100 回プレイするときに得られる報酬を最大にするには? 真の期待値 1.2 0.5 0.1 A一択が最強。100 x 1.2 で120もらえるはず A B C Copyright©2016 NTT corp. All Rights Reserved.
  6. 6. 5 Multi-Armed Bandit問題の例 • 実際には報酬を観測しながら期待値を推測する 例)報酬の期待値がわからない3台のスロットマシンがあり、これらを100 回プレイするときに得られる報酬を最大にするには? 真の期待値 ? ? ? 1回回してみた 0/1 = 0.0 0/1 = 0.0 10/1 = 10 +10+0+0 A B C Copyright©2016 NTT corp. All Rights Reserved. Cがいいんじゃないか?
  7. 7. 6 例)報酬の期待値がわからない3台のスロットマシンがあり、これらを100 回プレイするときに得られる報酬を最大にするには? 真の期待値 ? ? ? 1回回してみた 0/1 = 0.0 0/1 = 0.0 10/1 = 10 2回回してみた 5/2 = 2.5 5/2 = 2.5 10/2 = 5 +5 +5 +0 • 実際には報酬を観測しながら期待値を推測する Multi-Armed Bandit問題の例 A B C Copyright©2016 NTT corp. All Rights Reserved. Cがいいんじゃないか?
  8. 8. 7 例)報酬の期待値がわからない3台のスロットマシンがあり、これらを100 回プレイするときに得られる報酬を最大にするには? 真の期待値 ? ? ? 1回回してみた 0/1 = 0.0 0/1 = 0.0 10/1 = 10 2回回してみた 5/2 = 2.5 5/2 = 2.5 10/2 = 5 3回回してみた 15/3 = 5.0 5/3 = 1.666... 10/3 = 3.333... やっぱりAのほうがいいかも? Aを選び続ける? 他のももっと試す? +10 +0 +0 • 実際には報酬を観測しながら期待値を推測する Multi-Armed Bandit問題の例 A B C Copyright©2016 NTT corp. All Rights Reserved.
  9. 9. 8 Multi-Armed Bandit問題とは • 知識の”活用(exploit)”と”探索(explore)”のトレード オフを解決する問題 • 探索 => 選択肢の知識を増やす試み • 活用 => これまでの知識を基に最良の選択をする 知識の活用 今のところAが一番出てるから Aを引こう 知識の探索 Aより良い台があるかもしれないから、 他の台も試してみよう Copyright©2016 NTT corp. All Rights Reserved.
  10. 10. 9 • 知識の”活用(exploit)”と”探索(explore)”のトレード オフを解決する問題 • 活用が強すぎると・・・ (1回目の施行後Cを回し続ける) • 探索が強すぎると・・・ (全部の台を均等に回す) 結局最初に当たった 10しか出なかった… 60くらい出たけど、 もっと出たはずでは・・・? 良くない選択肢を選び続けてし まうことがある 本来得られるはずの報酬を逃 してしまう Multi-Armed Bandit問題とは 活用と探索を”ほどよく”実 施して、報酬をなるべく多 く手に入れるのが重要 Copyright©2016 NTT corp. All Rights Reserved.
  11. 11. 10 Multi-Armed Banditの応用先 • 広告配信 – いろんな広告を試してみたいけど、効果の薄いもの はCTRが下がるのであまり出したくない • 臨床試験 – 効果がわかってない新薬を試すか、安定している薬 を使うか • ウェブサイトデザインの最適化 – いろんなデザインを試してみたいけど、イマイチな ものはあまり出したくない Copyright©2016 NTT corp. All Rights Reserved.
  12. 12. 11 jubabanditの特徴 • 5種類のアルゴリズムが利用可能 • epsilon-greedy • softmax • ucb1 • exp3 • Thompson sampling (0.9.0から) • playerごとに選択回数や報酬を管理 • パーソナライズした最適化も可能 • 選択肢の種類は全player共通 • APIから動的な追加・削除が可能 Copyright©2016 NTT corp. All Rights Reserved.
  13. 13. 12 確率εで全ての選択肢からランダムに選ぶ(探索) 確率1-εで現在最も期待値の高い選択肢を選ぶ(活用) (参考) epsilon-greedy 1-ε ε 最も期待値の高 い選択肢 全ての選択肢から ランダム Copyright©2016 NTT corp. All Rights Reserved.
  14. 14. 13 jubabanditの使い方 • 設定ファイルの書き方 • APIと動作イメージ Copyright©2016 NTT corp. All Rights Reserved.
  15. 15. 14 設定ファイル • 使うアルゴリズムをmethodに指定 • アルゴリズムごとのパラメータを指定 • assume_unrewarded オプションを指定 ①アルゴリズムの指定 (前述の5つのアルゴリズムから1つを選ぶ) ②epsilon_greedyの場合は、epsilonパ ラメータを設定 ③assume_unrewardedオプション を指定(true/false) { "method": "epsilon_greedy", "parameter": { "epsilon" : 0.1 "assume_unrewarded" : false, } } ① ② ③ Copyright©2016 NTT corp. All Rights Reserved.
  16. 16. 15 assume_unrewarded option • armの選択回数を更新するタイミングを調整す るオプション • true => Armが選択された時にそのArmの選択回数 を1増やす • false => Armに報酬が登録されるときにそのArmの 選択回数を1増やす • 選択から報酬の登録までに時間差がある場合に 便利 Copyright©2016 NTT corp. All Rights Reserved.
  17. 17. 16 クライアントAPI • 主に使うのは以下の3つ • register_arm(arm_id) • 選択肢をJubabanditサーバーに追加する • select_arm(player_id) • player_idのarmを選ぶ • register_reward(player_id, arm_id reward) • player_idのarm_idにrewardの報酬を登録する Copyright©2016 NTT corp. All Rights Reserved.
  18. 18. 17 jubabandit 動作イメージ jubabandit client A register_arm(“A”) register_armによって 選択肢が追加される Copyright©2016 NTT corp. All Rights Reserved.
  19. 19. 18 jubabandit 動作イメージ jubabandit client A B C register_arm(“B”) register_arm(“C”) register_armによって 選択肢が追加される Copyright©2016 NTT corp. All Rights Reserved.
  20. 20. 19 jubabandit 動作イメージ jubabandit client select_arm(“hoge”) player A B C hoge 0, 0 0, 0 0, 0 playerは各腕の (重み, 試行回数)を持つ Copyright©2016 NTT corp. All Rights Reserved.
  21. 21. 20 jubabandit 動作イメージ jubabandit client select_arm(“hoge”) A B C hoge 0, 1 0, 0 0, 0 A 設定したアルゴリズムに応じて 腕を選択する assume_unrewarded optionがtrue ならselect_arm時に 試行回数+ 1 Copyright©2016 NTT corp. All Rights Reserved.
  22. 22. 21 jubabandit 動作イメージ jubabandit client register_reward(“hoge”, “ A “, 10.0) A B C hoge 10.0, 1 0, 0 0, 0 報酬を受け取り重みを更新 assume_unrewarded optionがfalse なら、この時試行回数を更新 Copyright©2016 NTT corp. All Rights Reserved.
  23. 23. 22 jubabandit 動作イメージ jubabandit client A B C hoge 100, 50 40, 25 10, 10 fuga 20, 10 10, 10 150, 50 試行を繰り返して、playerごとに 学習していく Copyright©2016 NTT corp. All Rights Reserved.
  24. 24. 23 jubabanditを利用したデモの紹介 • ツイートを表示するシステム • ユーザからのフィードバックをもらいながらツイー トを表示するユーザを最適化する • カテゴリの選択と、カテゴリ内でのユーザの選択の 2段階のjubabanditを利用して表示するtweetを選択 • クリックされたらそのカテゴリ・ユーザに 報酬を+1する • githubで公開中 • http://github.com/TkrUdagawa/tweet_bandit/ ※利用にはtwitterのアクセスキーが必要 Copyright©2016 NTT corp. All Rights Reserved.
  25. 25. 24 デモ画面 Copyright©2016 NTT corp. All Rights Reserved.
  26. 26. 25 デモシステムの構成 tornado server js news, popular, IT jubabandit client jubabandit client jubabandit client jubabandit client @nikkei @Yomiuri_Online @ariyoshihiroiki @pamyurin @jptechcrunch @gizmodojapan カテゴリ推薦用 Jubabandit server ユーザ推薦用 Jubabandit server Copyright©2016 NTT corp. All Rights Reserved.
  27. 27. 26 jubabanditの使い方(select_arm) ① 表示するtwitterアカウントのカテゴリをjubabanditで選択 ② カテゴリごとのjubabanditで、 表示するtwitterアカウントを選択 news IT ….. ① どのカテゴリを 表示する? ② どのユーザを 表示する? ユーザ推薦用 Jubabandit カテゴリ推薦用 Jubabandit news Yomiuri_Online IT 担当 news 担当 Copyright©2016 NTT corp. All Rights Reserved. @jptechcrunch @gizmodojapan …. @nikkei @Yomiuri_Online …
  28. 28. 27 jubabanditの使い方(register_reward) ① 表示されたツイートをユーザがクリック ② カテゴリ推薦用のjubabanditに報酬登録 ③ ユーザ推薦用のjubabanditに報酬登録 IT ….. ② newsに+1 ユーザ推薦用 Jubabandit カテゴリ推薦用 Jubabandit IT 担当 news 担当 ③ Yomiuri_Onlineに+1 ① Yomiuri_Onlineの ツイートをクリック Copyright©2016 NTT corp. All Rights Reserved. news @jptechcrunch @gizmodojapan …. @nikkei @Yomiuri_Online …
  29. 29. 28 まとめ • Multi-Armed Bandit問題のための機能 jubabanditを紹介 • 知識の活用と探索のトレードオフを解決して、報酬 を最大化 • jubabanditを使ったデモを紹介 • ツイートの表示を学習 • コードを整理してjubatus-exampleに追加予定 http://github.com/TkrUdagawa/tweet_bandit/ Copyright©2016 NTT corp. All Rights Reserved.

×