天天看点

强化学习笔记1强化学习笔记1

强化学习笔记1

本文为强化学习的一个笔记,所用书为强化学习第二版(Sutton与Barto),课程为David Silver的课程,链接如下

强化学习

下面内容如有错误欢迎指正

强化学习是什么

强化学习是机器学习的一种,强化学习大概可以分成有监督学习,无监督学习,以及强化学习三类。

  • 监督学习: 通过建立一个模型,其输入的每一个样本都是带有标签的,通过模型对数据集进行学习,是的该模型对未知的输入有“贴标签”的能力。
  • 无监督学习: 同样是建立模型,但是其输入的样本不带有“标签”,只会对其进行分类。
  • 强化学习:强化学习与上面两类不太一样,上面两类都是倾向于找规律然后对数据进行分类,而强化学习则是以实现“利益最大化”为目标,通过对收益信号的最大化来实现目标。

    举个具体的例子,让机器对宠物图片进行学习,在监督学习中,会为每一个样本贴上标签,“猫”,“狗”,“兔子”等等,模型被训练好之后,当一张新的图片被输入,我们的模型就会知道这张图片到底是“猫”,“狗”,还是“兔子”。

而在无监督学习中,当模型被训练好之后,它不知道什么是猫,什么是狗,但是它的训练会让它明白所有的猫是一类宠物A,所有的狗是一类宠物B,当一张新的图片输入进来之后,可以通过模型来判断它到底应该归结为哪一类。

对于强化学习来说,是以实现奖励的最大化为目的,而这个“奖励”在不同的场景下有着不同的定义,在直升机特技飞行中,飞机做出高难度的特技动作为目标,所以做出的动作难度越大,得分越高,在投资管理中,目标是获得更高的回报,回报率越高,得到的“奖励”就越多。

强化学习的基本要素

1.奖励信号

强化学习是以最大化收益为目标,而受益的大小则是用奖励信号来表示,一般来说,奖励信号值越高,获得的奖励越多,代表我们在最大化收益这方面做的越好。

举几个例子:

  • 直升机做特技飞行动作:如果按照预期做出了各种特技动作,那么奖励信号值就会增加,如果撞上了障碍物,奖励信号的值就会下跌。
  • 投资管理:赚了钱,奖励信号值增加,赚得越多,奖励信号值就越高,赔了钱的话就刚好相反。
  • 发电站控制:发电量增加,奖励信号值就增加,发电量下降或者出现安全隐患,奖励信号值就下降。

2.顺序决策

在强化学习中,我们的目标是获得最大的奖励,而这个奖励不仅仅着眼于现在,更重要的是着眼于未来,在整个过程中能获得最多的奖励,有点类似于“贪心”和“动态规划”的区别,贪心只是着眼于当下,每一步只看这一步的利益,而动态规划则“高级”一些,从整体的利益上出发,可能当前一步所获得的利益不是最大的,但是它可能让后面的过程中获得更多的奖励,从而在整个过程中能实现利益的最大化。

  • 给直升机加油:可能当前没有做出什么特技动作,在当前时刻没获得什么奖励,但是让直升机拥有了更强的续航能力,使得其在后续的过程中更方便的做出各种特技动作,获得更大的奖励
  • 长线投资:选择的这笔投资可能当前并没收获什么利益,但是在长线方面,它能获得更大的奖励

3.智能体和环境

在强化学习中,可以把整个环境抽象成两个物体:智能体和环境,同时有三个行为:观察,奖励,和动作。

图示如下:

强化学习笔记1强化学习笔记1

在上图中可以看到观察 O t O_t Ot​,动作 A t A_t At​,以及奖励 R t R_t Rt​,下标t代表t时刻。

从图中可以看到它们之间的行为关系。

对于智能体来说:

  • 智能体对环境做出动作,发出动作信号
  • 智能体观察环境,根据环境的状态获得观察信号
  • 智能体对环境做出动作后,环境根据工作给予智能体反馈,即奖励信号

对于环境来说:

  • 环境接收智能体发出来的动作信号
  • 环境在接收动作信号之后可能自身状态会发生改变,会把当前的状态一观察信号的方式发送给智能体
  • 环境在接收动作信号之后会对相应的动作发出相应的奖励信号

4.历史和状态

历史

在增强学习的过程中,动作 A A A,观察 O O O以及奖励 R R R在每个时刻都会出现,那么把某个时刻以及之前的所有动作 A A A,观察 O O O和奖励 R R R记录下来的序列就叫做历史 H H H,用公式表示如下:

H t = A 1 , O 1 , R 1 , . . . , A t , O t , R t H_t=A_1,O_1,R_1,...,A_t,O_t,R_t Ht​=A1​,O1​,R1​,...,At​,Ot​,Rt​

在历史中可能有着一些规律,智能体通过在整个过程中对历史的学习掌握一定的规律,而这个规律则会成为智能体接下来做决定的依据。而环境给智能体什么样的观察信号以及奖励信号也由历史所蕴含的规律决定。

状态

状态分为环境状态,智能体状态和信息状态

  • 环境状态:是用一些数字来对环境进行表示,这些数字用来表达环境的一些信息,比如对直升机飞行来说,飞机在空中,大气有关的信息就是环境状态,如风速,湿度,温度等等,这些信息都可以用数字表示,来表示环境的状态,表示环境状态的这些数字中,有的对智能体可见,有的不可见,有一些有用,也有很多没用的。用途是给智能体提供观察信号和奖励信号,比如说直升机飞的很好,体现在环境状态上要给它加分。
  • 智能体状态:也是一些用来表示信息的数字,这些数字一般用来表示智能体内部的信息,一般被智能体用来决定下一个动作,比如直升机没有油了,那么就要先去加油。它是强化学习所要使用的信息(虽然怎么使用暂时并不清楚),可以表示为历史的函数,即它是由历史决定的,历史中的动作 A A A,观察 O O O与奖励 R R R改变了它

    S t a = f ( H t ) S_t^a=f(H_t) Sta​=f(Ht​)

  • 信息状态:包括历史中所有有用的信息的一个状态,又叫马尔可夫状态

马尔可夫状态表示如下,即t+1时刻的状态只与t时刻的状态有关,跟之前其他的其他都没关系

P [ S t + 1 ∣ S t ] = P [ S t + 1 ∣ S 1 , S 2 , . . . . S t ] P[S_{t+1}|S_t]=P[S_{t+1}|S_1,S_2,....S_t] P[St+1​∣St​]=P[St+1​∣S1​,S2​,....St​]

环境状态也是一种马尔科夫状态,拿直升机飞行的那个例子来说,直升机当前所要关注的环境只是当前的风速,湿度,温度等等,跟10分钟之前的这些信息并无太大关系。

接下来对环境的分类也还可以分为完全可观测环境与部分可观测环境

  • 完全可观测环境:智能体在这种状态下可以观测到全部的环境状态,此时环境状态,智能体状态与信息状态三者完全等价

    O t = S t a = S t e O_t=S^a_t=S^e_t Ot​=Sta​=Ste​

  • 部分可观测环境:智能体在这种情况下只能观测到环境的部分状态,例如一个牌手看不到其他人手里面的牌,一个带有摄像头的机器人只能看到摄像头能拍到的地方。在这种情况下,智能体的状态不能通过环境状态来进行表示,就需要想办法来表示智能体的状态。

课上给出了三种方法:

  1. 记住所有的历史。但这种方法需要存储的数据就比较多,方法简单,但可能不是很方便用
  2. 用概率进行推断。当前虽然不知道全部的状态,但总归是知道一些的,可以利用这些信息,将状态表示为当前已知状态的概率分布
  3. RNN。当前时刻个体的状态由当前时刻的观测以及前一时刻的状态决定

    S t a = σ ( S t − 1 a W s + O t W o ) S^a_t=\sigma(S^a_{t-1}W_s+O_tW_o) Sta​=σ(St−1a​Ws​+Ot​Wo​)

智能体的主要成分

  1. 策略:智能体的行为函数,具体表示为智能体应该做一些什么行为,是环境状态到智能体动作的一个映射,拿直升机飞行的例子来说,如果现在没有风,那就放心大胆的飞行,如果有风,那就稳一些。
  2. 价值函数:用来衡量当前行为/状态好坏的一个函数,输入状态/行为,输出一个标量数值,为对未来收益的预测,用来评价当前状态的好坏。
  3. 模型:个体对外部环境进行的推断,预测下一个状态与下一时刻的奖励,通常被用于做规划,不过它不是必需的

强化学习的分类

  1. 基于价值函数的:有价值函数,但是没有策略函数,策略函数由价值函数得到,策略就是让价值函数最大化
  2. 基于策略函数的:有策略函数,但是没有价值函数,价值函数由策略函数得到,策略直接决定价值
  3. 演员-评判家:既有价值函数,又有策略函数,二者相辅相承

而关于是否建立模型方面,又分为两大类

  1. 基于模型:智能体尝试建立模型,通过模型来对策略与价值函数进行更新
  2. 不基于模型:智能体不会尝试建立模型,只关注策略函数和价值函数,通过这二者来实现价值的最大化

继续阅读