Approximation in Value Space
学习笔记:强化学习与最优控制(Chapter 2)
如我们之前所说,最优控制问题虽然可以用动态规划来解决,但是要求所有状态 x k x_k xk的optimal cost-to-go需要花费很长的时间,所以有着各种各样的approximation方法。
1. 综述
在动态规划求解最优控制的过程中,有两种估计方法:
- Approximation in Value Space:
又可以分为三种方法:
- 直接估计cost function即
J
~
k
\tilde{J}_k
J~k来得到策略:我们用
J
~
k
\tilde{J}_k
J~k来表示对optimal cost function
J
k
∗
J_k^*
Jk∗的估计,通过优化下述式子可以得到suboptimal的策略
μ
~
k
\tilde{\mu}_k
μ~k
μ ~ k ( x k ) ∈ arg min u k ∈ U k ( x k ) E [ g k ( x k , u k , w k ) + J ~ k + 1 ( f k ( x k , u k , w k ) ) ] (1) \tilde{\mu}_k(x_k)\in\arg\min\limits_{u_k\in U_k(x_k)}\mathbb{E}[g_k(x_k,u_k,w_k)+\tilde{J}_{k+1}(f_k(x_k,u_k,w_k))]\tag{1} μ~k(xk)∈arguk∈Uk(xk)minE[gk(xk,uk,wk)+J~k+1(fk(xk,uk,wk))](1) - 通过估计Q-factor来得到策略:
式子(1)的右半部分可以看做是取一个状态-控制对 ( x k , u k ) (x_k,u_k) (xk,uk)使得对应的Q-factor最小,因此我们可以估计每个状态-控制对的Q-factor:
Q ~ k ( x k , u k ) = E [ g k ( x k , u k , w k ) + J ~ k + 1 ( f k , x k , u k , w k ) ] \tilde{Q}_k(x_k,u_k)=\mathbb{E}[g_k(x_k,u_k,w_k)+\tilde{J}_{k+1}(f_k,x_k,u_k,w_k)] Q~k(xk,uk)=E[gk(xk,uk,wk)+J~k+1(fk,xk,uk,wk)]
虽然式子中看似仍然包括对 J J J的估计,和第一种方法没什么区别,但是真实情况下有估计方法可以直接估计 Q Q Q,省掉了对 J ~ \tilde{J} J~的计算过程 - Multi-step lookahead:之前得到策略的方法(如式子(1))相当于是one-step lookahead,即探索一步之内的所有可能即
(
x
k
,
u
k
)
(x_k,u_k)
(xk,uk),剩下的步子代价和用
J
~
\tilde{J}
J~来估计。我们也可以使用multi-step lookahead即探索多步的所有可能
(
x
k
,
u
k
,
x
k
+
1
,
u
k
+
1
,
…
)
(x_k,u_k,x_{k+1},u_{k+1},\dots)
(xk,uk,xk+1,uk+1,…),由此得到一个当前的最优控制序列
u
k
,
u
k
+
1
,
…
u_k,u_{k+1},\dots
uk,uk+1,…,但我们只取
u
k
u_k
uk当做此时的控制,下一步的控制要再使用一次minimization过程得到。例如two-step lookahead,式子(1)中的策略的得到方法变为:
μ ~ k ( x k ) ∈ arg min u k ∈ U k ( x k ) E { g k ( x k , u k , w k ) + min u k + 1 ∈ U k + 1 ( x k + 1 ) E [ g k + 1 ( x k + 1 , u k + 1 . w k + 1 ) + J ~ k + 2 ( f k + 1 ( x k + 1 , u k + 1 , w k + 1 ) ) ] } (2) \tag{2}\tilde{\mu}_k(x_k)\in\arg\min\limits_{u_k\in U_k(x_k)}\mathbb{E}\{g_k(x_k,u_k,w_k)+\min\limits_{u_{k+1}\in U_{k+1}(x_{k+1})}\mathbb{E}[g_{k+1}(x_{k+1},u_{k+1}.w_{k+1})+\tilde{J}_{k+2}(f_{k+1}(x_{k+1},u_{k+1},w_{k+1}))]\} μ~k(xk)∈arguk∈Uk(xk)minE{gk(xk,uk,wk)+uk+1∈Uk+1(xk+1)minE[gk+1(xk+1,uk+1.wk+1)+J~k+2(fk+1(xk+1,uk+1,wk+1))]}(2)。实际上,一个 l l l-step lookahead算法等价于一个 l − 1 l-1 l−1步的动态规划问题+终止代价为 J ~ k + l \tilde{J}_{k+l} J~k+l
- Approximation in Policy Space:在一定范围的策略中挑选最优策略,通常这个策略是由某个或某类参数决定的,即
μ
k
(
x
k
,
r
k
)
\mu_k(x_k,r_k)
μk(xk,rk),
r
k
r_k
rk表示这个参数(例如神经网络)。
使用参数直接得到policy的好处在于不用进行lookahead minimization操作,节省了很多时间
2. 基于Value Space的估计方法
2.1 用估计值 J ~ k \tilde{J}_k J~k来代替 J ~ k \tilde{J}_k J~k
代价函数的估计 J ~ k \tilde{J}_k J~k有四种方法
2.1.1 problem approximation(问题的分解和简化):
- 通过强制分解来简化问题结构,适用于当问题的系统是由许多子系统、许多代价函数、许多约束条件耦合在一起的情况。
当一个问题包含多个子系统时,可以一次只优化一个子系统。例如, k k k时刻系统的控制有 n n n个组成成分,即 u k = { u k 1 , … , u k n } u_k=\{u_k^1,\dots,u_k^n\} uk={uk1,…,ukn},其中 u k i u_k^i uki代表第 i i i个子系统的控制。当我们到达状态 x k x_k xk时,我们可以先优化第一个子系统的控制序列 u k 1 , … , u N − 1 1 u_k^1,\dots,u_{N-1}^1 uk1,…,uN−11,保持其他子系统的控制序列不变。再考虑优化子二个子系统的控制序列 u k 2 , … , u N − 1 2 u_k^2,\dots,u_{N-1}^2 uk2,…,uN−12。比较类似于坐标轴下降法。 - 简化问题的概率结构:
certainty equivalent controller方法替换随机变量为某些固定的值,例如将随机干扰 w k w_k wk替换为 w ~ k ( x k , u k ) = E [ w k ∣ x k , u k ] \tilde{w}_k(x_k,u_k)=\mathbb{E}[w_k|x_k,u_k] w~k(xk,uk)=E[wk∣xk,uk],即求解
min u k , x i + 1 = f i ( x i , u i , w ~ i ( x i , u i ) ) [ g N ( x N ) + ∑ i = k N − 1 g i ( x i , u i , w ~ i ( x i , u i ) ) ] \min\limits_{u_k,x_{i+1}=f_i(x_i,u_i,\tilde{w}_i(x_i,u_i))}[g_N(x_N)+\sum\limits_{i=k}^{N-1}g_i(x_i,u_i,\tilde{w}_i(x_i,u_i))] uk,xi+1=fi(xi,ui,w~i(xi,ui))min[gN(xN)+i=k∑N−1gi(xi,ui,w~i(xi,ui))]
但是上述方法仍然需要求解一个 N N N步deterministic动态规划问题的最优解,我们可以参考one-step lookahead的方法,只探索一步所有可能的控制,用启发式算法走接下来的所有步并以其代价 H k + 1 ( x k + 1 ) H_{k+1}(x_{k+1}) Hk+1(xk+1)作为optimal cost-to-go的估计值,即:
min u k [ g k ( x k , u k , w ~ k ( x k , u k ) ) + H k + 1 ( x k + 1 ) ] \min\limits_{u_k}[g_k(x_k,u_k,\tilde{w}_k(x_k,u_k))+H_{k+1}(x_{k+1})] ukmin[gk(xk,uk,w~k(xk,uk))+Hk+1(xk+1)]
2.1.2 on-line approximate optimization(on-line的估计方法):
在估计真实的代价函数 J ∗ ( x ) J^*(x) J∗(x)时(如式子(2)),利用suboptimal或者启发式的算法来代替计算中的结束代价(terminal cost)即 J ~ k + 2 \tilde{J}_{k+2} J~k+2而非先求解子问题来得到这个结束代价。用来代替的方法有:rollout算法、model predictive control
- Rollout:rollout算法最本质的目标是为了提升策略,即从一个基础策略(base policy)出发,使用multi-step lookahead minimization的方法并以启发式的结果作为optimal cost-to-go的估计值,来提升基础策略,以
l
l
l-step lookahead为例:
min u k , μ k + 1 , … , μ k + l − 1 E [ g k ( x k , u k , w k ) + ∑ m = k + 1 k + l − 1 g m ( x m , μ m ( x m ) , w m ) + J ~ k + l ( x k + l ) ] \min\limits_{u_k,\mu_{k+1},\dots,\mu_{k+l-1}}\mathbb{E}[g_k(x_k,u_k,w_k)+\sum\limits_{m=k+1}^{k+l-1}g_m(x_m,\mu_m(x_m),w_m)+\tilde{J}_{k+l}(x_{k+l})] uk,μk+1,…,μk+l−1minE[gk(xk,uk,wk)+m=k+1∑k+l−1gm(xm,μm(xm),wm)+J~k+l(xk+l)]。
对于前 l l l步我们探索每一种可能,之后的步数带来的代价用 J ~ k + l \tilde{J}_{k+l} J~k+l来表示,它可以表示为用base policy跑有限 m m m步的代价加上terminal cost J ~ k + l + m \tilde{J}_{k+l+m} J~k+l+m。一个好的base policy很重要,但是实验证明即便我们从一个很差的基础策略出发,我们也能够用rollout方法得到很好的表现结果,尤其是当multi-step lookahead用很大的 l l l时。
和策略迭代的关系:rollout实际上就是一次policy iteration,而policy iteration本质上是无穷多次rollout。
性能评估:首先我们介绍两个名词,sequentially consistency和sequential improvement。一个策略是sequentially consistent如果,基于这个策略,从状态 x k x_k xk开始产生的状态序列为 x k , x k + 1 , … , x N x_k,x_{k+1},\dots,x_N xk,xk+1,…,xN并且从下一个状态 x k + 1 x_{k+1} xk+1产生的状态序列也为 x k + 1 , … , x N x_{k+1},\dots,x_N xk+1,…,xN 。一个基础策略是sequentially improving的,如果对于任意状态 x k x_k xk,我们有 min u k ∈ U k ( x k ) [ g k ( x k , u k ) + H k + 1 ( f k ( x k , u k ) ) ] ≤ H k ( x k ) \min\limits_{u_k\in U_k(x_k)}[g_k(x_k,u_k)+H_{k+1}(f_k(x_k,u_k))]\le H_k(x_k) uk∈Uk(xk)min[gk(xk,uk)+Hk+1(fk(xk,uk))]≤Hk(xk),其中 H k ( x k ) H_k(x_k) Hk(xk)为用基础策略得到的代价和。
我们有如下结论:
从一个sequentially consistent的基础策略出发,用rollout算法得到的策略的代价和不会比原策略高;从一个sequentially improving的策略出发,通过rollout得到的策略也不会比原策略差
Fortified Rollout Algorithm:从状态 x 0 x_0 x0开始,每当到达一个状态 x k x_k xk,保存轨迹 P ˉ k = { x 0 , u 0 , … , u k − 1 , x k } \bar{P}_k=\{x_0,u_0,\dots,u_{k-1},x_k\} Pˉk={x0,u0,…,uk−1,xk},称为长久轨迹。同时我们在之前也保存了不确定的轨迹 T ˉ k = { x k , u k ˉ , x ˉ k + 1 , u ˉ k + 1 , … , u ˉ N − 1 , x ˉ N } \bar{T}_k=\{x_k,\bar{u_k},\bar{x}_{k+1},\bar{u}_{k+1},\dots,\bar{u}_{N-1},\bar{x}_N\} Tˉk={xk,ukˉ,xˉk+1,uˉk+1,…,uˉN−1,xˉN}和对应的代价 C ( T ˉ k ) = g k ( x k , u ˉ k ) + g k + 1 ( x ˉ k + 1 , u ˉ k + 1 ) + ⋯ + g N − 1 ( x ˉ N − 1 , u ˉ N − 1 ) + g N ( x ˉ N ) C(\bar{T}_k)=g_k(x_k,\bar{u}_k)+g_{k+1}(\bar{x}_{k+1},\bar{u}_{k+1})+\dots+g_{N-1}(\bar{x}_{N-1},\bar{u}_{N-1})+g_N(\bar{x}_N) C(Tˉk)=gk(xk,uˉk)+gk+1(xˉk+1,uˉk+1)+⋯+gN−1(xˉN−1,uˉN−1)+gN(xˉN)。初始状态 T ˉ 0 \bar{T}_0 Tˉ0是由基础启发式策略从 x 0 x_0 x0产生的轨迹。接下来我们进行rollout算法去最小化 g k ( x k , u k ) + H k + 1 ( x k + 1 ) g_k(x_k,u_k)+H_{k+1}(x_{k+1}) gk(xk,uk)+Hk+1(xk+1),由此得到轨迹 T ~ k = { x k , u ~ k , x ~ k + 1 , u ~ k + 1 , … , u ~ N − 1 , x ~ N } \tilde{T}_k=\{x_k,\tilde{u}_k,\tilde{x}_{k+1},\tilde{u}_{k+1},\dots,\tilde{u}_{N-1},\tilde{x}_N\} T~k={xk,u~k,x~k+1,u~k+1,…,u~N−1,x~N}。如果 C ( T ˉ k ) > C ( T ~ k ) C(\bar{T}_k)>C(\tilde{T}_k) C(Tˉk)>C(T~k),那么我们使 T ˉ k = { x ~ k + 1 , u ~ k + 1 , … , u ~ N − 1 , x ~ N } \bar{T}_k=\{\tilde{x}_{k+1},\tilde{u}_{k+1},\dots,\tilde{u}_{N-1},\tilde{x}_N\} Tˉk={x~k+1,u~k+1,…,u~N−1,x~N}。相当于我们保证保存的不确定轨迹永远选择的是代价更小的轨迹。 - Monte Carlo Tree Search(MCTS):在前面的Rollout中,如果我们采用的是 l l l-step lookahead思想,则在前 l l l步的每一步都需要探索所有的可能 u k u_k uk,这会带来很大的开销,而且有些控制 u k u_k uk明显要劣于其他控制,不值得我们去探索,而有些 u k u_k uk很可靠,值得我们探索的更完全。MCTS的思想是利用中间计算结果来选出更为可靠的策略 u k u_k uk从而将功夫花在更有效的地方。
2.1.3 parametric cost approximation(通过参数估计代价):
代价函数的估计 J ~ k \tilde{J}_k J~k是通过参数 r k r_k rk得到的,这允许我们不求解子问题的最优解( J ~ k + 1 \tilde{J}_{k+1} J~k+1)即可得到 J ~ k \tilde{J}_k J~k
2.1.4 Aggregation(聚合):
从状态空间中挑选具有代表性的状态,其他状态可以采用interpolate的方法用代表性状态来表示
2.2 one-step lookahead
假设我们已知问题的数学模型,即model-based。
- 为了简化计算,我们消除下面式子中的期望
μ ~ k ( x k ) ∈ arg min u k ∈ U k ( x k ) E [ g k ( x k , u k , w k ) + J ~ k + 1 ( f k ( x k , u k , w k ) ) ] \tilde{\mu}_k(x_k)\in\arg\min\limits_{u_k\in U_k(x_k)}\mathbb{E}[g_k(x_k,u_k,w_k)+\tilde{J}_{k+1}(f_k(x_k,u_k,w_k))] μ~k(xk)∈arguk∈Uk(xk)minE[gk(xk,uk,wk)+J~k+1(fk(xk,uk,wk))]
消除方法为certainty equivalence,即选取有代表性的 w ~ k \tilde{w}_k w~k将问题从stachastic变为deterministic:
μ ~ k ( x k ) ∈ arg min u k ∈ U k ( x k ) [ g k ( x k , u k , w ~ k ) + J ~ k + 1 ( f k ( x k , u k , w ~ k ) ) ] \tilde{\mu}_k(x_k)\in\arg\min\limits_{u_k\in U_k(x_k)}[g_k(x_k,u_k,\tilde{w}_k)+\tilde{J}_{k+1}(f_k(x_k,u_k,\tilde{w}_k))] μ~k(xk)∈arguk∈Uk(xk)min[gk(xk,uk,w~k)+J~k+1(fk(xk,uk,w~k))] - 控制空间 U k ( x k ) U_k(x_k) Uk(xk)非常大,我们可以采用并行化计算(parallel cumputation)的方法来加快计算速度
2.3 基于Q-factor的估计方法
假设我们未知问题的数学模型,即model-free,但是
- 存在计算机模拟器,当给定状态 x k x_k xk和控制 u k u_k uk时,模拟器可以从分布中采样下一个状态 x k + 1 x_{k+1} xk+1和对应的代价 g g g
- 子问题的代价函数的估计
J
~
k
+
1
\tilde{J}_{k+1}
J~k+1是已经计算好的,计算方法在以后会说明
计算步骤如下所示
- 用模拟器去收集大量的数据 ( x k s , u k s , x k + 1 s , g k s ) , s = 1 , … , q (x_k^s,u_k^s,x_{k+1}^s,g_k^s),s=1,\dots,q (xks,uks,xk+1s,gks),s=1,…,q和对应的Q-factor,即 β k s = g k s + J ~ k + 1 ( x k + 1 s ) \beta_k^s=g_k^s+\tilde{J}_{k+1}(x_{k+1}^s) βks=gks+J~k+1(xk+1s)
- 为了减少计算量,我们引入参数 r k r_k rk来辅助估计Q-factor,即希望通过 Q ~ k ( x k , u k , r k ) \tilde{Q}_k(x_k,u_k,r_k) Q~k(xk,uk,rk)直接计算得到 ( x k , u k ) (x_k,u_k) (xk,uk)的Q-factor,参数的计算方法为: r k ˉ ∈ arg min r k ∑ s = 1 q [ Q ~ k ( x k s , u k s , r k ) − β k s ] 2 \bar{r_k}\in\arg\min_{r_k}\sum\limits_{s=1}^q[\tilde{Q}_k(x_k^s,u_k^s,r_k)-\beta_k^s]^2 rkˉ∈argrkmins=1∑q[Q~k(xks,uks,rk)−βks]2
- 找到策略
μ
~
k
(
x
k
)
∈
arg
min
u
k
∈
U
k
(
x
k
)
Q
~
k
(
x
k
,
u
k
,
r
ˉ
k
)
\tilde{\mu}_k(x_k)\in\arg\min\limits_{u_k\in U_k(x_k)}\tilde{Q}_k(x_k,u_k,\bar{r}_k)
μ~k(xk)∈arguk∈Uk(xk)minQ~k(xk,uk,rˉk)
此方法涉及了两种估计方法,一是计算 J ~ k \tilde{J}_k J~k,二是计算 Q ~ k \tilde{Q}_k Q~k,会在以后说明。
2.4 multi-step lookahead
l
l
l-step lookahead算法等价于:在状态
x
k
x_k
xk,我们解一个
l
l
l步的动态规划问题,这个问题以
x
k
x_k
xk为起始状态,
J
~
k
+
l
\tilde{J}_{k+l}
J~k+l为终止代价函数,不同是只采用得到的第一步控制作为当下的决策,当转变为下一状态
x
k
+
1
x_{k+1}
xk+1后重复上述步骤。公式化表达为:
min
x
k
,
μ
k
+
1
,
…
,
μ
k
+
l
−
1
E
[
g
k
(
x
k
,
u
k
,
w
k
)
+
∑
m
=
k
+
1
k
+
l
−
1
g
m
(
x
m
,
μ
m
(
x
m
)
,
w
m
)
+
J
~
k
+
l
(
x
k
+
l
)
]
\min\limits_{x_k,\mu_{k+1},\dots,\mu_{k+l-1}}\mathbb{E}[g_k(x_k,u_k,w_k)+\sum\limits_{m=k+1}^{k+l-1}g_m(x_m,\mu_m(x_m),w_m)+\tilde{J}_{k+l}(x_{k+l})]
xk,μk+1,…,μk+l−1minE[gk(xk,uk,wk)+m=k+1∑k+l−1gm(xm,μm(xm),wm)+J~k+l(xk+l)]
- 计算 J ~ k + l ( x k + l ) \tilde{J}_{k+l}(x_{k+l}) J~k+l(xk+l)的方法(rolling horizon approach):用足够大数量的lookahead step l l l,让 J ~ k + l ( x k + l ) = 0 \tilde{J}_{k+l}(x_{k+l})=0 J~k+l(xk+l)=0 。随着往前仔细探索的步长 l l l越大,我们对一个好的估计 J ~ k + l \tilde{J}_{k+l} J~k+l的需求就越低,lookahead策略的表现就越好
2.5 怎样的估计方法才是有效的?
- 最初的想法肯定是估计的代价函数 J ~ k \tilde{J}_k J~k和最优代价函数 J k ∗ J^*_k Jk∗越接近越好,但是它存在的一个问题是:当二者对于任意的状态 x k x_k xk都存在相同的常数差距时,通过 J ~ k \tilde{J}_k J~k得到的policy也是最优的
- 这提示我们可以用一个更好的条件:对于所有的状态 x k x_k xk, J ~ k \tilde{J}_k J~k和 J k ∗ J_k^* Jk∗的相对值越接近越好即: J ~ k ( x k ) − J ~ k ( x k ′ ) ≈ J k ∗ ( x k ) − J k ∗ ( x k ′ ) \tilde{J}_k(x_k)-\tilde{J}_k(x_k')\approx J_k^*(x_k)-J_k^*(x_k') J~k(xk)−J~k(xk′)≈Jk∗(xk)−Jk∗(xk′),但是在 l l l-step lookahead方法中,它忽略了前 l l l步的代价差异(二者的结果相同)
- 一个更为准确的方法是:Q-factor的估计误差 Q k ( x k , u ) − Q ~ k ( x k , u ) Q_k(x_k,u)-\tilde{Q}_k(x_k,u) Qk(xk,u)−Q~k(xk,u)随 u u u的变化是逐渐的(斜率小),换句话来说, Q k ( x k , u ) Q_k(x_k,u) Qk(xk,u)和 Q ~ k ( x k , u ) \tilde{Q}_k(x_k,u) Q~k(xk,u)随 u u u的变化曲线趋势是接近的。
3. 基于Policy Space的估计方法
总体思路是在决策函数
μ
~
k
\tilde{\mu}_k
μ~k中引入参数
r
k
r_k
rk即用
μ
~
k
(
x
k
,
r
k
)
\tilde{\mu}_k(x_k,r_k)
μ~k(xk,rk)表示控制。训练过程类似于监督学习,先产生大量地好的状态-控制样本
(
x
k
s
,
u
k
s
)
,
s
=
1
,
…
,
q
(x_k^s,u_k^s),s=1,\dots,q
(xks,uks),s=1,…,q(由人类专家或者专业软件产生),再求解最小回归问题:
min
r
k
∑
s
=
1
q
∥
u
k
s
−
μ
~
k
(
x
k
s
,
r
k
)
∥
2
\min\limits_{r_k}\sum\limits_{s=1}^q\parallel u_k^s-\tilde{\mu}_k(x_k^s,r_k)\parallel^2
rkmins=1∑q∥uks−μ~k(xks,rk)∥2