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

2020-07-21 15:35:33 浏览数 (1)

强化学习是什么?最简单的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算法的小案例。

0 人点赞