随机梯度下降算法简介

之前的章节中介绍了利用最速下降算法可以实现维纳滤波器的最优解(LMMSE),其最优解的形式为:
w0=R−1Pw_{0} = R^{- 1}Pw0=R1P

它基于两个假设:

  1. 环境的联合平稳,即输入u(n)u(n)u(n)以及期望输出d(n)d(n)d(n)是联合平稳的。

  2. 环境的有关信息,即u(n)u(n)u(n)构成的自相关矩阵R\mathbf{R}R,以及由u(n)u(n)u(n)d(n)d(n)d(n)构成的互相关矩阵P\mathbf{P}P需要已知。

遗憾的是R\mathbf{R}RP\mathbf{P}P所包含的环境信息不可获得或不可用,因此我们应该寻找一类具有适应未知环境统计变化能力的新算法,导出这些算法由以下两种不同的方法:

  1. 一种是基于随机梯度下降的方法,将在此章节进行讨论。

  2. 另一种是基于最小二乘的方法。

随机梯度下降算法表示从某一次自适应循环到下一次自适应循环的自适应滤波算法中梯度的"随机选择"。随机梯度下降算法和最速下降算法都是局部滤波方法。

严格意义上不把随机梯度看成一种优化算法,理由如下:

因为梯度上由随机噪声的存在,它永远也无法达到凸优化问题所期望的最优解。相反,一旦它到达最优解的附近,它将用一种随机游走的方式持续在该解周围徘徊,从而无法停留在一个平衡点上。

故随机梯度下降算法是次优的。

LMS算法结构推导

最小均方LMS算法作为随机梯度算法的第一个应用,其独特特征可以概括如下:

  1. LMS算法简易,复杂度和FIR滤波器的维数呈线性相关。

  2. 不用要知道PR

  3. 在位置环境干扰下,具有一定的鲁棒性。

  4. 不需要相关矩阵求逆,所以它比RLS更加简单。

基于以上特征,LMS是目前最流行的自适应滤波算法之一,下面是LMS算法结构图:

它包含了3个部分:

  1. FIR滤波器,实现估计输出的计算:
    d^(n)=∑k=0M−1u(n−k)∗wk∗(n)\widehat{d}(n) = \sum_{k = 0}^{M - 1}{u(n - k)*{w_{k}}^{*}(n)}d(n)=k=0M1u(nk)wk(n)
  2. 比较器,实现估计误差的计算

e(n)=d(n)−d^(n)e(n) = d(n) - \widehat{d}(n)e(n)=d(n)d(n)

  1. 自适应权值控制机制,实现滤波器系数的更新

wk(n+1)=wk(n)+μ∗u(n−k)∗e∗(n),k=0,1,...,M−1w_{k}(n + 1) = w_{k}(n) + \mu*u(n - k)*e^{*}(n),k = 0,1,...,M - 1wk(n+1)=wk(n)+μu(nk)e(n),k=0,1,...,M1
下面给出详细的推导过程。

回顾之前定义的代价函数(均方误差),期望算子对n时刻大量-统计-独立实现的瞬时平方估计,误差∣e(n)∣2|e(n)|^{2}e(n)2进行集平均
J(n)=E(∣e(n)∣2)J(n) = E\left( |e(n)|^{2} \right)J(n)=E(e(n)2)

遗憾的是,在自适应滤波器的实际应用中,上述方式使用集平均是不可行的。

我们如此说是因为使用自适应滤波的动机是基于估计误差e(n)e(n)e(n)(随时间n而变)的单一实现,以在线方式来自适应未知环境的统计变化。这些做恰好和随机梯度下降算法是一回事,所以我们移除上面的期望算子,得到了新的代价函数:
Js(n)=∣e(n)∣2=e(n)∗e(n)∗J_{s}(n) = |e(n)|^{2} = e(n)*e(n)^{*}Js(n)=e(n)2=e(n)e(n)

Js(n)J_{s}(n)Js(n)的下标s用来表示有别于集平均表达式中的J(n)J(n)J(n)。估计误差e(n)e(n)e(n)是随机过程的样本函数,其代价函数Js(n)J_{s}(n)Js(n)本身就是一个随机过程的样值。因此Js(n)J_{s}(n)Js(n)相对于FIR滤波器第k个抽头权值wk(n)w_{k}(n)wk(n)的导数也是随机的,下面会给出证明。代价函数Js(n)J_{s}(n)Js(n)wk∗(n){w_{k}}^{*}(n)wk(n)求偏导可表示为:
∇Js,k(n)=∂Js(n)∂wk∗(n)=∂(e(n)∗e(n)∗)∂wk∗(n)=∂((d(n)−d^(n))∗(d(n)−d^(n))∗)∂wk∗(n)\nabla J_{s,k}(n) = \frac{\partial J_{s}(n)}{\partial{w_{k}}^{*}(n)} = \frac{\partial(e(n)*e(n)^{*})}{\partial{w_{k}}^{*}(n)} = \frac{\partial((d(n) - \widehat{d}(n))*(d(n) - \widehat{d}(n))^{*})}{\partial{w_{k}}^{*}(n)}Js,k(n)=wk(n)Js(n)=wk(n)(e(n)e(n))=wk(n)((d(n)d(n))(d(n)d(n)))
=∂[(d(n)−∑k=0M−1u(n−k)∗wk∗(n))∗(d(n)−∑k=0M−1u(n−k)∗wk∗(n))∗]∂wk∗(n)= \frac{\partial\left\lbrack \left( d(n) - \sum_{k = 0}^{M - 1}{u(n - k)*{w_{k}}^{*}(n)} \right)*\left( d(n) - \sum_{k = 0}^{M - 1}{u(n - k)*{w_{k}}^{*}(n)} \right)^{*} \right\rbrack}{\partial{w_{k}}^{*}(n)}=wk(n)[(d(n)k=0M1u(nk)wk(n))(d(n)k=0M1u(nk)wk(n))]
=∂[(d(n)−∑k=0M−1u(n−k)∗wk∗(n))∗(d∗(n)−∑k=0M−1u∗(n−k)∗wk(n))]∂wk∗(n)= \frac{\partial\left\lbrack \left( d(n) - \sum_{k = 0}^{M - 1}{u(n - k)*{w_{k}}^{*}(n)} \right)*\left( d^{*}(n) - \sum_{k = 0}^{M - 1}{u^{*}(n - k)*w_{k}(n)} \right) \right\rbrack}{\partial{w_{k}}^{*}(n)}=wk(n)[(d(n)k=0M1u(nk)wk(n))(d(n)k=0M1u(nk)wk(n))]
=∂(−d∗(n)∑k=0M−1u(n−k)∗wk∗(n)−d(n)∑k=0M−1u∗(n−k)∗wk(n)+∑k=0M−1u(n−k)∗wk∗(n)∗∑k=0M−1u∗(n−k)∗wk(n))∂wk∗(n)= \frac{\partial\begin{pmatrix}-d^{*}(n)\sum_{k = 0}^{M - 1}{u(n - k)*{w_{k}}^{*}(n) - d(n)\sum_{k = 0}^{M - 1}{u^{*}(n - k)*w_{k}(n)}} \\+\sum_{k = 0}^{M - 1}{u(n - k)*{w_{k}}^{*}(n)}*\sum_{k = 0}^{M - 1}{u^{*}(n - k)*w_{k}(n)} \end{pmatrix}}{\partial{w_{k}}^{*}(n)}=wk(n)(d(n)k=0M1u(nk)wk(n)d(n)k=0M1u(nk)wk(n)+k=0M1u(nk)wk(n)k=0M1u(nk)wk(n))

=∂(−d∗(n)∑k=0M−1u(n−k)∗(ak(n)−jbk(n))−d(n)∑k=0M−1u∗(n−k)∗(ak(n)+jbk(n))+∑k=0M−1u(n−k)∗(ak(n)−jbk(n))∗∑k=0M−1u∗(n−k)∗(ak(n)+jbk(n)))∂(ak(n)−jbk(n))= \frac{\partial\begin{pmatrix}-d^{*}(n)\sum_{k = 0}^{M - 1}{u(n - k)*\left( a_{k}(n) - jb_{k}(n) \right) - d(n)\sum_{k = 0}^{M - 1}{u^{*}(n - k)*\left( a_{k}(n) + jb_{k}(n) \right)}} \\+\sum_{k = 0}^{M - 1}{u(n - k)*\left( a_{k}(n) - jb_{k}(n) \right)}*\sum_{k = 0}^{M - 1}{u^{*}(n - k)*\left( a_{k}(n) + jb_{k}(n) \right)} \end{pmatrix}}{\partial\left( a_{k}(n) - jb_{k}(n) \right)}=(ak(n)jbk(n))(d(n)k=0M1u(nk)(ak(n)jbk(n))d(n)k=0M1u(nk)(ak(n)+jbk(n))+k=0M1u(nk)(ak(n)jbk(n))k=0M1u(nk)(ak(n)+jbk(n)))

=∂(−d∗(n)∑k=0M−1u(n−k)∗(ak(n)−jbk(n))−d(n)∑k=0M−1u∗(n−k)∗(ak(n)+jbk(n))+∑k=0M−1u(n−k)∗(ak(n)−jbk(n))∗∑k=0M−1u∗(n−k)∗(ak(n)+jbk(n)))∂ak(n)+j∗∂(−d∗(n)∑k=0M−1u(n−k)∗(ak(n)−jbk(n))−d(n)∑k=0M−1u∗(n−k)∗(ak(n)+jbk(n))+∑k=0M−1u(n−k)∗(ak(n)−jbk(n))∗∑k=0M−1u∗(n−k)∗(ak(n)+jbk(n)))∂bk(n)= \begin{matrix} \frac{\partial\begin{pmatrix}-d^{*}(n)\sum_{k = 0}^{M - 1}{u(n - k)*\left( a_{k}(n) - jb_{k}(n) \right) - d(n)\sum_{k = 0}^{M - 1}{u^{*}(n - k)*\left( a_{k}(n) + jb_{k}(n) \right)}} \\+\sum_{k = 0}^{M - 1}{u(n - k)*\left( a_{k}(n) - jb_{k}(n) \right)}*\sum_{k = 0}^{M - 1}{u^{*}(n - k)*\left( a_{k}(n) + jb_{k}(n) \right)} \end{pmatrix}}{\partial a_{k}(n)} + \\ j*\frac{\partial\begin{pmatrix}-d^{*}(n)\sum_{k = 0}^{M - 1}{u(n - k)*\left( a_{k}(n) - jb_{k}(n) \right) - d(n)\sum_{k = 0}^{M - 1}{u^{*}(n - k)*\left( a_{k}(n) +jb_{k}(n) \right)}} \\+\sum_{k = 0}^{M - 1}{u(n - k)*\left( a_{k}(n) - jb_{k}(n) \right)}*\sum_{k = 0}^{M - 1}{u^{*}(n - k)*\left( a_{k}(n) + jb_{k}(n) \right)} \end{pmatrix}}{\partial b_{k}(n)} \end{matrix}=ak(n)(d(n)k=0M1u(nk)(ak(n)jbk(n))d(n)k=0M1u(nk)(ak(n)+jbk(n))+k=0M1u(nk)(ak(n)jbk(n))k=0M1u(nk)(ak(n)+jbk(n)))+jbk(n)(d(n)k=0M1u(nk)(ak(n)jbk(n))d(n)k=0M1u(nk)(ak(n)+jbk(n))+k=0M1u(nk)(ak(n)jbk(n))k=0M1u(nk)(ak(n)+jbk(n)))
=−d∗(n)u(n−k)−d(n)u∗(n−k)+u(n−k)∗∑k=0M−1u∗(n−k)∗(ak(n)+jbk(n))+u∗(n−k)∑k=0M−1u(n−k)∗(ak(n)−jbk(n))+j∗(j∗d∗(n)u(n−k)−j∗d(n)u∗(n−k)−j∗u(n−k)∗∑k=0M−1u∗(n−k)∗(ak(n)+jbk(n))+j∗u∗(n−k)∗∑k=0M−1u(n−k)∗(ak(n)−jbk(n)))= \begin{matrix} \begin{matrix}-d^{*}(n)u(n - k) - d(n)u^{*}(n - k) + u(n - k)*\sum_{k = 0}^{M - 1}{u^{*}(n - k)*\left( a_{k}(n) + jb_{k}(n) \right)} \\+u^{*}(n - k)\sum_{k = 0}^{M - 1}{u(n - k)*\left( a_{k}(n) - jb_{k}(n) \right)} \end{matrix} \\+j*\begin{pmatrix} j*d^{*}(n)u(n - k) - j*d(n)u^{*}(n - k) - j*u(n - k)*\sum_{k = 0}^{M - 1}{u^{*}(n - k)*\left( a_{k}(n) + jb_{k}(n) \right)} \\+j*u^{*}(n - k)*\sum_{k = 0}^{M - 1}{u(n - k)*\left( a_{k}(n) - jb_{k}(n) \right)} \end{pmatrix} \end{matrix}=d(n)u(nk)d(n)u(nk)+u(nk)k=0M1u(nk)(ak(n)+jbk(n))+u(nk)k=0M1u(nk)(ak(n)jbk(n))+j(jd(n)u(nk)jd(n)u(nk)ju(nk)k=0M1u(nk)(ak(n)+jbk(n))+ju(nk)k=0M1u(nk)(ak(n)jbk(n)))
=−d∗(n)u(n−k)−d(n)u∗(n−k)+u(n−k)d^∗(n)+u∗(n−k)d^(n)−d∗(n)u(n−k)+d(n)u∗(n−k)+u(n−k)d^∗(n)−u∗(n−k)d^(n)= \begin{matrix}-d^{*}(n)u(n - k) - d(n)u^{*}(n - k) + u(n - k){\widehat{d}}^{*}(n) + u^{*}(n - k)\widehat{d}(n) \\-d^{*}(n)u(n - k) + d(n)u^{*}(n - k) + u(n - k){\widehat{d}}^{*}(n) - u^{*}(n - k)\widehat{d}(n) \end{matrix}=d(n)u(nk)d(n)u(nk)+u(nk)d(n)+u(nk)d(n)d(n)u(nk)+d(n)u(nk)+u(nk)d(n)u(nk)d(n)
=−2d∗(n)u(n−k)+2u(n−k)d^∗(n)= - 2d^{*}(n)u(n - k) + 2u(n - k){\widehat{d}}^{*}(n) =2d(n)u(nk)+2u(nk)d(n)
=−2u(n−k)(d(n)−d^(n))∗= - 2u(n - k)\left( d(n) - \widehat{d}(n) \right)^{*}=2u(nk)(d(n)d(n))
=−2u(n−k)∗e∗(n)= - 2u(n - k)*e^{*}(n)=2u(nk)e(n)

重写上面的结论,LMS算法的代价函数的梯度算子是:
∇Js,k(n)=−2u(n−k)∗e∗(n),k=0,1,2,...,M−1\nabla J_{s,k}(n) = - 2u(n - k)*e^{*}(n),k = 0,1,2,...,M - 1Js,k(n)=2u(nk)e(n),k=0,1,2,...,M1

MSE(均方误差)算法的代价函数的梯度算子是:
∇kJ=−2∗E[u(n−k)∗e∗(n)],k=0,1,2,...,M−1\nabla_{k}J = - 2*E\left\lbrack u(n - k)*e^{*}(n) \right\rbrack,k = 0,1,2,...,M - 1kJ=2E[u(nk)e(n)],k=0,1,2,...,M1

发现两者的区别仅在于是否有期望算子,那是因为新的代价函数Js(n)J_{s}(n)Js(n)取消了集平均,没有了期望算子,所以对系数的偏微分也就是没有期望算子。也正是没有了这个期望算子,再次重复上面的一个结论,Js(n)\mathbf{J}_{\mathbf{s}}\mathbf{(n)}Js(n)相对于FIR滤波器第k个抽头权值wk(n)\mathbf{w}_{\mathbf{k}}\mathbf{(n)}wk(n)的导数也是随机的(随机噪声没有被期望所平均)

基于上面的随机梯度∇Js,k(n)\nabla J_{s,k}(n)Js,k(n),可得LMS算法的更新规则如下:
wk(n+1)=wk(n)−12μ∇Js,k(n),k=0,1,...,M−1w_{k}(n + 1) = w_{k}(n) - \frac{1}{2}\mu\nabla J_{s,k}(n),k = 0,1,...,M - 1wk(n+1)=wk(n)21μJs,k(n),k=0,1,...,M1

将随机梯度代入可得:
wk(n+1)=wk(n)+μ∗u(n−k)∗e∗(n),k=0,1,...,M−1w_{k}(n + 1) = w_{k}(n) + \mu*u(n - k)*e^{*}(n),k = 0,1,...,M - 1wk(n+1)=wk(n)+μu(nk)e(n),k=0,1,...,M1

简化成矩阵形式的

  1. 系数更新规则:
    w(n+1)=w(n)+μu(n)e∗(n),k=0,1,...,M−1\mathbf{w}(n + 1) = \mathbf{w}(n) + \mu\mathbf{u}(n)e^{*}(n),k = 0,1,...,M - 1w(n+1)=w(n)+μu(n)e(n),k=0,1,...,M1

  2. 估计误差:
    e(n)=d(n)−d^(n)e(n) = d(n) - \widehat{d}(n)e(n)=d(n)d(n)

  3. 估计输出
    d^(n)=wH(n)u(n)\widehat{d}(n) = \mathbf{w}^{H}(n)\mathbf{u}(n)d(n)=wH(n)u(n)

其中
w(n)=[w0(n)w1(n)...wM−1(n)],u(n)=[u(n)u(n−1)...u(n−M+1)]\mathbf{w}(n) = \begin{bmatrix} w_{0}(n) \\ w_{1}(n) \\ ... \\ w_{M - 1}(n) \end{bmatrix},\mathbf{u}(n) = \begin{bmatrix} u(n) \\ u(n - 1) \\ ... \\ u(n - M + 1) \end{bmatrix}w(n)=w0(n)w1(n)...wM1(n),u(n)=u(n)u(n1)...u(nM+1)

同样的,这里的μ\muμ的取值将会影响LMS算法中系数的稳定性瞬态响应,从稳定性的角度出发,μ\muμ应当取一个较小的正值。

小结

不管LMS算法和维纳滤波之间可能存在何种联系,一旦从维纳滤波器导出LMS算法时删除了期望算子E,他们之间的联系就完全破坏了。

最优性考虑

考虑LMS算法的最优性有两种办法:

  1. 局部最优性

  2. 全局次优性

局部最优性

之前提及随机梯度下降法是一种局部方法,它表明搜索的一个梯度不仅是随机的,而且是以一种局部的方式进行的。前者说梯度是随机的,可有梯度的表达式看出来,重写如下:

∇Js,k(n)=−2u(n−k)∗e∗(n),k=0,1,2,...,M−1\nabla J_{s,k}(n) = - 2u(n - k)*e^{*}(n),k = 0,1,2,...,M - 1Js,k(n)=2u(nk)e(n),k=0,1,2,...,M1

上式的估计误差就是随机量,所以梯度也是随机的。

只要从一次自适应循环到下一次自适应循环由数据引起的扰动充分小,那么且不管其随机性,LMS算法在欧氏意义下呈现局部最优性,为了解释,我们考虑以下两种场景

  1. 当前估计误差表达式如下e(n)=d(n)−wH(n)u(n)e(n) = d(n) - \mathbf{w}^{H}(n)\mathbf{u}(n)e(n)=d(n)wH(n)u(n)
  2. 后验估计误差表达式如下r(n)=d(n)−wH(n+1)u(n)r(n) = d(n) - \mathbf{w}^{H}(n + 1)\mathbf{u}(n)r(n)=d(n)wH(n+1)u(n)
    注意后验估计误差有别于一步预测wH(n)u(n+1)\mathbf{w}^{H}(n)\mathbf{u}(n + 1)wH(n)u(n+1)

将后验估计误差减去当前估计误差可得(中间利用了w(n+1)=w(n)+μu(n)e∗(n)\mathbf{w}(n + 1) = \mathbf{w}(n) + \mu\mathbf{u}(n)e^{*}(n)w(n+1)=w(n)+μu(n)e(n) ):

r(n)−e(n)=(wH(n)−wH(n+1))u(n)=(w(n)−w(n+1))Hu(n)=(−μu(n)e∗(n))Hu(n)=−μe(n)uH(n)u(n)=−μe(n)∥u(n)∥2{r(n) - e(n) = \left( \mathbf{w}^{H}(n) - \mathbf{w}^{H}(n + 1) \right)\mathbf{u}(n) = \left( \mathbf{w}(n) - \mathbf{w}(n + 1) \right)^{H}\mathbf{u}(n) }{= \left( - \mu\mathbf{u}(n)e^{*}(n) \right)^{H}\mathbf{u}(n) = - \mu e(n)\mathbf{u}^{H}(n)\mathbf{u}(n) }{= - \mu e(n)\left\| \mathbf{u}(n) \right\|^{2}}r(n)e(n)=(wH(n)wH(n+1))u(n)=(w(n)w(n+1))Hu(n)=(μu(n)e(n))Hu(n)=μe(n)uH(n)u(n)=μe(n)u(n)2

移项重新整理可得:
r(n)=(1−μ∥u(n)∥2)e(n)r(n) = (1 - \mu\left\| \mathbf{u}(n) \right\|^{2})e(n)r(n)=(1μu(n)2)e(n)

为了让后验估计误差小于当前估计误差,那么就必须满足下列约束条件:
−1<1−μ∥u(n)∥2<1- 1 < 1 - \mu\left\| \mathbf{u}(n) \right\|^{2} < 11<1μu(n)2<1

或者是
0<12μ∥u(n)∥2<10 < \frac{1}{2}\mu\left\| \mathbf{u}(n) \right\|^{2} < 10<21μu(n)2<1

在此约束条件下,进一步寻找w(n+1)\mathbf{w}(n + 1)w(n+1) 与过去值w(n)\mathbf{w}(n)w(n)
的平方欧氏范数达到最小的w(n+1)\mathbf{w}(n + 1)w(n+1)的最优值。因此局部最优化实际上就是一个约束最优化问题

之前已经推得r(n)−e(n)+μe(n)∥u(n)∥2=0r(n) - e(n) + \mu e(n)\left\| \mathbf{u}(n) \right\|^{2} = 0r(n)e(n)+μe(n)u(n)2=0,将后面的拆分成两个式子分别放在式子的左右,可得
r(n)−e(n)+12μe(n)∥u(n)∥2=−12μe(n)∥u(n)∥2r(n) - e(n) + \frac{1}{2}\mu e(n)\left\| \mathbf{u}(n) \right\|^{2} = - \frac{1}{2}\mu e(n)\left\| \mathbf{u}(n) \right\|^{2}r(n)e(n)+21μe(n)u(n)2=21μe(n)u(n)2

g(n)g(n)g(n)
g(n)=r(n)−e(n)+12μe(n)∥u(n)∥2=−12μe(n)∥u(n)∥2g(n) = r(n) - e(n) + \frac{1}{2}\mu e(n)\left\| \mathbf{u}(n) \right\|^{2} = - \frac{1}{2}\mu e(n)\left\| \mathbf{u}(n) \right\|^{2}g(n)=r(n)e(n)+21μe(n)u(n)2=21μe(n)u(n)2
g(n)g(n)g(n) 进一步表达为:
g(n)=r(n)−(1−12μ∥u(n)∥2)e(n)=−12μe(n)∥u(n)∥2g(n) = r(n) - \left( 1 - \frac{1}{2}\mu\left\| \mathbf{u}(n) \right\|^{2} \right)e(n) = - \frac{1}{2}\mu e(n)\left\| \mathbf{u}(n) \right\|^{2}g(n)=r(n)(121μu(n)2)e(n)=21μe(n)u(n)2

重写之前的约束条件0<12μ∥u(n)∥2<10 < \frac{1}{2}\mu\left\| \mathbf{u}(n) \right\|^{2} < 10<21μu(n)2<1,因此可得
−1<g(n)=r(n)−(1−12μ∥u(n)∥2)e(n)=−12μe(n)∥u(n)∥2<0,或−1<g(n)<0- 1 < g(n) = r(n) - \left( 1 - \frac{1}{2}\mu\left\| \mathbf{u}(n) \right\|^{2} \right)e(n) = - \frac{1}{2}\mu e(n)\left\| \mathbf{u}(n) \right\|^{2} < 0,或 - 1 < g(n) < 01<g(n)=r(n)(121μu(n)2)e(n)=21μe(n)u(n)2<0,1<g(n)<0

接下来应用著名的拉格朗日乘子法,首先引入拉格朗日函数,其标准的表达式为
L(n)=f(n)+λ(n)g(n)L(n) = f(n) + \lambda(n)g(n)L(n)=f(n)+λ(n)g(n)

其中f(n)f(n)f(n)是需要求极值(一般是极小值)的代价函数,
g(n)g(n)g(n)是约束条件,λ(n)\lambda(n)λ(n)是拉格朗日乘子。在LMS算法里,我们定义的拉格朗日函数为:

L(n)=12∥w(n+1)−w(n)∥2+λ(n)[r(n)−(1−12μ∥u(n)∥2)e(n)]L(n) = \frac{1}{2}\left\| \mathbf{w}(n + 1) - \mathbf{w}(n) \right\|^{2} + \lambda(n)\left\lbrack r(n) - \left( 1 - \frac{1}{2}\mu\left\| \mathbf{u}(n) \right\|^{2} \right)e(n) \right\rbrackL(n)=21w(n+1)w(n)2+λ(n)[r(n)(121μu(n)2)e(n)]

其中λ(n)\lambda(n)λ(n) 是时变的拉格朗日乘子。

此时将L(n)L(n)L(n)wH(n+1)\mathbf{w}^{H}(n + 1)wH(n+1)求导数,得到:
∂L(n)∂wH(n+1)=∂{12∥w(n+1)−w(n)∥2+λ(n)[r(n)−(1−12μ∥u(n)∥2)e(n)]}∂wH(n+1)=∂[12(w(n+1)−w(n))H(w(n+1)−w(n))+λ(n)(d(n)−wH(n+1)u(n))]∂wH(n+1)=∂[12(w(n+1)H−w(n)H)(w(n+1)−w(n))+λ(n)(d(n)−wH(n+1)u(n))]∂wH(n+1)=∂[12(wH(n+1)−wH(n))(w(n+1)−w(n))]∂wH(n+1)+∂[λ(n)(d(n)−wH(n+1)u(n))]∂wH(n+1)=∂[12(wH(n+1)w(n+1)−wH(n+1)w(n)−wH(n)w(n+1)+wH(n)w(n))]∂wH(n+1)−∂[λ(n)wH(n+1)u(n)]∂wH(n+1)=12∂wH(n+1)∂wH(n+1)w(n+1)+12∂w(n+1)∂wH(n+1)wH(n+1)−12∂wH(n+1)∂wH(n+1)w(n)−12∂w(n+1)∂wH(n+1)wH(n)−λ(n)u(n){\frac{\partial L(n)}{\partial\mathbf{w}^{H}(n + 1)} = \frac{\partial\left\{ \frac{1}{2}\left\| \mathbf{w}(n + 1) - \mathbf{w}(n) \right\|^{2} + \lambda(n)\left\lbrack r(n) - \left( 1 - \frac{1}{2}\mu\left\| \mathbf{u}(n) \right\|^{2} \right)e(n) \right\rbrack \right\}}{\partial\mathbf{w}^{H}(n + 1)} }{= \frac{\partial\left\lbrack \frac{1}{2}\left( \mathbf{w}(n + 1) - \mathbf{w}(n) \right)^{H}\left( \mathbf{w}(n + 1) - \mathbf{w}(n) \right) + \lambda(n)\left( d(n) - \mathbf{w}^{H}(n + 1)\mathbf{u}(n) \right) \right\rbrack}{\partial\mathbf{w}^{H}(n + 1)} }{= \frac{\partial\left\lbrack \frac{1}{2}\left( \mathbf{w}(n + 1)^{H} - \mathbf{w}(n)^{H} \right)\left( \mathbf{w}(n + 1) - \mathbf{w}(n) \right) + \lambda(n)\left( d(n) - \mathbf{w}^{H}(n + 1)\mathbf{u}(n) \right) \right\rbrack}{\partial\mathbf{w}^{H}(n + 1)} }{= \frac{\partial\left\lbrack \frac{1}{2}\left( \mathbf{w}^{H}(n + 1) - \mathbf{w}^{H}(n) \right)\left( \mathbf{w}(n + 1) - \mathbf{w}(n) \right) \right\rbrack}{\partial\mathbf{w}^{H}(n + 1)} + \frac{\partial\left\lbrack \lambda(n)\left( d(n) - \mathbf{w}^{H}(n + 1)\mathbf{u}(n) \right) \right\rbrack}{\partial\mathbf{w}^{H}(n + 1)} }{= \frac{\partial\left\lbrack \frac{1}{2}\left( \mathbf{w}^{H}(n + 1)\mathbf{w}(n + 1) - \mathbf{w}^{H}(n + 1)\mathbf{w}(n) - \mathbf{w}^{H}(n)\mathbf{w}(n + 1) + \mathbf{w}^{H}(n)\mathbf{w}(n) \right) \right\rbrack}{\partial\mathbf{w}^{H}(n + 1)} - \frac{\partial\left\lbrack \lambda(n)\mathbf{w}^{H}(n + 1)\mathbf{u}(n) \right\rbrack}{\partial\mathbf{w}^{H}(n + 1)} }{= \frac{\frac{1}{2}\partial\mathbf{w}^{H}(n + 1)}{\partial\mathbf{w}^{H}(n + 1)}\mathbf{w}(n + 1) + \frac{\frac{1}{2}\partial\mathbf{w}(n + 1)}{\partial\mathbf{w}^{H}(n + 1)}\mathbf{w}^{H}(n + 1) - \frac{\frac{1}{2}\partial\mathbf{w}^{H}(n + 1)}{\partial\mathbf{w}^{H}(n + 1)}\mathbf{w}(n) - \frac{\frac{1}{2}\partial\mathbf{w}(n + 1)}{\partial\mathbf{w}^{H}(n + 1)}\mathbf{w}^{H}(n) - \lambda(n)\mathbf{u}(n) }wH(n+1)L(n)=wH(n+1){21w(n+1)w(n)2+λ(n)[r(n)(121μu(n)2)e(n)]}=wH(n+1)[21(w(n+1)w(n))H(w(n+1)w(n))+λ(n)(d(n)wH(n+1)u(n))]=wH(n+1)[21(w(n+1)Hw(n)H)(w(n+1)w(n))+λ(n)(d(n)wH(n+1)u(n))]=wH(n+1)[21(wH(n+1)wH(n))(w(n+1)w(n))]+wH(n+1)[λ(n)(d(n)wH(n+1)u(n))]=wH(n+1)[21(wH(n+1)w(n+1)wH(n+1)w(n)wH(n)w(n+1)+wH(n)w(n))]wH(n+1)[λ(n)wH(n+1)u(n)]=wH(n+1)21wH(n+1)w(n+1)+wH(n+1)21w(n+1)wH(n+1)wH(n+1)21wH(n+1)w(n)wH(n+1)21w(n+1)wH(n)λ(n)u(n)

应用了∂f∂wH=(∂f∂w)H\frac{\partial\mathbf{f}}{\partial\mathbf{w}^{H}} = \left( \frac{\partial\mathbf{f}}{\partial\mathbf{w}} \right)^{H}wHf=(wf)H后,可以进一步化简为下式
∂L(n)∂wH(n+1)=w(n+1)−w(n)−λ(n)u(n)\frac{\partial L(n)}{\partial\mathbf{w}^{H}(n + 1)} = \mathbf{w}(n + 1) - \mathbf{w}(n) - \lambda(n)\mathbf{u}(n)wH(n+1)L(n)=w(n+1)w(n)λ(n)u(n)

为使上式为0,可得
w(n+1)=w(n)+λ(n)u(n)\mathbf{w}(n + 1) = \mathbf{w}(n) + \lambda(n)\mathbf{u}(n)w(n+1)=w(n)+λ(n)u(n)

将此代入拉格朗日方程使其为0,求解λ(n)\lambda(n)λ(n) 的表达式。
L(n)=12∥w(n+1)−w(n)∥2+λ(n)[r(n)−(1−12μ∥u(n)∥2)e(n)]=12∥λ(n)u(n)∥2+λ(n)[(1−μ∥u(n)∥2)e(n)−(1−12μ∥u(n)∥2)e(n)]=12∥λ(n)u(n)∥2+λ(n)[−12μ∥u(n)∥2e(n)]=12λ2(n)∥u(n)∥2−12λ(n)μ∥u(n)∥2e(n)=0{L(n) = \frac{1}{2}\left\| \mathbf{w}(n + 1) - \mathbf{w}(n) \right\|^{2} + \lambda(n)\left\lbrack r(n) - \left( 1 - \frac{1}{2}\mu\left\| \mathbf{u}(n) \right\|^{2} \right)e(n) \right\rbrack }{= \frac{1}{2}\left\| \lambda(n)\mathbf{u}(n) \right\|^{2} + \lambda(n)\left\lbrack \left( 1 - \mu\left\| \mathbf{u}(n) \right\|^{2} \right)e(n) - \left( 1 - \frac{1}{2}\mu\left\| \mathbf{u}(n) \right\|^{2} \right)e(n) \right\rbrack }{= \frac{1}{2}\left\| \lambda(n)\mathbf{u}(n) \right\|^{2} + \lambda(n)\left\lbrack - \frac{1}{2}\mu\left\| \mathbf{u}(n) \right\|^{2}e(n) \right\rbrack }{= \frac{1}{2}\lambda^{2}(n)\left\| \mathbf{u}(n) \right\|^{2} - \frac{1}{2}\lambda(n)\mu\left\| \mathbf{u}(n) \right\|^{2}e(n) = 0}L(n)=21w(n+1)w(n)2+λ(n)[r(n)(121μu(n)2)e(n)]=21λ(n)u(n)2+λ(n)[(1μu(n)2)e(n)(121μu(n)2)e(n)]=21λ(n)u(n)2+λ(n)[21μu(n)2e(n)]=21λ2(n)u(n)221λ(n)μu(n)2e(n)=0

故可得:
λ(n)=u(n)e∗(n)\lambda(n) = \mathbf{u}(n)e^{*}(n)λ(n)=u(n)e(n)

所以我们再次得到了系数更新规则:

w(n+1)=w(n)+μu(n)e∗(n)\mathbf{w}(n + 1) = \mathbf{w}(n) + \mu\mathbf{u}(n)e^{*}(n)w(n+1)=w(n)+μu(n)e(n)

该式和上一节的结论是一致的。因此我们用拉格朗日乘子法得到了同样的最优系数更新规则,这也证明了LMS法在局部是最优的,或者说是约束最优化。

全局次优性

为维纳滤波器相比,LMS算法的相应学习曲线接近一个最终值J(∞)J(\infty)J()J(∞)J(\infty)J()和维纳解下的最小代价Jmin⁡J_{\min}Jmin存在一个额外的均方误差,因此和维纳解相比,LMS是次优的:

  1. 在最速下降法中,在计算学习曲线之前要进行集平均,所以最速下降法的学习曲线在性质上是确定性的。

  2. LMS法没有上述的集平均,所以梯度会存在"噪声",因此LMS的学习曲线在性质上是统计的。

梯度自适应格型算法

其实现结构如下图所示:

因为目前应用中该算法结构没有被使用,这里不再展开讨论。

其实随机梯度下降算法还有很多其他的应用,这里不再展开。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/921499.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921499.shtml
英文地址,请注明出处:http://en.pswp.cn/news/921499.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI生成内容的版权问题解析与实操指南

针对个人使用AI工具生成视频/音乐的版权问题深度解析&#xff0c;从法律归属、侵权边界到确权实操&#xff0c;结合最新司法实践提炼核心要点&#xff1a; 一、版权归属核心逻辑&#xff1a;人类智力投入的可视化 当用户深度参与创作过程时&#xff0c;可主张版权。关键看操作…

4.2 机器学习 - 欠拟合和过拟合

模型训练的核心挑战是让模型既 “学好” 训练数据&#xff0c;又能 “适应” 新数据。欠拟合&#xff08;Underfitting&#xff09;和过拟合&#xff08;Overfitting&#xff09;是阻碍这一目标的两大典型问题&#xff0c;其本质是 “模型复杂度” 与 “数据复杂度” 不匹配。本…

LeetCode 468. 验证IP地址 - 详细解析

文章目录LeetCode 468. 验证IP地址 - 详细解析题目描述IPv4验证规则&#xff1a;IPv6验证规则&#xff1a;最优Java解决方案&#xff08;注释完整版&#xff09;关键变量含义及代码技巧代码技巧详解1. 前导零检查的最佳实践2. IPv6为什么不能用Character.isDigit()3. 针对性注释…

新能源研发,用新型实验记录本:ELN

新能源&#xff08;材料&#xff09;研发如火如荼&#xff0c;竞争激烈。以电池为例&#xff0c;新能源汽车的崛起、储能技术的突破&#xff0c;让电池成为了能源领域的“新宠”。电池研发已经成为热门赛场&#xff0c;各研发团队都在与时间赛跑&#xff0c;试图维持优势或弯道…

大语言模型领域最新进展

CSDN大礼包《人工智能大模型课程》 CSDN大礼包《人工智能平台设计开发课程课程》

【网安干货】--计算机网络知识梳理总结(二)

这是计算机网络知识梳理的第二篇&#xff0c;真正去梳理才发现内容好多好多好多好多好多啊…怕是预计要写四篇 注意&#xff1a;如果看不清可以右键复制图片链接到浏览器访问或另存为照片并放大查看 计算机网络2 计算机网络协议2.1 网络协议的定义与核心要素2.1.1 协议的定义2.…

百度前端社招面经二

社招 百度 前端开发 二面 base 北京 react 17 和 18 的差异react的响应式原理&#xff0c;js是如何驱动模块的webpacke 4 和 5 差异webpacke 热更新原理。Tree Shaking 是干嘛的import 和 require 区别&#xff0c;都会被Tree Shaking吗隐藏元素的几种方式三栏布局&#xff0c;…

结合prompt分析NodeRAG的build过程

之前介绍了NodeRAG的节点类型和安装过程。 linux环境conda安装NodeRAG示例-CSDN博客 这里尝试从prompt代码角度分析NodeRAG如何将文档转化为节点、关系。 1 整体处理流程 NodeRAG定义了如下所示状态及处理流程。 # define the state to pipeline mapping self.state_pipelin…

我改写的二分法XML转CSV文件程序速度追上了张泽鹏先生的

以下是美团龙猫初稿&#xff0c;我改正&#xff0c;DeepSeek重新格式化的代码。 重要改正点&#xff1a; 1.二分查找用goto控制迭代&#xff0c;返回<row的正确位置 2.在缓冲区头填上父标签使expat能连续解析不报错 #include <stdio.h> #include <stdlib.h> #in…

使用Docker安装Stirling-PDF(PDF工具)

1、官方Web端 详见&#xff1a;https://stirlingpdf.io/?langzh_CN 2、安装Docker 合集&#xff1a;Docker安装与使用 3、安装Stirling-PDF 详见&#xff1a; https://docs.stirlingpdf.com/Installation/Docker%20Install https://hub.docker.com/r/stirlingtools/stirli…

【开题答辩全过程】以 基于微信小程序的“XIN”学生组织管理系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

Iwip驱动8211FS项目——MPSOC实战1

硬件设计采用RTL8211FS芯片&#xff0c;vitis默认的IWIP库不支持此芯片。 网口相关知识可以翻看前期文章 以太网PHY_MDIO通信&#xff08;基于RTL8211&#xff09;--FPGA学习笔记22-CSDN博客 以太网ARP协议——FPGA学习笔记23_fpga以太网学习-CSDN博客 以太网ICMP协议(ping…

《Science》神经炎症综述思路套用:从机制到跨领域研究范式

2025 年 6 月首都医科大学团队在《Science》发表的综述《Immunological dimensions of neurological disease: from mechanisms to therapeutics》(神经疾病的免疫维度:从机制到疗法),系统性解析了神经炎症的动态演变规律与双面性,提出阶段化、精准化治疗新范式。本文基于…

嵌入式学习笔记--Linux系统编程阶段--DAY07进程间通信--存储映射和共享内存

1.存储映射存储映射 I/O (Memory-mapped I/O) 使一个磁盘文件与存储空间中的一个缓冲区相映射。于是当从缓冲区中取数据&#xff0c;就相当于读文件中的相应字节。于此类似&#xff0c;将数据存入缓冲区&#xff0c;则相应的字节就自动写入文件。这样&#xff0c;就可在不适用 …

.Net程序员就业现状以及学习路线图(四)

一、.Net程序员就业现状分析 1. 市场需求与岗位分布 2025年数据显示&#xff0c;.Net开发岗位在全国IT岗位中占比约0.009%&#xff0c;主要集中在一线城市如深圳、上海等地 2 4。行业分布呈现以下特点&#xff1a;‌软件行业‌&#xff1a;占比43.3% ‌研发领域‌&#xff1a;占…

Monorepo 是什么?如何使用并写自己的第三方库

1. 什么是 Monorepo&#xff1f; Monorepo&#xff08;单仓库&#xff09;指的是把多个项目/包放在一个代码仓库里统一管理。常见结构&#xff1a; /repo-root/packages/ui-lib/utils/apps/web-apppackage.jsonpnpm-workspace.yaml好处&#xff1a; 内部库能直接共享&#xff0…

使用CI/CD部署后端项目(gin)

写在前面&#xff1a;使用CI/CD部署gin项目到服务器中 前端可以参考&#xff1a;使用CI/CD部署nextjs项目 使用 GitHub Actions 配置后端 CI/CD&#xff08;含部署到服务器&#xff09; 本文档介绍如何在 GitHub 仓库中配置 CI/CD&#xff0c;将 PROJECT_NAME 项目自动构建并…

Coze添加知识库解析的Embedding和PaddleOCR模型配置

1. Embedding模型配置 使用ollama模型&#xff0c;导入qwen3的embedding-8B模型&#xff0c;导入流程参考&#xff1a; Ollama离线部署模型 qwen3-Embedding模型文件可从魔塔社区下载&#xff1a; Qwen3-Embedding-8B 1.2 Coze配置 在coze_studio/docker目录下输入: vim .en…

02-Media-6-rtsp_server.py 使用RTSP服务器流式传输H264和H265编码视频和音频的示例程序

rtsp_server.py 是使用k230的板载摄像头和WIFI联网功能,使用RTSP服务器流式传输视频和音频的程序示例。程序核心是创建了一个RtspServer类,该类用于初始化、启动、停止RTSP服务器,并进行视频和音频的流传输。 一、首先,程序导入必要的模块,包括视频编码、传感器、媒体处理…

13-Java-面向对象-封装和this关键字

文章目录封装this关键字封装 告诉我们&#xff0c;如何正确设计对象的属性和方法。原则&#xff1a;对象代表什么&#xff0c;就得封装对应的数据&#xff0c;并提供数据对应的行为 package common;/*** Author: 大海* Date: 2025-09-06*/public class GirlFriend {/*private…