卡尔曼滤波推导中$\frac{\partial{J}}{\partial{K}}$的闭式推导求解
没问题,咱们一步步拆解这个问题,从展开代价函数到利用矩阵求导性质,最终得到闭式解。首先先明确问题里的核心方程:
卡尔曼滤波推导中的代价函数:
$$J = \text{Tr}((I-KC)P(I-KC)^T),$$
其中$\text{Tr}(\cdot)$是矩阵的迹,$K \in \mathbb{R}^{n \times q}, \ C \in \mathbb{R}^{q \times n}, \ P \in \mathbb{R}^{n \times n}$为对称矩阵,$I \in \mathbb{R}^{n \times n}$是单位矩阵。
第一步:展开并简化代价函数
首先把$J$里的矩阵乘积展开,利用迹的性质来简化计算,这能大大降低求导的复杂度:
$$(I-KC)P(I-KC)^T = P - KCP - PCTKT + KCP C^T K^T$$
接下来对每一项取迹,用到几个关键的迹性质:
- 迹的线性性:$\text{Tr}(A+B)=\text{Tr}(A)+\text{Tr}(B)$
- 迹的转置不变性:$\text{Tr}(A^T)=\text{Tr}(A)$
- 迹的循环置换性:$\text{Tr}(AB)=\text{Tr}(BA)$
对展开后的每一项分析:
- $\text{Tr}(P)$:这是个常数,对$K$求导结果为0
- $\text{Tr}(-KCP) = -\text{Tr}(KCP) = -\text{Tr}(CPK)$(用循环置换性交换$K$和$CP$的位置)
- $\text{Tr}(-PCTKT) = -\text{Tr}((PCTKT)^T) = -\text{Tr}(KCP)$(转置后矩阵的迹不变,转置后得到$KCP$)
- $\text{Tr}(KCP C^T K^T)$:记$R = CPCT$(这是卡尔曼滤波里的观测噪声协方差相关项,本身是对称矩阵),则这一项可写成$\text{Tr}(KRKT)$
把这些合并起来,$J$可以简化为:
$$J = \text{Tr}(P) - 2\text{Tr}(CPK) + \text{Tr}(KRK^T)$$
(前两个负项的迹相等,所以合并成$-2\text{Tr}(CPK)$)
第二步:逐项对$K$求偏导
现在咱们对简化后的$J$逐项求关于$K$的偏导,用到几个常用的矩阵求导公式:
1. 常数项的偏导
$\text{Tr}(P)$是常数,所以:
$$\frac{\partial}{\partial K}\text{Tr}(P) = 0$$
2. $-2\text{Tr}(CPK)$的偏导
根据公式$\frac{\partial}{\partial X}\text{Tr}(AX) = A^T$,这里$A=CP$,$X=K$,代入得:
$$\frac{\partial}{\partial K}\text{Tr}(CPK) = (CP)^T = P^T C^T$$
因为$P$是对称矩阵,$PT=P$,所以这部分简化为$PCT$,因此第二项的偏导是:
$$-2 \times PC^T$$
3. $\text{Tr}(KRK^T)$的偏导
根据公式$\frac{\partial}{\partial X}\text{Tr}(XAX^T) = X(A + AT)$,这里$A=R=CPCT$,而$R$是对称矩阵($RT=(CPCT)T=CPTCT=CPCT=R$),所以$A+A^T=2R$,代入得:
$$\frac{\partial}{\partial K}\text{Tr}(KRK^T) = K(R + R^T) = 2K R = 2K CPC^T$$
第三步:合并偏导并求极值点
把三项的偏导合并,得到$J$关于$K$的梯度:
$$\frac{\partial J}{\partial K} = -2PC^T + 2K CPC^T$$
在卡尔曼滤波中,我们需要找到使$J$最小的$K$,所以令梯度等于0:
$$-2PC^T + 2K CPC^T = 0$$
两边除以2,整理得:
$$K CPC^T = PC^T$$
如果$CPCT$可逆(卡尔曼滤波场景下通常满足这个条件),两边右乘$(CPCT)^{-1}$,就得到卡尔曼增益的闭式解:
$$K = PC^T (CPCT){-1}$$
补充验证(可选)
如果你对矩阵求导公式不太放心,可以用元素法验证:比如取$K$的任意元素$K_{ij}$,把$J$展开成元素的求和形式,对$K_{ij}$求偏导,最终得到的结果和上面的梯度表达式完全一致。
内容的提问来源于stack exchange,提问作者Looper

