强化学习的数学基础
基本概念
强化学习的基础概名词
-
状态(State):表示当下环境,是做决策的唯一依据
-
动作(Action):做出的决策,动作种数一般用i表示
-
环境(Environment):使智能体不断变换状态的位置
-
智能体(Agent):动作主体
-
奖励(Reward):智能体执行一个动作后返回的具体数值,由实验者定义
-
状态空间(State Space):所有状态集合,表示为S
-
动作空间(Action Space):动作的集合,表示为A
-
策略函数(Policy Function):根据观测到的状态作决策控制智能体动作,记为π(a∥s)=P(A=a∥S=s),π:S×A→[0,1]
-
状态转移(State Transition):指由当前状态s变为s′的过程,该过程执行动作a
-
状态转移函数(State-Transition Function):产生新状态s′时用到的函数,可以是确定或随机的,如随机状态转移函数记为p(s′∥s,a)=P(S′=s′∥S=s,A=a)
-
智能体与环境交互 (Agent Environment Interaction):是上述所有参量组成的一整个循环系统
强化学习中的回报(Return)
整个流程下来的奖励综合就叫回报(Return),而汇报依赖于(i) 观测到的不具随机性数值 (ii) 未观测到的具随机性的数值;随着时间的滞后奖励会乘以逐渐变小的折扣率(Discount Factor),表示为折扣回报 (Discounted Return):
Ut=i=0∑nγi⋅Rt+i,γ∈[0,1]
价值函数——回报的期望
由于在整个流程结束前,都无法获取Ut的实际值,因此需要对Ut求期望从而尽可能消除其中的随机性;考虑到这种随机性来源于未来,因此可以求得条件期望如下:
Qπ(st,at)=E{St+i,At+i∥i=1,2,⋯}[Ut∥St=st,At=at]
=∫⋯∫P({St+i,At+i∥i=1,2,⋯}∥st,at)⋅Utdst+1dat+1⋯dst+ndat+n
=∫Sdst+1∫Sdat+1⋯∫Sdst+n∫Sdat+n(Πk=t+1np(sk∥sk−1,ak−1)⋅π(ak∥sk))⋅Ut
根据公式可得,Qπ(st,at)依赖的三个因素:
- 当前状态st越好,Qπ(st,at)越大,回报期望值越大
- 当前动作at越好,Qπ(st,at)越大,回报期望值越大
- 策略函数π越好,Qπ(st,at)越大,回报期望值越大
其中最优动作价值函数能排除策略的影响,通俗理解为其作为一个先知执行尽量高收益的动作;表示为:
Q∗(st,at)=πmax Qπ(st,at)→π∗=argπmax Qπ(st,at)
状态价值函数则用于量化双方胜算,表示为:
Vπ(st)=EAt∼π(⋅∥st)[Qπ(st,At)]=a∈A∑π(a∥st)⋅Qπ(st,a)=EAt,St+1,At+1,⋯,Sn,An[Ut∥St=st]
强化学习过程中随机性的来源
基于当前状态s,考虑策略函数的随机性产生新动作;基于新动作和当前状态,考虑状态转移函数的随机性,产生新状态;基于新状态的随机性进而产生新奖励,该奖励也是随机的;从而形成一整条随机的轨迹(Trajectory),完整简洁的数学表达如下:
Trajectory:st⟶π(⋅∥st)at⟶p(⋅∥st,at)st+1,rt→⋯
回报过程中其实也具有随机性,即在一定状态之后的部分是未知的,因此其状态和动作也都是未知的
策略学习与价值学习
强化学习方法主要分为两类:一类是基于模型的方法(Model-Based),另一类是无模型方法(Model-Free);无模型方法又可以分为价值学习和策略学习。
**价值学习(Value-Based Learning)**指学习最优价值函数Q∗(s,a),使智能体通过Q∗做决策选出最好的动作,即每观测到一个状态st,把其输入至Q∗函数,让Q∗对所有动作做评价,选出得到最优评价的动作;该过程用公式表示为:
at=arga∈AmaxQ∗(st,a)
**策略学习(Policy-Based Learn)**指学习策略函数π(a∥s);即将观测状态st输入到π函数中,让其对所有动作作评价,进而得到概率值π(∗∥st);然后智能体作随机抽样,执行选中动作
价值学习
DQN网络
DQN网络基本概念
构造DQN网络的目的是通过重复训练得到最优价值函数Q∗,其的逼近记为Q(s,a;w),其中w为神经网络参数;在训练DQN时则需要对w求参数,具体表达为:
▽wQ(s,a;w)=∂w∂Q(s,a;w)
DQN训练方法:时间差分算法(Temporal Difference)
DQN的基本流程
-
步骤一:确定起始点s和终止点d,随机取w作预测q^=Q(s,a;w)
-
步骤二:统计实际值y,然后利用预测值和实际值求导:
w′=w−α⋅▽wL(w)=w−α⋅(q^−y)▽wQ(s,d;w),L(w)=21[Q(s,d;w)−y]2
-
步骤三:重复该过程至预测与实际用时一致
在实际过程中途,可以对预测作修正,得到TD目标(TD Targe)记为y^;将y^取代上式的y,记TD误差(TD error)δ=q^−y^;进一步不断更新参数即可
利用TD训练DQN
由定义得回报的计算公式为:
Ut=k=t∑nγk−t⋅Rk=Rt+Ut+1=Rt+k=t+1∑nγk−t−1⋅Rk
最优价值函数写作:
Q∗(st,at)=πmaxE[Ut∥St=st,At=at]
从上述两式可推导出最优贝尔曼方程:
Ut的期望Q∗(st,at)=ESt+1∼p(⋅∥st,at)[Rt+γ⋅Ut+1的期望A∈AmaxQ∗(St+1,A)∥St=st,At=at]
当智能体执行动作at,则可以利用p(st+1∥st,at) 计算出st+1 ,使得st,at,st+1 都被观测到;进而观测到rt,从而拥有四元组(sT,at,rt,st+1),进而计算出rt+a∈Amaxγ⋅Q∗(st+1,a) ,以此看作项ESt+1∼p(⋅∥st,at)[Rt+γ⋅A∈AmaxQ∗(St+1,A)∥St=st,At=at] 的近似;然后将Q∗(s,a)替换为Q(s,a;w) 得到:
预测qt^Q(s,a;w)≈TD目标yt^rt+γ⋅Q∗(st+1,a;w)
然后重复DQN基本流程中的步骤即可。
训练流程
根据四元组(sT,at,rt,st+1) 可以求出DQN的观测值,以及TD目标和TD误差;由于算法所需数据为四元组,与控制智能体运动的策略π 无关,因此可以用任何策略控制智能体与环境交互,并记录算法轨迹作为训练数据。因此DQN的训练可以分为两个独立部分:
-
收集训练数据:可以用任何策略π 与环境交互,该策略被称作行为策略(Behavior Policy),常用的是ϵ−greedy策略:
at=⎩⎨⎧argamaxQ(s,a;w) 以概率(1−ϵ)均匀抽取A中的一个动作 以概率ϵ
智能体在整个过程中的轨迹记作{si,ai,ri∥i=1,2,⋯,n} ,把一条轨迹划为n个四元组(sT,at,rt,st+1) 存入数组,从而得到经验回放数组(Reply Buffer)
-
更新参数w
随机从经验回放数组中取一个四元组记作(sj,aj,rj,sj+1) ,设当前DQN参数为wnow;执行下面步骤对参数做更新得到新参数wnew :
- 对DQN作正向传播,得到Q值:q^j=Q(sj,aj,wnow)和q^j+1=a∈AmaxQ(sj+1,aj,wnow)
- 计算TD目标和TD误差:y^j=rj+γ⋅q^j+1和δ=q^j−y^j
- 对DQN作反向传播得到梯度:gj=▽wQ(sj,aj;wnow)
- 做梯度下降更新参数:wnow−α⋅δj⋅gj→wnew
因为两者是独立的;因此训练数据收集和参数更新可以同步进行,也可以异步进行。
利用Q学习算法训练DQN
Q学习最初以表格形式出现,参照表格作出决策;该种情况下S和A为有限集,它们的组合有限;从这些组合中,针对每个状态选择回报最大的动作,从而实现最优决策;数学表示为:
at=argmaxa∈AQ∗(st,a)
如果要让智能体的轨迹学习这样一个表格,则可用一个表格Q~近似Q∗:
- 首先初始化Q~,如使其为全0的表格
- 然后用表格形式的Q学习算法更新Q~
- 每次更新表格的一个元素,使其最终收敛到Q∗
训练流程
根据四元组(sT,at,rt,st+1) 可以求出DQN的观测值,以及TD目标和TD误差;由于算法所需数据为四元组,与控制智能体运动的策略π 无关,因此可以用任何策略控制智能体与环境交互,并记录算法轨迹作为训练数据。因此DQN的训练可以分为两个独立部分:
-
收集训练数据:可以用任何策略π 与环境交互,该策略被称作行为策略(Behavior Policy),常用的是ϵ−greedy策略:
at=⎩⎨⎧argamaxQ~(st,a) 以概率(1−ϵ)均匀抽取A中的一个动作 以概率ϵ
智能体在整个过程中的轨迹记作{si,ai,ri∥i=1,2,⋯,n} ,把一条轨迹划为n个四元组(sT,at,rt,st+1) 存入数组,从而得到经验回放数组(Reply Buffer);事后通过经验回访更新表格Q~
-
更新参数w
随机从经验回放数组中取一个四元组记作(sj,aj,rj,sj+1) ,设当前DQN参数为wnow;执行下面步骤对参数做更新得到新参数wnew :
- 对DQN作正向传播,得到Q值:q^j=Q~now(sj,aj)和q^j+1=a∈AmaxQ~now(sj+1,a)
- 计算TD目标和TD误差:y^j=rj+γ⋅q^j+1和δ=q^j−y^j
- 更新表格中(sj,aj) 位置上的元素:Q~now(sj,aj)−α⋅δj→Q~new(sj,aj)
同理,因为两者是独立的;因此训练数据收集和参数更新可以同步进行,也可以异步进行。
同策略(On-policy)与异策略(Off-policy)
行为策略是控制智能体与环境交互的策略,作用是收集经验(即观测的环境、动作、奖励);目标策略是结束训练后得到的用于控制目标智能体的策略函数,该策略函数暂时作为一个确定性策略,用于控制智能体:
at=argmaxaQ(st,at;w)
同策略指用相同的行为策略和目标策略,异策略指用不同的行为策略和目标策略;DQN则是经典的异策略,通过经验回放的形式建立目标策略。
SARSA(State-Action-Reward-State-Action)算法
针对强化学习,Qπ常常和策略函数π结合使用,被称作Actor-Critic方法,而SARSA算法则就是被用来训练该方法Qπ的工具。
SARSA算法的推导
-
首先根据贝尔曼方程可知:
Qπ(st,at)=ESt+1,At+1[Rt+γ⋅Qπ(St+1,At+1)∥St=st,At=at]
-
然后对贝尔曼方程左右两边作近似,左边近似为q(st,at),是表格在t时刻对Qπ(st,at)做出的估计
-
对于方程右边,给定当前状态st和智能体执行动作at,环境给出奖励rt和新状态st+1,然后基于st+1随机采样得到新动作
a~t+1∼π(cdot∥st+1)
进一步作蒙特卡洛近似得到:
rt+γ⋅Qπ(st+1,a~t+1)
-
进一步把上面中公式中的Qπ近似成q,得到:
yt^≜rt+γ⋅qπ(st+1,a~t+1)
其被称作TD目标,是表格在t+1时刻对Qπ(st,at)做出的估计
q(st,at)和yt^都是对动作价值Qπ(st,at)的估计,而yt^部分基于真实观测到的奖励rt;由于yt^更可靠,因此鼓励q(st,at)趋近yt^,即:
(1−α)⋅q(st,at)+α⋅yt^→q(st,at)
SARSA的训练流程
前提假设:设当前表格为qnow,当前策略为πnow,每轮更新表格中的一个元素,把更新后的表格记作qnew
具体步骤
- 步骤一:观测到当前状态st,根据当前策略抽样:at∼πnow(⋅∥st)
- 步骤二:把表格qnow中第(st,at)位置上的元素记为:qt^=qnow(st,at)
- 步骤三:智能体执行动作at,观测到奖励rt和新状态st+1
- 步骤四:根据当前策略抽样a~t+1∼πnow(⋅∥st) ,其中at+1~ 为假想动作,智能体不予执行
- 步骤五:记q^t+1=qnow(st+1,a~t+1),计算TD目标和TD误差yt^=rt+γ⋅q^t+1,δt=q^t−y^t
- 步骤六:更新表格中(st,at)位置上的元素:qnow(st,at)−α⋅δt→qnew(st,at)
Q学习与SARSA对比
- Q学习属于异策略,可以用经验回放,目标是学到表格Q~作为Q∗的近似而与π无关,所以无论π是什么都不影响Q学习结果
- SARSA属于同策略,不能用经验回放,目标是学到表格q作为动作价值函数Qπ的近似吗,必须通过收集当前策略πnow学习Qπ
神经网络形式训练SARSA
若状态空间S为无限集,则无法用表格表示Qπ,而是用神经网络q(s,a;w)近似:
q(s,a;w)=Qπ,∀s∈S,a∈A
神经网络的结构被预先设定,参数通过智能体与环境的交互确定
算法推导
给定当前状态st,智能体执行动作at,环境给出奖励rt和新状态st+1,然后基于st+1作随机抽样,得到新动作a~t+1∼π(⋅∥st+1),定义TD目标:
y^t=rt+γ⋅q(st+1,a~t+1;w)
进而定义损失函数:
L(w)≜21[q(st,at;w)−y^t]2
进一步利用梯度下降计算损失函数:
▽wL(w)=TD误差δt(q^t−y^t)⋅▽wq(st,at;w)
然后作梯度下降更新:
w−α⋅δt⋅▽wq(st,at;w)
利用神经网络训练和上面一节的训练流程类似,只是把相应参数替换为了含w的内容,此处省略
多步TD目标和蒙特卡洛与自举
多步TD目标实质上就是对贝尔曼方程做了一些修改:
Ut的期望Qπ(st,at)=E[(i=0∑m−1riRt+i)+γm⋅Ut+m的期望Qπ(St+m,At+m)∥St=st,At=at]
即用策略π控制智能体与环境交互m次得到轨迹后,再作近似得到近似结果;其它内容和传统训练方式差距不大
蒙特卡洛和自举可以看作是多步TD朝两个相反方向的延申。
前者依赖完整经历完一轮交互后的所有显式状态,无偏但方差大;后者仅依赖后一步交互,方差小但有偏差。
价值学习高级技巧
该部分主要包含两个技巧:经验回放(Experience Replay)、高估问题的解决方案
经验回放
概念:把智能体与环境交互的记录(即经验)储存到一个数组里,事后反复利用这些经验训练智能体;该数组被称为经验回放数组(Replay Buffer),一般智能体轨迹被划分为四元组(st,at,rt,st+1),大小为最近保留的b条数据(一般被设置为105∼106);在实践中,要等回放数组中有足够多四元组,才开始经验回放更新DQN。