基本定义
强化学习的核心思想是通过机器与环境的交互来学习最优行为策略,最终目标是让机器在特定任务中获得最大的长期累积奖励
基本过程为机器处于一个环境中,观察当前的环境状态 x,选择并执行一个动作 a,环境根据机器的动作返回一个奖励 r 并以一定的概率 p 转移到新的状态,所有的环境状态组成一个状态空间 X,机器可执行的所有动作组成一个动作空间 A,奖励根据一个奖励函数 R 来返回,环境状态的转移概率为 P,强化学习任务通常用马尔可夫决策过程表示,对应一个四元组 E={X,A,P,R}
强化学习的过程就是让机器学习一个“状态 ->动作”的策略 π,使得机器根据当前环境状态 x 即可得知要执行的动作 a,即计算 a=π(x),策略有两种表示方法
- 确定性策略:π:X↦A
- 随机性策略:π:X×A↦R,其中 π(x,a) 为在状态 x 下选择动作 a 的概率 P(a∣x),有 ∑a∈Aπ(x,a)=1
奖励函数有两种常用的函数,其中 rt 表示第 t 步的奖励值,E 为随机变量期望
- T 步累积奖励:R=E[T1∑t=1Trt]
- 折扣累积奖励:R=E[∑t=0+∞γtrt+1],γ∈[0,1]
探索与利用
强化学习与监督学习不同,强化学习中机器要学习的是一个“状态 ->动作”的映射规则,而通常情况下没有该形式的训练数据,机器需要通过尝试来发现各个动作的结果
考虑最大化单步奖赏的情形,这对应了一个理论模型:K- 摇臂赌博机。赌徒有有限次的机会,在投入一个硬币后可选择按下其中一个摇臂,每个摇臂以一定的概率吐出硬币,但这个概率赌徒并不知道,赌徒的目标是通过一定的策略最大化自己的奖赏,即获得最多的硬币
该问题有两种极端的策略,分别是“仅探索”和“仅利用”
- 仅探索:平等对待所有摇臂,将所有机会平均分配给所有摇臂,经过尝试后,可以得到所有摇臂的平均吐币概率,进而得到每个摇臂的奖赏期望,这是一种探索未知概率分布的做法,由于尝试机会被平均分配,因此不会更多的尝试吐币概率高的摇臂
- 仅利用:只尝试目前吐币概率最大的摇臂,若存在多个摇臂的吐币概率最大,则随机选择一个,这是一种贪心的做法,更多尝试的摇臂可能不是真实吐币概率最大的摇臂
若要获取最大的奖赏,则应该探索不同的摇臂并且更多的尝试已知概率最高的摇臂,这反映了“仅探索”和“仅利用”两种策略是矛盾的,需要达成折中
贪心算法
用一个概率 ϵ 来对探索和利用进行折中,每次尝试时,以 ϵ 的概率进行探索,以均匀概率选取一个摇臂进行尝试,以 1−ϵ 的概率进行利用,选择目前吐币概率最大的摇臂进行尝试
当摇臂奖赏的不确定性大,需要更多确定摇臂的奖赏表现时,应该进行更多的探索,设置较大的 ϵ 值,若摇臂奖赏的概率分布较集中,不需要太多探索即可近似真实情况,则可以设置较小的 ϵ 值,此外,还可以让 ϵ 值随着尝试次数的增加而减小,即先探索后利用
Softmax 算法
令 Q(k) 为摇臂 k 的平均奖赏,若摇臂 k 被尝试了 n 次,记录奖赏值为 v1,v2,v3,…,则平均奖赏为
Q(k)=n1i=1∑nvi
探索和利用的概率服从如下分布
P(k)=∑i=1KeτQ(i)eτQ(k),τ>0
其中,τ 称为温度,当 τ→0 时,算法将趋于仅利用,当 τ→∞ 时,算法将趋于仅探索,该算法对于平均奖赏高的摇臂,它的利用概率就高
有模型学习
考虑多步强化学习任务,假设任务的马尔可夫决策过程 E={X,A,P,R} 均为已知,该情形称为模型已知,该学习过程称为有模型学习
策略评估
以 T 步累积奖赏函数为例,对于策略 π,定义状态值函数 VTπ(x),表示从状态 x 开始,使用策略 π 带来的累积奖赏,策略的效果由状态值函数来评估
VTπ(x)=E[T1t=1∑Trt∣x0=x]
最优策略应能最大化累积奖赏
π⋆=argπmaxx∈X∑Vπ(x)
策略更新
策略更新的核心步骤是在当前状态 x 下,将策略选择的动作 a 替换为当前最优的动作 a’,定义状态 - 动作值函数 QTπ(x,a),表示从状态 x 开始,执行一步动作 a 后,再使用策略 π 带来的累积奖赏
QTπ(x,a)=E[T1t=1∑Trt∣x0=x,a0=a]
策略动作替换的条件表示为 Qπ(x,a′)≥Vπ(x)
Vπ(x) 可转化为 Qπ(x,a)
VTπ(x)=E[T1t=1∑Trt∣x0=x]=E[T1r1+TT−1T−11t=2∑Trt∣x0=x]=a∈A∑π(x,a)x′∈X∑Px→x′a(T1Rx→x′a+TT−1E[T−11t=1∑T−1rt∣x0=x′])=a∈A∑π(x,a)x′∈X∑Px→x′a(T1Rx→x′a+TT−1VT−1π(x′))
由定义得
VTπ(x)QTπ(x,a)=a∈A∑π(x,a)⋅QTπ(x,a)=x′∈X∑Px→x′a(T1Rx→x′a+TT−1VT−1π(x′))
在当前状态 x 下进行策略更新时,将当前策略选择的动作替换为最优的动作,有
π′(x)=arga∈AmaxVπ(x)
此时 Vπ(x) 已经取到最大值,可作如下变换
Vπ(x)=a∈A∑π(x,a)⋅Qπ(x,a)→Vπ(x)=a∈AmaxQπ(x,a)
在策略更新时,Vπ(x) 是单调递增的,因此可直接简化为
π′(x)=arga∈AmaxQπ(x,a)
算法描述如下
免模型学习
免模型学习则是在模型未知的情形下的强化学习,由于模型未知,无法在状态值函数上做全概率展开,策略无法评估,且状态值函数也难以转化为状态 - 动作值函数,策略无法更新
模型未知时只能从初始状态开始探索,此时可以将估计对象转换到状态 - 动作值函数上,从初始状态出发,估计每一步动作的奖赏
蒙特卡罗强化学习
蒙特卡罗强化学习的策略评估方法是对策略进行采样,从起始状态出发,执行该策略 T 步,得到以下执行轨迹
<(x0,a0),r1,(x1,a1),r2,…,(xT−1,aT−1),rT,xT>
每个 (xi,ai) 对是一个状态 - 动作对,记录其后的奖赏值作为该状态 - 动作对的一次累积奖赏采样值,进行多次采样得到多条轨迹后,将每对状态 - 动作对的累积奖赏采样值取平均,得到状态 - 动作值函数的奖赏估计
为了更好地估计值函数,需要多条不同的采样轨迹,而对于确定性策略 π,每次选取的动作都是相同的,因此多次采样得到的轨迹都是相同的,此时可以考虑使用 ϵ- 贪心算法将确定性策略转化为随机性策略来进行评估,考虑使用贪心算法的策略 πϵ
πϵ(x)={π(x)Action selected uniformly from A.withp=1−ϵwithp=ϵ
同策略的蒙特卡罗强化学习算法如下,其中被评估和被改进的都是策略 πϵ
在评估时我们使用 πϵ 进行评估,但在策略更新时,我们希望更新原始的策略 π
原始策略 π 的累积奖赏期望估计为
Qπ(x,a)=T1t=1∑Trt
贪心算法策略 πϵ 的累积奖赏则是相当于在原始策略的累积奖赏期望上加权
Qπϵ(x,a)=T1t=1∑TPtπϵPtπrt
其中,Piπ 表示策略 π 产生第 i 条轨迹的概率,对于给定的一条轨迹 <x0,a0,r1,…,xT−1,aT−1,rT,xT>,策略 π 产生该轨迹的概率为
Pπ=t=0∏T−1π(xt,at)Pxt→xt+1at
则
PπϵPπ=t=0∏T−1πϵ(xt,at)Pxt→xt+1atπ(xt,at)Pxt→xt+1at=t=0∏T−1πϵ(xt,at)π(xt,at)
其中,策略 π 是确定性策略,π(x,a)=1,策略 πϵ 是 π 的 ϵ- 贪心策略,选择动作 a 的概率为
pi=⎩⎪⎪⎪⎨⎪⎪⎪⎧1−ϵ+∣A∣ϵ∣A∣ϵ,ai=π(x),ai=π(x)
异策略的蒙特卡罗强化学习算法如下
时序差分学习
蒙特卡罗强化学习需要采样出一个完整的 T 步轨迹,对所有的状态 - 动作对进行更新后,才能对策略进行更新
考虑将状态 - 动作对的更新变为增量式,假设 t 次采样估计出的状态 - 动作值函数已经是一个较好估计,则在第 t+1 次采样时,有
QT+1π(x,a)=T+11t=1∑T+1rt=T+11(t=1∑Trt+rT+1)=T+11(T⋅QTπ(x,a)+rT+1)=T+11((T+1)QTπ(x,a)+rT+1−QTπ(x,a))=QTπ(x,a)+T+11(rT+1−QTπ(x,a))
以 γ 折扣累积奖励为例,状态 - 动作值函数可进一步转化为
rT+1T+11QT+1π=Rx→x′a+γQTπ(x′,a′)=α=QTπ(x,a)+α(Rx→x′a+γQTπ(x′,a′)−QTπ(x,a))
通过该函数,就可以在每次执行一步动作时更新一次状态 - 动作值函数,并更新策略,该算法称为 Sarsa 算法,是一个同策略算法
Sarsa 算法的异策略版本,称为 Q-learning 算法