NLMS扩展
文章目录
1. 概述
我们先从LMS开始。LMS是把最优化迭代的时间尺度和采样的时间尺度进行了融合得到的自适应滤波器。
LMS
θ ^ n + 1 = θ ^ n + μ Z ( n ) e ( n ) e ( n ) = d ( n ) − Z T ( n ) θ ^ n \hat \theta_{n+1} = \hat \theta_n + \mu Z(n)e(n) \\ e(n) = d(n) - Z^T(n) \hat \theta_n θ^n+1=θ^n+μZ(n)e(n)e(n)=d(n)−ZT(n)θ^n
为了消除LMS自适应滤波器对尺度变换的影响,我们需要对LMS做归一化。归一化就会除以Z(n)的平方,目的是为了兼顾Z(n)和e(n)的尺度
因此就有了NLMS,归一化的LMS
NLMS
θ ^ n + 1 = θ ^ n + μ Z ( n ) ∣ ∣ Z ( n ) ∣ ∣ 2 e ( n ) \hat \theta_{n+1} = \hat\theta_{n} + \mu \frac{Z(n)}{||Z(n)||^2}e(n) θ^n+1=θ^n+μ∣∣Z(n)∣∣2Z(n)e(n)
但是我们想为这个操作找到一种理论依据。也就是找到一种优化问题,让这个优化问题的最优解就是NLMS。我们之前其实已经接触过了,但是NLMS还有其他角度的理解。因此这一部分就是主要介绍NLMS的推广
2.多角度解读NLMS
2.1 高年级考试考低年级的题目的角度
之前在介绍欠定方程的时候提到过这种解读。
我们提出了这样的优化问题。就是要让n+1时刻系数和n时刻系数距离最短,同时n+1时刻的系数要满足n时刻的最优条件。这是因为,n+1时刻的数据已经做过优化了,理论上应该是满足n时刻的优化条件的。同时我们还要花费最小的成本,让步进值最短。相当于最小的成本换取最大的利益。
这个优化问题就类似于,我们要求高年级的同学去做低年级的题目,并且要求高年级的同学要拿满分,并且高年级和低年级的同学的年龄要尽可能小。
m
i
n
∣
∣
θ
^
n
+
1
−
θ
^
n
∣
∣
2
s
.
t
.
d
(
n
)
=
Z
T
(
n
)
θ
^
n
+
1
min ||\hat \theta_{n+1} - \hat \theta_n||^2 \\ s.t. \quad d(n) = Z^T(n)\hat \theta_{n+1}
min∣∣θ^n+1−θ^n∣∣2s.t.d(n)=ZT(n)θ^n+1
对这个优化问题进行求解的结果,就是NLMS。前面介绍过了,这里就不详细推导了。
1.2 高年级考试和低年级考试分数拉开差距的角度
再换一个角度继续理解NLMS,我们引入这样两个量
- e1是n时刻的数据和n时刻的系数产生的误差
- e2是n时刻的数据和n+1时刻的系数产生的误差
e
1
(
n
)
=
d
(
n
)
−
Z
T
(
n
)
θ
^
n
e_1(n) = d(n) - Z^T(n) \hat \theta_n
e1(n)=d(n)−ZT(n)θ^n
e
2
(
n
)
=
d
(
n
)
−
Z
T
(
n
)
θ
^
n
+
1
e_2(n) = d(n)- Z^T(n) \hat \theta_{n+1}
e2(n)=d(n)−ZT(n)θ^n+1
这个式子理论上应该是第二个式子误差更小。因为n+1时刻的系数是对n时刻的系数通过优化迭代得到的,因此有
∣ e 2 ( n ) ∣ < ∣ e 1 ( n ) ∣ |e_2(n)| < |e_1(n)| ∣e2(n)∣<∣e1(n)∣
因此,我们希望e2和e1之间的误差要尽可能大
e 2 ( n ) − e 1 ( n ) = − Z T ( n ) ( θ ^ n + 1 − θ ^ n ) = − Z T ( n ) Δ θ ^ n + 1 m a x ∣ e 2 ( n ) − e 1 ( n ) ∣ = m a x ∣ Z T ( n ) Δ θ ^ n + 1 ∣ e_2(n) - e_1(n) = - Z^T(n)(\hat \theta_{n+1} - \hat \theta_n) \\ = -Z^T(n) \Delta\hat \theta_{n+1} \\ max|e_2(n) - e_1(n) | = max|Z^T(n) \Delta\hat \theta_{n+1}| e2(n)−e1(n)=−ZT(n)(θ^n+1−θ^n)=−ZT(n)Δθ^n+1max∣e2(n)−e1(n)∣=max∣ZT(n)Δθ^n+1∣
这个极大化可以用柯西不等式来解
m a x ∣ Z T ( n ) Δ θ ^ n + 1 ∣ = ∣ ∣ Z T ( n ) ∣ ∣ ∗ ∣ ∣ Δ θ ^ n + 1 ∣ ∣ max|Z^T(n) \Delta\hat \theta_{n+1}| = ||Z^T(n)||*||\Delta\hat \theta_{n+1}|| max∣ZT(n)Δθ^n+1∣=∣∣ZT(n)∣∣∗∣∣Δθ^n+1∣∣
等号成立条件
Δ
θ
^
n
+
1
=
K
∗
Z
(
n
)
\Delta \hat \theta_{n+1} = K*Z(n)
Δθ^n+1=K∗Z(n)
即
∣
e
2
(
n
)
−
e
1
(
n
)
∣
=
∣
∣
Z
T
(
n
)
∣
∣
∗
∣
∣
Δ
θ
^
n
+
1
∣
∣
=
∣
∣
Z
(
n
)
∣
∣
∗
∣
K
∣
∗
∣
∣
Z
(
n
)
∣
∣
(
i
)
|e_2(n) - e_1(n) | = ||Z^T(n)||*||\Delta\hat \theta_{n+1}|| \\ = ||Z(n)||*|K|*||Z(n)|| \quad\quad(i)
∣e2(n)−e1(n)∣=∣∣ZT(n)∣∣∗∣∣Δθ^n+1∣∣=∣∣Z(n)∣∣∗∣K∣∗∣∣Z(n)∣∣(i)
我们假定,当我们取得极大化的时,有下式成立
e
2
(
n
)
=
(
1
−
μ
)
e
1
(
n
)
μ
∈
(
0
,
1
)
e_2(n) = (1-\mu)e_1(n) \\ \mu \in (0,1)
e2(n)=(1−μ)e1(n)μ∈(0,1)
e
2
(
n
)
−
e
1
(
n
)
=
−
μ
e
1
(
n
)
e_2(n) - e_1(n) = -\mu e_1(n)
e2(n)−e1(n)=−μe1(n)
∣
e
2
(
n
)
−
e
1
(
n
)
∣
=
∣
μ
∣
s
g
n
(
e
1
(
n
)
)
∗
e
1
(
n
)
(
i
i
)
|e_2(n) - e_1(n)| = |\mu| sgn(e_1(n))*e_1(n) \quad\quad(ii)
∣e2(n)−e1(n)∣=∣μ∣sgn(e1(n))∗e1(n)(ii)
联立(i)和(ii)
∣ K ∣ ∗ ∣ ∣ Z ( n ) ∣ ∣ 2 = ∣ μ ∣ s g n ( e 1 ( n ) ) ∗ e 1 ( n ) |K|*||Z(n)||^2 = |\mu| sgn(e_1(n))*e_1(n) ∣K∣∗∣∣Z(n)∣∣2=∣μ∣sgn(e1(n))∗e1(n)
可得
K = s g n ( k ) ∗ s g n ( e 1 ( n ) ) ∗ ∣ μ ∣ e 1 ( n ) ∣ ∣ Z ( n ) ∣ ∣ 2 K = sgn(k)*sgn(e_1(n))*|\mu|\frac{e_1(n)}{||Z(n)||^2} K=sgn(k)∗sgn(e1(n))∗∣μ∣∣∣Z(n)∣∣2e1(n)
θ ^ n + 1 − θ ^ n = μ ~ ∗ Z ( n ) ∣ ∣ Z ( n ) ∣ ∣ 2 ∗ e 1 ( n ) \hat \theta_{n+1} - \hat \theta_n = \widetilde \mu* \frac{Z(n)}{||Z(n)||^2}*e_1(n) θ^n+1−θ^n=μ ∗∣∣Z(n)∣∣2Z(n)∗e1(n)
其中
μ ~ = s g n ( k ) ∗ s g n ( e 1 ( n ) ) ∗ ∣ μ ∣ \widetilde \mu = sgn(k)*sgn(e_1(n))*|\mu| μ =sgn(k)∗sgn(e1(n))∗∣μ∣
最终,我们从另外一个角度得到了规范化操作的理论支撑。
如果说刚才是让高年级做低年级的题目,现在就是要高年级做高年级的题目,低年级做低年级的题目,但是高年级的得分要与低年级的得分拉开差距。
2.3 从预测的角度
我们还有其他角度看到NLMS
我们假设第n个系数和最优解之间的误差
ϵ
(
n
)
=
θ
^
n
−
θ
o
p
t
\epsilon(n) = \hat \theta_n - \theta_{opt}
ϵ(n)=θ^n−θopt
则有下式成立
e ( n ) = d ( n ) − Z T ( n ) θ ^ n = d ( n ) − Z T ( n ) ( θ o p t + ϵ ( n ) ) ( 1 ) e(n) = d(n) - Z^T(n) \hat \theta_n = d(n) - Z^T(n)(\theta_{opt} +\epsilon(n)) \quad\quad(1) e(n)=d(n)−ZT(n)θ^n=d(n)−ZT(n)(θopt+ϵ(n))(1)
d
(
n
)
=
Z
T
(
n
)
θ
o
p
t
(
2
)
d(n) = Z^T(n) \theta_{opt} \quad\quad(2)
d(n)=ZT(n)θopt(2)
把(2)代入(1)中可得
e ( n ) = Z T ( n ) ϵ ( n ) ( 3 ) e(n) = Z^T(n) \epsilon(n) \quad\quad(3) e(n)=ZT(n)ϵ(n)(3)
现在我们希望误差尽可能小,希望误差可以等于0,如果误差是0,那么数据和ε之间应该是正交的。ε一般被叫做残差。
但是数据和残差不一定是正交的,我们就要对它做正交化
这其实也是一种自适应的思想,我们就把这个正交化的结果叫做ε(2),得到的这个结果是一种预测。
ϵ
(
2
)
=
ϵ
(
1
)
−
P
r
o
j
Z
(
1
)
ϵ
(
1
)
\epsilon(2)=\epsilon(1) - Proj_{Z(1)}\epsilon(1)
ϵ(2)=ϵ(1)−ProjZ(1)ϵ(1)
同时
ϵ ( 2 ) = θ ^ 2 − θ o p t \epsilon(2) = \hat \theta_2 - \theta_{opt} ϵ(2)=θ^2−θopt
然后我们继续做正交化
ϵ ( 3 ) = ϵ ( 2 ) − P r o j Z ( 2 ) ϵ ( 2 ) \epsilon(3)=\epsilon(2) - Proj_{Z(2)}\epsilon(2) ϵ(3)=ϵ(2)−ProjZ(2)ϵ(2)
我们做的这个事情与LMS思路不太一样,我们就是在做预测
ϵ ( n + 1 ) = ϵ ( n ) − P r o j Z ( n ) ϵ ( n ) \epsilon(n+1)=\epsilon(n) - Proj_{Z(n)}\epsilon(n) ϵ(n+1)=ϵ(n)−ProjZ(n)ϵ(n)
P
r
o
j
Z
(
n
)
ϵ
(
n
)
=
Z
(
n
)
(
Z
T
(
n
)
Z
(
n
)
)
−
1
Z
(
n
)
ϵ
(
n
)
Proj_{Z(n)}\epsilon(n) = Z(n)(Z^T(n)Z(n))^{-1} Z(n) \epsilon(n)
ProjZ(n)ϵ(n)=Z(n)(ZT(n)Z(n))−1Z(n)ϵ(n)
因为Z(n)是一个数,因此
ϵ ( n + 1 ) = ϵ ( n ) − Z ( n ) ( Z T ( n ) Z ( n ) ) − 1 Z ( n ) ϵ ( n ) = ϵ ( n ) − Z ( n ) Z T ( n ) ϵ ( n ) ∣ ∣ Z ( n ) ∣ ∣ 2 ( 4 ) \epsilon(n+1) = \epsilon(n) -Z(n)(Z^T(n)Z(n))^{-1} Z(n) \epsilon(n) \\ = \epsilon(n) - \frac{Z(n)Z^T(n) \epsilon(n)}{||Z(n)||^2} \quad\quad(4) ϵ(n+1)=ϵ(n)−Z(n)(ZT(n)Z(n))−1Z(n)ϵ(n)=ϵ(n)−∣∣Z(n)∣∣2Z(n)ZT(n)ϵ(n)(4)
把(4)代入(3)中得
ϵ ( n + 1 ) = ϵ ( n ) − Z ( n ) e ( n ) ∣ ∣ Z ( n ) ∣ ∣ 2 \epsilon(n+1) = \epsilon(n)-\frac{Z(n)e(n)}{||Z(n)||^2} ϵ(n+1)=ϵ(n)−∣∣Z(n)∣∣2Z(n)e(n)
因为
ϵ ( n + 1 ) = θ ^ n + 1 − θ o p t ϵ ( n ) = θ ^ n − θ o p t \epsilon(n+1) = \hat \theta_{n+1} - \theta_{opt} \\ \epsilon(n) = \hat \theta_n - \theta_{opt} ϵ(n+1)=θ^n+1−θoptϵ(n)=θ^n−θopt
最终能够得到
θ
^
n
+
1
=
θ
^
n
−
Z
(
n
)
∣
∣
Z
(
n
)
∣
∣
2
e
(
n
)
\hat \theta_{n+1} = \hat \theta_{n} - \frac{Z(n)}{||Z(n)||^2}e(n)
θ^n+1=θ^n−∣∣Z(n)∣∣2Z(n)e(n)
2.4 引入对角加载的LMS
NLMS自身有一定的缺陷。因为如果数据Z是0,或者Z很小,就会引起数值稳定性的剧烈波动。
从调参的角度,为了提高数值稳定性,NLMS可以进一步处理
θ ^ n + 1 = θ ^ n − μ Z ( n ) ϵ + ∣ ∣ Z ( n ) ∣ ∣ 2 e ( n ) \hat \theta_{n+1} = \hat \theta_{n} - \mu \frac{Z(n)}{\epsilon+||Z(n)||^2}e(n) θ^n+1=θ^n−μϵ+∣∣Z(n)∣∣2Z(n)e(n)
这个操作就是对角加载。但是为了避免被人说是调参,我们就要为这个动作找到理论根据。
对角加载其实跟正则化是有关系的,我们从正则化角度来看待这个事情
我们从牛顿法说起
θ ^ 1 → θ ^ 2 → . . . → θ ^ n \hat \theta_1 \rightarrow \hat \theta_2 \rightarrow ... \rightarrow \hat \theta_n θ^1→θ^2→...→θ^n
m i n θ f ( θ ) f ( θ ^ n + Δ ) = f ( θ ^ n ) + ∇ θ f T ( θ ^ n ) Δ + Δ T H f ( θ ^ n ) Δ + O ( ∣ ∣ Δ ∣ ∣ 2 ) min_\theta f(\theta) \\ f(\hat \theta_n +\Delta) = f(\hat \theta_n) + \nabla_\theta f^T(\hat \theta_n) \Delta +\Delta^T H_f(\hat \theta_n)\Delta + O(||\Delta||^2) minθf(θ)f(θ^n+Δ)=f(θ^n)+∇θfT(θ^n)Δ+ΔTHf(θ^n)Δ+O(∣∣Δ∣∣2)
牛顿法就是要在梯度法的基础上,加入hessian矩阵
要求极值,就求梯度
∇ Δ ( ∇ θ f T ( θ ^ n ) Δ + Δ T H f ( θ ^ n ) Δ ) ) = ∇ θ f T ( θ ^ n ) + H f ( θ ^ n ) Δ Δ = − H f − 1 ( θ ^ n ) ∇ θ f T ( θ ^ n ) \nabla_\Delta(\nabla_\theta f^T(\hat \theta_n) \Delta +\Delta^T H_f(\hat \theta_n)\Delta)) \\ = \nabla_\theta f^T(\hat \theta_n) + H_f(\hat \theta_n) \Delta \\ \Delta = -H_f^{-1}(\hat \theta_n) \nabla_\theta f^T(\hat \theta_n) ∇Δ(∇θfT(θ^n)Δ+ΔTHf(θ^n)Δ))=∇θfT(θ^n)+Hf(θ^n)ΔΔ=−Hf−1(θ^n)∇θfT(θ^n)
因此,根据牛顿法
θ ^ n + 1 = θ ^ n − μ H f − 1 ( θ ^ n ) ∇ θ f ( θ ^ n ) \hat \theta_{n+1} = \hat \theta_n - \mu H_f^{-1}(\hat \theta_n) \nabla_\theta f(\hat \theta_n) θ^n+1=θ^n−μHf−1(θ^n)∇θf(θ^n)
计算一下梯度和海森矩阵
f ( θ ) = ∣ ∣ d ( n ) − Z T ( n ) θ ∣ ∣ 2 = ∣ d ( n ) ∣ 2 − 2 d ( n ) Z T ( n ) θ + θ T ( Z ( n ) Z T ( n ) ) θ f(\theta) = ||d(n)-Z^T(n)\theta||^2 \\ = |d(n)|^2 - 2d(n)Z^T(n)\theta +\theta^T (Z(n)Z^T(n)) \theta f(θ)=∣∣d(n)−ZT(n)θ∣∣2=∣d(n)∣2−2d(n)ZT(n)θ+θT(Z(n)ZT(n))θ
H f ( θ ) = 2 Z ( n ) Z T ( n ) ∇ θ f = − 2 d ( n ) Z ( n ) + 2 Z ( n ) Z T ( n ) θ = − 2 Z ( n ) ( d ( n ) − Z T ( n ) θ ) H_f(\theta) = 2Z(n)Z^T(n) \\ \nabla_\theta f =- 2d(n)Z(n) +2Z(n)Z^T(n) \theta \\ = -2Z(n)(d(n) - Z^T(n)\theta) Hf(θ)=2Z(n)ZT(n)∇θf=−2d(n)Z(n)+2Z(n)ZT(n)θ=−2Z(n)(d(n)−ZT(n)θ)
我们发现海森矩阵是个秩一矩阵,没法求逆
为了能够求逆,我们就在海森矩阵的基础上做正则化
f ( θ ) = ∣ ∣ d ( n ) − Z T ( n ) θ ∣ ∣ 2 + ϵ ∣ ∣ θ ∣ ∣ 2 f(\theta) = ||d(n)-Z^T(n) \theta||^2 +\epsilon ||\theta||^2 f(θ)=∣∣d(n)−ZT(n)θ∣∣2+ϵ∣∣θ∣∣2
H f ( θ ) = 2 Z ( n ) Z T ( n ) + 2 ϵ I H_f(\theta) = 2Z(n)Z^T(n) + 2\epsilon I Hf(θ)=2Z(n)ZT(n)+2ϵI
现在就可逆了。因为前面的矩阵是对称并且正定的
Z
(
n
)
Z
T
(
n
)
⇒
Q
T
Λ
Q
ϵ
I
⇒
ϵ
Q
T
Q
Z(n)Z^T(n) \Rightarrow Q^T \Lambda Q \\ \epsilon I \Rightarrow \epsilon Q^T Q
Z(n)ZT(n)⇒QTΛQϵI⇒ϵQTQ
二者相加,所有的对角线元就都是正的了
∇ θ f = − 2 Z ( n ) ( d ( n ) − Z T ( n ) θ ) + 2 ϵ θ \nabla_\theta f = -2Z(n)(d(n)-Z^T(n)\theta) +2\epsilon \theta ∇θf=−2Z(n)(d(n)−ZT(n)θ)+2ϵθ
下面我们就可以使用牛顿法做迭代了
θ ^ n + 1 = θ ^ n + μ ( Z ( n ) Z T ( n ) + ϵ I ) − 1 ( Z ( n ) ( d ( n ) − Z T ( n ) θ ) − ϵ θ ) \hat \theta_{n+1} = \hat \theta_n +\mu (Z(n)Z^T(n) + \epsilon I)^{-1}(Z(n)(d(n)-Z^T(n)\theta)-\epsilon \theta) θ^n+1=θ^n+μ(Z(n)ZT(n)+ϵI)−1(Z(n)(d(n)−ZT(n)θ)−ϵθ)
e ( n ) = d ( n ) − Z T ( n ) θ e(n)= d(n)-Z^T(n)\theta e(n)=d(n)−ZT(n)θ
我们用一下矩阵求逆公式
( A + B C D ) − 1 = A − 1 − A − 1 B ( C − 1 + D A − 1 B ) − 1 D A − 1 (A+BCD)^{-1} = A^{-1} - A^{-1} B(C^{-1} +DA^{-1}B)^{-1}DA^{-1} (A+BCD)−1=A−1−A−1B(C−1+DA−1B)−1DA−1
( ϵ I + Z ( n ) Z T ( n ) ) − 1 = ϵ − 1 I − ϵ − 1 Z ( n ) ( 1 + ϵ − 1 Z T ( n ) Z ( n ) ) − 1 Z T ( n ) ϵ − 1 (\epsilon I+Z(n)Z^T(n))^{-1} = \epsilon^{-1} I - \epsilon^{-1}Z(n)(1+\epsilon^{-1}Z^T(n)Z(n))^{-1}Z^T(n) \epsilon^{-1} (ϵI+Z(n)ZT(n))−1=ϵ−1I−ϵ−1Z(n)(1+ϵ−1ZT(n)Z(n))−1ZT(n)ϵ−1
( ϵ I + Z ( n ) Z T ( n ) ) − 1 Z ( n ) = ϵ − 1 Z ( n ) − ϵ − 1 Z ( n ) ϵ − 1 Z T ( n ) Z ( n ) 1 + ϵ − 1 Z T ( n ) Z ( n ) = ϵ − 1 Z ( n ) ( 1 − ϵ − 1 Z T ( n ) Z ( n ) 1 + ϵ − 1 Z T ( n ) Z ( n ) ) = ϵ − 1 Z ( n ) 1 + ϵ − 1 Z T ( n ) Z ( n ) = Z ( n ) ϵ + ∣ ∣ Z ( n ) ∣ ∣ 2 (\epsilon I+Z(n)Z^T(n))^{-1}Z(n) = \epsilon^{-1} Z(n) - \epsilon^{-1}Z(n) \frac{\epsilon^{-1}Z^T(n)Z(n)}{1+\epsilon^{-1}Z^T(n)Z(n)} \\ =\epsilon^{-1} Z(n)(1-\frac{\epsilon^{-1}Z^T(n)Z(n)}{1+\epsilon^{-1}Z^T(n)Z(n)}) = \frac{\epsilon^{-1} Z(n)}{1+\epsilon^{-1}Z^T(n)Z(n)} \\ =\frac{ Z(n)}{\epsilon+||Z(n)||^2} (ϵI+Z(n)ZT(n))−1Z(n)=ϵ−1Z(n)−ϵ−1Z(n)1+ϵ−1ZT(n)Z(n)ϵ−1ZT(n)Z(n)=ϵ−1Z(n)(1−1+ϵ−1ZT(n)Z(n)ϵ−1ZT(n)Z(n))=1+ϵ−1ZT(n)Z(n)ϵ−1Z(n)=ϵ+∣∣Z(n)∣∣2Z(n)
因此,我们就得到了
θ ^ n + 1 = θ ^ n + μ Z ( n ) ϵ + ∣ ∣ Z ( n ) ∣ ∣ 2 e ( n ) − μ ( ϵ I + Z ( n ) Z T ( n ) ) − 1 ϵ θ ^ n \hat \theta_{n+1} = \hat \theta_n +\mu \frac{ Z(n)}{\epsilon+||Z(n)||^2} e(n) - \mu (\epsilon I +Z(n)Z^T(n))^{-1} \epsilon \hat \theta_n θ^n+1=θ^n+μϵ+∣∣Z(n)∣∣2Z(n)e(n)−μ(ϵI+Z(n)ZT(n))−1ϵθ^n
但是当初算这个事情的人,海森矩阵加了正则化项,但是一阶导数没加正则化,最后就凑出来了个我们需要的结果
θ ^ n + 1 = θ ^ n + μ Z ( n ) ϵ + ∣ ∣ Z ( n ) ∣ ∣ 2 e ( n ) \hat \theta_{n+1} = \hat \theta_n +\mu \frac{ Z(n)}{\epsilon+||Z(n)||^2} e(n) θ^n+1=θ^n+μϵ+∣∣Z(n)∣∣2Z(n)e(n)
这个表面上是凑数据,实际上,这个还是可以做的。因为解析计算本来就是个近似,瞎搞的地方本来就很多,不差这一个。
3. NLMS的变种
3.1 Generalized NLMS
3.1.1 最优化条件解法
下面我们要对NLMS进行推广,推广到仿射投影的自适应方法上
N L M S ⇒ Affine Projection Adaptive Method(Generalized NLMS) NLMS \Rightarrow \text{Affine Projection Adaptive Method(Generalized NLMS)} NLMS⇒Affine Projection Adaptive Method(Generalized NLMS)
我们对NLMS约束条件是
$$
d(n) = Z^T(n) \hat \theta_{n+1} \
min_{\hat \theta_{n+1}} || \hat \theta_{n+1} - \hat \theta_n||^2
$$
广义的NLMS要求更多,要求不仅高中生做初中生题目要满分,做以前的所有题目都要满分
d ( k ) = Z T ( k ) θ ^ n + 1 , k = 1 , . . . , n d(k) = Z^T(k)\hat \theta_{n+1},k = 1,...,n d(k)=ZT(k)θ^n+1,k=1,...,n
我们来做最优化
Z ~ ( n ) = ( Z ( 1 ) , . . . , Z ( n ) ) Z ~ T ( n ) = ( Z T ( 1 ) . . . Z T ( n ) ) Z ~ T ( n ) θ = ( Z T ( 1 ) θ . . . Z T ( n ) θ ) \widetilde Z(n) = (Z(1),...,Z(n)) \\ \widetilde Z^T(n) = \begin{pmatrix} Z^T(1) \\ ... \\ Z^T(n) \end{pmatrix} \widetilde Z^T(n) \theta= \begin{pmatrix} Z^T(1)\theta \\ ... \\ Z^T(n)\theta \end{pmatrix} Z (n)=(Z(1),...,Z(n))Z T(n)=⎝⎛ZT(1)...ZT(n)⎠⎞Z T(n)θ=⎝⎛ZT(1)θ...ZT(n)θ⎠⎞
令
d ( n ) ~ = ( d ( 1 ) , . . . , d ( n ) ) T \widetilde {d(n) }= (d(1),...,d(n))^T d(n) =(d(1),...,d(n))T
因为d全部都是数字,我们加个转置,让它立起来
约束条件为
m
i
n
θ
n
+
1
∣
∣
θ
^
n
+
1
−
θ
^
n
∣
∣
2
,
s
.
t
.
d
~
(
n
)
=
Z
~
T
(
n
)
θ
^
n
+
1
min_{\theta_{n+1}} ||\hat \theta_{n+1} - \hat \theta_n ||^2, \quad s.t. \quad \widetilde d(n) = \widetilde Z^T(n) \hat \theta_{n+1}
minθn+1∣∣θ^n+1−θ^n∣∣2,s.t.d
(n)=Z
T(n)θ^n+1
我们进行拉格朗日数乘法
L ( θ ^ n + 1 , λ ) = 1 2 ∣ ∣ θ ^ n + 1 − θ ^ n ∣ ∣ 2 − λ T ( d ( n ) ~ − Z ~ T ( n ) θ ^ n + 1 ) L(\hat \theta_{n+1},\lambda) = \frac{1}{2} ||\hat \theta_{n+1} - \hat \theta_n||^2 - \lambda^T (\widetilde {d(n) } - \widetilde Z^T(n) \hat \theta_{n+1}) L(θ^n+1,λ)=21∣∣θ^n+1−θ^n∣∣2−λT(d(n) −Z T(n)θ^n+1)
∇ θ ^ n + 1 L = θ ^ n + 1 − θ n + Z ~ ( n ) λ = 0 ⇒ θ ^ n + 1 = θ ^ n − Z ~ ( n ) λ \nabla \hat \theta_{n+1} L = \hat \theta_{n+1} - \theta_n + \widetilde Z(n) \lambda = 0 \\ \Rightarrow \hat \theta_{n+1} = \hat \theta_n - \widetilde Z(n) \lambda ∇θ^n+1L=θ^n+1−θn+Z (n)λ=0⇒θ^n+1=θ^n−Z (n)λ
代入约束条件中
d ( n ) ~ = Z ~ T ( n ) θ ^ n + 1 = Z ~ T ( n ) ( θ ^ n − Z ~ ( n ) λ ) d ( n ) ~ − Z ~ T ( n ) θ ^ n = − ( Z ~ T ( n ) Z ~ ( n ) ) λ \widetilde{ d(n)} = \widetilde Z^T(n) \hat \theta_{n+1} = \widetilde Z^T(n) (\hat \theta_n - \widetilde Z(n) \lambda) \\ \widetilde{ d(n)} - \widetilde Z^T(n)\hat \theta_n = -(\widetilde Z^T(n) \widetilde Z(n)) \lambda d(n) =Z T(n)θ^n+1=Z T(n)(θ^n−Z (n)λ)d(n) −Z T(n)θ^n=−(Z T(n)Z (n))λ
λ = − ( Z ~ T ( n ) Z ~ ( n ) ) − 1 ( e ( n ) ~ ) \lambda = - (\widetilde Z^T(n) \widetilde Z(n))^{-1} (\widetilde{ e(n)}) λ=−(Z T(n)Z (n))−1(e(n) )
我们的自适应结果就是
θ ^ n + 1 = θ ^ n + Z ~ ( n ) ( Z ~ T ( n ) Z ~ ( n ) ) − 1 e ( n ) ~ \hat \theta_{n+1} = \hat \theta_n + \widetilde Z(n)(\widetilde Z^T(n) \widetilde Z(n))^{-1} \widetilde {e(n)} θ^n+1=θ^n+Z (n)(Z T(n)Z (n))−1e(n)
为什么说是推广的呢?因为与NLMS相比,输入数据是个矩阵了,就不能放到分母上了,只能用逆的形式,但是仍然是个归一化的形式。
3.1.2 伪逆解法
我们已经做过的事情可以再做一次
Δ θ ^ n + 1 = θ ^ n + 1 − θ ^ n e ( n ) ~ = d ( n ) ~ − Z ~ T ( n ) θ ^ n = Z ~ T ( n ) θ ^ n + 1 − Z ~ T ( n ) θ ^ n = Z ~ T ( n ) Δ θ ^ n + 1 \Delta \hat \theta_{n+1} = \hat \theta_{n+1} - \hat \theta_n \\ \widetilde {e(n)} = \widetilde {d(n)} - \widetilde Z^T(n)\hat \theta_n \\ =\widetilde Z^T(n) \hat \theta_{n+1} - \widetilde Z^T(n) \hat \theta_n \\ = \widetilde Z^T(n) \Delta \hat \theta_{n+1} Δθ^n+1=θ^n+1−θ^ne(n) =d(n) −Z T(n)θ^n=Z T(n)θ^n+1−Z T(n)θ^n=Z T(n)Δθ^n+1
优化条件
m i n ∣ ∣ Δ θ ^ n + 1 ∣ ∣ 2 s . t . e ( n ) ~ = Z ~ T ( n ) Δ θ ^ n + 1 min ||\Delta \hat \theta_{n+1} ||^2 \quad s.t. \quad \widetilde {e(n)} = \widetilde Z^T(n) \Delta \hat \theta_{n+1} min∣∣Δθ^n+1∣∣2s.t.e(n) =Z T(n)Δθ^n+1
然后我们发现这是对欠定方程的最小模最小二乘。因为我们假定n是小于Z的维度的。
我们用伪逆来表示这个解
Δ
θ
^
n
+
1
=
(
Z
~
T
(
n
)
)
+
e
(
n
)
~
=
Z
~
(
n
)
(
Z
~
T
(
n
)
Z
~
(
n
)
)
−
1
e
(
n
)
~
\Delta \hat \theta_{n+1} = (\widetilde Z^T(n))^+ \widetilde {e(n)} \\ = \widetilde Z(n)(\widetilde Z^T(n) \widetilde Z(n))^{-1} \widetilde {e(n)}
Δθ^n+1=(Z
T(n))+e(n)
=Z
(n)(Z
T(n)Z
(n))−1e(n)
欠定方程的伪逆是这样表示的
A
+
=
A
T
(
A
A
T
)
−
1
A^+ = A^T(AA^T)^{-1}
A+=AT(AAT)−1
θ ^ n + 1 = θ ^ n + Z ~ ( n ) ( Z ~ T ( n ) Z ~ ( n ) ) − 1 e ( n ) ~ \hat \theta_{n+1} = \hat \theta_{n}+\widetilde Z(n)(\widetilde Z^T(n) \widetilde Z(n))^{-1} \widetilde {e(n)} θ^n+1=θ^n+Z (n)(Z T(n)Z (n))−1e(n)
我们发现跟刚才的结果是一样的
3.1.3 引入对角加载项
万一这个逆求不出来怎么办?
就用对角加载
ϵ I \epsilon I ϵI
L ( θ ) = ∣ ∣ d ( n ) ~ − Z ~ T ( n ) θ ∣ ∣ 2 + ϵ ∣ ∣ θ ∣ ∣ 2 L(\theta) = ||\widetilde{ d(n)} - \widetilde Z^T(n) \theta||^2 + \epsilon ||\theta||^2 L(θ)=∣∣d(n) −Z T(n)θ∣∣2+ϵ∣∣θ∣∣2
牛顿法的结果
θ ^ n + 1 = θ ^ n + ( ϵ I + Z ~ ( n ) Z ~ T ( n ) ) − 1 Z ~ ( n ) e ( n ) ~ \hat \theta_{n+1} = \hat \theta_n + (\epsilon I + \widetilde Z(n)\widetilde Z^T(n))^{-1} \widetilde Z(n) \widetilde {e(n)} θ^n+1=θ^n+(ϵI+Z (n)Z T(n))−1Z (n)e(n)
根据矩阵求逆公式
( ϵ I + Z ~ ( n ) Z ~ T ( n ) ) − 1 Z ~ ( n ) = Z ~ ( n ) ( ϵ I + Z ~ T ( n ) Z ~ ( n ) ) − 1 (\epsilon I + \widetilde Z(n)\widetilde Z^T(n))^{-1} \widetilde Z(n) = \widetilde Z(n)(\epsilon I + \widetilde Z^T(n)\widetilde Z(n))^{-1} (ϵI+Z (n)Z T(n))−1Z (n)=Z (n)(ϵI+Z T(n)Z (n))−1
我们得到了广义的NLMS
θ ^ n + 1 = Z ~ ( n ) ( ϵ I + Z ~ T ( n ) Z ~ ( n ) ) − 1 e ( n ) ~ \hat \theta_{n+1} = \widetilde Z(n)(\epsilon I + \widetilde Z^T(n)\widetilde Z(n))^{-1} \widetilde {e(n)} θ^n+1=Z (n)(ϵI+Z T(n)Z (n))−1e(n)
3.1.4 小结
- 不同的角度看待同一个事情是非常有价值的
- 我们学过的知识和技巧都是有用的:拉格朗日、正则化、伪逆、矩阵求逆公式、牛顿法
3.2 sgn-LMS
下面我们再提一下LMS的其他变种
- sgn-LMS
这个其实之前也介绍过,但是这里要也给他提供一个优化任务
θ ^ n + 1 = θ ^ n + μ Z ( n ) e ( n ) \hat \theta_{n+1} =\hat \theta_n + \mu Z(n) e(n) θ^n+1=θ^n+μZ(n)e(n)
θ
^
n
+
1
=
θ
^
n
+
μ
Z
(
n
)
s
g
n
(
e
(
n
)
)
\hat \theta_{n+1} =\hat \theta_n + \mu Z(n) sgn(e(n))
θ^n+1=θ^n+μZ(n)sgn(e(n))
为了提高计算效率,就取个符号,避免了乘法运算。在8086中,取符号相比于乘法,快了64倍。
那么sgn-LMS有没有理论根基的呢
这个是用最小一乘作为损失函数。目的是能够提高稳健性。
L
(
θ
)
=
∣
d
(
n
)
−
Z
T
(
n
)
θ
∣
L(\theta) = |d(n) - Z^T(n) \theta|
L(θ)=∣d(n)−ZT(n)θ∣
在均方意义下进行数值逼近得到的是均值
$$
min E|Z-a|^2 \
\Rightarrow a = E(Z)
$$
如果在绝对值意义下进行数值逼近,得到的是中值
m i n E ∣ Z − a ∣ ⇒ a = m e d ( Z ) min E|Z-a| \\ \Rightarrow a = med(Z) minE∣Z−a∣⇒a=med(Z)
Sample Mean : x 1 + . . . + x n n Sample Median : ( x 1 , . . . , x n ) 并 且 ( x 1 ≤ . . ≤ x n ) ⇒ x ( n 2 ) \text{Sample Mean} : \frac{x_1+...+x_n}{n} \\ \text{Sample Median}: (x_1,...,x_n) 并且(x_1 \leq.. \leq x_n) \Rightarrow x(\frac{n}{2}) Sample Mean:nx1+...+xnSample Median:(x1,...,xn)并且(x1≤..≤xn)⇒x(2n)
样本均值最怕的就是野值。中位数就不怕野值。中位数就来源于最小一乘。中值能够克服冲激噪声。
我们要对绝对值求导。绝对值本来是不可导的。如果想要求导,求的是次梯度。
次梯度在凸优化中是基本工具
这里我们简单的写一个。对次梯度不做展开了
d d x ∣ x ∣ = { 1 x>0 0 x=0 − 1 x<0 = s g n ( x ) \frac{d}{dx}|x| = \begin{cases} 1 &\text{ x>0 } \\ 0&\text{x=0 } \\ -1&\text{x<0 } \end{cases} = sgn(x) dxd∣x∣=⎩⎪⎨⎪⎧10−1 x>0 x=0 x<0 =sgn(x)
∇ θ L = s g n ( d ( n ) − Z T ( n ) θ ) Z ( n ) = s g n ( e ( n ) ) Z ( n ) \nabla_\theta L = sgn(d(n)- Z^T(n)\theta)Z(n) \\ = sgn(e(n))Z(n) ∇θL=sgn(d(n)−ZT(n)θ)Z(n)=sgn(e(n))Z(n)
就得到了带符号的LMS。说明符号LMS是在最小一乘意义下优化
- double sign-LMS
θ ^ n + 1 = θ ^ n + μ s g n ( Z ( n ) ) s g n ( e ( n ) ) \hat \theta_{n+1} =\hat \theta_n + \mu sgn(Z(n)) sgn(e(n)) θ^n+1=θ^n+μsgn(Z(n))sgn(e(n))
这个可能就有点做过了。但是这个在有些场合确实还是在用,而且还很好用。
4. Ensemble Learning(集成学习)
下面继续谈一下Ensemble Learning(集成学习)
一句话总结:普通的学习是一个模型多组数据。集成学习是多个模型,一组数据。集成学习是很多个弱模型。这个问题的关键在于,数据怎么用。
我们来谈其中的三种方法
4.1 Bagging
实际上就是BootStrap Aggregating
因为这是个分类问题,y至少有两个值
x 1 , . . . , x n y 1 , . . . , y n y ∈ { − 1 , 1 } x_1,...,x_n \\ y_1,...,y_n \\ y \in \{-1,1\} x1,...,xny1,...,yny∈{−1,1}
我们在这n组数据中,随机取m个。然后把这个数据交给第一个模型得到结果m1
( ( x n 1 y n 1 ) . . . ( x n m y n m ) ) → m 1 (\begin{pmatrix} x_{n_1}\\ y_{n_1} \end{pmatrix} ... \begin{pmatrix} x_{n_m}\\ y_{n_m} \end{pmatrix} ) \rightarrow m_1 ((xn1yn1)...(xnmynm))→m1
然后我们在随机取m个,把数据交给第二个模型,得到结果m2。假设我们有k个模型,最终就得到k个结果。我们最终得到的结果就是k个结果的平均
m ˉ = m 1 + . . + m k k \bar m = \frac{m_1+..+m_k}{k} mˉ=km1+..+mk
为什么我们要从中随机挑选呢?
因为我们使用的是弱模型,给他们非常充分的数据没有作用,随便给一点就到头了。当数据彼此之间没有很大差异,最简单的方法就是随机去取。
这就是BootStrap Aggregating做的事情。也就是希望三个臭皮匠赛过诸葛亮。
4.2 Random forest
然后是随机森林
我们要做好多个决策树。因为这里面的决策树也是弱模型。feature和data也是给每个决策树都随便分配一点。可能每个决策树都只关注其中一个点
- feature
- data
4.3 Boosting
boosting也是有k个弱模型,但是每个模型都给全部的数据,但是里面会有权重。类似一个错题本的作用。一开始数据给的权重是相等的。然后开始进行循环。如果某个模型处理完了以后,算一个αi,看看刚练好的模型在第j个数据上做错了,就把它留下来。最后加起来,上一轮做错的数据权重就会增大。然后对α进行了一个变换,然后对权重重新变换。做对了权重减少,做错了权重减小。相当于把难做的题目留下来,如果都做对了权重就低,就不要了。
α i = ∑ j = 1 k ω i − 1 ( j ) I ( m i ( x j ) = y i ) \alpha_i = \sum_{j=1}^k \omega_{i-1}(j)I(m_i(x_j) \cancel = y_i) αi=j=1∑kωi−1(j)I(mi(xj)= yi)
β i = g ( α i ) \beta_i = g(\alpha_i) βi=g(αi)
ω i ( j ) = { ω i − 1 ( j ) e x p ( β i ) m i ( x j ) = y j ω i − 1 ( j ) e x p ( − β i ) m i ( x j ) = y j \omega_i(j) = \begin{cases} \omega_{i-1}(j)exp(\beta_i) & m_i(x_j) \cancel = y_j \\ \omega_{i-1}(j)exp(-\beta_i) & m_i(x_j) = y_j \end{cases} ωi(j)={ωi−1(j)exp(βi)ωi−1(j)exp(−βi)mi(xj)= yjmi(xj)=yj
在相机里就是用的类似的这种思路。
总之,Ensemble Learning的套路就是随机选和错题本。