Q-learning算法介绍

Q-learning基本思想

Q-learning是一种value-based算法,它学习一个最优动作价值函数 Q ∗ ( s , a ) Q^*(s,a) Q(s,a),那么能够获得最优策略 π ∗ ( s ) = arg ⁡ max ⁡ a ∈ A Q ∗ ( s , a ) , s ∈ S \pi^*(s)=\arg\max\limits_{a\in A}{Q^*(s,a)}, s\in S π(s)=argaAmaxQ(s,a),sS

Q-learning算法的基本思想是,鼓励最优动作价值函数 Q ∗ ( s , a ) Q^*(s,a) Q(s,a)逐渐接近TD Target y t y_t yt,最优动作价值函数 Q ∗ ( s , a ) Q^*(s,a) Q(s,a)全部基于预测,而TD Target y t y_t yt部分基于观测,比最优动作价值函数 Q ∗ ( s , a ) Q^*(s,a) Q(s,a)更靠谱些

下面推导TD Target y t y_t yt
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
基于TD Target y t y_t yt学习最优动作价值函数 Q ∗ ( s , a ) Q^*(s,a) Q(s,a)有两种方法,一种是用表格学,也就是Q-Table,另一种是神经网络学,也就是DQN用到的方法。

接下来,分别介绍这两种方法。

Q-Table

Q-Table学习最优动作价值函数 Q ∗ ( s , a ) Q^*(s,a) Q(s,a)的基本思想是,建立一张Q表,更新Q值的方法是
Q ∗ ( s , a ) ⟵ Q ∗ ( s , a ) − α ⋅ ( Q ∗ ( s , a ) − y t ) Q^*(s,a) \longleftarrow Q^*(s,a)-\alpha\cdot(Q^*(s,a)-y_t) Q(s,a)Q(s,a)α(Q(s,a)yt)
y t y_t yt代入,进一步得到
Q ∗ ( s , a ) ⟵ Q ∗ ( s , a ) + α ⋅ ( r t + γ max ⁡ a ∈ A Q ∗ ( s , a ) − Q ∗ ( s , a ) ) Q^*(s,a) \longleftarrow Q^*(s,a)+\alpha\cdot(r_t+\gamma \max\limits_{a\in A}{Q^*(s,a)}-Q^*(s,a)) Q(s,a)Q(s,a)+α(rt+γaAmaxQ(s,a)Q(s,a))

其中 Q ∗ ( s , a ) − y t Q^*(s,a)-y_t Q(s,a)yt记作 δ t \delta_t δt,是TD error,这里没有将全部的TD error用于更新 Q ∗ ( s , a ) Q^*(s,a) Q(s,a),而是乘以了一个系数 α \alpha α,有点学习率的意味,是为了避免陷入局部最优解

更新式子中, r t + γ max ⁡ a ∈ A Q ∗ ( s , a ) r_t+\gamma \max\limits_{a\in A}{Q^*(s,a)} rt+γaAmaxQ(s,a)表示 Q ∗ ( s , a ) Q^*(s,a) Q(s,a)现实, Q ∗ ( s , a ) Q^*(s,a) Q(s,a)表示 Q ∗ ( s , a ) Q^*(s,a) Q(s,a)估计,这里很奇妙的地方是, Q ∗ ( s , a ) Q^*(s,a) Q(s,a)现实里边也包含了一个对下一步的最大估计,将对下一步衰减的最大估计和当前所获得的奖励当成这一步的现实,是不是非常迷人

DQN中的Q-learning

DQN的基本思想是,学习一个神经网络 Q ∗ ( s , a ; w ) Q^*(s,a; \textbf{w}) Q(s,a;w)近似最优动作价值函数 Q ∗ ( s , a ) Q^*(s,a) Q(s,a),示意图如下,神经网络的输入是状态 s s s,输出是对动作状态的打分
在这里插入图片描述
更新网络参数 w \textbf{w} w的方法如下:
在这里插入图片描述

Q&A

(1)on-policy和off-policy
Q-learning算法是一种off-policy,它产生动作的策略(动作策略)和评估改进的策略(目标策略)不是同一个策略
在这里插入图片描述

(2)TD/蒙特卡洛/动态规划
Q-learning采用了时间差分算法(Temporal-Difference,TD),它的基本思想是,在更新当前动作价值函数时,用到了下一个状态的动作价值函数

我关于TD/蒙特卡洛/动态规划的理解并不深刻,可以看看下面两篇参考资料:
https://zhuanlan.zhihu.com/p/25913410
https://www.jianshu.com/p/0bfeb09b7d5f

(3)有模型/无模型学习方法
Q-learning算法是一种无模型(model-free)学习方法,它无需提前获取完备的模型,主要是无法获取状态转移概率、奖励函数模型等,这更加符合现实应用,那么智能体不断与环境交互一定先验信息后再去探索学习

后记

强化学习涉及超多概念名词,它们很相似容易混淆,例如动作价值函数/策略价值函数、蒙特卡洛/动态规划、策略评估、on-policy/off-policy等等,让初学者眼花缭乱,我的建议是不要被名字表面蒙蔽,多刷几遍教学视频,脑子对以上名词留下印象而不必强求区分概念,然后动手写伪代码、画算法框图、写代码操作一种算法例子,例如Q-learning,动手实践后对区分概念印象更深。

推荐的教学视频:
(1)王树森讲解强化学习教程,它的特点是带有一点点数学理论推导,适合进阶
https://www.bilibili.com/video/BV12o4y197US/?p=9&vd_source=1565223f5f03f44f5674538ab582448c
(2)莫烦Python讲解的强化学习教程,很经典的人工智能教程了,有点科普,适合初学者了解强化学习的思想和概念
(3)李宏毅讲解的强化学习教程,很详细的数学理论,适合预期深入探索强化学习原理的学习者
(4)Sutton的强化学习著作,看过这部经典之后会觉得前面的教程有点快餐化的味道

我的建议是从适合初学者教程开始了解强化学习基本概念,培养一些兴趣之后逐步深入,一点点慢慢积累,遇到不理解的概念不要怕,间隔时间的反复看。

我在最初了解强化学习的时候就陷入了细节困境,琢磨不清楚怎么定义动作/价值/策略/状态/奖励,也困惑怎样设置初始值,然而这些不是强化学习的精髓和算法核心,我们可以默认理解了概念,看看后面怎么使用它们,初始化问题可以默认随机设置,看看后面有没有更好的设置方法,而把更多的注意力放在强化学习的算法迭代、设计思路上。

欢迎小伙伴们交流学习体会哟,欢迎小伙伴们批评指正、点赞、收藏、转发呐

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值