用q-learning解决MountainCar

解决了MountainCar,虽然之前也解决过,但是不是那么熟练和熟悉,有股陌生感。

q-learning是时序差分的一种方法,也就是可以不用完整的回合(完整的回合,相当于游戏从开始到结束)来更新Q价值函数。

之前不怎么会用q-learning,因为之前的蒙特卡罗等等方法都是在一个格子世界环境来执行的,格子世界的状态是坐标,所以状态不仅是离散的而且还很少。所以可以很容易的初始化Q函数。但是在gym库里的环境就不一样了,状态是连续的,这就很麻烦。后来就用人工的把状态分割成几部分。

mountain car里面的状态包含两个元素,第一个是位置,第二个是速度。当位置超过0.5时就算赢了。在0.5之前的所有状态的奖励都是-1.到达终点0.5的奖励为0.如果游戏超过200时间步就终止,或者位置超过0.5就终止。

后面训练了两万次.
图片

average 奖励,玩100次,得到100个累积奖励,然后求期望。
最大奖励就是100个累积奖励里面最大的。

在mountain car里面自己重新设置了奖励,如果位置大于0.5,reward = 10000.表示奖励达到这个结果的行为。
在8100左右,max reward已经基本上是平的线了。意味着在这之后的每100个回合里面,至少有一个位置超过了0.5.
看图,总体来说,agent还是表现的越来越好的。

感觉还是太慢了,不过还是不错了。

|

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容