前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CS229 课程笔记之十六:LQR, DDP 和 LQG

CS229 课程笔记之十六:LQR, DDP 和 LQG

作者头像
口仆
发布2020-08-14 15:26:51
1.6K0
发布2020-08-14 15:26:51
举报
  • 「LQR」:线性二次调节
  • 「DDP」:微分动态规划
  • 「LQG」:线性二次高斯分布

1 有限范围 MDP

在上一章中我们介绍了马尔可夫决策过程,其中最优贝尔曼公式给出了最优值函数的求解方法:

V^{\pi^{*}}(s)=R(s)+\max _{a \in \mathcal{A}} \gamma \sum_{s^{\prime} \in S} P_{s a}\left(s^{\prime}\right) V^{\pi^{*}}\left(s^{\prime}\right)

根据最优值函数,我们还可以求解出最优策略:

\pi^{*}(s)=\operatorname{argmax}_{a \in \mathcal{A}} \sum_{s^{\prime} \in \mathcal{S}} P_{s a}\left(s^{\prime}\right) V^{*}\left(s^{\prime}\right)

在本章中,我们将对上一章的结论进行推广:

  1. 我们希望写出的方程对离散和连续情况均适用,即:
\begin{array}{c}{\mathbb{E}_{s^{\prime} \sim P_{s a}}\left[V^{\pi^{*}}\left(s^{\prime}\right)\right] \quad \text { instead of }} \\ {\sum_{s^{\prime} \in S} P_{s a}\left(s^{\prime}\right) V^{\pi^{*}}\left(s^{\prime}\right)}\end{array}
  1. 我们将假设奖励函数同时依赖于「状态和动作」,即
R : \mathcal{S} \times \mathcal{A} \rightarrow \mathbb{R}

,这使得最优策略的计算公式变为:

\pi^{*}(s)=\operatorname{argmax}_{a \in \mathcal{A}} R(s, a)+\gamma \mathbb{E}_{s^{\prime} \sim P_{sa}}\left[V^{\pi^{*}}\left(s^{\prime}\right)\right]
  1. 不同于之前的无限范围,我们将假设 MDP 为「有限范围」,定义如下五元组:
\left(\mathcal{S}, \mathcal{A}, P_{s a}, T, R\right)

其中

T>0

为时间范围。在这样的设定中,对于收益的定义将发生变化:

R\left(s_{0}, a_{0}\right)+R\left(s_{1}, a_{1}\right)+\cdots+R\left(s_{T}, a_{T}\right)

而不是:

\begin{array}{l}{R\left(s_{0}, a_{0}\right)+\gamma R\left(s_{1}, a_{1}\right)+\gamma^{2} R\left(s_{2}, a_{2}\right)+\ldots} \\ {\sum_{t=0}^{\infty} R\left(s_{t}, a_{t}\right) \gamma^{t}}\end{array}

折扣因子的存在本质上是为了保证无限和的奖励函数为有限值。假设奖励函数的上界为某一常数

\bar{R}

,则收益为:

\left|\sum_{t=0}^{\infty} R\left(s_{t}\right) \gamma^{t}\right| \leq \overline{R} \sum_{t=0}^{\infty} \gamma^{t}

其为一个几何级数和(有限和),因为这里收益本身即为有限和,所以折扣因子也不再需要。 此外,在有限范围下,最优策略

\pi^{\star}

将不稳定,随时间发生变化:

\pi^{(t)} : \mathcal{S} \rightarrow \mathcal{A}

这种情况出现的原因从直观上可以理解为:我们希望基于处于环境中的位置与剩余的时间来采取不同的策略。

  1. 我们将使用基于时间的动态方法:
s_{t+1} \sim P_{s_{t}, a_{t}}^{(t)}

即状态转移概率随时间变化。奖励函数同样随时间变化

R^{(t)}

,这样的设定更加符合实际情况。结合之前的设定,有限范围 MDP 的通用公式如下:

\left(\mathcal{S}, \mathcal{A}, P_{s a}^{(t)}, T, R^{(t)}\right)

注:上述方程与在状态中加入时间等价。 时间

t

的值函数(使用策略

\pi

)使用与之前相同的方式定义:

V_{t}(s)=\mathbb{E}\left[R^{(t)}\left(s_{t}, a_{t}\right)+\cdots+R^{(T)}\left(s_{T}, a_{T}\right) | s_{t}=s, \pi\right]

现在的问题是,如何在有限范围下找出「最优值函数」

V_{t}^{*}(s)=\max _{\pi} V_{t}^{\pi}(s)

我们可以用「动态规划」的思想来求解这一问题:

  1. 在决策过程的最后,最优值函数为:
\forall s \in \mathcal{S} : \quad V_{T}^{*}(s) :=\max _{a \in \mathcal{A}} R^{(T)}(s, a) \tag{1}
  1. 对于其他时间步
0 \leq t < T

,如果已知下一个时间步的最优值函数

V_{t+1}^{*}

,则:

\forall t < T, s \in \mathcal{S} : \quad V_{t}^{*}(s) :=\max _{a \in \mathcal{A}}\left[R^{(t)}(s, a)+\mathbb{E}_{s^{\prime} \sim P_{s a}^{(t)}}\left[V_{t+1}^{*}\left(s^{\prime}\right)\right]\right] \tag{2}

基于上述观察,可以用如下算法来求解最优值函数:

  1. 使用
(1)

式计算

V_{T}^{*}
  1. 对于
t=T-1, \dots, 0

,使用

(2)

式基于

V_{t+1}^{*}

计算

V_{t}^{*}

实际上,我们可以将标准的值迭代看做上述算法的特例(不追踪时间),如果在标准设置下,运行值迭代

T

次,则可以得到最优值迭代的

\gamma^T

估计(几何收敛)。我们还可以证明如下定理:

「定理」:令

B

定义贝尔曼更新以及

\|f(x)\|_{\infty} :=\sup _{x}|f(x)|

(上界)。如果

V_t

表示

t

时间步的值函数,则有:

\begin{aligned}\left\|V_{t+1}-V^{*}\right\|_{\infty} &=\left\|B\left(V_{t}\right)-V^{*}\right\|_{\infty} \\ & \leq \gamma\left\|V_{t}-V^{*}\right\|_{\infty} \\ & \leq \gamma^{t}\left\|V_{1}-V^{*}\right\|_{\infty} \end{aligned}

可以看出,贝尔曼更新

B

是一个

\gamma

收缩算子。

2 线性二次调节(LQR)

本节我们将介绍有限范围 MDP 下的一个特例:「LQR 模型」。通过该模型我们可以求得精确的解。该模型常用于机器人控制,很多问题经常将问题简化成该模型。

首先定义模型假设:

「假设一」:状态空间与动作空间连续:

\mathcal{S}=\mathbb{R}^{n}, \;\;\mathcal{A}=\mathbb{R}^{d}

「假设二」:线性转移函数(带噪声):

s_{t+1}=A_{t} s_{t}+B_{t} a_{t}+w_{t}

其中

A_{t} \in R^{n \times n}, B_{t} \in R^{n \times d}

为矩阵,

w_{t} \sim \mathcal{N}\left(0, \Sigma_{t}\right)

为某个高斯噪声(0 均值),之后我们会证明最优策略与噪声无关!

「假设三」:二次奖励函数:

R^{(t)}\left(s_{t}, a_{t}\right)=-s_{t}^{\top} U_{t} s_{t}-a_{t}^{\top} W_{t} a_{t}

其中

U_{t} \in R^{n \times n}, W_{t} \in R^{d \times d}

为正定矩阵,这意味着奖励函数一直为负。该奖励函数的特征表明我们希望状态接近原点(小范数),可以理解为模型希望维持稳定,避免过度的波动。

定义完假设后,下面介绍 LQR 算法的两个步骤:

「Step 1」:假定

A, B, \Sigma

未知,我们需要基于观察数据进行估计。

  • 对于
A,B

,使用值函数近似章节中的方法进行估计:

\operatorname{argmin}_{A, B} \sum_{i=1}^{m} \sum_{t=0}^{T-1}\left\|s_{t+1}^{(i)}-\left(A s_{t}^{(i)}+B a_{t}^{(i)}\right)\right\|^{2}
  • 对于
\Sigma

,使用高斯判别分析方法进行估计(极大似然)

「Step 2」:假定模型参数已知(给定或估计得出),我们可以使用动态规划算法来推导最优策略,即给定:

\left\{\begin{array}{ll}{s_{t+1}} & {=A_{t} s_{t}+B_{t} a_{t}+w_{t} \quad A_{t}, B_{t}, U_{t}, W_{t}, \Sigma_{t} \text { known }} \\ {R^{(t)}\left(s_{t}, a_{t}\right)} & {=-s_{t}^{\top} U_{t} s_{t}-a_{t}^{\top} W_{t} a_{t}}\end{array}\right.

我们希望去计算

V_{t}^{*}

。使用第一节中提到的动态规划方法,我们有:

  1. 「初始化步骤」 对于最后一个时间步
T

\begin{aligned} V_{T}^{*}\left(s_{T}\right) &=\max _{a_{F} \in \mathcal{A}} R_{T}\left(s_{T}, a_{T}\right) \\ &=\max _{a_{T} \in \mathcal{A}}-s_{T}^{\top} U_{T} s_{T}-a_{T}^{\top} W_{T} a_{T} \\ &=-s_{T}^{\top} U_{T} s_{T} & \text { (maximized for } a_{T}=0 ) \end{aligned}
  1. 「循环步骤」
t < T

,假定我们已知

V_{t+1}^{*}

事实 1:如果

V_{t+1}^{*}

是一个二次函数,那么

V_{t}^{*}

也是一个二次函数,即:

\begin{aligned} \text { if } V_{t+1}^{*}\left(s_{t+1}\right) &=s_{t+1}^{\top} \Phi_{t+1} s_{t+1}+\Psi_{t+1} \\ \text { then } V_{t}^{*}\left(s_{t}\right) &=s_{t}^{\top} \Phi_{t} s_{t}+\Psi_{t} \end{aligned}

对于时间步

t=T

,我们有

\Phi_{t}=-U_{T}

以及

\Psi_{T}=0

(根据初始化步骤中的结论)。 事实 2:我们可以证明最优策略是状态的线性函数。 知道了

V_{t+1}^{*}

就等同于知道了

\Phi_{t+1}

\Psi_{t+1}

,我们只需要解释如何基于

\Phi_{t+1}

\Psi_{t+1}

以及其他参数来计算

\Phi_{t}

\Psi_{t}

。根据最优值函数的定义以及模型假设,我们有:

\begin{aligned} V_{t}^{*}\left(s_{t}\right) &=s_{t}^{\top} \Phi_{t} s_{t}+\Psi_{t} \\ &=\max _{a_{t}}\left[R^{(t)}\left(s_{t}, a_{t}\right)+\mathbb{E}_{s_{t+1} \sim P_{s_t,a_t}^{(t)}}\left[V_{t+1}^{*}\left(s_{t+1}\right)\right]\right] \\ &=\max _{a_{t}}\left[-s_{t}^{\top} U_{t} s_{t}-a_{t}^{\top} V_{t} a_{t}+\mathbb{E}_{s_{t+1} \sim \mathcal{N}\left(A_{t} s_{t}+B_{t} a_{t}, \Sigma_{t}\right)}\left[s_{t+1}^{\top} \Phi_{t+1} s_{t+1}+\Psi_{t+1}\right]\right] \end{aligned}

上式可以优化为关于

a_t

的二次函数(过程省略o(╯□╰)o),我们可以解得最优动作

a_{t}^{*}

\begin{aligned} a_{t}^{*} &=\left[\left(B_{t}^{\top} \Phi_{t+1} B_{t}-V_{t}\right)^{-1} B_{t} \Phi_{t+1} A_{t}\right] \cdot s_{t} \\ &=L_{t} \cdot s_{t} \end{aligned}

其中:

L_{t} :=\left[\left(B_{t}^{\top} \Phi_{t+1} B_{t}-W_{t}\right)^{-1} B_{t} \Phi_{t+1} A_{t}\right]

根据上式可以得出:最优策略与

s_t

线性相关。给定

a_{t}^{*}

我们可以求解

\Phi_{t}

\Psi_{t}

,得出「离散里卡蒂方程」

\begin{aligned} \Phi_{t} &=A_{t}^{\top}\left(\Phi_{t+1}-\Phi_{t+1} B_{t}\left(B_{t}^{\top} \Phi_{t+1} B_{t}-W_{t}\right)^{-1} B_{t} \Phi_{t+1}\right) A_{t}-U_{t} \\ \Psi_{t} &=-\operatorname{tr}\left(\Sigma_{t} \Phi_{t+1}\right)+\Psi_{t+1} \end{aligned}

事实 3:可以看到

\Phi_{t}

不依赖于

\Psi

和噪声

\Sigma_t

,这表明「最优策略也不依赖于噪声」!(但是

\Psi_t

依赖于

\Sigma_t

,即

V_{t}^{*}

也依赖于

\Sigma_t

最后进行总结,LQR 算法的流程如下:

  1. 估计参数
A_{t}, B_{t}, \Sigma_{t}

(如果必要)

  1. 初始化
\Phi_{T} :=-U_{T}

\Psi_{T} :=0
t=T-1 \ldots 0

开始迭代更新

\Phi_{t}

\Psi_{t}

,使用离散里卡蒂方程(基于

\Phi_{t+1}

\Psi_{t+1}

)。只要存在能朝 0 状态前进的策略,收敛性就可以得到保障

  1. 求解最优策略
a_{t}^{*} =\left[\left(B_{t}^{\top} \Phi_{t+1} B_{t}-V_{t}\right)^{-1} B_{t} \Phi_{t+1} A_{t}\right] \cdot s_{t}

,注意因为最优策略不依赖于

\Psi_{t}

,所以可以不更新

3 非线性动态下的 LQR

对于很多问题,即便其动态非线性,也可以化简为 LQR。例如,对于倒立摆问题,其状态间的转换关系为:

\left(\begin{array}{c}{x_{t+1}} \\ {\dot{x}_{t+1}} \\ {\theta_{t+1}} \\ {\dot{\theta}_{t+1}}\end{array}\right)=F\left(\left(\begin{array}{c}{x_{t}} \\ {\dot{x}_{t}} \\ {\theta_{t}} \\ {\dot{\theta}_{t}}\end{array}\right), a_{t}\right)

其中函数

F

取决于角度的余弦。我们的问题是:该系统能够线性化吗?

3.1 动态的线性化

假定在时间

t

,系统大部分时间都处于状态

\bar{s_t}

,且选取的行为在

\bar{a_t}

附近。对于倒立摆问题,如果我们达到了某种最优状态,就会满足:行为空间很小且和竖直方向的偏差不大。

我们可以使用「泰勒展开」来进行线性化。先考虑最简单的情况:状态为一维且转换函数

F

不依赖于动作,则我们可以写出:

s_{t+1}=F\left(s_{t}\right) \approx F\left(\bar{s_{t}}\right)+F^{\prime}\left(\bar{s_{t}}\right) \cdot\left(s_{t}-\bar{s_{t}}\right)

对于更一般的情况,公式看上去基本一样,只是将简单的导数换成了梯度:

s_{t+1} \approx F\left(\bar{s_{t}}, \bar{a_{t}}\right)+\nabla_{s} F\left(\bar{s_{t}}, \bar{a_{t}}\right) \cdot\left(s_{t}-\bar{s_{t}}\right)+\nabla_{a} F\left(\bar{s_{t}}, \bar{a_{t}}\right) \cdot\left(a_{t}-\bar{a_{t}}\right) \tag{3}

现在我们可以重写

(3)

式来得到如下线性关系:

s_{t+1} \approx A s_{t}+B a_{t}+\kappa

其中

\kappa

是某个常数,

A,B

是矩阵。我们可以通过将常数项合并到

s_t

中(增加一维)使得公式的形式与之前一致。

3.2 微分动态规划(DDP)

之前所说的方法适用于优化目标为保持在某个状态

s^{\star}

附近,如倒立摆、无人驾驶(保持在路中间)等。而某些情况下,目标往往更加复杂。下面介绍一种方法,其适用于系统需要遵循某种轨迹(比如火箭)。该方法将轨迹离散化为离散的时间步,并创造中间目标来使用之前的方法。这种方法称为「微分动态规划」,其主要步骤如下:

「Step 1」:使用一个简单的控制器得到一条标称轨迹,作为对目标轨迹的估计:

s_{0}^{*}, a_{0}^{*} \rightarrow s_{1}^{*}, a_{1}^{*} \rightarrow \ldots

「Step 2」:在每个轨迹点

s_{t}^{*}

执行线性化:

s_{t+1} \approx F\left(s_{t}^{*}, a_{t}^{*}\right)+\nabla_{s} F\left(s_{t}^{*}, a_{t}^{*}\right)\left(s_{t}-s_{t}^{*}\right)+\nabla_{a} F\left(s_{t}^{*}, a_{t}^{*}\right)\left(a_{t}-a_{t}^{*}\right)

其中

s_t,a_t

表示当前的状态和动作。现在我们可以使用之前的方法,将上式重写为:

s_{t+1}=A_{t} \cdot s_{t}+B_{t} \cdot a_{t}

注意这里使用的是非平稳动态设定,即策略随时间发生变化。

类似地,我们可以通过二阶泰勒展开得到奖励函数

R^{(t)}

\begin{aligned} R\left(s_{t}, a_{t}\right) & \approx R\left(s_{t}^{*}, a_{t}^{*}\right)+\nabla_{s} R\left(s_{t}^{*}, a_{t}^{*}\right)\left(s_{t}-s_{t}^{*}\right)+\nabla_{a} R\left(s_{t}^{*}, a_{t}^{*}\right)\left(a_{t}-a_{t}^{*}\right) \\ &+\frac{1}{2}\left(s_{t}-s_{t}^{*}\right)^{\top} H_{s s}\left(s_{t}-s_{t}^{*}\right)+\left(s_{t}-s_{t}^{*}\right)^{\top} H_{s a}\left(a_{t}-a_{t}^{*}\right) \\ &+\frac{1}{2}\left(a_{t}-a_{t}^{*}\right)^{\top} H_{a a}\left(a_{t}-a_{t}^{*}\right) \end{aligned}

其中

H_{xy}

表示

R

的海森矩阵项。上式可以重写为(使用之前所述的增加维度技巧):

R_{t}\left(s_{t}, a_{t}\right)=-s_{t}^{\top} U_{t} s_{t}-a_{t}^{\top} W_{t} a_{t}

如果想自己证明,注意下式:

\left(\begin{array}{ll}{1} & {x}\end{array}\right) \cdot\left(\begin{array}{ll}{a} & {b} \\ {b} & {c}\end{array}\right) \cdot\left(\begin{array}{l}{1} \\ {x}\end{array}\right)=a+2 b x+c x^{2}

「Step 3」:现在,我们已经将问题「严格」地重写为了 LQR 框架下的形式,可以使用 LQR 来找到最优策略

\pi_t

注意:如果 LQR 轨迹(下一步)与轨迹的线性近似偏离过多,可能会出现问题,需要通过调节奖励函数的形态来修正。

「Step 4」:现在我们得到了新的控制器(新策略

\pi_t

),我们将构建一个新的轨迹:

s_{0}^{*}, \pi_{0}\left(s_{0}^{*}\right) \rightarrow s_{1}^{*}, \pi_{1}\left(s_{1}^{*}\right) \rightarrow \rightarrow s_{T}^{*}

注意生成新轨迹时,我们使用真实的函数

F

而不是其线性估计来计算转换,即:

s_{t+1}^{*}=F\left(s_{t}^{*}, a_{t}^{*}\right)

然后返回步骤 2,进行重复直到满足某些停止条件。

4 线性二次高斯分布(LQG)

目前为止,我们假设状态都是可以得到的,而在现实世界中,实际的观测值可能并不是真实的状态值(类似 HMM)。我们将使用「部分可观测 MDP」(POMDP)来解决这类问题。

POMDP 是一种包含额外观察层的 MDP。我们将引入一个新的变量

o_t

,其满足某种条件概率分布:

o_{t}\left|s_{t} \sim O(o | s)\right.

形式上看,一个有限范围 POMDP 由如下六元组给出:

\left(\mathcal{S}, \mathcal{O}, \mathcal{A}, P_{s a}, T, R\right)

在该框架下,一种通用的策略是先基于观测值

o_1,\ldots,o_t

得到一个「置信状态」,然后 POMDP 的策略将置信状态映射为动作。

本节我们将对 LQR 进行拓展来求解 POMDP,假定我们观测到

y_{t} \in \mathbb{R}^{m}

m < n

),并满足:

\left\{\begin{array}{ll}{y_{t}} & {=C \cdot s_{t}+v_{t}} \\ {s_{t+1}} & {=A \cdot s_{t}+B \cdot a_{t}+w_{t}}\end{array}\right.

其中

C \in R^{m \times n}

为压缩矩阵,

v_{t}

w_{t}

一样为高斯噪声;奖励函数保持不变,为状态(非观测值)和动作的函数;置信状态同样满足高斯分布。在上述设定下,具体的算法如下:

「Step 1」:基于观测值计算置信状态的高斯分布:

s_{t} | y_{1}, \ldots, y_{t} \sim \mathcal{N}\left(s_{t | t}, \Sigma_{t | t}\right)

我们希望计算均值

s_{t | t}

和协方差

\Sigma_{t | t}

。我们将使用「卡尔曼滤波」算法来提升计算效率(之后介绍)。

「Step 2」:得到分布后,我们将使用均值

s_{t | t}

作为对

s_t

的最佳估计。

「Step 3」:选择动作

a_{t} :=L_{t} s_{t | t}

其中

L_t

来自常规的 LQR 算法。

直观上来看,因为

s_{t | t}

s_t

的噪声估计(相当于向 LQR 中添加更多噪声),而 LQR 是与噪声无关的,所以这个算法可以工作。

下面对第一步进行解释,这里我们假设状态与动作无关(

A

C

可以基于观察数据估计):

\left\{\begin{array}{ll}{s_{t+1}} & {=A \cdot s_{t}+w_{t}, \quad w_{t} \sim N\left(0, \Sigma_{s}\right)} \\ {y_{t}} & {=C \cdot s_{t}+v_{t}, \quad v_{t} \sim N\left(0, \Sigma_{y}\right)}\end{array}\right.

因为噪声是高斯分布,所以我们可以证明联合分布也为高斯分布:

\left(\begin{array}{c}{s_{1}} \\ {\vdots} \\ {s_{t}} \\ {y_{1}} \\ {\vdots} \\ {y_{t}}\end{array}\right) \sim \mathcal{N}(\mu, \Sigma) \qquad \text { for some } \mu, \Sigma

使用高斯分布的边缘公式(参考因子分析章节),我们可以得到:

s_{t} | y_{1}, \ldots, y_{t} \sim \mathcal{N}\left(s_{t | t}, \Sigma_{t | t}\right)

然而计算边缘分布的参数计算过于复杂,可能会达到

O(t^4)

的复杂度。我们将使用「卡尔曼滤波」算法来更快捷地计算均值与方差,仅需要常数时间 t。算法分为两步,假定我们已知分布

s_{t} | y_{1}, \dots, y_{t}

  • 「预测步」:计算
s_{t+1} | y_{1}, \dots, y_{t}
  • 「更新步」:计算
s_{t+1} | y_{1}, \dots, y_{t+1}

不断迭代上述步骤,即可更新置信状态:

\left(s_{t} | y_{1}, \ldots, y_{t}\right) \stackrel{\text { predict }}{\longrightarrow}\left(s_{t+1} | y_{1}, \ldots, y_{t}\right) \stackrel{\text { update }}{\longrightarrow}\left(s_{t+1} | y_{1}, \ldots, y_{t+1}\right) \stackrel{\text { predict }}{\longrightarrow} \ldots

下面具体解释两个步骤:

「预测步」:假定我们已知分布:

s_{t} | y_{1}, \ldots, y_{t} \sim \mathcal{N}\left(s_{t | t}, \Sigma_{t | t}\right)

则下一个状态的分布也为高斯分布:

s_{t+1} | y_{1}, \ldots, y_{t} \sim \mathcal{N}\left(s_{t+1 | t}, \Sigma_{t+1 | t}\right)

其中:

\left\{\begin{array}{ll}{s_{t+1 | t}} & {=A \cdot s_{t | t}} \\ {\Sigma_{t+1 | t}} & {=A \cdot \Sigma_{t | t} \cdot A^{\top}+\Sigma_{s}}\end{array}\right.

「更新步」:给定

s_{t+1} | t

\Sigma_{t+1 | t}

,我们可以证明:

s_{t+1} | y_{1}, \ldots, y_{t+1} \sim \mathcal{N}\left(s_{t+1 | t+1}, \Sigma_{t+1 | t+1}\right)

其中:

\left\{\begin{array}{ll}{s_{t+1 | t+1}} & {=s_{t+1 | t}+K_{t}\left(y_{t+1}-C s_{t+1 | t}\right)} \\ {\Sigma_{t+1 | t+1}} & {=\Sigma_{t+1 | t}-K_{t} \cdot C \cdot \Sigma_{t+1 | t}}\end{array}\right.

矩阵

K_t

也称为「卡尔曼增益」

K_{t} :=\Sigma_{t+1 | t} C^{\top}\left(C \Sigma_{t+1 | t} C^{\top}+\Sigma_{y}\right)^{-1}

从公式可以看出我们并不需要时间步 t 之前的观测值,仅需要之前的概率分布。

将上述过程结合起来,算法的整体过程如下:

  1. 运行前向传播来计算
K_{t}

\Sigma_{t | t}

s_{t|t}
  1. 运行反向传播(LQR 更新)来计算量
\Phi_t

\Psi_{t}

L_t
  1. 使用
a_{t}^{*}=L_{t} s_{t | t}

来得到最优策略

5 思维导图

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 口仆 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 有限范围 MDP
  • 2 线性二次调节(LQR)
  • 3 非线性动态下的 LQR
    • 3.1 动态的线性化
      • 3.2 微分动态规划(DDP)
      • 4 线性二次高斯分布(LQG)
      • 5 思维导图
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档