5
4

More than 3 years have passed since last update.

Stable Baselines3 を使って強化学習をカスタムSIに使ってみよう

Last updated at Posted at 2020-12-04

本記事は PyTorch Advent Calendar 2020 12月5日寄稿 参加記事です。

Qiitaを含む日本語で書かれている強化学習を解説するコンテンツも、アルゴリズムの中身を解説するものが中心です。

とくに初期の日本語の強化学習をタイトルに持つ書籍でのサンプルコードは、CartPole(棒倒し)や多椀バンディット(スロットゲーム)、迷路などの環境を使ったものばかりで、すぐに流用できそうな機能を紹介するものがあまりありませんでした。

そこで、アルゴリズムや強化学習の仕組みなどの解説を最小限にして、カスタムSIへの適用を最優先にしたスライドを作ってみました。

以下、SlideShareに公開したスライドです。

thumbnail

ここで紹介している Stable Baselines は TensorFlow1.x 前提ですが、Stable Baselines3 は PyTorch (1.4+) でも動作します。

Stable Baselines では、PPOなどGPU版とCPU版で別れたエージェントモデルクラスを提供していることもありますが、Stable Baselines3 ではそのあたりを考慮しなくても動作するようになっていて便利です。

Stable Baselines/Stable Baselines3 ともにほぼ同じインターフェイスですので、TensorFlow に変えたい場合もコード修正が少なくなる利点もあります。

ただしStable BaselinesではLSTMを使った方策も用意されていますが、Stable Baselines3では MlpPolicy(多層パーセプトロン) か CnnPolicy(CNN) の2種類しかありません。

LSTMなどを使いたい場合は、独自の方策ネットワークを作ることになりますが、以下のリンクにある通り、独自のクラスを作ることも可能です。

強化学習のサンプルコードがゲーム画面やシミュレータ画面を扱ったものが多く、UnityやUnrealEngineで実装したシミュレータがいると誤解している人もいるかもしれませんが、そのような3D/2Dシミュレータがなくても実装することは可能です。

最初に紹介したSlideShare内で紹介していましたが、じゃんけんAIを強化学習で実装するサンプルコードを以下のGitHubに置きましたので、こちらのコードを参考にしてみてください。

p.s.

PyTorchっぽい記事でなくて、スミマセン..

5
4
1

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
5
4