【蘑菇书EasyRL】强化学习,笔记整理
【蘑菇书EasyRL】强化学习,笔记整理
- 1.笔记整理
- 1.1 学习和决策代码框架
- 2. 遇到的bug
- gym 环境,新版本python无法使用
- env_specs = envs.registry.all() 报错
- 3 使用的代码函数记录
- 3.1 numpy 函数使用
- argmax()函数
- argwhere
蘑菇书的教程地址:
https://datawhalechina.github.io/easy-rl/#/chapter1/chapter1?id=_171-gym
代码地址
https://github.com/datawhalechina/easy-rl/tree/master
强化学习像是一朵昙花,在20年到22年曾经出现过,被认为可能是未来的主流,随着大模型的出现,大部分人的精力都随之而去。
很多代码库都随着python以及软件版本的更新,有了很多的修改,本人近期学习蘑菇书,在这记录学习中遇到的问题等
1.笔记整理
1.1 学习和决策代码框架
SimpleAgent 类的 decide()方法用于决策,learn() 方法用于学习,该智能体不是强化学习智能体,不能学习,只能根据给定的数学表达式进行决策。
class SimpleAgent:def __init__(self, env):passdef decide(self, observation): # 决策position, velocity = observationlb = min(-0.09 * (position + 0.25) ** 2 + 0.03,0.3 * (position + 0.9) ** 4 - 0.008)ub = -0.07 * (position + 0.38) ** 2 + 0.07if lb < velocity < ub:action = 2else:action = 0return action # 返回动作def learn(self, *args): # 学习passagent = SimpleAgent(env)
2. 遇到的bug
gym 环境,新版本python无法使用
gym 环境一开始是openAI开发了制作强化学习的环境,还有之前非常有名的马里奥,但是这个已经被抛弃,使用了一个全新的名字gymnasium。所以如果你需要使用新版本的python的话,可以尝试这个包。
PS:有机会自己搭建一个fc游戏的环境,现有的环境大部分都已经年久失修,很多代码无法使用。
env_specs = envs.registry.all() 报错
是因为all是比较老的方式,会出现:的报错。所以需要修改成values
from gymnasium import envs
env_specs = envs.registry.values()
envs_ids = [env_spec.id for env_spec in env_specs]
print(envs_ids)
3 使用的代码函数记录
3.1 numpy 函数使用
argmax()函数
arg是argument的缩写,argument是作为函数输入的值,也就是自变量,argmax就是求自变量最大值。
当有一个函数f(x),
max( f ( x )) 是求f(x)的最大值
argmax( f( x ) )是求x的最大值
argwhere
np.argwhere(policy[i]==1)
寻找满足policy[i]==1 ,这个表达式的位置