# 什么是强化学习 强化学习是一类算法,是让计算机实现从一开始完全随机的进行操作,通过不断地尝试,从错误中学习,最后找到规律,学会了达到目的的方法。 它主要包含四个元素,`Agent`、环境状态、行动、奖励,强化学习的目标就是获得最多的累计奖励。 让我们想象一下比赛现场: 计算机有一位虚拟的裁判,这个裁判他不会告诉你如何行动,如何做决定,他为你做的事只有给你的行为打分,最开始,计算机完全不知道该怎么做,行为完全是随机的,那计算机应该以什么形式学习这些现有的资源,或者说怎么样只从分数中学习到我应该怎样做决定呢?很简单,只需要记住那些高分,低分对应的行为,下次用同样的行为拿高分,并避免低分的行为。 计算机就是`Agent`,他试图通过采取行动来操纵环境,并且从一个状态转变到另一个状态,当他完成任务时给高分(奖励),但是当他没完成任务时,给低分(无奖励)。这也是强化学习的核心思想。
在强化学习中有很多算法,如果按类别划分可以划分成 `model-based`(基于模型)和`model-free`(不基于模型)两大类。 如果我们的`Agent`不理解环境,环境给了什么就是什么,我们就把这种方法叫做`model-free`,这里的`model`就是用模型来表示环境,理解环境就是学会了用一个模型来代表环境,所以这种就是 `model-based`方法。 `Model-free`的方法有很多, 像`Q learning`、`Sarsa`、`Policy Gradients`都是从环境中得到反馈然后从中学习。而 `model-based`只是多了一道程序,为真实世界建模,也可以说他们都是`model-free`的强化学习, 只是`Model-based`多出了一个虚拟环境,我们可以先在虚拟环境中尝试,如果没问题,再拿到现实环境中来。 `model-free`中, `Agent`只能按部就班,一步一步等待真实世界的反馈,再根据反馈采取下一步行动。而`model-based`,能通过想象来预判断接下来将要发生的所有情况,然后选择这些想象情况中最好的那种,并依据这种情况来采取下一步的策略,这也就是围棋场上`AlphaGo`能够超越人类的原因。 在这里主要介绍一下`model-free`中基于策略的一种算法,`Policy Gradient`。在介绍该算法之前,我们先要明确一下这个雅达利乒乓球游戏中的**环境状态**是游戏画面,**Agent**是我们操作的挡板,**奖励**是分数,**动作**是上或者下。