はじめに pythonで $n$ 本腕バンディットタスクを実装しました. 教科書として『強化学習』を使いました. 本記事の構成 はじめに 強化学習 概要 構成要素 バンディットタスク ルール 標本平均手法 行動選択規則 実装 結果 おわりに 概要 強化学習は,報酬を最大にするためにどの行動を選択すべきかを学習します. 教師あり学習では,選択すべき正解の行動を与えられますが,強化学習では,「ある指針」に基づいて行動を選択し,それにより得られる報酬を使って,行動を評価・更新します. 学習された「ある指針」に従って行動することで,報酬を最大化できます. 構成要素 強化学習の構成要素とその簡単な説明をします. エージェント:周囲の環境を感知し,環境と直接相互作用する個体 環境:エージェントと独立した周囲の状況 報酬:エージェントが行動することで環境から得られる値 価値関数:エージェントの現在の状況
いま注目すべきシリコンバレーの有名なIT企業は新規のデザインや機能が有効かどうかを検証するためにA/Bテストを行っています。 その一方で、日本の企業も含め、A/Bテストを本番環境で導入している企業は非常に少ないです。 加えて、日本で言われているA/Bテストと海外で言われているA/Bテストは少々異なるものだと感じています。 日本のA/Bテストはフォームの最適化やデザインの修正にとどまっている一方で、海外のA/Bテストはプロダクト開発のサイクルの一部分となっています。 プロダクト開発のサイクルの一部としてA/Bテストを取り入れるためには、大量のテストを定常的に回していく仕組みが必要となってきます。 そこでデータドリブンであると言われているようなシリコンバレーのIT企業は自社でA/Bテストの基盤を作成しています。 今回は社内A/Bテスト勉強会で発表するために、シリコンバレーの有名IT企業がどのよ
バンデットアルゴリズムの一種 A Contextual-Bandit Approach to Personalized News Article Recommendation 解説に挑戦機械学習強化学習Recommendation 導入メリットと事例について ニュースレコメンデーションの問題 従来のニュースレコメンデーションのメインの手法である協調フィルタリングとコンテンツフィルタリングだと、以下の問題があります。 1:ユーザーの情報が必要 2:コンテンツの変更の反映が速いので追いつかない 3:学習と計算を早くしないといけない 4:新しいコンテンツはユーザー情報がないので協調フィルタリングが使用できない ユーザーの情報がない状態でコンテンツの変更が速くても対応したい バンデットアルゴリズムを用いましょう!! 対処方法 バンデットアルゴリズムとは ニュースレコメンデーションシステムの場合:よ
オバマ大統領の再選に大きく寄与したことで大きな注目を集めているA/Bテスト。A/Bテストを導入した、することを検討している、という開発現場も多いのではないだろうか。 そんな中、Web上で次のような議論を見つけた。 20 lines of code that will beat A/B testing every time Why multi-armed bandit algorithm is not “better” than A/B testing 一言でまとめると「A/Bテストよりバンディットアルゴリズムの方がすごいよ」「いやいやA/Bテストの方がすごいし」ということだ。 で、バンディットアルゴリズムとは一体何者なのか? そこでBandit Algorithms for Website Optimization (O'REILLY)を読んでみた。その結果分かったことを踏まえてざっくりと
Web広告配信のインフラを探る 第1回0.1秒で行われるリアルタイムトレード~マイクロアドが開発/運営する広告配信システムの裏側 普段何気なく見ているWeb広告ですが、その裏側では極めて高度な処理が行われているのをご存じでしょうか。ここでは、最新の広告枠の販売形態である「RTB」を支えるインフラについて解説します。 広告主と媒体社の双方のニーズに応えるRTB 近年、市場が急成長しているWeb広告は、広告表示回数やクリック数など効果測定が定量的に行えるという、これまでの広告とは大きく異なる特徴を持ちます。広告の出稿目的はさまざまで、たとえばブランドの認知度を上げることであったり、Webサイトに来て商品を購入してもらうことであったりと多岐にわたります。それらのニーズに応えるため、Web広告技術はこれまで日進月歩で進化してきました。 当初は、広告を出す企業がWebサイト上の広告枠を事前(数週間か
こんにちは@hagino3000です。Zucks Ad Networkという広告配信サービスの開発をしています。最近はアドネットワークの広告配信最適化に利用できるアルゴリズムの調査もしています。 本稿では調査で読んだ論文の一つ、オンライン広告配信を想定した多腕バンディット問題である、Mortal Multi-Armed Banditsを紹介します。多腕バンディット問題になじみがある読者を想定しています。 papers.nips.cc オンライン広告と多腕バンディット問題 ここでは簡単のために、クリック課金型のディスプレイ広告を前提に説明します。オンライン広告配信システムにおける問題として「最初はどの広告がどれだけクリックされるかわからないが、なるべくクリックされる広告を多く配信したい。」という物があります。これは多腕バンディット問題として知られており、探索はCTRが推定できるまで配信する事
以下の書籍を参考にGolangでバンディットアルゴリズムを実装してみた。 書籍に載っているEpsilon-Greedy、Softmax、UCB1を実装してから、Epsilon-GreedyとSoftmaxはAnnealingを追加してみた。 書籍ではPythonでtsvファイルを生成してからRで可視化しているけれど、今回はGolangでグラフを描画した。 書籍と同じようなグラフができたので、たぶん同じように実装できているはず。 Annealingを追加したグラフは書籍には載っていないけれど、EpsilonとかTemperatureにあまり影響されない結果になった。 Bandit Algorithms for Website Optimization 作者: John Myles White出版社/メーカー: O'Reilly Media発売日: 2012/12/10メディア: Kindle
こんにちは。技術部検索グループの原島です。 上の画像は、スマートフォン(ブラウザ版)で見たクックパッドの検索結果ページです。レシピだけでなく、ニュースも表示されていますね。献立や掲示板のスレッドなどが表示されることもあります。 クックパッドでは、検索結果ページに表示するコンテンツをクエリなどに応じて最適化しています。最適化は、膨大なログデータと最新の機械学習を用いることで、実現しています。このエントリでは、クックパッドにおけるコンテンツ最適化の裏側を紹介します。 最適化の背景 スマートフォンの普及に伴って、ユーザが利用するプラットフォームは PC からモバイルにシフトしつつあります。クックパッドにおけるモバイル利用者の割合も、ここ 2 年で 10% 以上増加しました。最近では、60% 以上のユーザがモバイルからアクセスしています。 ユーザの利用形態が変化すれば、検索結果ページもその変化に対
概要 どこもかしこもA/Bテストを行っていると言ってますが、それってAテストBテストじゃないですか? Aパターンを測定した後にBパターンを測定するのはA/Bテストとは言い難いと思います。 同時期に行っていないというのが大きな要因です。 AパターンBパターンを同時期に測定しているところは稀だったりします。 バンディットアルゴリズムを使えばA/Bテストはおろか、A/B/Cだろうが、A/Bで開始して途中からC/Dパターンを追加だろうが簡単に行うことができます。 1.テンプレートの登録 まず始めにAパターン、Bパターンのテンプレートを用意します。 このテンプレートというものはMVCフレームワークのV部分だと思ってください。 このテンプレート名をJubatusのバンディットアルゴリズムに登録しておきます。 python set_template.py [テンプレートファイル名(index_a.php
はじめに ちょっと遊びで多腕バンディット問題で遊んでみた。 UCB1-tunedも書いてみたけどUCB1より最終的な儲けが低くてあれ?ってなった。どっか間違ってるか。。。 追記(2012/2/12):コメントをいただいて、修正しました。一応、報酬額がUCB1よりtunedの方が高くなっているので、一緒にのせてみます。 修正 コメント指摘をうけ、元論文( http://www.eecs.berkeley.edu/~pabbeel/cs287-fa09/readings/Auer+al-UCB.pdf )を確認してみました。 「K個の独立で、未知だがそれぞれ期待値がμiの一様分布に従う確率変数Xi」と定義されているみたいで、報酬期待値μ*もμiの最大と定義されているので、評価値の計算もこれを用いなければなりませんでした。 「報酬を表すi.i.d.な確率変数X_{i,t}の範囲は、UCB1の証明
起動 jubatus-0.7.0/config/bandit/の中にサンプルjsonがあるので使うのが楽 jubabandit -f /usr/local/src/jubatus-installer-master/download/jubatus-0.7.0/config/bandit/ucb1.json pythonサンプル #!/usr/bin/env python # coding: utf-8 host = '127.0.0.1' port = 9199 name = 'test' import sys import json import random import jubatus from jubatus.common import Datum def train(client): arms = [ u'ヤフー', u'グーグル', u'楽天', ] player = u'ba
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く