强化学习是什么?最简单的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算法步骤
- 初始化Q table为0
- 每一次遍历,随机选择一个状态作为起点
- 在当前状态 (S) 的所有可选的行动中选择一个 (a)
- 移动到下一个状态 (S’)
- 在新状态上选择 Q 值最大的那个行动 (a’)
- 用 Bellman Equation 更新 Q-table
- 将新状态设置为当前状态重复第 2~6 步
- 如果已经到了目标状态就结束
本文先讲述Q-Learning算法的思想,下文让我们用Python实现一个关于Q-Learning算法的小案例。