EasyRL 阅读笔记

强化学习概述

强化学习

强化学习中存在两个角色:agent 和 env。agent 根据从env获得的observation(or state)作出action,env根据action给agent相应的reward,同时action也会对环境作出改变。agent再从env获得observation(由于之前的action改变了环境,导致产生了和之前不同的observation)。。

强化学习的一个重要优势在于,它可以超越人类。对于有监督学习来说,由于数据是人类标注的,因此模型的上限就是人类的表现,模型不能超越人类。但是强化学习的数据没有人类的标注,因此它有超越人类表现的可能。

强化学习与监督学习

监督学习的假设:

  1. 输入数据之间不存在关联。它假设数据之间是iid的
  2. 数据是有标签的,学习器可以通过标签来修正自己的预测

强化学习不满足以上两个假设:

  1. 强化学习的输入是一系列的 action observation reward的序列。observation之间是存在关联的,上一个时刻的状态和下一个时刻的状态不是相互独立的。
  2. 强化学习的输入数据是没有标签的。因为大部分的情况下,我们没法给出一个action是否是正确的,它只会得到一个当前的reward。而且,许多情况下可能在一个trail(or episode,也就是一场游戏)之后才能获得reward(也就是延迟奖励),这就更难确定一个action是否是正确的。

总结:

  1. 强化学习输入为序列数据,监督学习输入为iid数据
  2. 强化学习学习器不会被告知正确的action是什么,它只能通过不断尝试来学习。监督学习有正确的标签。
  3. 强化学习在探索和利用的两种选择之间做权衡。探索是尝试新的action,利用是采用已知可以获得reward的action。
  4. 强化学习可能会得到延迟奖励。
  5. 强化学习采取的action会影响env,从而影响下一轮的observation

序列决策介绍

奖励

不同情况下的奖励:

  1. 对于下象棋这类的活动,过程中是无法给出reward的,只有在最终胜利或者失败时候,才有reward。
  2. 股票管理问题中,收益和损失定义了reward。
  3. 玩枪战游戏时候,分数是否上升定义了reward。

序列决策

强化学习中的智能体目的是采取一系列的动作来最大化reward。但在许多的场景下,reward是被延迟的。它的许多action是不会直接导致reward,但是可能从长期来讲可以导致更多reward。因此智能体需要在近期奖励和远期奖励之间做权衡。

整个历史可以被总结为:

Ht=O1,A1,R1,..,On,An,RnH_t = O_1, A_1, R_1,.., O_n, A_n, R_n

游戏的状态可以表示为历史的函数:St=f(Ht)S_t = f(H_t)

状态 vs 观测

状态是指环境本身的性质,它包含了世界的完整描述。

观测是状态的部分描述,可能遗漏信息。

一般来说,会采用向量,矩阵或更高阶的张量来表示状态和观测。

完全可观测: 我们认为环境有一个自身的状态更新函数Ste=fe(Ht)S_t^e = f^e(H_t), 智能体训练得到更新函数Sta=fa(Ht)S_t^a = f^a(H_t)。如果Sta=SteS_t^a = S_t^e 则表明智能体可以根据它的观测准确获得环境状态,则说明环境是完全可观测的。此时 Ot=Sta=SteO_t = S_t^a = S_t^e

部分可观测: 大部分情况下智能体不能观测到环境的全部状态。观测只是真实状态的部分表现。这种情况下的环境是部分可观测的。这种情况总是被建模成部分可观测的马尔可夫决策过程。(回顾比如HMM的方法,就是有真实的state - 隐变量 和observation - 观测变量)

部分可观测的马尔可夫决策过程可以用7元组表示:(S,A,T,R,Ω,O,γ)(S,A,T,R,\Omega,O,\gamma). S - 状态空间,为隐变量,A - 动作空间,T(s’|s, a) - 状态转移概率,R - 奖励函数,Ω(os,a)\Omega(o|s, a) - 观测概率,OO - 观测空间,γ\gamma - 折扣系数

动作空间

动作空间可以分为连续动作空间和离散动作空间。

离散动作空间:在围棋或者部分游戏中,action是可穷举的,它们的动作空间是离散的。

连续动作空间:在其他的环境中,action不可穷举,是连续的。这时action采用向量来表示。

强化学习智能体的组成成分和类型

强化学习的智能体可能由一个或者多个如下成分组成:

  1. 策略函数(policy function)- 用于采取action的函数
  2. 价值函数(value function)- 用于评估当前的state下后期会得到多少reward
  3. 模型 - 表现了智能体对于这个世界的理解

策略

策略函数的输入是当前状态,输出是采取的action

策略函数可以分为随机性策略和确定性策略。

随机性策略:π\pi 函数计算当前状态下各种action的概率。随机性策略会从概率分布中随机采样得到action

确定性策略:π\pi 函数的结果中取概率最大的action

通常,强化学习采用随机性策略。因为随机性策略可以引入随机性从而探索环境。并且它的动作存在随机性,在博弈时它的策略不容易被预测。

价值函数

价值函数可分两种:v函数和q函数

v函数:输入是当前state,输出是未来总的reward。

q函数:输入是当前state和当前action,输出是未来总的reward。

v函数和q函数都是用期望的形式定义的,一般的:

vπ(s)=Eπ[GtSt=s]=Eπ[k=0+γkRt+k+1St=s]qπ(s,a)=Eπ[GtSt=s,At=a]=Eπ[k=0+γkRt+k+1St=s,At=a]\begin{equation} \begin{aligned} &v_{\pi}(s) = E_{\pi}[G_t|S_t = s] = E_{\pi}[\sum\limits_{k = 0}^{+\infty} \gamma^k R_{t + k + 1}|S_t = s]\\ &q_{\pi}(s, a) = E_{\pi}[G_t|S_{t} = s, A_t = a] = E_{\pi}[\sum\limits_{k = 0}^{+\infty} \gamma^k R_{t + k + 1}|S_t = s, A_t = a] \end{aligned} \end{equation}

理解:

  • γkRt+k+1\gamma^k R_{t + k + 1} 表示越靠后的reward,贡献越小,因为我们总是希望尽可能快的得到奖励。

模型

模型描述了智能体对于env的理解,它从环境中学习,用于表示下一步的状态。

它由转移概率和奖励函数组成。

转移函数:当前的状态和当前的action转移到s‘的概率

Pssa=P[St+1=sSt=s,At=a]\mathcal{P}^a_{ss'} = P[S_{t + 1} = s'|S_t = s, A_t = a]

奖励函数:当前状态和当前action会带来多大的reward

Rsa=E[Rt+1St=s,At=a]\mathcal{R}_{s}^a = E[R_{t + 1}|S_t = s, A_t = a]

举例

走迷宫

  1. 基于策略函数的强化学习方法:π\pi 函数得到每个action(上下左右)的概率分布,采样。从而走迷宫
  2. 基于价值函数的强化学习方法:计算当前位置下,采取上下左右4种action后的价值函数值,采取最优的action。从而完成迷宫

强化学习智能体类型

价值 vs 策略

这些方式的最终目的都是学习策略。

根据显示学习的函数的不同,可以将智能体分为3类:

  1. 基于价值的智能体:显示的学习价值函数,但是隐式的学习策略。只能应用在action可穷举的情况,如果action不可穷举,不能给出每个action执行后的总reward。如,Q-learning, Sarsa
  2. 基于策略的智能体:直接学习策略函数,但是不学习价值函数。可以处理连续的action,因为它直接根据state给出action。如,策略梯度算法。
  3. actor-critic 智能体:策略函数和价值函数都学习,两者交互从而得到最佳行为

有模型 vs 免模型

可以根据强化学习中是否学习了环境模型,将智能体分为有模型和免模型:

  1. 有模型:学习环境的状态转移概率。可以一定程度上缓解数据匮乏的问题,因为它可以在虚拟环境下进行训练。但是由于虚拟环境和真实环境的差异导致,有模型学习泛化能力较差。
  2. 免模型:不直接学习环境的状态转移。属于数据驱动型的方法。目前大部分的模型采用了免模型的方式。包括alphago。因为目前大部分的研究集中在状态离散,可观察的场景上。

有模型学习:当智能体知道环境状态转移函数和奖励函数之后,它就知道在某一个状态下执行某个action会获得的reward。这样它就不需要在现实中采取行动,而是在虚拟世界中学习和规划即可。(可能类似于人类的脑中预演,也就是这种方法的智能体具有想象能力)一般来说它同时在真实环境和虚拟环境中学习。

免模型学习:通常来说,状态转移函数和奖励函数很难估计,连环境的状态都是未知的,则需要免模型学习。免模型学习不对环境进行建模,它只根据环境给出的状态迁移和奖励来更新行为策略,反复迭代得到最优策略。

学习与规划

规划指的是,模型对与状态的转移有建模。这样它就可以不和环境交互,只是通过计算,就可以找到最优解。它可以规划后续怎么操作。

探索和利用

探索:尝试不同的行为来找到最大奖励的策略。

利用:不尝试新的行为,直接采取已知的比较好的行为。

两者之间相互权衡。

比如吃饭。如果采用探索的方式就会找一家没去过的店。如果采用利用的方式,就是去一家已经知道的很好吃的店。

比如K-臂赌博机。如果采用仅探索的方式,就会每个臂都会平均的尝试,这样它可以更好的找到每个臂的期望值,但是失去了许多摇最优臂的机会。如果采用仅利用的方式,就会只尝试目前为止期望值最高的臂。这种方式很难找到最优臂。因此,仅采用探索或者利用的方式都不能获得最优解。

在有限次数的限制下,探索和利用相互对立,需要平衡两者得到更好的策略。