前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习|Q-Learning(强化学习)

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

作者头像
数据山谷
发布2020-07-21 15:35:33
1.6K0
发布2020-07-21 15:35:33
举报
文章被收录于专栏:数据山谷数据山谷

强化学习是什么?最简单的Q-Learning算法是的原理是什么?

01

什么是强化学习?

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

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

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

02

强化学习的核心

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

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

03

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表。

a1

a2

S1

-2

2

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

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

a1

a2

S2

-4

3

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

Q-Learning的更新

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

式子中的各项意义如下:

Q-Learning算法步骤

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

本文先讲述Q-Learning算法的思想,下文让我们用Python实现一个关于Q-Learning算法的小案例。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据山谷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档