GYM源码阅读(1)——ENV与space

core.Env类

在这里插入图片描述

作为一个环境,他需要有如下的成员变量:
  • action_space

agent的动作空间( 逻辑上是不需要有这个的,但是代码实现上需要有——用来确认传入的action没有出错——for code robustness 仅此而已)
这个Agent类也要有的

  • observation_space

state_space 这个Env类肯定要有的

  • current state

当前Agent的state,一方面用于给Agent一个反馈 ,另一方面在step函数里面要用到
虽然一开始会觉得Agent拥有这个成员变量会好一些,但是其实由Env保存并给出更合理


作为一个环境,他需要有如下的function:
  • render(mode=‘human’)

    用于渲染动画(无需可视化就不需要)

  • reset()

    每次一个episode结束了以后重新开始

  • seed()

    给出基于当前环境下的一个随机值

  • step(action)

    根据传入的动作进行状态转移,并且返回observation,reward,done(是否到达episode的重点),info(多用于调试用)
    在这里插入图片描述

  • close()

相当于析构函数




Agent类

这部分不是源码里的,是我看到Env类自己想的

需要有的成员变量:
  • Env

逻辑上不知道整个环境的模型,所以实现的时候也不会通过这个类获得环境的参数,只不过利用这个类的step()来获得reward以模拟和未知世界的交互

  • action_space

逻辑和代码上都是需要的

  • current_state

Env类给的反馈

  • Qtable / Etable / approximation function
需要有的成员函数:
  • act(action)

执行当前动作,实际上调用Env的step函数
不需要传入state参数? 直接利用self.current_state就行

  • performPolicy( epsilon ,epoch) ->action

不需要传入state参数? 直接利用self.current_state就行
epsilon ,epoch用于exploitation和exploitation的衰减
实际上只是一个Agent类的通用API ,里面会调用每个具体agent自己实现的算法( sth like function:_curPolicy() )

  • learning( alpha(learning rate) ,gamma(discoumt factor) ,lambda )

updata自己对这个世界模型的想法(主要是值函数的进一步更新与估计)
(要调的参数好多哦…)

  • 一些辅助类(like _init , _get , _set )



Space类

本身就是一个现实世界的”物品“的代码投射,我们这里主要关注它的成员函数

  • sample( ) ->action

Uniformly randomly sample a random element of this space(注意,这里的sample不是采样episode而是采样一个action哦)

  • seed( )
  • contains( x ) ->boolean

specifying if x is a valid member of this space
在Env里面之所以要包含一个Space类就是为了利用这个函数来检查传入参数的合法性




关于调参

  • alpha 学习步长

应该不断衰减
如果没有收敛,那么就是后期衰减力度不够或者训练的epoch太少【啥情况要加大数据量来着。。。】

  • gamma 折扣因子

这部分还不是很清楚怎么调参

  • lambda

balance TD and MC , more unbias when goes to 1 ( equal to MC ) and less variance when goes to 0 ( equal to TD(0) ) )

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值