Q-learning 和 SARSA 的更新规则如下:
问学习:
沙萨:
我理解 SARSA 执行“on-policy”更新和 Q-learning 执行“off-policy”更新的理论。
目前我通过计算目标来执行 Q 学习:
target = reward + self.y * np.max(self.action_model.predict(state_prime))
在这里你可以看到我为状态素数选择了 Q 函数的最大值(即更新规则中由 maxQ 定义的贪婪选择)。如果我要进行 SARSA 更新并使用与选择操作时相同的 on-policy,例如 ϵ-greedy,我基本上会更改为:
if np.random.random() < self.eps:
target = reward + self.y * self.action_model.predict(state_prime)[random.randint(0,9)]
else:
target = reward + self.y * np.max(self.action_model.predict(state_prime))
所以有时它会根据我的 epsilon 贪婪策略选择一个随机的未来奖励?