得到等式如下:
用这个公式推导TD target:
依赖于St,At,St+1。而状态价值函数
是
对
和
求期望,所以将
的转换公式代入得到两项期望相加。
上面的式子可以得到下面这个式子:
由于直接求期望比较困难,所以这里用了蒙特卡洛近似。将近似成
,将
近似成
,则该等式左边是该时刻的价值
,右边是期望,我们把期望近似成TDtarget (yt)。yt部分基于真实观测到的奖励,部分基于
做出的预测。
TD learing的想法是将动作价值去接近yt。这是因为
完全是估计,而yt一部分是基于真实的奖励,所以认为yt更可靠,把yt当作是观测到的值,即把yt固定住,当成常数,改变动作价值
,让其更接近yt。
表格形式的Sarsa算法:
我们想要学习动作价值,输入是状态s和动作a,假设动作和状态的数量都是有限的,那么可以设计图中的表格,表中的每一个元素对应一个动作价值,我们要做的就是用Sarsa算法来更新表格,每次更新一个元素。
1.每次观察一个四元组,每一个四元组称为一个transition;
2.用策略函数来计算下一个动作,把动作记为;
3.计算TD target,一部分是观测到的奖励,另一部分是价值函数
给下一个动作打的分数,
可以查询表格得到;
4.计算TD error,通过查表,也可以知道的值,与yt做差,即可得到TD error;
5.最后更新表中的,α是学习率。
即Sarsa的名字的由来:
神经网络形式的Sarsa:
当动作和状态很多时,表格已经不再适用,所以用神经网络来模拟Sarsa算法。
可以用神经网络来近似动作价值函数,记作
,参数是w,即为价值网络,两者都跟策略π有关,都受π的影响。
的输入是状态s,输出是所有动作的价值,如果有n个动作,输出就是n维向量。
在Actor-critic方法中用过,其相当于critic,作用是评价actor的动作,即裁判作用。其参数w一开始是随机初始化的,我们要用观测到的奖励来更新w。
1.计算TD target,一部分是真实观测到的奖励,另一部分是价值网络对t+1时刻的价值估计;
2.计算TD error,我们希望TD error越小越好;
3.将作为损失函数,我们希望通过更新价值网络中的w来减小损失函数;
4.对损失函数关于w求梯度;
5.做梯度下降更新参数w,α是学习率。
总结: