Skip to content

Commit af58380

Browse files
committed
[kalman.md] translation update
1 parent b251a91 commit af58380

File tree

1 file changed

+38
-39
lines changed

1 file changed

+38
-39
lines changed

lectures/kalman.md

Lines changed: 38 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ kernelspec:
1818
</div>
1919
```
2020

21-
# 卡尔曼滤波初探
21+
# 卡尔曼滤波器的初步介绍
2222

2323
```{index} single: 卡尔曼滤波
2424
```
@@ -38,17 +38,17 @@ tags: [hide-output]
3838

3939
## 概述
4040

41-
本讲座为卡尔曼滤波提供了一个简单直观的介绍,适合以下读者:
41+
本讲座为卡尔曼滤波器提供了一个简单直观的介绍,适合以下读者:
4242

43-
* 听说过卡尔曼滤波但不知道它如何工作的人,或者
44-
* 知道卡尔曼滤波方程但不知道这些方程从何而来的人
43+
* 听说过卡尔曼滤波器但不知道它如何工作的人,或者
44+
* 知道卡尔曼滤波的方程但不知道这些方程从何而来的人
4545

4646
关于卡尔曼滤波的更多(进阶)阅读材料,请参见:
4747

4848
* {cite}`Ljungqvist2012`,第2.7节
4949
* {cite}`AndersonMoore2005`
5050

51-
第二个参考文献对卡尔曼滤波进行了全面的阐述
51+
第二个参考文献对卡尔曼滤波器进行了全面的阐述
5252

5353
所需知识:熟悉矩阵运算、多元正态分布、协方差矩阵等。
5454

@@ -73,7 +73,7 @@ from scipy.linalg import eigvals
7373

7474
## 基本概念
7575

76-
卡尔曼滤波在经济学中有许多应用,但现在让我们假装我们是火箭科学家。
76+
卡尔曼滤波器在经济学中有许多应用,但现在让我们假装我们是火箭科学家。
7777

7878
一枚导弹从Y国发射,我们的任务是追踪它。
7979

@@ -89,7 +89,7 @@ from scipy.linalg import eigvals
8989

9090
密度 $p$ 被称为随机变量 $x$ 的*先验*
9191

92-
为了使我们的例子便于处理,我们假设我们的先验是高斯分布
92+
为了使我们的例子便于处理,我们假设我们的先验分布是高斯分布
9393

9494
特别地,我们采用
9595

@@ -127,7 +127,7 @@ p = N(\hat x, \Sigma)
127127
---
128128
tags: [output_scroll]
129129
---
130-
# 设置高斯先验密度 p
130+
# 设定高斯先验分布 p
131131
Σ = [[0.4, 0.3], [0.3, 0.45]]
132132
Σ = np.matrix(Σ)
133133
x_hat = np.matrix([0.2, -0.2]).T
@@ -142,7 +142,7 @@ Q = 0.3 * Σ
142142
# y 的观测值
143143
y = np.matrix([2.3, -1.9]).T
144144
145-
# 设置绘图网格
145+
# 设定绘图网格
146146
x_grid = np.linspace(-1.5, 2.9, 100)
147147
y_grid = np.linspace(-3.1, 1.7, 100)
148148
X, Y = np.meshgrid(x_grid, y_grid)
@@ -227,8 +227,7 @@ plt.show()
227227

228228
坏消息是我们的传感器并不精确。
229229

230-
具体来说,我们应该将传感器的输出理解为不是
231-
$y=x$,而是
230+
具体来说,我们不应该将传感器的输出理解为$y=x$,而是
232231

233232
```{math}
234233
:label: kl_measurement_model
@@ -238,9 +237,9 @@ y = G x + v, \quad \text{where} \quad v \sim N(0, R)
238237

239238
这里 $G$ 和 $R$ 是 $2 \times 2$ 矩阵,其中 $R$ 是正定矩阵。两者都被假定为已知,且噪声项 $v$ 被假定与 $x$ 独立。
240239

241-
那么,我们应该如何将我们的先验 $p(x) = N(\hat x, \Sigma)$ 和这个新信息 $y$ 结合起来,以改进我们对导弹位置的理解呢
240+
那么,我们应该如何将我们的先验分布 $p(x) = N(\hat x, \Sigma)$ 和这个新信息 $y$ 结合起来,以提高我们对导弹位置的了解呢
242241

243-
正如你可能已经猜到的,答案是使用贝叶斯定理,它告诉我们通过以下方式将先验 $p(x)$ 更新为 $p(x \,|\, y)$:
242+
你可能已经猜到了,答案是使用贝叶斯定理,它告诉我们通过以下方式将先验分布 $p(x)$ 更新为 $p(x \,|\, y)$:
244243

245244
$$
246245
p(x \,|\, y) = \frac{p(y \,|\, x) \, p(x)} {p(y)}
@@ -257,7 +256,7 @@ $$
257256

258257
由于我们处在线性和高斯框架中,可以通过计算总体线性回归来得到更新后的密度。
259258

260-
具体来说,已知解[^f1]
259+
具体来说,我们可以得出解[^f1]
261260

262261
$$
263262
p(x \,|\, y) = N(\hat x^F, \Sigma^F)
@@ -307,13 +306,13 @@ plt.show()
307306

308307
到目前为止我们取得了什么成果?
309308

310-
我们已经获得了基于先验和当前信息的状态(导弹)当前位置的概率。
309+
我们在给定先验分布和当前信息的情况下,已经获得了状态(导弹)当前位置的概率。
311310

312311
这被称为"滤波"而不是预测,因为我们是在过滤噪声而不是展望未来。
313312

314313
* $p(x \,|\, y) = N(\hat x^F, \Sigma^F)$ 被称为*滤波分布*
315314

316-
但现在假设我们有另一个任务:预测导弹在一个时间单位(无论是什么单位)后的位置
315+
但现在假设我们有另一个任务:预测导弹在一个时间单位后(无论是什么单位)的位置
317316

318317
为此我们需要一个状态演化的模型。
319318

@@ -422,9 +421,9 @@ plt.show()
422421

423422
然后我们使用当前测量值$y$更新为$p(x \,|\, y)$。
424423

425-
最后,我们使用$\{x_t\}$的运动方程{eq}`kl_xdynam`更新为$p_{new}(x)$。
424+
最后,我们使用$\{x_t\}$的运动方程{eq}`kl_xdynam`将其更新为$p_{new}(x)$。
426425

427-
如果我们现在进入下一个周期,我们就可以再次循环,将$p_{new}(x)$作为当前先验
426+
如果我们现在进入下一个周期,我们就可以再次循环,将$p_{new}(x)$作为当前的先验分布
428427

429428
将符号$p_t(x)$替换为$p(x)$,将$p_{t+1}(x)$替换为$p_{new}(x)$,完整的递归程序为:
430429

@@ -473,15 +472,15 @@ plt.show()
473472

474473
这是一个关于 $\Sigma_t$ 的非线性差分方程。
475474

476-
{eq}`kalman_sdy` 的不动点是满足以下条件的常数矩阵 $\Sigma$:
475+
{eq}`kalman_sdy` 的固定点是满足以下条件的常数矩阵 $\Sigma$:
477476

478477
```{math}
479478
:label: kalman_dare
480479
481480
\Sigma = A \Sigma A' - A \Sigma G' (G \Sigma G' + R)^{-1} G \Sigma A' + Q
482481
```
483482

484-
方程 {eq}`kalman_sdy` 被称为离散时间里卡提差分方程
483+
方程 {eq}`kalman_sdy` 被称为离散时间黎卡提差分方程
485484

486485
方程 {eq}`kalman_dare` 被称为[离散时间代数黎卡提方程](https://en.wikipedia.org/wiki/Algebraic_Riccati_equation)
487486

@@ -498,10 +497,10 @@ plt.show()
498497
```{index} single: Kalman Filter; Programming Implementation
499498
```
500499

501-
来自 [QuantEcon.py](http://quantecon.org/quantecon-py) 包的 `Kalman` 类实现了卡尔曼滤波器
500+
[QuantEcon.py](http://quantecon.org/quantecon-py) 包的 `Kalman` 类实现了卡尔曼滤波器
502501

503502
* 实例数据包括:
504-
* 当前先验的矩 $(\hat x_t, \Sigma_t)$
503+
* 当前先验分布的矩 $(\hat x_t, \Sigma_t)$
505504
* 来自 [QuantEcon.py](http://quantecon.org/quantecon-py)[LinearStateSpace](https://github.com/QuantEcon/QuantEcon.py/blob/master/quantecon/lss.py) 类的一个实例
506505

507506
后者表示形式如下的线性状态空间模型
@@ -516,16 +515,16 @@ $$
516515

517516
其中冲击项 $w_t$ 和 $v_t$ 是独立同分布的标准正态分布。
518517

519-
为了与本讲座的符号保持一致,我们设定
518+
为了与本章节的符号保持一致,我们设定
520519

521520
$$
522521
Q := CC' \quad \text{和} \quad R := HH'
523522
$$
524523

525-
* 来自 [QuantEcon.py](http://quantecon.org/quantecon-py) 包的 `Kalman` 类有许多方法,其中一些我们会等到后续讲座中学习更高级的应用时再使用
524+
* [QuantEcon.py](http://quantecon.org/quantecon-py) 包的 `Kalman` 类有许多方法,其中一些我们会等到后续章节中学习更高级的应用时再使用
526525
* 与本讲座相关的方法有:
527526

528-
* `prior_to_filtered`,将 $(\hat x_t, \Sigma_t)$ 更新为 $(\hat x_t^F, \Sigma_t^F)$
527+
* `prior_to_filtered`,将 $(\hat x_t, \Sigma_t)$ 更新为 $(\hat x_t^F, \Sigma_t^F)$
529528
* `filtered_to_forecast`,将滤波分布更新为预测分布 -- 成为新的先验分布 $(\hat x_{t+1}, \Sigma_{t+1})$
530529
* `update`,结合上述两种方法
531530
* `stationary_values`,计算{eq}`kalman_dare`的解和相应的(稳态)卡尔曼增益
@@ -574,7 +573,7 @@ $$
574573
A, C, G, H = 1, 0, 1, 1
575574
ss = LinearStateSpace(A, C, G, H, mu_0=θ)
576575
577-
# 设置先验,初始化卡尔曼滤波器
576+
# 设定先验分布,初始化卡尔曼滤波器
578577
x_hat_0, Σ_0 = 8, 1
579578
kalman = Kalman(ss, x_hat_0, Σ_0)
580579
@@ -583,7 +582,7 @@ N = 5
583582
x, y = ss.simulate(N)
584583
y = y.flatten()
585584
586-
# 设置图形
585+
# 设定图形
587586
fig, ax = plt.subplots(figsize=(10,8))
588587
xgrid = np.linspace(θ - 5, θ + 2, 200)
589588
@@ -614,9 +613,9 @@ $$
614613
z_t := 1 - \int_{\theta - \epsilon}^{\theta + \epsilon} p_t(x) dx
615614
$$
616615

617-
对于 $t = 0, 1, 2, \ldots, T$。
616+
其中 $t = 0, 1, 2, \ldots, T$。
618617

619-
绘制 $z_t$ 与 $T$ 的关系图,设置 $\epsilon = 0.1$ 和 $T = 600$。
618+
绘制 $z_t$ 与 $T$ 的关系图,设定 $\epsilon = 0.1$ 和 $T = 600$。
620619

621620
你的图应该显示误差不规则地下降,类似这样
622621

@@ -670,21 +669,21 @@ plt.show()
670669
:label: kalman_ex3
671670
```
672671

673-
如{ref}`上文所述 <kalman_convergence>`,如果冲击序列 $\{w_t\}$ 不是退化的,那么在 $t-1$ 时刻通常无法无误地预测 $x_t$(即使我们能观察到 $x_{t-1}$ 也是如此)。
672+
如{ref}`上文所述 <kalman_convergence>`,如果冲击序列 $\{w_t\}$ 不是退化的,那么在 $t-1$ 时刻通常无法无误地预测 $x_t$(即使我们能观察到 $x_{t-1}$ ,情况也是如此)。
674673

675-
让我们现在将卡尔曼滤波得到的预测值 $\hat x_t$ 与一个**被允许**观察 $x_{t-1}$ 的竞争者进行比较。
674+
让我们现在将在卡尔曼滤波器得到的预测值 $\hat x_t$ 与一个**被允许**观察 $x_{t-1}$ 的竞争者进行比较。
676675

677676
这个竞争者将使用条件期望 $\mathbb E[ x_t \,|\, x_{t-1}]$,在这种情况下等于 $A x_{t-1}$。
678677

679678
条件期望被认为是在最小化均方误差方面的最优预测方法。
680679

681-
(更准确地说,关于 $g$ 的 $\mathbb E \, \| x_t - g(x_{t-1}) \|^2$ 的最小化器是 $g^*(x_{t-1}) := \mathbb E[ x_t \,|\, x_{t-1}]$)
680+
(更准确地说, $\mathbb E \, \| x_t - g(x_{t-1}) \|^2$ 关于 $g$ 的最小值是 $g^*(x_{t-1}) := \mathbb E[ x_t \,|\, x_{t-1}]$)
682681

683-
因此,我们是在将卡尔曼滤波与一个拥有更多信息(在能够观察潜在状态的意义上)的竞争者进行比较,并且
682+
因此,我们是在将卡尔曼滤波器与一个拥有更多信息(能够观察潜在状态)的竞争者进行比较,并且
684683

685684
在最小化平方误差方面表现最优。
686685

687-
我们的对比竞赛将以平方误差来评估
686+
我们的赛马式竞争将以平方误差来评估
688687

689688
具体来说,你的任务是生成一个图表,绘制 $\| x_t - A x_{t-1} \|^2$ 和 $\| x_t - \hat x_t \|^2$ 对 $t$ 的观测值,其中 $t = 1, \ldots, 50$。
690689

@@ -702,7 +701,7 @@ A
702701
\right)
703702
$$
704703

705-
要初始化先验密度,设定
704+
要初始化先验分布,设定
706705

707706
$$
708707
\Sigma_0
@@ -741,10 +740,10 @@ A = [[0.5, 0.4],
741740
[0.6, 0.3]]
742741
C = np.sqrt(0.3) * np.identity(2)
743742
744-
# 设置状态空间模型,初始值 x_0 设为零
743+
# 设定状态空间模型,初始值 x_0 设为零
745744
ss = LinearStateSpace(A, C, G, H, mu_0 = np.zeros(2))
746745
747-
# 定义先验密度
746+
# 定义先验分布
748747
Σ = [[0.9, 0.3],
749748
[0.3, 0.9]]
750749
Σ = np.array(Σ)
@@ -759,7 +758,7 @@ print(eigvals(A))
759758
760759
# 打印平稳 Σ
761760
S, K = kn.stationary_values()
762-
print("平稳预测误差方差:")
761+
print("平稳的预测误差方差:")
763762
print(S)
764763
765764
# 生成图表
@@ -789,7 +788,7 @@ plt.show()
789788
```{exercise}
790789
:label: kalman_ex4
791790
792-
尝试上下调整系数 $0.3$ (在 $Q = 0.3 I$ 中)
791+
尝试上下调整$Q = 0.3 I$ 中的系数 $0.3$
793792
794793
观察平稳解 $\Sigma$ (参见 {eq}`kalman_dare`) 中的对角线值如何随这个系数增减而变化。
795794

0 commit comments

Comments
 (0)