Kau*_*l28 9 machine-learning reinforcement-learning temporal-difference
我正在研究这篇文章中的时间差异学习.这里TD(0)的更新规则对我来说很清楚,但是在TD(λ)中,我不明白在一次更新中如何更新所有先前状态的效用值.
以下是用于比较机器人更新的图表:
上图解释如下:
在TD(λ)中,由于合格性迹线,结果传播回所有先前的状态.
我的问题是,即使我们使用具有资格跟踪的以下更新规则,如何将信息传播到单个更新中的所有先前状态?
在单个更新中,我们只更新单个状态Ut(s)
的实用程序,然后如何更新所有先前状态的实用程序?
编辑
根据答案,很明显,此更新适用于每一步,这就是传播信息的原因.如果是这种情况,那么它再次让我困惑,因为更新规则之间的唯一区别是资格跟踪.
因此,即使资格跟踪的值对于先前的状态不为零,在上述情况下delta的值将为零(因为最初的奖励和效用函数被初始化为0).那么以前的状态如何在第一次更新中获得除零以外的其他效用值?
同样在给定的python实现中,在单次迭代后给出以下输出:
[[ 0. 0.04595 0.1 0. ]
[ 0. 0. 0. 0. ]
[ 0. 0. 0. 0. ]]
Run Code Online (Sandbox Code Playgroud)
这里只更新了2个值而不是所有5个先前的状态,如图所示.我在这里缺少什么?
您缺少一个小但重要的细节,更新规则适用于所有状态,而不仅仅是当前状态。因此,实际上,您正在更新所有e_t(s)
不为零的状态。
编辑
不delta
为零,因为是针对当前状态计算的,当情节结束并且代理收到+1 奖励时。因此,在计算出不为零的 a 后,您可以使用该值和当前的资格跟踪delta
来更新所有状态。delta
我不知道为什么在Python实现中(我没有仔细检查过)输出只更新了2个值,但是请验证之前所有5个状态的资格跟踪是否与0不同,如果不是的话,尝试理解原因。有时您对将迹线维持在非常小的阈值(例如,10e-5)以下不感兴趣,因为它在学习过程中的影响非常小并且浪费计算资源。
归档时间: |
|
查看次数: |
230 次 |
最近记录: |