【强化学习基础篇-1】Q-Learning

【强化学习基础篇-1】Q-Learning

在本篇博客中,我们将介绍强化学习中的经典算法Q-Learning。Q-Learning是一种基于值函数的强化学习算法,用于估计在某一状态下采取某一动作的预期累积奖励。Q-Learning通过不断更新Q值函数,逐步改进策略,最终收敛到最优Q值函数。
在Q-Learning算法中,Q值函数用于估计在某一状态下采取某一动作的预期累积奖励。Q-Learning公式通过对当前Q值(Q现实)和目标Q值(Q估计)的差异进行更新,逐步改进策略,最终收敛到最优Q值函数。

目录

Q-Learning公式

Q-Learning的更新公式为:
Q ( s t , a t ) ← Q ( s t , a t ) + α ( r t + 1 + γ max ⁡ a Q ( s t + 1 , a ) − Q ( s t , a t ) ) Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left( r_{t+1} + \gamma \max_{a} Q(s_{t+1}, a) - Q(s_t, a_t) \right) Q(st,at)Q(st,at)+α(rt+1+γamaxQ(st+1,a)Q(st,at))

公式分解

Q现实

Q现实代表当前已知的信息,是当前状态和动作的Q值:
Q ( s t , a t ) Q(s_t, a_t) Q(st,at)

  • ( Q ( s t , a t ) ) (Q(s_t, a_t)) (Q(st,at)):当前状态 ( s t ) (s_t) (st) 采取动作 ( a t ) (a_t) (at) 的Q值。它表示在状态 ( s t ) (s_t) (st) 选择动作 ( a t ) (a_t) (at) 后预期的累积奖励。

Q估计

Q估计代表期望的未来信息,是根据下一个状态的Q值和获得的奖励来估计的目标值:
r t + 1 + γ max ⁡ a Q ( s t + 1 , a ) r_{t+1} + \gamma \max_{a} Q(s_{t+1}, a) rt+1+γamaxQ(st+1,a)

  • ( r t + 1 ) (r_{t+1}) (rt+1):在状态 ( s t ) (s_t) (st) 采取动作 ( a t ) (a_t) (at) 后获得的即时奖励。
  • ( γ ) (\gamma) (γ):折扣因子,衡量未来奖励的重要性。
  • max ⁡ a Q ( s t + 1 , a ) \max_{a} Q(s_{t+1}, a) maxaQ(st+1,a) :在下一个状态 ( s t + 1 ) (s_{t+1}) (st+1) 选择最优动作的Q值。这部分表示从下一个状态开始,选择最优动作能获得的最大预期奖励。

更新过程解释

Q-Learning的更新过程可以理解为调整当前Q值 Q ( s t , a t ) Q(s_t, a_t) Q(st,at) 向目标Q值 ( r t + 1 + γ max ⁡ a Q ( s t + 1 , a ) (r_{t+1} + \gamma \max_{a} Q(s_{t+1}, a) (rt+1+γmaxaQ(st+1,a) 方向靠近。通过不断地调整Q值,最终使得Q值函数能够准确估计各个状态-动作对的预期累积奖励。

  • 学习率 ( α ) (\alpha) (α)
    学习率决定了每次更新中有多少信息被用于更新Q值。较大的学习率意味着Q值更新更快,较小的学习率则意味着更新更慢,更平稳。

  • 目标Q值(Q估计)和当前Q值(Q现实)之间的差异
    目标Q值代表期望的累积奖励,当前Q值代表现有估计的累积奖励。两者之间的差异就是更新的依据,通过不断减少这个差异,Q值函数逐步收敛到真实的最优值。

举例:3x3格子中的寻宝

为了更好地理解Q-Learning,我们可以用一个简单的3x3格子寻找宝藏的例子来说明Q现实和Q估计的概念。

环境描述
  • 这是一个3x3的网格环境。
  • 起始位置为左上角 (0,0)。
  • 宝藏的位置在右下角 (2,2)。
  • 每一步都有四个可能的动作:上、下、左、右。
  • 目标是找到宝藏,找到宝藏时获得奖励 +10,其他步骤奖励为 -1。
Q-Learning的更新公式

Q ( s t , a t ) ← Q ( s t , a t ) + α ( r t + 1 + γ max ⁡ a Q ( s t + 1 , a ) − Q ( s t , a t ) ) Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left( r_{t+1} + \gamma \max_{a} Q(s_{t+1}, a) - Q(s_t, a_t) \right) Q(st,at)Q(st,at)+α(rt+1+γamaxQ(st+1,a)Q(st,at))

示例

假设在一个状态 (s_t = (0,0)),采取动作 a t = 右 a_t = \text{右} at=到达状态 s t + 1 = ( 0 , 1 ) s_{t+1} = (0,1) st+1=(0,1)然后我们通过Q-Learning公式来更新Q值。

初始Q值

假设初始时所有的Q值都为0:
Q ( ( 0 , 0 ) , 右 ) = 0 Q((0,0), \text{右}) = 0 Q((0,0),)=0

执行动作

从状态 (0,0) 向右移动到 (0,1),立即奖励 r t + 1 = − 1 r_{t+1} = -1 rt+1=1

计算目标Q值(Q估计)

假设在状态 (0,1) 时的Q值如下:
Q ( ( 0 , 1 ) , 上 ) = 0 Q ( ( 0 , 1 ) , 下 ) = 0 Q ( ( 0 , 1 ) , 左 ) = 0 Q ( ( 0 , 1 ) , 右 ) = 0 \begin{aligned} & Q((0,1), \text{上}) = 0 \\ & Q((0,1), \text{下}) = 0 \\ & Q((0,1), \text{左}) = 0 \\ & Q((0,1), \text{右}) = 0 \\ \end{aligned} Q((0,1),)=0Q((0,1),)=0Q((0,1),)=0Q((0,1),)=0
那么在状态 (0,1) 选择最优动作(即最大的Q值)为:
max ⁡ a Q ( ( 0 , 1 ) , a ) = 0 \max_{a} Q((0,1), a) = 0 amaxQ((0,1),a)=0

目标Q值(Q估计):
r t + 1 + γ max ⁡ a Q ( ( 0 , 1 ) , a ) = − 1 + 0.9 × 0 = − 1 r_{t+1} + \gamma \max_{a} Q((0,1), a) = -1 + 0.9 \times 0 = -1 rt+1+γamaxQ((0,1),a)=1+0.9×0=1

更新Q值(Q现实)

设定学习率 (\alpha = 0.1),我们更新Q值:

Q ( ( 0 , 0 ) , 右 ) ← 0 + 0.1 × ( − 1 − 0 ) = − 0.1 Q((0,0), \text{右}) \leftarrow 0 + 0.1 \times (-1 - 0) = -0.1 Q((0,0),)0+0.1×(10)=0.1

核心概念

  • Q现实:当前Q值 ( Q ( s t , a t ) ) (Q(s_t, a_t)) (Q(st,at)),即执行某动作前已有的估计值。
  • Q估计:目标Q值 ( r t + 1 + γ max ⁡ a Q ( s t + 1 , a ) ) (r_{t+1} + \gamma \max_{a} Q(s_{t+1}, a)) (rt+1+γmaxaQ(st+1,a)),即根据未来信息调整后的预期值。

通过不断更新Q值,我们最终能够找到从起始位置到达宝藏的最优路径。在这个过程中,我们通过将当前Q值(Q现实)逐步向目标Q值(Q估计)靠近来改进我们的估计,从而找到最优策略。

可视化代码举例

通过将上述例子转化为具体代码,可以实现可视化的Q值表格,最终迭代结果如下:
Q值表格

可以看到通过迭代最终给出了一条价值最高的路径。

需要代码可以私信我。

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值