このレポジトリでは下記の課題を解いた。選択したアルゴリズムはε貪欲法,トンプソンサンプリングである。
ε貪欲法,UCB,KL-UCB,トンプソンサンプリングのうち2個以上を実装し,ベルヌーイ分布に従う報酬に対してリグレットの挙動を比較せよ
以下では、レポジトリの構成について説明し、シミュレーション.ipynb
にアルゴリズムの比較結果を説明する。
models
以下に選択した二つのアルゴリズムを実装した。
どちらのアルゴリズムも最適腕の選択を制御するパラメータ更新をバッチ処理で行う。params.py
には、ハイパーパラメータを保存し、バッチサイズもこのファイルで定義した。
アルゴリズムの設計では、腕選択の方針をpolicy.py
で定義し、policy
へ課題のスロットである腕をarm.py
で定義し、policy
へ与えるようにした。
また、regretの計算を行う評価関数をeval.py
で定義し、'policy'で呼び出している。これらの関係をcontroller.py
でインスタンス化し、データの読み込みやパラメータ設定を容易にした。