バンディットアルゴリズム入門と実践

57,136 views

Published on

Tokyowebmining発表用資料です。複数の選択肢がある場合に、どのように選択を行うのが効率的なのか?という問題を解決するためのアルゴリズムです。

Published in: Technology

バンディットアルゴリズム入門と実践

  1. 1. バンディットアルゴリズム入門と実践 村上 智之(@GreenGreenMidor) 1
  2. 2. 自己紹介 名前 村上 智之(@GreenGreenMidor) 仕事 データサイエンティスト見習い 日々の業務 データ分析、分析用コーディング 2
  3. 3. 自己紹介 • 趣味 麻雀、ポーカー、 ゲーム 、テニス ETC. • データ分析を始めたきっかけ 「麻雀についてきちんと議論したいなぁ。。。  そうだ!確率と統計勉強しよう!」 • 最近の夢 ガッチャマンクラウズのGALAXを作る 仕事をゲームにする 3
  4. 4. もくじ バンディットアルゴリズムとは? 取り扱う問題 バンディットアルゴリズムの種類 シミュレーション バンディットアルゴリズムの活用 4
  5. 5. もくじ バンディットアルゴリズムとは? 取り扱う問題 バンディットアルゴリズムの種類 シミュレーション バンディットアルゴリズムの活用 5
  6. 6. 多腕バンディット問題の例 ソーシャルゲームにハマっているAさん、始めたばかりでとにかくレアカードが欲しい。今月の お小遣いを使って50回ガチャを引くつもり。どう引くのがいい? 目的 ▶引けるレアカードの数を最大にしたい ガチャの種類 ▶5種類、当たる確率はそれぞれ違うが  変化はしない 引ける回数 ▶50回 どの台をどうやって引くのが最も良い? 6
  7. 7. どんな戦略が考えられる? 10 10 5 10 13 よく当たった 6 50 10 1.同じガチャを引き続ける 10 2.全てのガチャを均等に引く 4 22 3.当たったガチャを多めに引く バンディットアルゴリズムはよく当たるガチャを探して、 当たる確率が高いガチャを選択するためのアルゴリズム 7
  8. 8. バンディットアルゴリズムの目的とは? 8
  9. 9. 限られた試行回数の中で、最も良い選択をすること 9
  10. 10. 世の中には腐るほど選択肢が 10 れている
  11. 11. 日常では ランチは和食?洋食? 旅行はどこに行く? 11 彼女へのプレゼントは何にする?
  12. 12. ビジネスでは 題名:新しいイベントが始まります! -------------------------------------------------------イベント詳細∼ メールの訴求ポイントは? 広告のクリエイティブはどれが良い? 題名:今なら1000円分のクーポンが -------------------------------------------------------イベント詳細∼ 12
  13. 13. うまいこと選択肢を選びたいけど。。。 13
  14. 14. 実際の世の中って 大体の事はやってみないと分からない ▶何が良いかは結果から判断するしかない 何度繰り返しても100%正しく知ることはできない ▶有意確率95%でも5%の範囲では起こる 14
  15. 15. 条件も限られている 夏物の広告は夏前の限られた期間でしか掲載できない ▶2週間の掲載で1週間もテストに使ってられない 予算も一定以内に押さえなければならない ▶1クリック20円なら10万円で5,000クリック メールは1週間に1度だけ ▶1年で約50通、個別のデータは全然貯まらない 15
  16. 16. どうやって選べばいいの? 16
  17. 17. バンディットアルゴリズム! 17
  18. 18. バンディットアルゴリズムの考え方 探索(EXPLORE)と活用(EXPLOIT) 探索と活用のバランスを調節する ▶ダメな選択肢はできる限り選ばずにベストな選択肢を選びたい もしも神様なら。。。 ▶ベストな選択肢を選び続けることができる。  出来る限りその選択に近づけるようにしよう! 18
  19. 19. 探索(explore) 現在知っている情報以外の情報を獲得するために選択肢を選ぶこと  ・ABテスト  ・行ったことのない定食屋に行ってみる 全く分からないから、Aより美味しい可能性も? 他のメニューはAより美味しいかも? 探索 店舗A 30回くらい行ってる そこそこ美味しい 店舗B 1回だけ行った 食べたメニューは Aに少しだけ劣る 19 新規C 行った事がない 全く知らない
  20. 20. 活用(exploit) 現在知っている情報から利益を最大化する選択肢を選ぶこと  ・ABテスト後の本番  ・行きつけの定食屋に行く 一番美味しいここにしよう 活用 店舗A 30回くらい行ってる そこそこ美味しい 店舗B 1回だけ行った 食べたメニューは Aに少しだけ劣る 20 新規C 行った事がない 全く知らない
  21. 21. 探索と活用のトレードオフ 探索ばかりしていると。。。 ▶せっかく良い選択肢がどれか分かっているのに選ばない  例:店舗C、店舗Dと新しいお店にばかり行っている    店舗Aに行けば一定の満足が得られるのに。。。 トレードオフ 活用ばかりしていると。。。 ▶現状でベストな選択肢より良い選択肢があっても気付かない  例:他にどれだけ店舗ができても店舗Aに行き続ける    本当はもっと美味しい店舗Eがあるのに。。。 21
  22. 22. トレードオフを解決するのがバンディットアルゴリズム 22
  23. 23. バンディットアルゴリズムとは 探索と活用を効率的に行い 一定期間での利益を最大化するアルゴリズム 23
  24. 24. 何の役に立つの? 複数の選択肢の中から、効果の高い物を効率的に選択できる ▶広告の配信クリエイティブや、WEBページのデザイン等、  効果の高いデザインを効率的に選択できる。 ファジィな分類を有効に活用できる ▶ユーザを完全に分類して施策を決めるのではなく、ユーザの反応に合わせて  調節していくことができる。 --今まではイヌ派かネコ派かどちらかに分類しなければ施策を打てなかったが、     イヌ派55%、ネコ派45%という初期値を与えて、反応する方の施策を打つ。 ※詳細については後ほど説明します。 24
  25. 25. 今日のポイント ABテストとバンディットアルゴリズムはどう違う? バンディットアルゴリズムってどんな時に使えるの? 25
  26. 26. もくじ バンディットアルゴリズムとは? 取り扱う問題 バンディットアルゴリズムの種類 シミュレーション バンディットアルゴリズムの活用 26
  27. 27. 取り扱う問題 選択可能な選択肢(以後アーム)はK個(K本腕バンディット問題) ▶ガチャの種類、広告クリエイティブの種類 アームを引くと、「当たり」もしくは「はずれ」どちらかの結果が得られる。 ▶レアカードとそれ以外、クリックされたか、購入されたか  ※正規分布やその他の分布に従う分布にも適応できるが今回は2値のみ それぞれのアームは当たる確率が決められていて、変化しない ▶中の人なんかいません!調整なんてしてません!、購入率・購買率は一定 プレイヤー(アームを選択する人)はアームについて何も知らない ▶レア封入率は不明、どの広告がクリックされるかは不明 合計でN回アームを引くことができる ▶課金は毎月5000円まで!予算内で広告を表示できる回数は100,000回まで 当たりの回数を最大化する事が目標 ▶レアカードがたくさん欲しい、クリック数・購買数を稼ぎたい 27
  28. 28. いめーじ 当店のマシンは大当たりとはずれしかありません!! 777 777 777 ・・・ どのアームがいいかな? たくさん当たるといいなぁ。 アーム1 アームK アーム2 コインはN枚(1プレイ1枚) 28
  29. 29. 言葉の定義 言葉 意味 選択肢のこと。一定の確率で当たる事が決まっていて、 アーム 時間が経っても変化しない。 (他にも様々な仮定が置けるが、簡単のため) 引く アームを選択し、その結果を受け取ること。 探索 アームに関する情報を増やすためにアームを引くこと。 活用 今持っている情報から、最も良いアームと判断できるアー ムを引くこと。 29
  30. 30. もくじ バンディットアルゴリズムとは? 取り扱う問題 バンディットアルゴリズムの種類 シミュレーション バンディットアルゴリズムの活用 30
  31. 31. epsilon-greedy 31
  32. 32. epsilon-greedy コンセプト ▶探索と活用を確率的に割り振る。 活用と探索の割り振り ▶ 確率εで活用、(1-ε)で探索を行う。εはパラメータとして設定。 活用の方法 ▶ 期待値の最も高いアームを引く。  --100回中99回当たったアームより、1回中1回当たったアームを引く。 探索の方法 ▶全てのアームからランダムに選択したアームを引く。 32
  33. 33. いめーじ 探索と活用、探索の際の確率 0.5 0.5 1-ε 777 777 アーム1 当たり確率0.5 探索 アーム2 当たり確率0.3 ε 活用 1 33 777 アーム1 当たり確率0.5
  34. 34. 実際の使用イメージ 試行数 アーム1期待値 アーム2期待値 アーム3期待値 活用or探索 ランダム選択 1 2 3 4 5 6 7 8 9 0(0/0) 1(1/1) 0.5(1/2) 0.33(1/3) 0.33(1/3) 0.33(1/3) 0.33(1/3) 0.33(1/3) 0.33(1/3) 0(0/0) 0(0/0) 0(0/0) 0(0/0) 1(1/1) 0.5(1/2) 0.66(2/3) 0.66(2/3) 0.75(3/4) 0(0/0) 0(0/0) 0(0/0) 0(0/0) 0(0/0) 0(0/0) 0(0/0) 0(0/1) 0(0/1)       ・・・最も期待値の高いアーム 34 探索 活用 活用 探索 活用 探索 探索 活用 活用 1 2 2 3 - 引くアーム 結果 アーム1 アーム1 アーム1 アーム2 アーム2 アーム2 アーム3 アーム2 アーム2 ○ × × ○ × ○ × ○ ○
  35. 35. メリットとデメリット メリット 仕組みが非常にシンプル デメリット 引いた回数を考慮しない ▶100回中50回当たったアームも2回中1回当たったアームも同じ評価 探索がどれだけ進んでも必ずεで探索を行ってしまう 探索の際に完全にランダムに選択するので、明らかに良くないと分かった アームでも未知のアームと等しく扱われる ▶探索の際は、100回中10回、0回中0回、30回中0回当たりを当確率で引いてしまう 最も良いアームを引き続けるので、最初に間違ったアームを良いアームと判断 した場合に修正がききにくい ▶特に良いアームが偶然当たらなかった場合、良いアームと判定するまでに時間がかかる 35
  36. 36. ABテスト (epsilon-first) 36
  37. 37. ABテスト(epsilon-first) コンセプト ▶ある一定の期間完全に探索のみを行い、その後の期間は活用のみを行う 探索の方法 ▶全てのアームに対して完全にランダムに振り分ける 活用の方法 ▶ 期待値の最も高かったアームを引き続ける 37
  38. 38. いめーじ 前半は全てのアームから 後半は前半で最も当たった ランダムに選択 アームを引き続ける 777 777 1番当たったマシンを選択 777 777 38
  39. 39. 実際の使用イメージ 試行数 アーム1期待値 アーム2期待値 アーム3期待値 活用or探索 0(0/0) 0(0/0) 1 1(1/1) 0(0/0) 2 1(1/1) 0(0/1) 3 1(1/1) 0(0/1) 4 1(2/2) 0(0/1) 5 1(2/2) 0.5(1/2) 6 1(2/2) 0.5(1/2) 7 8 0.66(2/3) 0.5(1/2) 9 0.5(2/4) 0.5(1/2) 10 0.4(2/5) 0.5(1/2) 0(0/0) 0(0/0) 0(0/0) 0(0/1) 0(0/0) 0(0/0) 0(0/2) 0(0/2) 0(0/2) 0(0/2)       ・・・最も期待値の高いアーム 39 探索 探索 探索 探索 探索 探索 活用 活用 活用 活用 ランダム選択 引くアーム 結果 1 2 3 1 2 3 - アーム1 アーム2 アーム3 アーム1 アーム2 アーム3 アーム1 アーム1 アーム1 アーム1 ○ × × ○ ○ × × × × ×
  40. 40. 実際の使用イメージ 試行数 アーム1期待値 アーム2期待値 アーム3期待値 活用or探索 0(0/0) 0(0/0) 1 1(1/1) 0(0/0) 2 1(1/1) 0(0/1) 3 1(1/1) 0(0/1) 4 1(2/2) 0(0/1) 5 1(2/2) 0.5(1/2) 6 1(2/2) 0.5(1/2) 7 8 0.66(2/3) 0.5(1/2) 9 0.5(2/4) 0.5(1/2) 10 0.4(2/5) 0.5(1/2) 0(0/0) 0(0/0) 0(0/0) 0(0/1) 0(0/0) 0(0/0) 0(0/2) 0(0/2) 0(0/2) 0(0/2) ランダム選択 引くアーム 結果 探索 1 アーム1 ○ 探索 2 アーム2 × 探索 3 アーム3 × 探索 1 アーム1 ○ 一定期間で探索と活用を切り分ける 探索 2 アーム2 ○ 探索 3 アーム3 × 活用 アーム1 × 活用 アーム1 × 活用 アーム1 × 活用 アーム1 × 引くアームを一度決定したら他のアームには変更しない 40
  41. 41. メリットとデメリット メリット アームが2本の場合に、非常に効率よく情報を得る事ができる ▶限られた期間で良いアームと悪いアームを判定する場合に優れている ※3本以上の場合で最良アームを判別するのはもう少し複雑です アームに振り分ける際に計算が必要ない ▶1回の試行ごとにアームの評価を行わないので、様々な場面に適応可能 デメリット 探索の際に良いアームと悪いアームを当確率で引き続けてしまう ▶当たる確率の低いアームを一定数引かなければならない 活用時に使用するアームは変更できない ▶もう片方のアームのほうが良いアームだったという状況が起こりうる  --有意確率95%という考えは5%の範囲は妥協するという考えに基づいている 41
  42. 42. ちょっと脱線 バンディットアルゴリズムとABテスト どっちを使えばいいの? 42
  43. 43. そもそも目的が違います! 43
  44. 44. ABテストはテストです 44
  45. 45. 目的の違い ABテストとバンディットアルゴリズム バンディットアルゴリズムを使う場合 ▶一定期間内に、選択肢を選ぶことによって得られる利益を最大化したい場合 ABテストを使う場合 ▶一定期間内に、YesかNo、AかBなどの判断を出来る限り正確に行いたい場合 ※バンディットテストというテストアルゴリズムもありますが、今回は触れません。 45
  46. 46. ABテストを用いる例 同時に2人にアプローチされた (妄想) 3ヶ月以内にどちらか決めなければならない(妄想) 2股をかけながら楽しい方とたくさん遊ぶなんて選択肢は取れない!! 3ヶ月以内に「2人のうちベストな相手はどちらか」という判断を出来る限り 正確に行いたい その他の例 どのASPを導入するか?どちらの商品を生産すべきか? 等 46
  47. 47. 条件の違い ABテストとバンディットアルゴリズム バンディットアルゴリズムでは 短い期間での集計が必須 47
  48. 48. 比較 特にチューニングが必要ない 1日目 ABテスト バンディット アルゴリズム 2日目 3日目 引く比率を 等しく設定 引く比率を 等しく設定 集計 集計 集計 引く比率の 変更 引く比率の 変更 一定期間毎にチューニングが必要 48 集計
  49. 49. バンディットアルゴリズムとABテストを 使い分けるためのポイント 選択肢を変更する場合にスイッチングコストがかかるか? ▶スイッチングコストがかかる場合は、小規模にABテストを行い  採用すべき選択肢はどれなのかを決定したほうが良い。 選択肢は短い期間で変更可能か? ▶数時間や数日という短いスパンで選択肢の変更が可能である場合でないと、  バンディットアルゴリズムは使用できない。 選択肢を保持するためのコストがかかるか? ▶バンディットアルゴリズムを活用するためには選択肢を保持し続けなければ  ならず、保持するコストをカバーできるかを考慮する必要がある。  --広告クリエイティブは1回作れば何度でも使えるが、月額使用料は毎月発生する等 49
  50. 50. ABテストとバンディットアルゴリズムまとめ バンディットアルゴリズム ▶一定期間内に、選択肢を選ぶことによって得られる利益を最大化する ▶一定期間毎に集計とアームの選択確率を変更するので、使用場面が限られる  --ランチの場所選び、旅行の行き先、広告の配信クリエイティブ決定、メールの訴求ポイント決定 ABテスト ▶一定期間内に、YesかNo、AかBなどの判断を出来る限り正確に行う ▶アームの選択確率は初期に決めた値から変化しないので、様々な場面で使える  --結婚相手選び、街頭広告をWebでテストする 50
  51. 51. softmax 51
  52. 52. softmax コンセプト ▶当たる確率の高いアームを高い確率、当たる確率の低いアームを  低い確率で引くことによって、活用と探索を行う ベースの考え ▶当たった確率の加重平均でそのアームを引く  --そのまま加重平均を用いるとほぼ当確率で引いてしまうので、expを使用して差を大きく 52
  53. 53. softmaxのアーム選択確率算出式 アームAを引く確率を以下の計算で決定する ※ 53
  54. 54. softmaxの式 アームAを引く確率を以下の計算で決定する アームの期待値 ※ 差の大きさを調節するためのパラメータ tau 0… 成績のいいアームを100%採用 tau= …完全ランダム 54
  55. 55. 実際の使用イメージ 試行数 1 2 3 4 5 6 7 8 9 10 アーム1 アーム2 アーム1選択 アーム2選択 アーム1選択 アーム2選択 期待値 期待値 確率(tau=0.1) 確率(tau=0.1) 確率(tau=0.5) 確率(tau=0.5) 0 1 0.5 0.33 0.25 0.25 0.25 0.25 0.25 0.4 0 0 0 0 0 1 0.5 0.33 0.25 0.25 50% 100% 99% 96% 92% 0% 8% 30% 50% 82% 50% 0% 1% 4% 8% 100% 92% 70% 50% 18% 50% 88% 73% 66% 62% 18% 38% 46% 50% 57% 50% 12% 27% 34% 38% 82% 62% 54% 50% 43% 55 選択アーム 結果 1 1 1 1 2 2 2 2 1 1 ○ × × × ○ × × × ○ ×
  56. 56. 実際の使用イメージ 試行数 アーム1 アーム2 アーム1選択 アーム2選択 アーム1選択 アーム2選択 期待値 期待値 確率(tau=0.1) 確率(tau=0.1) 確率(tau=0.5) 確率(tau=0.5) 50% 100% 99% 96% 92% 0% 8% 30% 50% 82% 50% 0% 1% 4% 8% 100% 92% 70% 50% 18% 50% 88% 73% 66% 62% 18% 38% 46% 50% 57% 0 1差を大きく見積もる 0 1 2 0 0.5 3 0 0.33 4 0 0.25 5 0 0.25 6 1 0.25 7 0.5 0.25 8 0.33 0.25 9 0.25 0.4 10 0.25 56 選択アーム 結果 50% 1 ○ 差を小さく見積もる 12% 1 × 27% 1 × 34% 1 × 38% 2 ○ 82% 2 × 62% 2 × 54% 2 × 50% 1 ○ 43% 1 ×
  57. 57. メリットとデメリット メリット 良いアームと悪いアームがあった場合に、その情報が探索に使用される ▶良いアームを多く引き、悪いアームを少なく引くことができる デメリット 引いた回数を考慮しない ▶100回中50回当たったアームも2回中1回当たったアームも同じ評価 パラメータ(tau)の設定によって、結果が大幅に異なる ▶パラメータ設定を間違えると、完全にランダムな場合とほぼ同じ結果になることも 探索がどれだけ進んでも一定の確率で悪いアームを引いてしまう ▶収束する確率は、真の値を計算式に当てはめた結果となる 57
  58. 58. UCB (Upper Confidence Bounds) 58
  59. 59. UCB コンセプト ▶アームについてどれだけ知っているかを考慮に入れてアームを選択する。  知らないアームについて、積極的に探索を行う。 アルゴリズム ▶評価式から評価値を求め、評価値が最も高いアームを引く 評価式 ▶アームの期待値+ボーナス(アームを引いた回数から算出) 59
  60. 60. UCBのアーム評価式 アームA評価値を以下の評価式で決定する 60
  61. 61. UCBのアーム評価式 アームA評価値を以下の評価式で決定する 全てのアーム合計でアームを 引いた回数(現在の試行数) アームの期待値 アームAを引いた回数 61
  62. 62. 実際の使用イメージ 試行数 0 1 2 3 4 5 6 7 8 9 アーム1 アーム2 アーム1 アーム2 アーム1 アーム2 アーム1 アーム2 選択 試行数 試行数 期待値 期待値 ボーナス ボーナス 評価値 評価値 アーム 0 1 1 2 2 2 3 4 4 5 0 0 1 1 2 3 3 3 4 4 0 1 1 0.5 0.5 0.5 0.66 0.75 0.75 0.6 0 0 1 1 1 0.66 0.66 0.66 0.75 0.75 ∞ 0 0.78 0.49 0.55 0.59 0.42 0.33 0.34 0.28 ∞ ∞ 0.78 0.98 0.55 0.39 0.42 0.43 0.34 0.35 ∞ 1 1.78 0.99 1.05 1.09 1.08 1.08 1.09 0.88 ∞ ∞ 1.78 1.98 1.55 1.05 1.08 1.09 1.09 1.10 1 2 1 2 2 1 1 2 1 2       ・・・最も評価値の高いアーム 62 結果 ○ ○ × ○ × ○ ○ ○ × ○
  63. 63. メリットとデメリット メリット どの程度アームについて知っているかを考慮してアームを選択できる パラメータを設定する必要がない 最終的に最も良いアームのみを選ぶように収束する デメリット 悪いアームを探索のために引きすぎてしまう 63
  64. 64. バンディットアルゴリズム 改良のポイント 64
  65. 65. バンディットアルゴリズム改良のポイント1 Annealing(焼きなまし) コンセプト ▶最初は探索の割合を多くして、徐々に活用の割合を増やしていく epsilon greedyの場合 ▶最初はε(活用の割合)を低く設定し、 徐々に1に近づけていく softmaxの場合 ▶最初はtau(tau=∞でランダム)の値を高く設定し、徐々に0に近づけていく 65
  66. 66. いめーじ 活用と探索の割合 初回 活用 探索 ・ 最初は探索の割合を多くする ・ ・ 活用 探索 ・ ・ ・ 最終 活用 最後に引くアームでは探索の必要がないので、100%活用を行う 66
  67. 67. バンディットアルゴリズム改良のポイント2 初期値の設定 コンセプト ▶一回もアームを引いていないマシンに、適当な初期値を与える。  事前情報がある場合に上手く利用したい。 事前情報を活用する ▶現在使用しているアームについての情報があれば、その情報を  初期値として与えてアームを探索する手間を省略する。 epsilon greedy、softmaxの場合 ▶平均的なアームの期待値が分かっていれば、初期段階では  平均的な期待値と実測値を結合した値を使用する。   67
  68. 68. いめーじ アームの期待値を全体の平均値と実測値で代用する 初回 平均値 ・ 最初は平均値を使用 ・ ・ 実測値 平均値 ・ 徐々に実測値の比重を高くする ・ ・ 十分なデータが 実測値 十分にデータが集まった場合は実測値を使用する 集まるまで 68
  69. 69. バンディットアルゴリズムいろいろ 今回は当たりとはずれの2値だけの問題を取り扱ったが、それ以外の分布に 従う値を返す問題も当然存在する 今回紹介した以外にも色々なアルゴリズムが存在する ▶Exp3、ベイズ確率を使用したアルゴリズム、今回紹介したアルゴリズムの  派生等、様々なアルゴリズムが存在する 今回は選べるアームを複数本と限定して取り扱ったが、選択できるアームの 本数が無限個ないし、莫大な本数の問題も存在する ▶UCBのような、知らないアームを積極的に試すアプローチだと、  全くうまくいかない   69
  70. 70. もくじ バンディットアルゴリズムとは? 取り扱う問題 バンディットアルゴリズムの種類 シミュレーション バンディットアルゴリズムの活用 70
  71. 71. シミュレーション概要 githubにアップされているバンディットアルゴリズムを使用 ▶https://github.com/johnmyleswhite/BanditsBook julia,python,R,rubyのコードがアップされている。 今回はpythonのコードを使用 71
  72. 72. シミュレーション1 (当たり確率に大幅な差があるケース) アームは当たり確率 0.1 と 0.9 の2本のアーム 1回の繰り返しではアームを30回引く シミュレーション回数は10,000回 epsilon first(ε = 2, 4, 8, 16), epsilon greedy(ε = 0.9, 0.8, 0.6, 0.2), softmax(tau=0.08, 0.1, 0.2, 0.3), UCBについて比較 72
  73. 73. シミュレーション1結果 epsilon first(ABテスト) t回目の当たり確率 累積当たり回数 73
  74. 74. シミュレーション1結果 epsilon greedy t回目の当たり確率 累積当たり回数 74
  75. 75. シミュレーション1結果 softmax t回目の当たり確率 累積当たり回数 75
  76. 76. シミュレーション1結果 UCB t回目の当たり確率 累積当たり回数 76
  77. 77. シミュレーション2 (当たり確率に大きな差がないケース) アームは当たり確率 0.01 と 0.02 の2本のアーム 1回の繰り返しではアームを1,000回引く シミュレーション回数は10,000回 epsilon first(ε = 50, 100, 200, 400), epsilon greedy(ε = 0.95, 0.9, 0.8, 0.6), softmax(tau=0.0025, 0.005, 0.01, 0.02), UCBについ て比較 77
  78. 78. シミュレーション2結果 epsilon first(ABテスト) t回目の当たり確率 累積当たり回数 1,000回時点の当たり回数 epsilon = 50 : 15.86回 epsilon = 100: 16.31回 epsilon = 200: 16.72回 epsilon = 400: 16.77回 78
  79. 79. シミュレーション2結果 epsilon greedy t回目の当たり確率 累積当たり回数 1,000回時点の当たり回数 epsilon = 0.95: 16.83回 epsilon = 0.90: 16.89回 epsilon = 0.80: 16.95回 epsilon = 0.60: 16.63回 79
  80. 80. シミュレーション2結果 softmax t回目の当たり確率 累積当たり回数 1,000回時点の当たり回数 tau = 0.0025: 17.00回 tau = 0.0050: 17.35回 tau = 0.0100: 16.83回 tau = 0.0200: 16.09回 80
  81. 81. シミュレーション2結果 UCB t回目の当たり確率 累積当たり回数 1,000回時点の当たり回数 15.29回 81
  82. 82. シミュレーション3 (アームが複数あるケース) アームは当たり確率 0, 0.15, 0.3, 0.45, 0.6, 0.75 の6本のアーム 1回の繰り返しではアームを1,000回引く シミュレーション回数は10,000回 epsilon first(ε = 50, 100, 200, 400), epsilon greedy(ε = 0.95, 0.9, 0.8, 0.6), softmax(tau=0.05, 0.1, 0.15, 0.02), UCBについて比較 82
  83. 83. シミュレーション3結果 epsilon first(ABテスト) t回目の当たり確率 累積当たり回数 1,000回時点の当たり回数 epsilon = 50 : 506.0回 epsilon = 100: 528.4回 epsilon = 200: 516.3回 epsilon = 400: 456.9回 83
  84. 84. シミュレーション3結果 epsilon greedy t回目の当たり確率 累積当たり回数 1,000回時点の当たり回数 epsilon = 0.95: 531.2回 epsilon = 0.90: 535.6回 epsilon = 0.80: 514.0回 epsilon = 0.60: 451.8回 84
  85. 85. シミュレーション3結果 softmax t回目の当たり確率 累積当たり回数 1,000回時点の当たり回数 tau = 0.05 : 410.9回 tau = 0.10 : 528.4回 tau = 0.15 : 501.9回 tau = 0.20 : 457.3回 85
  86. 86. シミュレーション3結果 UCB t回目の当たり確率 累積当たり回数 1,000回時点の当たり回数 498.6回 86
  87. 87. せっかくなのでスロットで勝てるか試してみた 87
  88. 88. とあるスロットマシーンの当たり確率 1回回すためにはメダルが3枚必要 払い出し枚数 アーム1(設定1) アーム2(設定6) 325枚 0.35% 0.37% 104枚 0.22% 0.37% 7枚 15.41% 16.18% 3枚 13.70% 13.70% 2.85 3.15 -0.15 0.15 払い出し期待値 利益期待値 88
  89. 89. シミュレーション4 スロットの問題を簡略化 アームは当たり確率 0.1563 が3本, 0.1655 が1本の計4本のアーム ( 104枚の役、7枚の役に差があるので、それを合算した確率) 1回の繰り返しではアームを8,000回引く シミュレーション回数は1,000回 当たる確率の低いアームを引くと-0.15点、当たる確率の高いアームを引くと 0.15点を加算する epsiron greedy(ε=0.9), softmax(tau=0.02), UCBについて比較 参考値として、完全ランダムに引いた場合の値も表示 89
  90. 90. シミュレーション4結果 得点の遷移 90
  91. 91. 全然勝てない。。。 91
  92. 92. アーム1とアーム2の当選確率と その投入割合が分かれば勝てるんじゃね? 92
  93. 93. Bayes コンセプト ▶ベイズ確率を計算して、良いアームの確率が最も高いアームを引く 計算式 D:観測事象(100アームを引き20回当たった等) P(H ¦D):Dが起こった上でそのマシンがアーム1である確率 P(D¦H ):アーム1でDが起こる確率 P(H ):ランダムに選んだ場合にアーム1を選ぶ確率(今回の例では0.75) 1 1 1 93
  94. 94. シミュレーション4結果 得点の遷移(ベイズ追加) 94
  95. 95. 勝てた!! 95
  96. 96. シミュレーションまとめ UCBは最終的に最良の選択肢に収束するが、それまでにかなりの試行が必要 softmaxは結果がどの程度の確率になるかを予測してパラメータを決める 必要がある 事象の発生確率がある程度分かっている場合はベイズ的なアプローチが有効 (Googleのバンディットテストではベイズ的アプローチを使っている模様) 96
  97. 97. もくじ バンディットアルゴリズムとは? 取り扱う問題 バンディットアルゴリズムの種類 シミュレーション バンディットアルゴリズムの活用 97
  98. 98. バンディットアルゴリズムの活用 複数の選択肢の中から、効果の高い物を効率的に選択できる ▶広告の配信クリエイティブや、WEBページのデザイン等、  効果の高いデザインを効率的に選択できる。 ファジィな分類を有効に活用できる ▶ユーザを完全に分類して施策を決めるのではなく、ユーザの反応に合わせて  調節していくことができる。 --今まではイヌ派かネコ派かどちらかに分類しなければ施策を打てなかったが、     イヌ派55%、ネコ派45%という初期値を与えて、反応する方の施策を打つ。 98
  99. 99. 例 題名:新しいイベントが始まります! -------------------------------------------------------イベント詳細∼ 広告のクリエイティブはどれが良い? メールの訴求ポイントは? 題名:今なら1000円分のクーポンが -------------------------------------------------------イベント詳細∼ 複数のクリエイティブをアームとして、 ユーザ毎に訴求ポイントをアームとして、 バンディットアルゴリズムを適用することで バンディットアルゴリズムを適用することで 予算内での最も効率的な配信ができる ユーザ別に刺さる訴求をできる 99
  100. 100. バンディットアルゴリズムの活用 複数の選択肢の中から、効果の高い物を効率的に選択できる ▶広告の配信クリエイティブや、WEBページのデザイン等、  効果の高いデザインを効率的に選択できる。 ファジィな分類を有効に活用できる ▶ユーザを完全に分類して施策を決めるのではなく、ユーザの反応に合わせて  調節していくことができる。 --今まではイヌ派かネコ派かどちらかに分類しなければ施策を打てなかったが、     イヌ派55%、ネコ派45%という初期値を与えて、反応する方の施策を打つ。 100
  101. 101. はっきりとした分類(クリスプな分類) クラスタ3 クラスタ1 クラスタ4 クラスタ2 101
  102. 102. 曖昧な分類(ファジィな分類) クラスタ3 クラスタ1 クラスタ1: クラスタ2: クラスタ3: クラスタ4: 25% 25% 25% 25% クラスタ4 クラスタ2 102
  103. 103. 今までの施策の打ち方 クラスタ3 クラスタ1 どちらのユーザにも クラスタ3用の 施策のみを打つ クラスタ4 クラスタ2 103
  104. 104. バンディットアルゴリズムを活用した 新しい施策の打ち方 クラスタ3用の 施策を90% クラスタ3 クラスタ1 クラスタの分類を 初期値として与え、 反応する施策を増やしていく クラスタ2 全てのクラスタ用の施策を 25%ずつ試す 104 クラスタ4
  105. 105. バンディットアルゴリズムを活用 することで 真の「One to One」の実現へ ▶複数の選択肢の中から、最も効果的な施策を打つ事が可能に! 色々な場面で効率的な探索と活用を実現 ▶複数の選択肢から選ぶという問題であればほとんどの場合適用可能  有意差などを考慮せず、最も良い選択を目標とする 105
  106. 106. 参考資料 Bandit Algorithms for Website Optimization John Myles White著 オライリー社 バンディットアルゴリズムのコード https://github.com/johnmyleswhite/BanditsBook 106

×