强化学习系列文章(三十):训练利器Gym Wrapper

本文介绍了如何使用CleanRL的PPO代码中采用的GymWrapper技术来提升强化学习训练效率。GymWrapper分为行动、观察和奖励三大类别,通过自定义封装实现环境的优化。例如,RescaleAction用于缩放行动空间,NormalizeObservation和NormalizeReward用于标准化观察和奖励,提高算法收敛速度。此外,还提到了AtariPreprocessing等常用Wrapper及其作用。

强化学习系列文章(三十):训练利器Gym Wrapper

在训练LunarLander环境的智能体算法时,学习到CleanRL的PPO代码,是我目前测试过训练速度最快的PPO版本。我认为主要贡献之一是采用了成熟的gym.wrapper技术,现总结这项技术的学习笔记。
https://www.gymlibrary.ml/content/wrappers/

wrapper介绍

主要分3类wrapper,分别是action,observation,reward。分别继承ActionWrapperObservationWrapperRewardWrapper三个类,可以设计编写定制化的封装对象。

wrapper示例

import gym
from gym.wrappers import RescaleAction
base_env = gym.make("BipedalWalker-v3")
base_env.action_space
# Box([-1. -1. -1. -1.], [1. 1. 1. 1.], (4,), float32)
wrapped_env = RescaleAction(base_env, min_action=0, max_action=1)
wrapped_env.action_space
# Box([0. 0. 0. 0.], [1. 1. 1. 1.], (4,), float32)

解除wrapper

要想获得封装之前的环境,只需要调用封装后环境的env属性:

wrapped_env.env

如果环境被多层封装,想要直接获得最底层的环境对象,则调用:

wrapped_env.unwrapped

wrapper总览

from gym.wrappers.monitor import Monitor
from gym.wrappers.time_limit import TimeLimit
from gym.wrappers.filter_observation import FilterObservation
from gym.wrappers.atari_preprocessing import AtariPreprocessing
from gym.wrappers.time_aware_observation import TimeAwareObservation
from gym.wrappers.rescale_action import RescaleAction
from gym.wrappers.flatten_observation import FlattenObservation
from gym.wrappers.gray_scale_observation import GrayScaleObservation
from gym.wrappers.frame_stack import LazyFrames
from gym.wrappers.frame_stack import FrameStack
from gym.wrappers.transform_observation import TransformObservation
from gym.wrappers.transform_reward import TransformReward
from gym.wrappers.resize_observation import ResizeObservation
from gym.wrappers.clip_action import ClipAction
from gym.wrappers.record_episode_statistics import RecordEpisodeStatistics
from gym.wrappers.normalize import NormalizeObservation, NormalizeReward
from gym.wrappers.record_video import RecordVideo, capped_cubic_video_schedule

常用Wrapper介绍

AtariPreprocessing:

标准的Atari游戏预处理封装器,一劳永逸,非常好用。主要有如下的预处理函数。

* NoopReset: obtain initial state by taking random number of no-ops on reset. 游戏开始之初执行一定次数的nope action以增加游戏随机性。
* Frame skipping: 4 by default. 堆叠4帧画面作为1个state,提供time sequence信息。
* Max-pooling: most recent two observations. 没懂。
* Termination signal when a life is lost: turned off by default. Not recommended by Machado et al. (2018).
* Resize to a square image: 84x84 by default. 图像尺寸归一化。
* Grayscale observation: optional. 灰度化。
* Scale observation: optional.
Args:
    env (Env
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值