机器学习之Grid World的Deep SARSA算法解析

本文介绍了Deep SARSA算法,它是SARSA算法的扩展,利用神经网络代替传统q_table。通过分析开源项目代码,阐述了Deep SARSA如何处理大量状态,并对比了与SARSA算法的区别。Deep SARSA的动作策略结合了随机行为和神经网络预测,展示了神经网络在增强学习中的应用价值。
摘要由CSDN通过智能技术生成

Github上某开源项目的Deep SARSA算法实现代码地址:
https://github.com/rlcode/reinforcement-learning/tree/a497d719e3ecdd254e6620cf4f4b9afb0524b099/1-grid-world/6-deep-sarsa

Deep SARSA

Deep SARSA算法是基于SARSA算法的,不同之处在于SARSA算法用一个q_table记录了Agent在所有状态下采取所有Action的概率,用SARSA这5个变量去更新这些概率,让Agent能够以更大的概率采取正确的动作。具体分析可以看一下我之前的一篇文章:机器学习之Grid World的SARSA算法解析
而Deep SARSA算法则采用了神经网络算法代替q_table的记录和查询。用神经网络算法代替q_table有什么好处呢?我自己也有问过自己这样的问题,看了这个开源项目的实现之后我自己有一点想法,不知道正不正确:

  1. 当环境有非常多种状态的时候,用q_table记录所有状态并不是很现实。就像围棋,大家都知道,电脑不可能像记录象棋所有变化(即状态)那样子记录围棋的所有变化,因为围棋的所有状态加起来比人类目前能观测到的宇宙的所有原子数量还要多(这点大家可以百度)。所以当q_table不能记录足够多的变化的时候,增强学习是无法战胜人类的。所以结合神经网络算法的增强学习算法才由此诞生,目的就是让Agent经过有限的学习去应对无限的状态空间。

  2. 使用q_table的时候,如果Agent没有到达过某种状态,那么Agent在这个状态下选择action可能是随机的,就是瞎选,而神经网络算法有时候能避免这种瞎选,这就是为什么神经网络算法在学习过10000张猫的照片后能分辨出第10001张跟之前照片不同的照片是不是猫的原因。

以上就是我自己的一点想法,其实并不完全是自己想出来的,大神的文章看多了,摸到大象鼻子而已。至于神经网络算法怎么会这么神奇,推荐大家去学习一下神经网络算法,大神们都推荐UFLDL,我这里就不讲这个了,下面我们一起看看Deep SARSA算法的实现。

代码实现

入口代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番茄大圣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值