見出し画像

Stable BaselinesでHERを使う

1. HER(Hndsight Experience Replay)

強化学習アルゴリズム「HER」については、以下を参照。

HER : 失敗から学ぶ強化学習アルゴリズム

2. 環境

今回は、環境として「highway-env」の「parking-v0」を使います。

GitHub - eleurent/highway-env: An environment for autonomous driving decision-making

画像2

ego-vehicleが適切な方向で所定のスペースに駐車しなければならない、目標条件付き連続制御タスクになります。

画像1

3. Stable BaselinesでHERを使う

Stable BaselinesでHERを使うコードは、次のとおり。

import gym
import highway_env
import numpy as np

from stable_baselines import HER, SAC
from stable_baselines.ddpg import NormalActionNoise

# 環境の生成
env = gym.make("parking-v0")

# HER+SACモデルの生成
model = HER('MlpPolicy', env, SAC,
    n_sampled_goal=4,
    goal_selection_strategy='future',
    verbose=1,
    buffer_size=int(1e6),
    learning_rate=1e-3,
    gamma=0.95,
    batch_size=256,
    policy_kwargs=dict(layers=[256, 256, 256]))

# モデルの学習
model.learn(int(2e5))

# モデルの保存
model.save('her_sac_highway')

# モデルの読み込み
model = HER.load('her_sac_highway', env=env)

# モデルの評価
episode_reward = 0
obs = env.reset()
for _ in range(100):
    # 行動の取得
    action, _ = model.predict(obs)

    # 1ステップの実行
    obs, reward, done, info = env.step(action)

    # 環境の描画
    env.render()

    # 報酬の計算
    episode_reward += reward

    # エピソード完了
    if done or info.get('is_success', False):
        print('Reward:', episode_reward, 'Success?', info.get('is_success', False))
        episode_reward = 0.0
        obs = env.reset()

◎HER+SACモデルの生成
「HER」は、オフポリシーメソッド(DQN、SAC、TD3、DDPG)で機能するメソッドラッパーです。ハイパーパラメータは、次のとおりです。

HER(policy, env, model_class, n_sampled_goal=4, goal_selection_strategy='future', *args, **kwargs)
【説明】HERモデルの生成
【引数】policy : BasePolicy or str    方策
    env : Gym Env or str    環境
    model_class : OffPolicyRLModel    Hindsight Experience Replayを適用するオフポリシーRLモデル
    n_sampled_goal : int    実際の遷移ごとに何個の人工遷移を作成するか
    goal_selection_strategy : GoalSelectionStrategyまたはstr    人口遷移の作成時に新しい目標を選択するための戦略
        ・future : 同じエピソードで、現在のステップの後に達成された目標を選択
        ・final : エピソードの最後に達成された目標を選択
        ・episode : エピソードで達成された目標を選択
        ・random : ある時点で達成された(およびリプレイバッファーに存在する)目標を選択


この記事が気に入ったらサポートをしてみませんか?