Advertisement

jubabanditの紹介

Jun. 30, 2016
Advertisement

More Related Content

Slideshows for you(20)

Advertisement

Recently uploaded(20)

Advertisement

jubabanditの紹介

  1. jubabanditの紹介 NTTソフトウェアイノベーションセンタ 宇田川 拓郎 Copyright©2016 NTT corp. All Rights Reserved.
  2. 1 今日の話 • jubabanditとMulti-Armed Bandit問題について • jubabanditの使い方について • jubabanditを使ってみたデモの紹介 Copyright©2016 NTT corp. All Rights Reserved.
  3. 2 jubabanditとは • Jubatus 0.7.0で実装された、Multi-Armed Bandit (多腕バンディット) 問題のための機能 ※Multi-Armed Bandit問題 • 報酬が未知である複数の選択肢から1つ選ぶ試行を 繰り返す過程において、得られる報酬を最大化する 問題 • 報酬のフィードバックを得ながらオンラインで最適 化 Copyright©2016 NTT corp. All Rights Reserved.
  4. 3 Multi-Armed Bandit問題の例 例)報酬の期待値がわからない3台のスロットマシンがあり、これらを100 回プレイするときに得られる報酬を最大にするには? どの台をどうやって選ぶのが得なのだろうか・・・? player : armを選ぶ人 arm: 各選択肢 A B C Copyright©2016 NTT corp. All Rights Reserved.
  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. 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. 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. 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. 8 Multi-Armed Bandit問題とは • 知識の”活用(exploit)”と”探索(explore)”のトレード オフを解決する問題 • 探索 => 選択肢の知識を増やす試み • 活用 => これまでの知識を基に最良の選択をする 知識の活用 今のところAが一番出てるから Aを引こう 知識の探索 Aより良い台があるかもしれないから、 他の台も試してみよう Copyright©2016 NTT corp. All Rights Reserved.
  10. 9 • 知識の”活用(exploit)”と”探索(explore)”のトレード オフを解決する問題 • 活用が強すぎると・・・ (1回目の施行後Cを回し続ける) • 探索が強すぎると・・・ (全部の台を均等に回す) 結局最初に当たった 10しか出なかった… 60くらい出たけど、 もっと出たはずでは・・・? 良くない選択肢を選び続けてし まうことがある 本来得られるはずの報酬を逃 してしまう Multi-Armed Bandit問題とは 活用と探索を”ほどよく”実 施して、報酬をなるべく多 く手に入れるのが重要 Copyright©2016 NTT corp. All Rights Reserved.
  11. 10 Multi-Armed Banditの応用先 • 広告配信 – いろんな広告を試してみたいけど、効果の薄いもの はCTRが下がるのであまり出したくない • 臨床試験 – 効果がわかってない新薬を試すか、安定している薬 を使うか • ウェブサイトデザインの最適化 – いろんなデザインを試してみたいけど、イマイチな ものはあまり出したくない Copyright©2016 NTT corp. All Rights Reserved.
  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. 12 確率εで全ての選択肢からランダムに選ぶ(探索) 確率1-εで現在最も期待値の高い選択肢を選ぶ(活用) (参考) epsilon-greedy 1-ε ε 最も期待値の高 い選択肢 全ての選択肢から ランダム Copyright©2016 NTT corp. All Rights Reserved.
  14. 13 jubabanditの使い方 • 設定ファイルの書き方 • APIと動作イメージ Copyright©2016 NTT corp. All Rights Reserved.
  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. 15 assume_unrewarded option • armの選択回数を更新するタイミングを調整す るオプション • true => Armが選択された時にそのArmの選択回数 を1増やす • false => Armに報酬が登録されるときにそのArmの 選択回数を1増やす • 選択から報酬の登録までに時間差がある場合に 便利 Copyright©2016 NTT corp. All Rights Reserved.
  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. 17 jubabandit 動作イメージ jubabandit client A register_arm(“A”) register_armによって 選択肢が追加される Copyright©2016 NTT corp. All Rights Reserved.
  19. 18 jubabandit 動作イメージ jubabandit client A B C register_arm(“B”) register_arm(“C”) register_armによって 選択肢が追加される Copyright©2016 NTT corp. All Rights Reserved.
  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. 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. 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. 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. 23 jubabanditを利用したデモの紹介 • ツイートを表示するシステム • ユーザからのフィードバックをもらいながらツイー トを表示するユーザを最適化する • カテゴリの選択と、カテゴリ内でのユーザの選択の 2段階のjubabanditを利用して表示するtweetを選択 • クリックされたらそのカテゴリ・ユーザに 報酬を+1する • githubで公開中 • http://github.com/TkrUdagawa/tweet_bandit/ ※利用にはtwitterのアクセスキーが必要 Copyright©2016 NTT corp. All Rights Reserved.
  25. 24 デモ画面 Copyright©2016 NTT corp. All Rights Reserved.
  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. 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. 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. 28 まとめ • Multi-Armed Bandit問題のための機能 jubabanditを紹介 • 知識の活用と探索のトレードオフを解決して、報酬 を最大化 • jubabanditを使ったデモを紹介 • ツイートの表示を学習 • コードを整理してjubatus-exampleに追加予定 http://github.com/TkrUdagawa/tweet_bandit/ Copyright©2016 NTT corp. All Rights Reserved.
Advertisement