Q-Learning(强化学习)|机器学习

强化学习

什么是强化学习?

我们在之前接触过了监督学习和无监督学习,强化学习可以看作是不同于二者的另一类算法,强化学习让计算机从什么都不懂的时刻开始,通过不断地尝试,从错误中学习,找到一种规律,能够掌握达到目的的方法。

强化学习的思想就类似于我们去训练一只狗,一开始它听不懂任何我们下达的指示,但是我们可以在每次说出指令并且它做出正确动作的时候,都给它一定的奖励,否则没有奖励,让它知道对错,最终每次都能够直接作出可以得到奖励的动作(正确的反应)。

与训练动物不同的是,我们所要训练的是计算机并不是一个活体,但是我们要知道电脑也是“脑”我们总会有方法来找到训练计算机的方式。

强化学习的核心

根据我们上面的介绍,很容易可以知道强化学习的核心就在于通过“行为”得到“奖励”,所以我们需要一个裁判,对计算机的行为进行打分。

这里与之前我们了解到的监督学习不同之处在于,监督学习中,我们事先知道“行为”以及对应的“奖励”是什么,但是强化学习中,要通过一次次在环境中的尝试, 获取这些“行为”和“奖励”, 然后再学习通过哪些“行为”能够对应哪些“奖励”, 通过学习到的这些规律,尽可能地选择带来高分的“行为”。

Q-Learning

Q-Learning的决策

Q-Learning是一种通过表格来学习的强化学习算法

先举一个小例子:

假设小明处于写作业的状态,并且曾经没有过没写完作业就打游戏的情况。现在小明有两个选择(1、继续写作业,2、打游戏),由于之前没有尝试过没写完作业就打游戏的后果,所以小明选择打游戏、继续打游戏、接着打游戏。最终当父母回来发现小明没有写完作业就在打游戏,小明获得了一次接受男女混合双打的奖励。这给小明留下了深刻的印象,也明白了这不是一个好的做法。对于这个小的例子,我们的Q-Learning会怎么做呢?

首先我们定义两个内容:当前的状态S,可以进行的行为a,则有如下的表示形式:

  • 小明现在处于写作业的状态S1,有两个行为打游戏a1和写作业a2,在状态下两种行为对应的得分分别为-2和2,我们可以用Q(S1,a1)=-2和Q(S1,a2)=2来表示,对应的表格如下,我们可以把这个表格称为Q表。
a1a2
S1-22

很显然对于状态S1小明应该选择a2作为要选择的行为,然后状态更新为S2。

  • 当小明处于状态S2的时候,依然会有行为打游戏a1和写作业a2,和上面的思想一样,我们依旧要选择一个得分高的行为,对应的表格如下:
a1a2
S2-43

接着还会有状态S3、S4等等,每次我们都重复上面的过程,这就是Q-Learning算法的决策过程。

Q-Learning的更新

Q-Learning的更新策略使用了贝尔曼方程(也叫动态规划方程)作为方法来进行算法的更新,下面来了解一下贝尔曼方程:

Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + 1 + λ m a x a Q ( s t + 1 , a ) − Q ( s t , a t ) ] Q(s_t,a_t)\leftarrow Q(s_t,a_t)+\alpha[r_{t+1}+\lambda \underset{a}{max}Q(s_{t+1},a)-Q(s_t,a_t)] Q(st,at)Q(st,at)+α[rt+1+λamaxQ(st+1,a)Q(st,at)]

式子中的各项意义如下:

  • Q ( s t , a t ) Q(s_t,a_t) Q(st,at)表示当前状态的Q表
  • α \alpha α表示学习率
  • r t + 1 r_{t+1} rt+1表示下一次行为会得到的奖惩情况
  • λ \lambda λ表示一个贪婪系数,也就是说,当贪婪系数大的时候,算法更倾向于对远方的未来奖赏。

我们换一种更通俗的方式来理解一下这个方程:

新 Q ( s t , a t ) = 旧 Q ( s t , a t ) + α ∗ 差 距 新Q(s_t,a_t)=旧Q(s_t,a_t)+\alpha*差距 Q(st,at)=Q(st,at)+α

这里:差距=现实-估计

现实: r + λ m a x a Q ( s t + 1 ) r+\lambda \underset{a}{max}Q(s_{t+1}) r+λamaxQ(st+1)

估计: Q ( s t , a t ) Q(s_t,a_t) Q(st,at)

每次我们就是通过这样的方式来对Q-Learning算法中的Q表来进行更新。

Q-Learning算法步骤

  1. 初始化Q table为0
  2. 每一次遍历,随机选择一个状态作为起点
  3. 在当前状态 (S) 的所有可选的行动中选择一个 (a)
  4. 移动到下一个状态 (S’)
  5. 在新状态上选择 Q 值最大的那个行动 (a’)
  6. 用 Bellman Equation 更新 Q-table
  7. 将新状态设置为当前状态重复第 2~6 步
  8. 如果已经到了目标状态就结束

在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二哥不像程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值