Machine learning Cart极点的SARSA值逼近

Machine learning Cart极点的SARSA值逼近,machine-learning,reinforcement-learning,openai-gym,sarsa,Machine Learning,Reinforcement Learning,Openai Gym,Sarsa,我有一个关于萨尔萨法的问题 在输入单元格142中,我看到此修改的更新 w += alpha * (reward - discount * q_hat_next) * q_hat_grad 其中q_hat_next是q(S',a'),q_hat_grad是q(S,a)的导数(假设S,a,R,S'a'序列) 我的问题是更新不应该是这样的吗 w += alpha * (reward + discount * q_hat_next - q_hat) * q_hat_grad 修改后的更新背后的直觉是

我有一个关于萨尔萨法的问题

在输入单元格142中,我看到此修改的更新

w += alpha * (reward - discount * q_hat_next) * q_hat_grad
其中
q_hat_next
q(S',a')
q_hat_grad
q(S,a)
的导数(假设
S,a,R,S'a'
序列)

我的问题是更新不应该是这样的吗

w += alpha * (reward + discount * q_hat_next - q_hat) * q_hat_grad

修改后的更新背后的直觉是什么?

我认为你是正确的。我还希望更新包含TD错误术语,应该是
奖励+折扣*q_hat\u next-q_hat

作为参考,以下是实施:

if done: # (terminal state reached)
   w += alpha*(reward - q_hat) * q_hat_grad
   break
else:
   next_action = policy(env, w, next_state, epsilon)
   q_hat_next = approx(w, next_state, next_action)
   w += alpha*(reward - discount*q_hat_next)*q_hat_grad
   state = next_state
这是来自(第171页)的伪代码:

由于实现是TD(0),
n
是1。然后可以简化伪代码中的更新:

w <- w + a[G - v(S_t,w)] * dv(S_t,w)
或者使用原始代码示例中的变量名:

w += alpha * (reward + discount * q_hat_next - q_hat) * q_hat_grad
我得到了和你一样的更新公式。看起来像是非终端状态更新中的错误

只有终端案例(如果
done
为true)应该是正确的,因为根据定义,然后
q_hat_next
始终为0,因为插曲结束,无法获得更多奖励

w += alpha * (reward + discount * q_hat_next - q_hat) * q_hat_grad