马尔可夫性质#
下一时刻的状态st+1只取决于当前状态st
P(st+1∣st)=P(st+1∣st,st−1,…,s0) st,st−1,…,s0为之前所有状态的历史
强化学习基本概念#
状态转移矩阵#
P=P(s1∣s1)P(s1∣s2)⋮P(s1∣sn)P(s2∣s1)P(s2∣s2)⋮P(s2∣sn)⋯⋯⋱⋯P(sn∣s1)P(sn∣s2)⋮P(sn∣sn) 同一行的起始状态相同,表示从该状态转移到其他状态的概率分布
马尔可夫奖励过程#
- 回合(episode):指从初始状态开始,智能体与环境交互直到终止状态的一个完整过程
- 时间步:指在某一时刻,智能体与环境交互的一个时间点,比如走一步
- 奖励:指在某一状态下,智能体采取某一动作后所获得的即时反馈
某个时间步开始,未来能获得的奖励的累计值
假设时刻t后获得的奖励序列为rt+1,rt+2,rt+3,…,rT,则时刻t的回报为:
Gt=rt+1+γrt+2+γ2rt+3+⋯+γT−t−1rT 其中:
- γ为折扣因子,0≤γ≤1,用来减弱未来奖励的影响,使学习更关注最近的奖励
- T为终止状态的时间步
回报由智能体行动完成后才可计算,有了回报后便可计算状态价值函数
通常用π表示策略,π(a∣s)表示在状态s下采取动作a的概率分布。策略可以是确定性的,也可以是随机的,也可以是一个函数。
状态价值函数#
状态价值函数V(s)表示在状态s下,智能体能够获得的期望回报(未来可能得到多少回报)。对于马尔可夫奖励过程,它定义为回报的期望:
Vπ(s)=Eπ[Gt∣St=s] 其中Eπ表示在策略π下的期望值,St=s表示在时刻t处于状态s。
如果只用这个公式,当计算各个状态的状态价值函数时,必须要知道所有状态的回报序列,这会是一个非常庞大的排列组合问题,为了简化计算,可以使用 贝尔曼方程(Bellman Equation) 来递归地计算状态价值函数。
贝尔曼方程#
Vπ(s)=即时奖励R(s)+未来奖励的折扣总和γs′∈S∑P(s′∣s)Vπ(s′)
- Vπ(s′): 未来状态s′的状态价值函数
- P(s′∣s): 从状态s转移到状态s′的概率
贝尔曼方程的矩阵形式#
设每个状态s∈S的状态价值函数为Vπ(s),则可以将所有状态的状态价值函数表示为向量Vπ,所有状态的即时奖励表示为向量R:
Vπ=Vπ(s1)Vπ(s2)⋮Vπ(sn)R=R(s1)R(s2)⋮R(sn) 有了状态转移矩阵P,贝尔曼方程可以写成矩阵形式:
Vπ=R+γPVπ 变形得:
Vπ−γPVπ=R(I−γP)Vπ=RVπ=(I−γP)−1R 若方程可解,则可以直接求解所有状态的状态价值函数Vπ
贝尔曼方程的迭代形式(自举法)#
属于动态规划的一种方法,利用当前状态的价值函数来更新未来状态的价值函数,直到收敛为止。
1:2:3:4:5:6:对于所有状态 s∈S, V′←0, V←∞当 ∥V−V′∥>ϵ 执行V←V′对于所有状态 s∈S:V′(s)←R(s)+γs′∈S∑P(s′∣s)V(s′)结束循环返回 V′(s) 基于新的策略π′,因此是一个off-policy(离线)算法。
值函数(动作价值函数)#
前面介绍的状态价值函数V(s)是指在状态s下,智能体能够获得的期望回报。而动作价值函数Q(s,a)是指在状态s下,智能体采取具体动作a后,能够获得的期望回报。
Qπ(s,a)=Eπ[Gt∣st=s,at=a] 同时也可以由动作价值函数得到状态价值函数:
Vπ(s)=Eπ[Qπ(s,at)] 动作价值函数对于决策更为重要,当我们有了动作价值函数后,当前最佳动作则为使得当前Q(s,a)最大的动作a,即:aargmaxQ(st,a)