
方策ベースの強化学習の基本、方策勾配法を「ゼロから作る〜4」のコードで実行します。

関連
- ◯
 - 強化学習のためのシンプルな環境:Farama Gymnasium, OpenAI Gym, Docker, X Window System, Pyglet, pygame, tkinter
 
検証
- ・
 - インタプリタ:Python 3.8
 - ・
 - ライブラリ:OpenAI Gym 0.26
 - ・
 - ライブラリ:DeZero
 
方策勾配法×倒立振子:OpenAI Gym (CartPole), PyTorch, DeZero
方策ベースの強化学習の基本、方策勾配法を使って、倒立振子を学習させます。
倒立振子はOpenAI Gym (CartPole) の環境を、方策勾配法のコードは「ゼロから作る〜4」のものを使います:[※1]
$ pip install torch
$ pip install dezero
$ cd ${DIR}
$ git clone --depth 1 https://github.com/oreilly-japan/deep-learning-from-scratch-4
$ python ${DIR}/deep-learning-from-scratch-4/pytorch/simple_pg.py # PyTorch 版
$ python ${DIR}/deep-learning-from-scratch-4/ch09/simple_pg.py # DeZero版
- ※1
 - このコードは機械学習のフレームワークを使っていますが、とくにフレームワークのDeZero版は、シンプルな学習向けです(「ゼロから作る〜3」)ーーなので、まずフレームワークの大まかなレベルで、方策勾配法の全体を把握できます。そしてフレームワーク内部の動きについて知りたければ、さらに(解説つきで)細部を追っていくことができる環境になっています:
 
- ・
 - ゼロから作るDeep Learning ❹
 - ・
 - ゼロから作るDeep Learning ❸
 
コードの修正:対応:OpenAI Gym v0.26
とりあえずDeZero版については、Farama Gymnasium 0.26 、OpenAI Gym v0.26に対応する修正点も挙げておきます:[※1]
- ・
 - 修正前(ch09/simple_pg.py):
 
import gym
env = gym.make('CartPole-v0')
    state = env.reset()
        next_state, reward, done, info = env.step(action)
- ・
 - 修正後(ch09/simple_pg.py):
 
import gymnasium as gym # Farama Gymnasiumを使う場合
env = gym.make('CartPole-v0', render_mode='human') # 訓練の画面を表示する場合
    state, _ = env.reset()
        next_state, reward, done, _, info = env.step(action)
- ※1
 - 後方互換性を確保するためのユーティリティも提供されていますが、素直にこのバージョンの仕様向けにコードを書き換えた方が、見た目はいいですね……
 
