强化学习-学习笔记8 | Q-learning
上一篇笔记认识了Sarsa,可以用来训练动作价值函数;本篇来学习Q-Learning,这是另一种 TD 算法,用来学习 最优动作价值函数 Q-star,这就是之前价值学习中用来训练 DQN 的算法。
8. Q-learning
承接上一篇的疑惑,对比一下两个算法。
8.1 Sarsa VS Q-Learning
这两个都是 TD 算法,但是解决的问题不同。
Sarsa
- Sarsa 训练动作价值函数 ;
- TD target:
- 价值网络是 的函数近似,Actor-Critic 方法中,用 Sarsa 更新价值网络(Critic)
Q-Learning
-
Q-learning 是训练最优动作价值函数
-
TD target :,对 Q 求最大化
注意这里就是区别。
-
用Q-learning 训练DQN
个人总结区别在于Sarsa动作是随机采样的,而Q-learning是取期望最大值
下面推导 Q-Learning 算法。
8.2 Derive TD target
注意Q-learning 和 Sarsa 的 TD target 有区别。
之前 Sarsa 证明了这个等式:
等式的意思是, 可以写成 奖励 以及 对下一时刻做出的估计;
等式两端都有 Q,并且对于所有的 都成立。
所以把最优策略记作 ,上述公式对其也成立,有:
通常把 记作 ,都可以表示最优动作价值函数,于是便得到:
处理右侧 期望中的 ,将其写成最大化形式:
-
因为 ,A一定是最大化 的那个动作
解释:
给定状态,Q* 会给所有动作打分,agent 会执行分值最高的动作。
-
因此 , 是最优动作,可以最大化 ;
-
带入期望得到:
左边是 t 时刻的预测,等于右边的期望,期望中有最大化;期望不好求,用蒙特卡洛近似。用 代替 ;
-
做蒙特卡洛近似:称为TD target 。
此处 有一部分真实的观测,所以比左侧 Q-star 完全的猜测要靠谱,所以尽量要让左侧 Q-star 接近 。
8.3 算法过程
a. 表格形式
- 观测一个transition
- 用 计算 TD target:
- Q-star 就是下图这样的表格:
找到状态 对应的行,找出最大元素,就是 关于 a 的最大值。
- 计算 TD error:
- 更新,更新位置,让Q-star 值更接近
b. DQN形式
DQN 近似 ,输入是当前状态 s,输出是对所有动作的打分;
接下来选择最大化价值的动作 ,让 agent 执行 ;用收集到的 transitions 学习训练参数 w,让DQN 的打分 q 更准确;
用 Q-learning 训练DQN的过程:
- 观测一个transition
- TD target:
- TD error:
- 梯度下降,更新参数:
x. 参考教程
本文作者:climerecho
本文链接:https://www.cnblogs.com/Roboduster/p/16455054.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步