LoginSignup
10
12

More than 5 years have passed since last update.

強化学習×推薦アルゴリズムを試せる環境「RecoGym」とは?

Posted at

Datumixの奥戸です.
あ,このアカウントの@teamOkudoの"Okudo"とは自分のことですw
とうとう正体を現しました.
さて,今回はRecoGymという推薦システム×強化学習を試せる環境の説明と導入部分について記事を書きたいと思います.

RecoGymとは?

 RecoGymは推薦システムのトップカンファレンスである RecSys2018 で発表されたOpenAI Gym上で推薦アルゴリズムを試すことのできる学習(テスト)環境です.Open AI gymの説明に関してはここでは省略します.

強化学習環境上での推薦システム

 強化学習×推薦システムに関して少しここで説明しておきます.まず,強化学習をざっくり書くと,エージェントと呼ばれる行動主体が環境とのインタラクションを通して獲得できる報酬を元に行動の仕方(方策)を学習する枠組みになります.強化学習の枠組みで記述できる推薦システムの概図は下図になります.
rl_setup_rec.png

 上図で出てきた要素と強化学習の文脈で出てくる言葉を対応づけると下表のようになります.

強化学習 図内で対応する要素 補足
エージェント agent 推薦アルゴリズム
環境 user 推薦を受け取るユーザー
行動 action 推薦
観測(状態) observation ユーザーが商品に対してとった行動情報
報酬 reward ユーザーが推薦した商品をクリックしたかどうか

 推薦システムがユーザーに対して商品の推薦を行います.その結果,商品に対してとったユーザーの行動情報と推薦した商品をクリックしたかどうかのフィードバックを推薦システムが受け取ってアルゴリズムを更新することを繰り返す形になっています.

RecoGymの特徴

 RecoGymでは以下のような流れで学習を行うことができます.

flow rec.png

 オフライン学習(Offline Learning)のためにRecoGymがデータの生成を担ってくれます.具体的には固定方策で商品を推薦し,その推薦に対するフィードバックを記録しておきます.ここで記録された訓練データを用いてエージェントはオフライン学習を行うことができます.
 次のオンライン学習(Online Learning)では行動決定,その決定に伴う状態と報酬の観測,方策の更新の繰り返しを行います.
オフライン学習は,推薦システムでよくあるコールドスタートに対する対処ですね.初期の学習にはコストがかなりかかるので訓練データの収集と学習部分を切り離しています.

導入

 推奨されているのはAnaconda上でのPython 3.7+環境です.あと,OpenAI gymの環境のインストールが必要になります.まず,conda-envをインストールします.

# install conda env
conda install -c conda conda-env
conda install -c r r-essentials

 次に,RecoGymのレポジトリ をクローンしてきて,必要なライブラリをインストールします.OpenAI gymはAnacondaでのインストールに対応していないみたいなのでpipでインストールします.

git clone https://github.com/criteo-research/reco-gym.git
cd reco-gym
# create environment based on environment.yml
conda-env create environment.yml
pip install gym

これで導入は終了になります.お疲れ様でした.

最後に

 今回は,強化学習環境であるOpenAI gym上で推薦システムを試せる環境であるRecoGymの説明とその導入まで行いました.次回は,このRecoGymを使って実際にプログラムを動かしていきたいと思います.乞うご期待!

Datumixでは一緒に推薦システムの構築や強化学習の実装や調査を手伝ってくれる仲間を募集しています.強化学習の社会実装に興味がある,推薦システムを作って見たいなど,あれば気軽に連絡をください

参考文献

  1. RecoGym Repository
  2. RecoGym Paper
10
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
12