KL最优变换推导
本文主要参考wiki。
the Karhunen–Loève transform (KLT),也叫the Karhunen–Loève expansion or Karhunen–Loève decomposition。
先进行无公式讲解(全是冗余)
KL变换也叫霍特林变换(Hotelling transform) ,特征向量变换(eigenvector transform)。它最初来源于随机过程领域,用于把一个随机过程表示成无穷多个正交函数的线性组合,即以无穷级数的形式表示随机过程,类似于用傅里叶级数表示一个有界区间上的函数。但区别是,傅里叶级数展开的系数是固定的(fixed)且基函数都是正弦型函数(即 either sin or cos),KL展开的系数是随机变量且基函数依赖于过程本身,要通过过程本身来计算使用的基函数。
KLT是建立在统计特性基础上的变换,它是均方差(MSE, Mean Square Error)意义下的最佳变换,因此在压缩技术中占有重要地位。压缩就是把数据的分布尽量变得随机和不相关,以便用最少的空间去存储但又能正确表示,完全随机的数据比如白噪声就无法再压缩了。
PCA,主成分分析,在图像处理等信号处理领域用的很多,实际上就是离散KL变换,虽然PCA的变换矩阵是协方差阵C而KLT是相关矩阵R,但KLT变换前的数据是中心化了的(均值为0),C和R完全一样,所以PCA就是离散KL变换,一点区别都没有!
而连续形式的KL变换和其他连续形式的各种变换(傅里叶变换,余弦变换···)一样,理论意义更强。
致命弱点:input-dependent
然而,K-L变换虽是均方差意义下的最佳变换,但必须事先知道输入的讯号,并且需经过一些繁杂的数学运算,例如协方差(covariance)以及特征向量(eigenvector)的计算,因此在工程实践上K-L转换并没有被广泛的应用,只是理论上最佳的方法,但在寻找一些不是最佳、但比较好实现的变换时,K-L变换能提供变换性能的评价标准。
以处理图片为例,在K-L转换后,图片的能量会变得集中,确实压缩了图片,但KL变换是input-dependent,即需要对每张输入图片存一个变换机制,每张图的变换基都不一样,应用上是不实际的,信息发送发没问题,每张图都能规规矩矩地KL变换压缩,很省空间地传出去,到了收方,收方就一脸蒙蔽了,,,没有一个统一的解码机制(逆变换),每张图的逆变换基都不一样,一张图都解码不出来,恢复不出来,要恢复出来只能传图的同时把变换基也传过去,收方根据每张图片的变换基进行逆变换,可是这样需要的计算量,通信量都更大,还不如用个压缩均方差大一点的但不input-dependent的能有统一编解码机制的变换呢。
下面从最小化均方差的思路出发,手推出KLT(压缩后的干货)
信源,n维向量: X = [ x 0 , x 1 , … , x n − 1 ] T , E ( X ) = 0 X=[x_0,x_1,\ldots,x_{n-1}]^T,E(X)=0 X=[x0,x1,…,xn−1]T,E(X)=0,令 K X X = E [ X X T ] K_{XX}=E[XX^T] KXX=E[XXT]为信源X的协方差矩阵,也是自相关矩阵(均值为0)。
n*n的正交变换矩阵 A T = [ φ 0 , φ 1 , … , φ n − 1 ] A^T=[\varphi_0,\varphi_1,\ldots,\varphi_{n-1}] AT=[φ0,φ1,…,φn−1], φ i T φ j = { 1 , i = j 0 , i ̸ = j \varphi_i^T\varphi_j=\left\{ \begin{aligned} & 1,i=j \\ & 0 ,i \not= j \\ \end{aligned} \right. φiTφj={1,i=j0,i̸=j
变换得到的n维向量 Y = A X = [ y 0 , y 1 , … , y n − 1 ] T , y i = φ i T X . Y=AX=[y_0,y_1,\ldots,y_{n-1}]^T,y_i=\varphi_i^TX. Y=AX=[y0,y1,…,yn−1]T,yi=φiTX.
逆变换: X = A − 1 Y = A T Y = [ φ 0 , φ 1 , … , φ n − 1 ] [ y 0 , y 1 , … , y n − 1 ] T = ∑ i = 0 n − 1 y i φ i X=A^{-1}Y=A^TY=[\varphi_0,\varphi_1,\ldots,\varphi_{n-1}][y_0,y_1,\ldots,y_{n-1}]^T=\sum_{i=0}^{n-1}y_i\varphi_i X=A−1Y=ATY=[φ0,φ1,…,φn−1][y0,y1,…,yn−1]T=∑i=0n−1yiφi
y i y_i yi是展开系数, φ i \varphi_i φi是正交基函数,用这n个基函数的线性组合可以表示这个信源X。
但是,为了压缩信源数据,我们不用所有基函数,只用其中m个基函数的线性组合去近似X:(m<n)
X ^ = ∑ i = 0 m − 1 y i φ i \hat{X}=\sum_{i=0}^{m-1}y_i\varphi_i X^=∑i=0m−1yiφi
于是就会产生误差,我们用均方差去度量 X X X和 X ^ \hat{X} X^的距离,及压缩误差:
ϵ
=
E
[
(
X
−
X
^
)
T
(
X
−
X
^
)
]
=
E
[
(
∑
i
=
m
n
−
1
y
i
φ
i
)
T
(
∑
i
=
m
n
−
1
y
i
φ
i
)
]
=
E
[
∑
i
=
m
n
−
1
y
i
2
]
=
∑
i
=
m
n
−
1
E
[
y
i
2
]
=
\epsilon=E[(X-\hat{X})^T(X-\hat{X})]=E[(\sum_{i=m}^{n-1}y_i\varphi_i)^T(\sum_{i=m}^{n-1}y_i\varphi_i)]=E[\sum_{i=m}^{n-1}y_i^2]=\sum_{i=m}^{n-1}E[y_i^2]=
ϵ=E[(X−X^)T(X−X^)]=E[(i=m∑n−1yiφi)T(i=m∑n−1yiφi)]=E[i=m∑n−1yi2]=i=m∑n−1E[yi2]=
∑
i
=
m
n
−
1
E
[
(
y
i
)
(
y
i
)
T
]
=
∑
i
=
m
n
−
1
E
[
(
φ
i
T
X
)
(
φ
i
T
X
)
T
]
=
∑
i
=
m
n
−
1
E
[
φ
i
T
X
X
T
φ
i
]
=
\sum_{i=m}^{n-1}E[(y_i)(y_i)^T]=\sum_{i=m}^{n-1}E[(\varphi_i^TX)(\varphi_i^TX)^T]=\sum_{i=m}^{n-1}E[\varphi_i^TXX^T\varphi_i]=
i=m∑n−1E[(yi)(yi)T]=i=m∑n−1E[(φiTX)(φiTX)T]=i=m∑n−1E[φiTXXTφi]=
∑
i
=
m
n
−
1
φ
i
T
K
X
X
φ
i
,
φ
i
T
φ
i
=
1.
\sum_{i=m}^{n-1}\varphi_i^TK_{XX}\varphi_i,\varphi_i^T\varphi_i=1.
i=m∑n−1φiTKXXφi,φiTφi=1.
这就是A变换下,均方误差的最终表达式了,我们的目的是找到能最小化均方误差的那组变换基KaTeX parse error: Expected '}', got '\right' at position 19: …ft{ \varphi_i \̲r̲i̲g̲h̲t̲},这就把问题转化为了一个有一组等式约束(n-m个)的最优化问题:
m
i
n
ϵ
=
∑
i
=
m
n
−
1
φ
i
T
K
X
X
φ
i
,
s
.
t
.
φ
i
T
φ
i
−
1
=
0.
min\quad \epsilon=\sum_{i=m}^{n-1}\varphi_i^TK_{XX}\varphi_i,\quad s.t. \quad \varphi_i^T\varphi_i-1=0.
minϵ=i=m∑n−1φiTKXXφi,s.t.φiTφi−1=0.
这个最优化问题当然就是要用拉格朗日乘子法求解啦,而且还属于比较简单的情况呢,只有一组约束,还是等式约束.
引入n-m个拉格朗日乘子
λ
i
\lambda_i
λi,构造拉格朗日函数:
L
(
x
,
λ
)
=
ϵ
−
∑
i
=
m
n
−
1
λ
i
(
φ
i
T
φ
i
−
1
)
L(x,\lambda)=\epsilon -\sum_{i=m}^{n-1}\lambda_i(\varphi_i^T\varphi_i-1)
L(x,λ)=ϵ−i=m∑n−1λi(φiTφi−1)
就把原来的带约束的最优化问题转化为了无约束的简单的只需要求偏微分的最优化问题:
m
i
n
L
(
x
,
λ
)
min\quad L(x,\lambda)
minL(x,λ)
直接对变量 φ i \varphi_i φi求导令为0即可:
∂ L ( x , λ ) ∂ φ i = 0 \frac{\partial L(x,\lambda)}{\partial \varphi_i}=0 ∂φi∂L(x,λ)=0
∂ [ ∑ i = m n − 1 φ i T K X X φ i − ∑ i = m n − 1 λ i ( φ i T φ i − 1 ) ] ∂ φ i = 0 \frac{\partial [\sum_{i=m}^{n-1}\varphi_i^TK_{XX}\varphi_i-\sum_{i=m}^{n-1}\lambda_i(\varphi_i^T\varphi_i-1)]}{\partial \varphi_i}=0 ∂φi∂[∑i=mn−1φiTKXXφi−∑i=mn−1λi(φiTφi−1)]=0
∑ i = m n − 1 [ 2 K X X φ i − 2 λ i φ i ] = 0 \sum_{i=m}^{n-1}[2K_{XX}\varphi_i-2\lambda_i\varphi_i]=0 i=m∑n−1[2KXXφi−2λiφi]=0
K X X φ i − λ i φ i = 0 K_{XX}\varphi_i-\lambda_i\varphi_i=0 KXXφi−λiφi=0
K X X φ i = λ i φ i K_{XX}\varphi_i=\lambda_i\varphi_i KXXφi=λiφi
取得最小均方误差的变换基正是输入向量X的自相关矩阵 K X X K_{XX} KXX的特征向量!!而引入的拉格朗日乘子们正是 K X X K_{XX} KXX的特征值。
这时我们再来算算变换后的输出向量Y的自相关矩阵
K
Y
Y
K_{YY}
KYY:
K
Y
Y
=
E
[
Y
Y
T
]
=
E
[
A
X
X
T
A
T
]
=
A
K
X
X
A
T
=
[
φ
0
T
φ
1
T
φ
2
T
⋮
φ
n
−
1
T
]
K
X
X
[
φ
0
φ
1
φ
2
⋯
φ
n
−
1
]
K_{YY}=E[YY^T]=E[AXX^TA^T]=AK_{XX}A^T= \left[ \begin{matrix} \varphi_0^T \\ \varphi_1^T \\ \varphi_2^T \\ \vdots\\ \varphi_{n-1}^T \end{matrix} \right] K_{XX} \left[ \begin{matrix} \varphi_0 & \varphi_1 & \varphi_2 \cdots & \varphi_{n-1} \\ \end{matrix} \right]
KYY=E[YYT]=E[AXXTAT]=AKXXAT=⎣⎢⎢⎢⎢⎢⎡φ0Tφ1Tφ2T⋮φn−1T⎦⎥⎥⎥⎥⎥⎤KXX[φ0φ1φ2⋯φn−1]
∵
K
X
X
φ
i
=
λ
i
φ
i
\because K_{XX}\varphi_i=\lambda_i\varphi_i
∵KXXφi=λiφi
∴ [ K X X φ i ] T = [ λ i φ i ] T \therefore [K_{XX}\varphi_i]^T=[\lambda_i\varphi_i]^T ∴[KXXφi]T=[λiφi]T
∴ φ i T K X X = λ i φ i T \therefore \varphi_i^TK_{XX}=\lambda_i\varphi_i^T ∴φiTKXX=λiφiT
∴ K Y Y = [ λ 0 φ 0 T λ 1 φ 1 T λ 2 φ 2 T ⋮ λ n − 1 φ n − 1 T ] [ φ 0 φ 1 φ 2 ⋯ φ n − 1 ] = [ λ 0 0 0 ⋯ 0 0 λ 1 0 ⋯ 0 ⋮ ⋮ ⋮ ⋱ ⋮ 0 0 0 ⋯ λ n − 1 ] \therefore K_{YY}= \left[ \begin{matrix} \lambda_0\varphi_0^T \\ \lambda_1 \varphi_1^T \\ \lambda_2 \varphi_2^T \\ \vdots\\ \lambda_{n-1} \varphi_{n-1}^T \end{matrix} \right] \left[ \begin{matrix} \varphi_0 & \varphi_1 & \varphi_2 \cdots & \varphi_{n-1} \\ \end{matrix} \right] = \left[ \begin{matrix} \lambda_0 & 0 & 0& \cdots & 0 \\ 0 & \lambda_1 & 0 &\cdots & 0 \\ \vdots & \vdots &\vdots &\ddots& \vdots & \\ 0 & 0 & 0& \cdots & \lambda_{n-1} \\ \end{matrix} \right] ∴KYY=⎣⎢⎢⎢⎢⎢⎡λ0φ0Tλ1φ1Tλ2φ2T⋮λn−1φn−1T⎦⎥⎥⎥⎥⎥⎤[φ0φ1φ2⋯φn−1]=⎣⎢⎢⎢⎡λ00⋮00λ1⋮000⋮0⋯⋯⋱⋯00⋮λn−1⎦⎥⎥⎥⎤
K Y Y K_{YY} KYY是对角阵,说明Y的元素之间不再有相关性,去相关的目的达到了,压缩变换成功!