一、介绍
Q-learning 算法本质上是在求解函数Q(s,a). 如下图,根据状态s和动作a, 得出在状态s下采取动作a会获得的未来的奖励,即Q(s,a)。 然后根据Q(s,a)的值,决定下一步动作该如何选择。
二、算法
- Q-learning 算法中我们通过获得Q(s,a)函数来寻找在某个状态下的最好的动作,使得最终获得的累计奖励最大
- 其Q(s,a)的计算方法是利用贝尔曼方程
- 如下图是常见的两种形式:
- 它最简单的版本,算法可描述如下:
- 初始化状态 s
- 进入 episode 循环
- 基于状态s根据Q 或随机选择一个动作 a
- 执行动作a, 从环境获得 奖励r和下一个状态 s ′ s^\prime s′
- 更新Q值: Q ( s , a ) = Q ( s , a ) + α [ r + γ max a ′ Q ( s ′ , a ′ ) − Q ( s , a ) ] Q(s,a)= Q(s,a) + \alpha [r + \gamma \max_{a^\prime} Q(s^\prime, a^\prime) - Q(s,a)] Q(s,a)=Q(s,a)+α[r+γmaxa′Q(s′,a′)−Q(s,a)]
- s = s ′ s = s^\prime s=s′
- 若 episode未结束,回到 2
还有另一种形式的Q-learning, 它是基于 value function ($V^\pi $), 如下图所示
这种形式更多的用在 Actor-Critic 算法中,它表示一个状态 s, 在某个策略下,其 value function 是多少,即状态 s 在当前策略 π \pi π 下会获得多少未来的奖励。其V值的更新方式也是利用了贝尔曼方程。这里不做太多的讨论。
三、例子
下面举一个例子加深以下了解。
以下是一个迷宫, s 表示起始点,e表示终点, t表示陷阱。规则:每走一步,reward 减 1, 若进入陷阱, reward 减100, 若到达终点, reward 加 100.
用 Q-table 解决
Q-table 的关键就是要建立一张映射表,这张表是 状态-动作 到 Q值的映射。如根据上面的问题,我们建立如下表格:
其中行表示状态(用坐标表示), 列表示动作, 表格的值就是 Q(s,a), 其实这个Q就表示 quality的意思。
具体过程:
- 初始化表格,一开始表格没有任何数据
- 初始化状态 s, 状态 s从起点开始
- 根据Q-table 查询状态 s 对应的 Q(s,a), 如果查不到,向表格插入新的数据,Q(s,a)可以初始化为0; 若能查找到Q(s,a),那么我们根据 e-greedy 算法,以一定的概率随机选择动作,或挑选最大的Q(s,a)值所对应的动作作为下一个动作。
- 执行动作a, 从环境获得 奖励r和下一个状态 s ′ s^\prime s′
- 更新Q值: Q ( s , a ) = Q ( s , a ) + α [ r + γ max a ′ Q ( s ′ , a ′ ) − Q ( s , a ) ] Q(s,a)= Q(s,a) + \alpha [r + \gamma \max_{a^\prime} Q(s^\prime, a^\prime) - Q(s,a)] Q(s,a)=Q(s,a)+α[r+γmaxa′Q(s′,a′)−Q(s,a)]
- s = s ′ s = s^\prime s=s′
- 若 episode未结束,回到 3
用 network 解决
假设我们的状态空间特别大,在这种情况下如果还坚持用 Q-table 来计算Q(s,a)的话,那么最终的Q-table对特别大,甚至计算机无法存储。为了解决这个问题,我们引入带参数的神经网络去近似Q(s,a)函数。
把原来的 Q-table 替换成 神经网络后,其算法并没有太大的变化。需要注意的是, 网络的Loss 函数是
L
=
r
+
γ
max
a
′
Q
(
s
′
,
a
′
)
−
Q
(
s
,
a
)
L = r + \gamma \max_{a^\prime} Q(s^\prime, a^\prime) - Q(s,a)
L=r+γa′maxQ(s′,a′)−Q(s,a)
引用
https://jizhi.im/blog/post/intro_q_learning
https://blog.csdn.net/Young_Gy/article/details/73485518
http://mnemstudio.org/path-finding-q-learning-tutorial.htm
https://morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/2-2-A-q-learning/
https://www.bilibili.com/video/av24724071/?p=3