Stable Baselines/RL算法/A2C

Stable Baselines官方文档中文版 Github CSDN
尝试翻译官方文档,水平有限,如有错误万望指正

Asynchronous Advantage Actor Critic (A3C)的同步、确定性变体。它使用多个workers来避免使用重播缓存。

  • 要点核心

    • 原始文献: https://arxiv.org/abs/1602.01783
    • OpenAI 博客: https://openai.com/blog/baselines-acktr-a2c/
    • python -m stable_baselines.a2c.run_atariAtari游戏以 40M frames = 10M timesteps运行算法。更多选项参见帮助文档(-h
    • python -m stable_baselines.a2c.run_mujocoMujoco环境以1M frames运行算法
  • 适用情况

    • 迭代策略:✔️

    • 多进程:✔️

    • Gym空间:

      Space Action Observation
      Discrete ✔️ ✔️
      Box ✔️ ✔️
      MultiDiscrete ✔️ ✔️
      MultiBinary ✔️ ✔️
  • 案例

    用4进程在CartPole-v1上训练A2C agent

    import gym
    
    from stable_baselines.common.policies import MlpPolicy
    from stable_baselines.common.vec_env import SubprocVecEnv
    from stable_baselines import A2C
    
    # multiprocess environment
    n_cpu = 4
    env = SubprocVecEnv([lambda: gym.make('CartPole-v1') for i in range(n_cpu)])
    
    model = A2C(MlpPolicy, env, verbose=1)
    model.learn(total_timesteps=25000)
    model.save("a2c_cartpole")
    
    del model # remove to demonstrate saving and loading
    
    model = A2C.load("a2c_cartpole")
    
    obs = env.reset()
    while True:
        action, _states = model.predict(obs)
        obs, rewards, dones, info = env.step(action)
        env.render()
    
  • 参数

    stable_baselines.a2c.A2C(policy, env, gamma=0.99, n_steps=5, vf_coef=0.25, ent_coef=0.01, max_grad_norm=0.5, learning_rate=0.0007, alpha=0.99, epsilon=1e-05, lr_schedule='constant', verbose=0, tensorboard_log=None, _init_setup_model=True, policy_kwargs=None, full_tensorboard_log=False)
    

    A2C(Adavantage Actor Critic)模型类, https://arxiv.org/abs/1602.01783

    参数 数据类型 意义
    policy ActorCriticPolicy or str 所用策略模型(MlpPolicy, CnnPolicy, CnnLstmPolicy, …)
    env Gym environment or str 学习所用环境(如果注册在Gym,可以是str)
    gamma float 贴现因子
    n_steps int 运行环境每次更新所用时间步(例如:当n_env是同时运行的环境副本数量时,batch=n_steps*n_env)
    vf_coef float 用于损失函数的价值函数系数
    ent_coef float 损失函数的信息熵系数
    max_grad_norm float 梯度裁剪的最大值
    learning_rate float 学习率
    alpha float RMSProp衰减参数(默认:0.99)
    epsilon float RMSProp epsilon(稳定RMSProp更新中分母的平方根计算)(默认1e-5)
    lr_schedule str 更新学习率的调度程序类型(‘linear’, ‘constant’, ‘double_linear_con’, ‘middle_drop’ or ‘double_middle_drop’)
    verbose int 日志信息级别:0None;1训练信息;2tensorflow调试
    tensorboard_log str tensorboard的日志位置(如果时None,没有日志)
    _init_setup_model bool 实例化创建过程中是否建立网络(只用于载入)
    policy_kwargs dict 创建过程中传递给策略的额外参数
    full_tensorboard_log bool 当使用tensorboard时,是否记录额外日志(这个日志会占用大量空间)
    • action_probability(observation, state=None, mask=None, actions=None, logp=False)

      如果actionsNone,那么从给定观测中获取模型的行动概率分布。

      输出取决于行动空间:

      • 离散:每个可能行动的概率
      • Box:行动输出的均值和标准差

      然而,如果actions不是None,这个函数会返回给定行动与参数(观测,状态,…)用于此模型的概率。对于离散行动空间,它返回概率密度;对于连续行动空间,则是概率密度。这是因为在连续空间,概率密度总是0,更详细的解释见 http://blog.christianperone.com/2019/01/

      参数 数据类型 意义
      observation np.ndarray 输入观测
      state np.ndarray 最新状态(可以时None,用于迭代策略)
      mask np.ndarray 最新掩码(可以时None,用于迭代策略)
      actions np.ndarray (可选参数)为计算模型为每个给定参数选择给定行动的似然。行动和观测必须具有相同数目(None返回完全动作分布概率)
      logp bool (可选参数)当指定行动,返回log空间的概率。如果action是None,则此参数无效

      返回:np.ndarray)模型的(log)行动概率

    • get_env()

      返回当前环境(如果没有定义可以是None

      返回:Gym Environment)当前环境

    • get_parameter_list()

      获取模型参数的tensorflow变量

      包含连续训练(保存/载入)所用的所有必要变量

      返回:listtensorflow变量列表

    • get_parameters()

      获取当前模型参数作为变量名字典 -> ndarray

      返回:(OrderedDict)变量名字典 -> 模型参数的ndarray

    • learn(total_timesteps, callback=None, seed=None, log_interval=100, tb_log_name=‘A2C’, reset_num_timesteps=True)

      返回一个训练好的模型

      参数 数据类型 意义
      total_timesteps int 训练用样本总数
      seed int 训练用初始值,如果None:保持当前种子
      callback function (dict, dict) 与算法状态的每步调用的布尔函数。采用局部或全局变量。如果它返回false,训练被终止
      log_interval int 记录日志之前的时间步数
      tb_log_name str 运行tensorboard日志的名称
      reset_num_timesteps bool 是否重置当前时间步数(日志中使用)

      返回:(BaseRLModel) 训练好的模型

    • **classmethod load(load_path, env=None, kwargs)

      从文件中载入模型

      参数 数据类型 意义
      load_path str or file-like 文件路径
      env Gym Envrionment 载入模型运行的新环境(如果你只是从训练好的模型来做预测可以是None)
      kwargs 载入过程中能改变模型的额外
    • load_parameters(load_path_or_dict, exact_match=True)

      从文件或字典中载入模型参数

      字典关键字是tensorflow变量名,可以用get_parameters函数获取。如果exact_matchTrue,字典应该包含所有模型参数的关键字,否则报错RunTimeError。如果是False,只有字典包含的变量会被更新。

      此函数并不载入agent的超参数

      警告:

      此函数不更新训练器/优化器的变量(例如:momentum)。因为使用此函数的这种训练可能会导致低优化结果

      参数 数据类型 意义
      load_path_or_dict str or file-like 保存参数或变量名字典位置->载入的是ndarrays
      exact_match bool 如果是True,期望载入关键字包含模型所有变量的字典;如果是False,只载入字典中提及的参数。默认True
    • predict(observation, state=None, mask=None, deterministic=False)

      获取从参数得到的模型行动

      参数 数据类型 意义
      observation np.ndarray 输入观测
      state np.ndarray 最新状态(可以时None,用于迭代策略)
      mask np.ndarray 最新掩码(可以时None,用于迭代策略)
      deterministic bool 是否返回确定性的行动

      返回:(np.ndarray, np.ndarray) 模型的行动和下一状态(用于迭代策略)

    • pretrain(dataset, n_epochs=10, learning_rate=0.0001, adam_epsilon=1e-08, val_interval=None)

      用行为克隆预训练一个模型:在给定专家数据集上的监督学习

      目前只支持Box和离散空间

      参数 数据类型 意义
      dataset ExpertDataset 数据集管理器
      n_epochs int 训练集上的迭代次数
      learning_rate float 学习率
      adam_epsilon float adam优化器的 ϵ \epsilon ϵ
      val_interval int 报告每代的训练和验证损失。默认最大纪元数的十分之一

      返回:(BaseRLModel) 预训练好的模型

    • save(save_path)

      保存当前参数到文件

      参数 数据类型 意义
      save_path str or file-like object 保存位置
    • set_env(env)

      检查环境的有效性,如果是一致的,将其设置为当前环境

      参数 数据类型 意义
      env Gym Environment x学习一个策略的环境
    • setup_model()

      创建训练模型所必须的函数的tensorflow图表

你可能感兴趣的:(#,Stable,A2C,stable,baselines,RL算法,OpenAI)