o8r / rock-paper-scissors

OpenAI Gym/Stable Baselines sample code

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Rock-Paper-Scissors サンプル

じゃんけん対戦の強化学習サンプルコードです。

以下のライブラリを使用しています。

  • OpenAI Gym
  • Stable Baselines3 / PyTorch
  • flask, docopt

インストール

  • Anaconda をインストール、conda env コマンドを使い実行用環境を構築、conda activateコマンドで環境に入る
  • conda install pytorch torchvision cpuonly -c pytorch
  • pip install stable-baselines3[extra]
  • git clone https://github.com/coolerking/rock-paper-scissors.git

使い方

トレーニング

  • cd rock-paper-scissors
  • python train.py

トレーニングの可視化

  • tensorboard --logdir play_logs
  • ブラウザで http://127.0.0.1:6006/ を開く

引数のlogdirのパスを prob_dist_logsjurina_logsに変更することでほかの学習モデルのトレーニング可視化が可能です。

停止はCtrl+C。

評価

学習済みモデルの平均報酬値を標準出力へ表示します。

  • python eval.py

以下のグラフは、平均報酬値結果を実行し、まとめたものです。

じゃんけん平均報酬値

Webアプリケーション実行

じゃんけんWeb UI

じゃんけんAI対戦ができるWebアプリケーションを起動します。

  • cd rock-paper-scissors
  • conda install flask
  • pip install docopt
  • python server.py

停止はCtrl+Cを押します。

  • ブラウザで http://127.0.0.1:5000/ を開く

モデルのリロード

  • ブラウザで http://127.0.0.1:5000/reload を開く

あれ?

動作させると、「あれ?」となるとおもいます。 実は上記の通り実行したWebじゃんけんアプリを何度か使うと、プレイヤーはAIがかならず1つの手を出し続けることに気づくと思います。

AI側の手をちらしたいと考えた時、どのようにこのコードを変更すればよいかは各自で考えてみてください。

ちらした手を出すことが収益最大化につながるようにするには..がヒントです。

オレは ようやくのぼりはじめた ばかりだからな

このはてしなく遠い 強化学習坂をよ..

未完

ライセンス

謝辞

上記OSS以外にも、以下のサイトを活用しています。

About

OpenAI Gym/Stable Baselines sample code

License:MIT License


Languages

Language:Python 79.4%Language:HTML 19.3%Language:CSS 1.3%