马尔科夫过程:<S,P>
状态转移概率: Pss′=p[St+1=s′∣St=s]
R是一个当前状态的奖励,是当前状态转移后的t+1时刻奖励的期望的函数。
累积回报:Gt=Rt+1+γRt+2+...=∑k=0∞γkRt+k+1
此时Gt是个随机变量,而我们要求得到的累积回报是个确定值,所以我们用累积回报的期望来作为这个确定值。
υ(s)=E[Gt∣St=s]
=E[∑k=0∞γkRt+k+1∣St=s]
=E[Rt+1+γGt+1∣St=s]
=E[Rt+1+γv(St+1)∣St=s] 由两部分组成:即时奖励期望和下一时刻状态的价值期望。Ex=E(Ex)
Rsγ+∑s′∈SPss′v(s′)
上面公式的理解:
E(γGt+1∣St=s)=γ∑St+1E(Gt+1∣St,St+1)P(St+1∣St)
或这么理解:
https://zhuanlan.zhihu.com/p/35134789
状态转移概率:
状态奖励:
状态值函数:
蒙特卡洛方法: https://zhuanlan.zhihu.com/p/33387269
蒙特卡洛方法要等到事件结束,最后的奖励Gt出来后,才进行值函数更新。
时间差分: https://zhuanlan.zhihu.com/p/36254714
利用e-greedy策略的Q值更新,在线时间差分控制
利用最大的Q值更新,离线时间差分控制
https://zhuanlan.zhihu.com/p/33426502
多步时间差分:https://zhuanlan.zhihu.com/p/37340768
https://zhuanlan.zhihu.com/p/36390206
这样子,整个系统中有两个网络:策略网络和V值网络。(在DQN中我们是用网络拟合Q值函数,这里只不过换成了V值函数。相似的,V值网络的目标函数同样是TD-error)这就是我们大名鼎鼎的Actor Critic 算法了:Actor ——策略网络,Critic ——V值网络。
流程如下:
为了高效的利用sample出来的数据,可以对数据进行importance sampling:
https://zhuanlan.zhihu.com/p/39624504
https://zhuanlan.zhihu.com/p/38185553
https://github.com/google/dopamine
矩阵化求解:v=R+γPv
马尔科夫决策过程:<S,A,P,R,γ>
Pss′a R 多了a
策略: π(a∣s)=P[At=a∣St=s]
Pss′=Pss′π=∑a∈Aπ(a∣s)∣Pss′a=∑a∈AP[At=a∣St=s][P[St+1=s′∣St=s,At=a]
Rs=Rsπ=∑a∈Aπ(a∣s)Rsa=∑a∈AE[Rt+1∣St=s,At=a]P[Aa∣St=s] 跟当前状态和动作有关
V(St)←V(St)+α[Gt−V(St)]
故mc用的是真实的奖励和期望, 而TD方法,策略π下的状态值vπ(St+1)未知的,所以在实际中使用的是它的估计值v(St+1)
V(St)←V(St)+α[Rt+1+γV(St+1)−V(St)]
Q(St,At)←Q(St,At)+α[Rt+1+γQ(St+1,At+1)−Q(St,At)]
Q(St,At)←Q(St,At)+α[Rt+1+γmaxaQ(St+1,a)−Q(St,At)]
Q(St,At)←Q(St,At)+α[Rt+1+γE[Q(St+1,At+1)∣St+1]−Q(St,At)]=Q(St,At)+α[Rt+1+γ∑aπ(a∣St+1)Q(St+1,a)−Q(St,At)]expected sarsa利用e-greedy策略的期望Q值更新,expected sarsa的收敛方向是sarsa算法的期望收敛方向 https://zhuanlan.zhihu.com/p/36254714
Vt+n(St)←Vt+n−1(St)+α[Gt:t+n−Vt+n−1(St)]
J(θ)=Eπθ[r]=∑s′∈Sp(s′∣s,a)∑a∈Aπθ(s,a)Rs,a
∇θπθ(s,a)=πθ(s,a)πθ(s,a)∇θπθ(s,a)=πθ(s,a)∇θlogπθ(s,a)
∇θJ(θ)=∑s ∈Sp(s′∣s,a)∑a∈Aπθ(s,a)∇θlogπθ(s,a)Rs,a=Eπθ[∇θlogπθ(s,a)r]
这个回报函数Rs,a很重要,可以设计为∑t′=tTγt′−trt′ ,即是在状态s处采用动作a所希望得到的回报的估计 。由于轨迹之间方差很大,平均一下求期望∑t′=tTEπθ[r(st′,at′)∣st,at] ,这个就是Q(s,a)
于是梯度就变成了: ∇θlogπθ(s,a)Q(s,a)
回报函数中还可以引入常数项b来减少误差,这个b可以为Q(s,a)的期望,即是V值函数。这样R(s,a)−b 的意义就变成了我们想考察某轨迹在策略网络指导下比平均好多少。
这样就得到了一个新形式:A(s,a)−Q(s,a)−V(s) 称之为优势函数,就是指Q值函数比V值函数好多少。
Q(st,at)=r(st,at)+Est+1[V(st+1)] ,后面这个期望是整条轨迹,可以像TD那样只取一步。于是得到 Q(st,at)≈r(st,at)+V(st+1) ,最后A(st,at)≈r(st,at)+V(st+1)−V(st) (对比TD-error)。
Ex∼p[f(x)]=∫f(x)p(x)dx=∫f(x)q(x)p(x)q(x)dx=Ex∼q[f(x)q(x)p(x)]
为了避免over fitting ,对目标函数增加一个regularizer : JPPOθ′(θ)=Jθ′(θ)−βKL(θ,θ′),但由于θ,θ′ 不是分布,可以采用: KL(θ,θ′)=K1∑k=1KKL(Pθ(ak∣sk),Pθ′(ak∣sk))