Machine learning Cart极点的SARSA值逼近
我有一个关于萨尔萨法的问题 在输入单元格142中,我看到此修改的更新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 修改后的更新背后的直觉是
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