强化学习系列文章(三十):训练利器Gym Wrapper
在训练LunarLander环境的智能体算法时,学习到CleanRL的PPO代码,是我目前测试过训练速度最快的PPO版本。我认为主要贡献之一是采用了成熟的gym.wrapper技术,现总结这项技术的学习笔记。
https://www.gymlibrary.ml/content/wrappers/
wrapper介绍
主要分3类wrapper,分别是action,observation,reward。分别继承ActionWrapper、ObservationWrapper、RewardWrapper三个类,可以设计编写定制化的封装对象。
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

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

被折叠的 条评论
为什么被折叠?



