1. 强化学习概述( Introduction to Reinforcement Learning)

1. 强化学习概述( Introduction to Reinforcement Learning)

本系列文章来自David Silver 的网络公开课。若有问题,欢迎交流~
link: Teaching
原创内容,转载请联系作者。

Reinforcement Learning 与 其他的 Machine Learning 的区别

  • 非监督的:我们通常只得到reward signal。每次系统的action只能得到代表这次行为的好坏的标量,比如是10 points,但是我们不知道他的最好的值是多少
  • 延迟性:得到的结果很可能延迟于我们做出决策一段时间,有些糟糕的影响并不完全因为当前的决策错误导致的,可能由于前面某一个步骤造成了一个不可逆的错误
  • 每个样本非独立同分布的:我们得到的决策过程,我们获取的每一次信息都不是独立同分布(i.i.d)的,他是一个有先后顺序的序列,我们并不是简单的将一堆的训练集放进去就行了。
  • action对之后的结果能够产生影响:每一次的action都会对environment产生影响,从而导致下一次得到完全不同的输入样本。比如,作为一个机器人,这个步骤我们继续前进和向左转,将导致我们接下来收集到完全不一样的数据

Reinforcement Learning 的通用模型

我们现在需要建立一个统一的强化学习的框架,不同的具体的学习任务,只是这套框架体系中的一个具体实例。下面,我们将介绍这个框架的几个组成部分

reward

  • 我们定义了“奖励”,这是一个标量,他代表了一个反馈的信号,一般用来表示,代表时刻的的action的表现如何
  • 我们的目标是得到累计的reward的最大值
  • reward hypothesis:reinforcement learning 在reward方面都是基于这个假设的,也就是说,我们认为我们的目标都能够被描述为reward的累计的最大值
  • 如果我们的任务是基于时间的目标问题,比如我们希望让任务在最小时间完成,这样,我们可以再每次执行完一个action之后,设定一个"-1"的反馈,这样的话,这样我们的优化目标就能够最小化任务执行的时间

Goal

  • 对于任何的任务,我们的统一目标是:得到reward的累计的最大值
  • 有时候我们的agent需要提前做思考,不能只看到当前的reward,要在当前状态就考虑如何使得我的未来得到的reward最大化
  • 基于上面的特点,这就意味着,我们可能需要放弃眼前的利益以获得累计的更大的奖励。
  • 比如说,我们在直升机游戏中,会选择停下来补充燃料,然后继续飞行,短期看降低了飞行的距离,但是长期看,他能够在坠前飞的更久

Agent 和 Environment

  • 这个大脑,代表的就是agent所做的事情,他以observation和reward为输入,经过算法,得到对应的action,采取对应的行动。
  • 其中,observation是外部环境产生的观察的情况,要注意的是,我们不一定能看到environment的全部内容
  • 每一个action产生之后,就能得到对应的我们对于environment的一个observation,并且, 给agent对应的reward。

History 和 State 的关系

  • history是一个action、observation、reward的序列:

H_t=A_1,O_1,R_1,...,A_t,O_t,R_t

  • history能够决定action接下来采取什么行动;实际上,agent做的就是从history到action的映射
  • 对于环境而言,history和产生的action交给environment,从而得到对应的observation和reward
  • State:是history的一个总结,用来决定下一步的action是什么,实际上,他是一个关于history的函数,我们可以这样表示:

S_t=f(H_t), A_t=h(S_t)

  • State相对于hisory而言最大的好处在于他的信息量很少,实际上,我们也不需要得到所有的history来得到下一步的action(在之后的马尔科夫状态中会提到原因)。

三种不同的State

Environment State

  • 对于一个环境而言,他有内部的一个变换规则,他可以根据agent的action产生对应的变换。第t时刻的环境的状态 S^e_t ,也就是对环境当前的信息的一个总结,他可能是一段0101的数字序列,用于产生对应的observation和reward
  • 我们不能得到environment的全部信息,事实上我们也不需要获得environment的全部信息,就像我们在判断接下来应该往哪走的时候,不需要得到前面路面的原子结构一样
  • 所以说,agent不直接依赖于environment state,agent根据的是environment state产生的observation和reward来得到对应的输出
  • environment state是一种内部状态,他未必是可见的,还是前面的例子,你不能根据肉眼看到路面的原子结构

Agent State

environment state 没有直接告诉我们构建算法的任何有效信息,我们也并不能很好的看到他。而agent state S^a_t ,就直接用于我们的算法构建。

  • Agent 是agent 的内部状态表征。他直接用于做出action的决策
  • 他是关于history的一个函数

Information State

Information State 由被称作Markov state,他包含了history中所有有用的信息,其定义如下:

如果 是Markov State,当且仅当:
P[S_{t+1}| S_t]=P[S_{t+1}|S_1,...,S_t]

他的重要意义是,如果一个状态是Markov State,那么,我们就能保证 S_t 保留了我们做出正确决策所需要的全部有用信息,换句话说,有了 S_t ,我们就可以将 S_1,..S_{t-1} 全部丢掉。

举个例子,当我们正在训练一个直升机让他去做飞行时,你不需要知道他10min之前的速度,方向,位置等信息,这些信息对于你的决策没啥意义。

你要知道的知识他当前的位置状态,就足以做出正确的决策,这些信息组成的状态就是具有Markov 性质的状态。相反的,假设你现在不知道飞机的速度信息,那么这个状态就不是Markov的状态,你需要查看历史记录的其他状态,来确定当前的速度,这样,这个状态就不是markov的状态。

Observation和environment的关系

Fully Observable Environments

  • 在完全可观察环境下,agent能够直接观察到environment state,也就是说:

O_t=S^a_t=S^e_t

  • 这类问题被称为MDP问题,Markov decision process

Partially Observable Environments

  • 在部分可观察环境中,Observation state 不等于 environment state,我们只能看到部分信息,或者只能看到一些现象,比如在扑克游戏中,我们只能看到公开的牌面,看不到其他人隐藏的牌
  • 这个为题被称为POMDP问题:partially observable Markov decision preocess
  • 对于这个问题,有几种解决方案:
    • 记住所有的历史状态: S^a_t=H_t
    • 使用贝叶斯概率,我们可以创建一个Beliefs, S^a_t=(P[S^e_t=s^1],...,P[S^e_t=s^n]) ,这个概率状态的向量组成当前的状态,所以我们需要保存所有状态的概率值
    • 使用递归神经网络: S^a_t=\sigma(S^a_{t-1}W_s+O_tW_o) ,将之前的状态 S^a_{t-1}W_s 进行线性组合,再加上最近的一次观察值的线性组合,带入非线性函数 \sigma ,得到新的状态

Agent 的内部组成

Agent包括下面三个部分中的一个或者多个组成,分别是:

  • Policy:他是一个行为函数,以状态为输入,以动作,或者各个动作的执行概率为输出
  • Value function:他代表的是当前环境某种状态或者当前状态的某种行动的价值是多少。 用来评估某个状态或者行动的好坏(value function 有两种情况:一种是基于状态的评价,一种是状态下的动作的评价)
  • Model:用来预测环境的变化,它相当于agent“脑补”的一个环境。

我们将用下面这个迷宫的例子来解释这个问题:

在迷宫的例子中,我们的目标是用最短的路径达到终点。Reward,Actions,States如图所示

\

Policy(Deterministic or Stochastic)

就如前面所说,Policy以状态为输入,以决策为输出,他有具体两种表现形式:

  • Deterministic policy:每一种状态有一种确定的决策, a=\pi(s)
  • Stochastic policy:每一种状态,我们给出了他是某种决策的概率: \pi(a|s)=P[A=a|S=s]
对于Deterministic policy而言,我们用箭头表示每一个状态的输出,他的输出是一个action。而对于Stochastic policy而言,他的输出则是一个状态发生的概率。

Value Function

  • Value function 当你需要选择 S_1S_2 ,他们分别对应动作 A_1 , A_2 ,我们要如何进行选择?就根据两个State未来的奖励的期望,我们选择奖励期望最大进行选择,这个未来的奖励的期望,就是他的价值。这是一个关于状态的函数(也可能是关于状态和动作的函数,那会儿,我们叫他Action-Value function,之后会讲到)
  • 这是一个value function的例子:

v_\pi(s)=E_\pi[R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3}+...|S_t=s]

其中是折扣因子,用来表达我们预测的步长,越远的step的reward就越不重要

  • 我们通过不同的Action得到的状态经过value function之后,就可以得到reward的期望值,通过比较不同的value,就可以得到最大的value,便可以得到我们的policy


在迷宫中,我们在得到每一个状态的value,在每个状态过程中,通过评估此时action所到达的状态的最大值,来确定我们的policy

Model

  • Model用于预测环境变化,以此来确定下一步我们的行动应该是什么。
  • Model能够预测系统的下一个状态是什么,也可以预测系统下一个状态所能得到的奖励是什么 ,具体而言,有两个组成部分,第一,预测下一个状态的概率 :

P^a_{ss^{'}}=P[S_{t+1}=s^{'}|S_t=s,A_t=a]

也可以预测的下一次的奖励的期望:

R^a_s=E[R_{t+1}|S_t=s,A_t=a]

Model对环境的动态特性(Dynamics)进行建模,判断某一个 S_t 在执行某个具体动作时将会产生什么样的 S_{t+1}

Model 只是对环境建模,有没有Model对应我们的Policy 和 value function 的评估方法会不一样

Agent的分类

根据Policy和Value Function的有无,可以将Agent分成三类:

  • Value Based:

我们使用Value function 来计算Policy,Policy是隐含的。不需要直接定义

  • Policy Based:

每一个状态都映射到一个action,直接使用这个action做决策

  • Actor Critic:

综合使用Policy 和 value function。使用Policy,同时保留每次所得到的value function

根据Model的有无,可以分为两类:

  • Model Free

我们不会创建一个动态模型,来预测直升飞机接下来会如何运动,只是直接根据value, function、policy来直接得出结论,不需要在意环境会如何改变

  • Model based

我们通过建立动态模型,来预测环境会根据我们的决策如何改变


Reinforcement Learning 遇到的问题

Learning 和Planning的问题

learning problem

在learning problem中,你的环境是未知的,你不能提前知道你的决策将对环境造成什么样的改变。

我们需要通过不断地与环境交互,从而得知我们的action造成什么样的改变

Planning Problem

我们的工作环境是已知的,我们被告知了整个环境的运作规则的详细信息。

代理能够计算出一个完美的模型,并且在不需要与环境进行任何交互的时候进行计算。

他能够不用实时的与环境交互就能知道未来环境,只需要知道当前的状态,就能够开始思考,来寻找最优解

在这个游戏中,规则是制定的,我们知道我们选择left之后环境将会产生什么变化。我们完全可以通过已知的变化规则,来在内部进行模拟整个决策过程,无需与环境交互。

Planning 问题可以使用动态规划来解决,在第三章我们会具体谈到这个方法

Exploration 和 Exploitation

在增强学习的是一个不断试错,然后减少错误率的过程。所以这里存在一个矛盾,当我们存在一个相对比较好的解决方案时,我们应该选择沿用我们的解决方案,还是选择尝试新的未知的路径,这个路径可能有很高的错误率,也可能有更好的解决方案。如何进行两者的平衡,就是Exploration和Exploitation的问题

  • Exploration(探索):倾向于探索环境中新的信息
  • Exploitation(开发):倾向于开发使用我们已经探测得到的最大reward

Prediction 和 Control

  • 预测(Prediction):给你一个policy,agent得到,这个policy能够得到多少reward。这是一个预估未来的过程
  • 控制(Control): 确定众多决策中,哪一个决策能够得到最多的奖励。

要强调的是,这两者的区别就在于,预测问题是给定一个policy,我们要确定他的value function是多少。而控制问题,是在没有policy的前提下,我们要确定最优的value function以及对应的决策方案。

实际上,这两者是递进的关系,在增强学习中,我们通过解决预测问题,进而解决控制问题。

下面用例子说明:

首先是预测问题:在下面的方格中,我们规定从A->A',我们将得到+10的奖励,而B->B'可以得到+5的反馈,而其它步骤则是反馈-1。现在,我们给定一个policy:在任何state中,他的行为模式都是随机的,也就是上下左右的概率各25%,那么,预测问题要做的就是,在这种决策模式下,我们的value function是什么,也就是右图所示:

接着是控制问题:在控制问题中,我们的问题背景和上面一模一样,唯一的区别就是,我们不再限制policy,也就是说行为模式是未知的,我们要自己确定,所以我们通过解决控制问题,求得每一个state的最优的value function,如图b所示,也得到了最优的policy,如图c所示:

编辑于 2019-04-21

文章被以下专栏收录