Q-learning

一、介绍

Q-learning 算法本质上是在求解函数Q(s,a). 如下图,根据状态s和动作a, 得出在状态s下采取动作a会获得的未来的奖励,即Q(s,a)。 然后根据Q(s,a)的值,决定下一步动作该如何选择。

image.png

二、算法

  • Q-learning 算法中我们通过获得Q(s,a)函数来寻找在某个状态下的最好的动作,使得最终获得的累计奖励最大
  • 其Q(s,a)的计算方法是利用贝尔曼方程
  • 如下图是常见的两种形式:
    image.png
  • 它最简单的版本,算法可描述如下:
  1. 初始化状态 s
  2. 进入 episode 循环
  3. 基于状态s根据Q 或随机选择一个动作 a
  4. 执行动作a, 从环境获得 奖励r和下一个状态 s ′ s^\prime s
  5. 更新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+γmaxaQ(s,a)Q(s,a)]
  6. s = s ′ s = s^\prime s=s
  7. 若 episode未结束,回到 2

还有另一种形式的Q-learning, 它是基于 value function ($V^\pi $), 如下图所示

image.png

这种形式更多的用在 Actor-Critic 算法中,它表示一个状态 s, 在某个策略下,其 value function 是多少,即状态 s 在当前策略 π \pi π 下会获得多少未来的奖励。其V值的更新方式也是利用了贝尔曼方程。这里不做太多的讨论。

三、例子

下面举一个例子加深以下了解。
以下是一个迷宫, s 表示起始点,e表示终点, t表示陷阱。规则:每走一步,reward 减 1, 若进入陷阱, reward 减100, 若到达终点, reward 加 100.

用 Q-table 解决

Q-table 的关键就是要建立一张映射表,这张表是 状态-动作Q值的映射。如根据上面的问题,我们建立如下表格:

image.png

其中行表示状态(用坐标表示), 列表示动作, 表格的值就是 Q(s,a), 其实这个Q就表示 quality的意思。

具体过程:

  1. 初始化表格,一开始表格没有任何数据
  2. 初始化状态 s, 状态 s从起点开始
  3. 根据Q-table 查询状态 s 对应的 Q(s,a), 如果查不到,向表格插入新的数据,Q(s,a)可以初始化为0; 若能查找到Q(s,a),那么我们根据 e-greedy 算法,以一定的概率随机选择动作,或挑选最大的Q(s,a)值所对应的动作作为下一个动作。
  4. 执行动作a, 从环境获得 奖励r和下一个状态 s ′ s^\prime s
  5. 更新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+γmaxaQ(s,a)Q(s,a)]
  6. s = s ′ s = s^\prime s=s
  7. 若 episode未结束,回到 3

用 network 解决

假设我们的状态空间特别大,在这种情况下如果还坚持用 Q-table 来计算Q(s,a)的话,那么最终的Q-table对特别大,甚至计算机无法存储。为了解决这个问题,我们引入带参数的神经网络去近似Q(s,a)函数。

Selection_113.png

把原来的 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+γamaxQ(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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值