量化交易中文教材

第 10 章 Widrow–Hoff 学习与 LMS 算法

对应原书第 10 章。上一章的最速下降需要真实梯度;本章把它用于单层线性网络 ADALINE,并做一个影响深远的近似:用单个样本的平方误差代替均方误差,得到每来一个样本就更新一次的 LMS(最小均方)算法。它今天仍是自适应信号处理的主力,也是第 11 章反向传播的直接前身——两者唯一的区别是导数怎么算。

对量化读者,LMS 就是在线回归:每天收盘后用一条新观测把回归系数"推一小步"。时变 β、动态对冲比率、自适应线性预测,都可以用它来做;学习率 \(\alpha\) 扮演"遗忘速度"的角色。

学习目标

读完本章,你应当能够:

  1. 写出 ADALINE 的结构与决策边界,说明它与感知机的异同。
  2. 把均方误差展开为 \(F(\mathbf{x})=c-2\mathbf{x}^T\mathbf{h}+\mathbf{x}^T\mathbf{R}\mathbf{x}\),求出最优解 \(\mathbf{x}^*=\mathbf{R}^{-1}\mathbf{h}\),并指出 Hessian 为 \(2\mathbf{R}\)。
  3. 从"瞬时平方误差"推导 LMS 更新式 \(\mathbf{W}\leftarrow\mathbf{W}+2\alpha\mathbf{e}\mathbf{p}^T\),并能手算若干步。
  4. 证明 LMS 权值的期望收敛到 \(\mathbf{R}^{-1}\mathbf{h}\),稳定条件 \(0<\alpha<1/\lambda_{\max}(\mathbf{R})\),并理解单次实现会在最优点附近抖动。
  5. 理解抽头延迟线、自适应 FIR 滤波器和自适应噪声消除的结构,能算出噪声消除例中的 \(\mathbf{R}\)、\(\mathbf{h}\) 和最小均方误差。
  6. 用 LMS 实现时变对冲比率的在线估计,知道它与滚动 OLS、EWMA、RLS、Kalman 滤波的关系。

读前导读

这一章在解决什么问题。 你在 CFA 二级学过多元回归:系数 \(\hat\beta=(X^TX)^{-1}X^Ty\),一次性用全部样本算出来。本章换一个问法:如果数据是一天一天到来的,能不能不重新跑整个回归,而是每来一条新观测就把系数"推一小步"?LMS 就是答案。它的推步方向是"误差 × 输入",步长由学习率 \(\alpha\) 控制。可以把它想成一个永远在小幅调仓的对冲比率:今天对冲后还剩正的残差,说明 β 偏小,就把 β 往上调一点。

本章的数学有两条线。第一条是"静态"的:均方误差是系数的二次函数,二次函数的最低点可以直接解出来,就是 \(\mathbf{R}^{-1}\mathbf{h}\),它和 OLS 正规方程 \((X^TX)\hat\beta=X^Ty\) 是同一个式子(把样本平均换成期望)。第二条是"动态"的:一步一步推,最后会不会停在这个最低点?这要看学习率与输入相关矩阵的特征值之比,和你熟悉的"久期越长、同样的收益率变动造成的价格波动越大"有点像:曲面在某个方向越陡(特征值越大),同样的步长越容易冲过头。

本章还是下一章反向传播的预演。LMS 的梯度只需对单层线性网络求一次导;反向传播把同样的"误差 × 输入"规则推广到多层,那时需要层层套用链式法则。所以本章 10.3 节那一行求导值得看懂。

需要先想起来的数学。

  • 导数与链式法则。 \(e^2\) 对 \(w\) 求导,先对外层 \((\cdot)^2\) 求导得 \(2e\),再乘内层 \(e\) 对 \(w\) 的导数。例:\(e=t-wp\),\(t=1,p=2,w=0.3\),则 \(e=0.4\),\(\partial e^2/\partial w=2e\cdot(-p)=-1.6\)。见 第 00 册第 02 章 导数与泰勒展开。
  • 梯度与二次型的梯度。 梯度 \(\nabla F\) 是把 \(F\) 对每个分量的偏导排成的向量,指向 \(F\) 上升最快的方向。两条常用公式:\(\nabla(\mathbf{x}^T\mathbf{h})=\mathbf{h}\);当 \(\mathbf{R}\) 对称时 \(\nabla(\mathbf{x}^T\mathbf{R}\mathbf{x})=2\mathbf{R}\mathbf{x}\)(一维时就是 \((rx^2)'=2rx\))。见 第 00 册第 05 章 多元微积分与优化。
  • Hessian 与正定。 Hessian 是二阶偏导组成的矩阵,描述曲面的弯曲程度;"正定"指对任何非零方向 \(\mathbf{v}\) 都有 \(\mathbf{v}^T\mathbf{A}\mathbf{v}>0\),即曲面在所有方向都向上弯,像一只碗,只有一个最低点。同见第 05 章。
  • 特征值与特征向量。 \(\mathbf{R}\mathbf{v}=\lambda\mathbf{v}\):矩阵作用在特征向量上只是把它放大 \(\lambda\) 倍。对二次曲面,特征向量是碗的主轴方向,特征值是该方向的陡峭程度。例:\(\mathbf{R}=\mathrm{diag}(4,1)\),两个特征值 4 和 1,等高线是一个横向被压扁的椭圆。见 第 00 册第 06 章 线性代数速成。
  • 期望的线性性与独立。 \(E[aX+bY]=aE[X]+bE[Y]\) 总成立;\(E[XY]=E[X]E[Y]\) 只有在独立(或不相关)时成立。10.4 节的收敛证明就靠这两条。见 第 00 册第 07 章 概率中的分析工具。

怎么读这一章。 核心必读是 10.2(均方误差是二次函数,最优解 \(\mathbf{R}^{-1}\mathbf{h}\))、10.3(LMS 更新式的推导)和 10.4.1(学习率上限)。10.5 的自适应滤波第一次可以只看结构和"误差就是恢复的信号"这个结论,具体数值计算可跳过。10.6 量化实战建议细读解读部分,那里把"条件数""学习率即记忆长度""期望稳定不等于实际可用"三件事都用数字展示了。


10.1 历史与 ADALINE 网络

Bernard Widrow 在 1950 年代末开始研究神经网络,几乎与 Rosenblatt 提出感知机学习规则同时。1960 年,Widrow 与研究生 Marcian Hoff 提出 ADALINE(ADAptive LInear NEuron)网络和 LMS(Least Mean Square)算法 [WiHo60]。

ADALINE 与感知机唯一的结构区别是传输函数为线性(purelin),而不是硬限幅(hardlim)。两者都只能解决线性可分问题。但 LMS 比感知机规则更强:感知机规则一旦把训练样本全部分对就停止,得到的边界常常贴着某些样本,对噪声敏感;LMS 最小化均方误差,会尽量把决策边界推离训练样本。LMS 的实际应用远多于感知机,尤其在数字信号处理中,例如几乎所有长途电话线上的回声消除。

一段插曲:由于 LMS 推广到多层网络失败,Widrow 在 1960 年代初转向自适应信号处理,直到 1980 年代才回到神经网络——那时多层网络的训练问题已经由反向传播解决了(第 11 章)。

ADALINE 网络有 \(R\) 维输入、\(S\) 个神经元:

\[\mathbf{a}=\mathrm{purelin}(\mathbf{W}\mathbf{p}+\mathbf{b})=\mathbf{W}\mathbf{p}+\mathbf{b} \tag{10.1}\]

第 \(i\) 个输出 \(a_i={}_i\mathbf{w}^T\mathbf{p}+b_i\),\({}_i\mathbf{w}\) 为 \(\mathbf{W}\) 第 \(i\) 行的转置。

单个两输入 ADALINE:\(a=w_{1,1}p_1+w_{1,2}p_2+b\)。令 \(a=0\) 得决策边界 \({}_1\mathbf{w}^T\mathbf{p}+b=0\),它与 \(p_1\) 轴交于 \(-b/w_{1,1}\)、与 \(p_2\) 轴交于 \(-b/w_{1,2}\);\({}_1\mathbf{w}\) 指向 \(a>0\) 的一侧。所以 ADALINE 可以做二分类,但只能处理线性可分情形,局限与感知机相同(第 04 章)。


10.2 均方误差

LMS 是有监督学习,训练集为 \(\{\mathbf{p}_1,t_1\},\dots,\{\mathbf{p}_Q,t_Q\}\)。先看单个神经元。把权值和偏置合并成一个向量,把输入补一个常数 1:

\[\mathbf{x}=\begin{bmatrix}{}_1\mathbf{w}\\b\end{bmatrix},\qquad \mathbf{z}=\begin{bmatrix}\mathbf{p}\\1\end{bmatrix},\qquad a=\mathbf{x}^T\mathbf{z} \tag{10.6–10.9}\]

均方误差(mean square error):

\[F(\mathbf{x})=E[e^2]=E[(t-\mathbf{x}^T\mathbf{z})^2] \tag{10.10}\]

期望对所有输入/目标对取(对确定性信号理解为时间平均)。展开:

\[F(\mathbf{x})=E[t^2]-2\mathbf{x}^TE[t\mathbf{z}]+\mathbf{x}^TE[\mathbf{z}\mathbf{z}^T]\mathbf{x}=c-2\mathbf{x}^T\mathbf{h}+\mathbf{x}^T\mathbf{R}\mathbf{x} \tag{10.11–10.12}\]
\[c=E[t^2],\qquad \mathbf{h}=E[t\mathbf{z}],\qquad \mathbf{R}=E[\mathbf{z}\mathbf{z}^T] \tag{10.13}\]

\(\mathbf{h}\) 是输入与目标的互相关向量(cross-correlation),\(\mathbf{R}\) 是输入相关矩阵(input correlation matrix),对角元是各输入分量的均方值。

推导拆解:式 10.11 的展开只用了三个事实。

  1. 平方展开:\((t-a)^2=t^2-2ta+a^2\),其中 \(a=\mathbf{x}^T\mathbf{z}\)。
  2. 标量的转置等于自身:\(a=\mathbf{x}^T\mathbf{z}=\mathbf{z}^T\mathbf{x}\),所以 \(a^2=(\mathbf{x}^T\mathbf{z})(\mathbf{z}^T\mathbf{x})=\mathbf{x}^T(\mathbf{z}\mathbf{z}^T)\mathbf{x}\)。这一步把"平方"写成了"矩阵夹在两个向量中间"的二次型。
  3. 期望是线性的,且 \(\mathbf{x}\) 是固定的系数(不是随机变量),可以提到期望外面:\(E[t\,\mathbf{x}^T\mathbf{z}]=\mathbf{x}^TE[t\mathbf{z}]\),\(E[\mathbf{x}^T\mathbf{z}\mathbf{z}^T\mathbf{x}]=\mathbf{x}^TE[\mathbf{z}\mathbf{z}^T]\mathbf{x}\)。

注意这里的"相关矩阵" \(\mathbf{R}=E[\mathbf{z}\mathbf{z}^T]\) 没有减均值,是二阶原点矩,不是统计里的相关系数矩阵,也不是协方差矩阵;只有输入零均值时它才等于协方差矩阵。

与第 09 章的一般二次函数 \(F=c+\mathbf{d}^T\mathbf{x}+\tfrac12\mathbf{x}^T\mathbf{A}\mathbf{x}\) 对照:

\[\mathbf{d}=-2\mathbf{h},\qquad \mathbf{A}=2\mathbf{R} \tag{10.15}\]

均方误差是二次函数——这是本章最重要的结论,因为二次函数的一切性质都由 Hessian 决定,而这里的 Hessian 就是输入相关矩阵的两倍。相关矩阵总是正定或半正定:全部特征值为正时有唯一全局极小;有零特征值时,视 \(\mathbf{d}\) 而定,可能是一条"谷底"上的弱极小,也可能没有极小。

令梯度 \(\nabla F=-2\mathbf{h}+2\mathbf{R}\mathbf{x}=\mathbf{0}\),若 \(\mathbf{R}\) 正定,唯一的强极小点为

\[\boxed{\mathbf{x}^*=\mathbf{R}^{-1}\mathbf{h}} \tag{10.18}\]

信号处理里它叫维纳解(Wiener solution);统计里它就是总体版本的最小二乘系数(把期望换成样本平均就是 OLS 的正规方程)。注意:唯一解是否存在只取决于 \(\mathbf{R}\),即只由输入的统计特性决定,与目标无关。

推导拆解:梯度 \(\nabla F=-2\mathbf{h}+2\mathbf{R}\mathbf{x}\) 逐项来自:常数 \(c\) 的导数为 0;\(-2\mathbf{x}^T\mathbf{h}=-2\sum_jx_jh_j\) 对 \(x_j\) 求偏导得 \(-2h_j\),排成向量是 \(-2\mathbf{h}\);\(\mathbf{x}^T\mathbf{R}\mathbf{x}=\sum_{i,j}R_{ij}x_ix_j\) 对 \(x_j\) 求偏导得 \(\sum_iR_{ij}x_i+\sum_iR_{ji}x_i\),因为 \(\mathbf{R}\) 对称,等于 \(2(\mathbf{R}\mathbf{x})_j\)。一维时就是 \(F=c-2hx+rx^2\),\(F'=-2h+2rx=0\) 得 \(x^*=h/r\)——"协方差除以方差",正是你熟悉的回归斜率 \(\beta=\mathrm{Cov}(x,y)/\mathrm{Var}(x)\)(零均值时)。多维版本只是把"除以 \(r\)"换成"乘以 \(\mathbf{R}^{-1}\)"。

金融直觉:为什么解的存在性与目标无关?想一想多重共线性:若两个因子完全共线(\(\mathbf{R}\) 奇异),无论你要解释的是哪只股票的收益,都无法唯一分开两个因子的载荷。问题出在自变量本身,与因变量无关。

例(P10.3)。 无偏置,\(\{\mathbf{p}_1=[1,1]^T,t_1=1\}\)、\(\{\mathbf{p}_2=[1,-1]^T,t_2=-1\}\) 等概率。\(c=1\);\(\mathbf{h}=0.5[1,1]^T-0.5[1,-1]^T=[0,1]^T\);\(\mathbf{R}=0.5\mathbf{p}_1\mathbf{p}_1^T+0.5\mathbf{p}_2\mathbf{p}_2^T=\mathbf{I}\)。于是 \(F=1-2w_{1,2}+w_{1,1}^2+w_{1,2}^2\),Hessian \(2\mathbf{I}\) 的两个特征值都是 2,等高线是圆,极小点 \(\mathbf{x}^*=[0,1]^T\)。


10.3 LMS 算法

如果能算出 \(\mathbf{h}\) 和 \(\mathbf{R}\),可以直接用式 10.18,或者用最速下降加精确梯度。但通常这些统计量不便计算(或者在变化),Widrow 与 Hoff 的关键洞见是:用第 \(k\) 步的平方误差来估计均方误差

\[\hat F(\mathbf{x})=(t(k)-a(k))^2=e^2(k) \tag{10.19}\]

每步的梯度估计 \(\hat\nabla F(\mathbf{x})=\nabla e^2(k)\) 称为随机梯度(stochastic gradient);用它做梯度下降,每来一个样本更新一次,称为在线(on-line)或增量(incremental)学习。

求导非常简单。\(\nabla e^2(k)\) 的前 \(R\) 个分量对权值、第 \(R+1\) 个对偏置:

\[\frac{\partial e^2(k)}{\partial w_{1,j}}=2e(k)\frac{\partial e(k)}{\partial w_{1,j}},\qquad \frac{\partial e(k)}{\partial w_{1,j}}=\frac{\partial}{\partial w_{1,j}}\Big[t(k)-\Big(\sum_{i=1}^Rw_{1,i}p_i(k)+b\Big)\Big]=-p_j(k),\qquad \frac{\partial e(k)}{\partial b}=-1\]

\(p_j(k)\) 与 1 正是 \(\mathbf{z}(k)\) 的元素,所以

\[\hat\nabla F(\mathbf{x})=-2e(k)\mathbf{z}(k) \tag{10.26}\]

近似梯度就是"误差乘输入",计算量几乎为零。

推导拆解:上面这行求导是链式法则最简单的一次应用,下一章反向传播要把它重复很多层,这里先看清楚结构。

  • 外层:\(e^2\) 是 \(e\) 的函数,\(\dfrac{d(e^2)}{de}=2e\)。
  • 内层:\(e=t-\sum_iw_{1,i}p_i-b\) 是 \(w_{1,j}\) 的函数。对 \(w_{1,j}\) 求偏导时,其他所有 \(w_{1,i}\)(\(i\ne j\))、\(b\)、\(t\) 都当常数,只有 \(-w_{1,j}p_j\) 这一项留下,导数是 \(-p_j\)。
  • 链式法则:\(\dfrac{\partial e^2}{\partial w_{1,j}}=\dfrac{d(e^2)}{de}\cdot\dfrac{\partial e}{\partial w_{1,j}}=2e\cdot(-p_j)\)。

数值例:\(p=[1,2]\),\(w=[0.5,0.5]\),\(b=0\),\(t=2\)。\(a=1.5\),\(e=0.5\),梯度为 \(-2(0.5)[1,2,1]=[-1,-2,-1]\)(最后一维对应偏置)。梯度为负说明增加权值会降低误差平方,于是更新沿负梯度方向把权值调大。输入越大的分量调得越多——因为它对误差"贡献"越大。

白话解释:为什么可以用一个样本的 \(e^2(k)\) 代替 \(E[e^2]\)?因为单样本梯度的期望恰好等于真梯度:\(E[-2e(k)\mathbf{z}(k)]=-2\mathbf{h}+2\mathbf{R}\mathbf{x}=\nabla F\)(固定 \(\mathbf{x}\) 时)。它是真梯度的无偏但有噪声的估计。这和用一天的收益估计期望收益是同一回事:单次很不准,但平均下来方向是对的。代入固定学习率的最速下降 \(\mathbf{x}_{k+1}=\mathbf{x}_k-\alpha\hat\nabla F\):

\[\mathbf{x}_{k+1}=\mathbf{x}_k+2\alpha e(k)\mathbf{z}(k) \tag{10.28}\]

拆开写,并推广到 \(S\) 个神经元,得到 LMS 算法(也叫 delta 规则或 Widrow–Hoff 学习算法):

\[\boxed{\mathbf{W}(k+1)=\mathbf{W}(k)+2\alpha\mathbf{e}(k)\mathbf{p}^T(k),\qquad \mathbf{b}(k+1)=\mathbf{b}(k)+2\alpha\mathbf{e}(k)} \tag{10.33–10.34}\]

与感知机规则 \(\mathbf{W}^{new}=\mathbf{W}^{old}+\mathbf{e}\mathbf{p}^T\) 几乎一样,只是多了学习率,而且误差是连续值而不是 \(\{-1,0,1\}\)。


10.4 收敛性分析

10.4.1 权值期望的收敛

LMS 是近似最速下降,第 09 章的稳定性结论应该大体适用。但它的梯度是随机的,需要在期望意义下分析。

由式 10.28,\(\mathbf{x}_k\) 只依赖于 \(\mathbf{z}(k-1),\mathbf{z}(k-2),\dots,\mathbf{z}(0)\)。假设相继的输入向量统计独立,则 \(\mathbf{x}_k\) 与 \(\mathbf{z}(k)\) 独立。对式 10.28 取期望并代入 \(e(k)=t(k)-\mathbf{z}^T(k)\mathbf{x}_k\):

\[E[\mathbf{x}_{k+1}]=E[\mathbf{x}_k]+2\alpha\{E[t(k)\mathbf{z}(k)]-E[\mathbf{z}(k)\mathbf{z}^T(k)\mathbf{x}_k]\}=E[\mathbf{x}_k]+2\alpha\{\mathbf{h}-\mathbf{R}E[\mathbf{x}_k]\} \tag{10.38–10.40}\]

最后一步用了独立性:\(E[\mathbf{z}\mathbf{z}^T\mathbf{x}_k]=E[\mathbf{z}\mathbf{z}^T]E[\mathbf{x}_k]\)。整理成线性系统:

\[E[\mathbf{x}_{k+1}]=[\mathbf{I}-2\alpha\mathbf{R}]E[\mathbf{x}_k]+2\alpha\mathbf{h} \tag{10.41}\]

它稳定当且仅当 \([\mathbf{I}-2\alpha\mathbf{R}]\) 的特征值 \(1-2\alpha\lambda_i\)(\(\lambda_i\) 为 \(\mathbf{R}\) 的特征值)都在单位圆内。\(\lambda_i>0\) 时 \(1-2\alpha\lambda_i<1\) 自动成立,只需 \(1-2\alpha\lambda_i>-1\):

推导拆解:为什么看特征值?先看一维。令误差 \(d_k=E[x_k]-x^*\),用 \(h=rx^*\) 代入式 10.41 得 \(d_{k+1}=(1-2\alpha r)d_k\),所以 \(d_k=(1-2\alpha r)^kd_0\)。这是一个几何数列:公比绝对值小于 1 才会衰减到 0。公比在 \((0,1)\) 之间时单调收敛;在 \((-1,0)\) 之间时每步越过最优点、来回振荡但幅度缩小;小于 \(-1\) 时越振越大,发散。 多维时,把 \(E[\mathbf{x}_k]-\mathbf{x}^*\) 按 \(\mathbf{R}\) 的特征向量分解,每个分量各自独立地按公比 \(1-2\alpha\lambda_i\) 衰减(因为 \(\mathbf{R}\) 作用在特征向量上只是乘以 \(\lambda_i\))。所有分量都要收敛,所以最陡的那个方向 \(\lambda_{\max}\) 决定学习率上限;而最平的方向 \(\lambda_{\min}\) 决定收敛有多慢。两者之比就是条件数,10.6 节会看到它有多重要。

\[\boxed{0<\alpha<\frac{1}{\lambda_{\max}(\mathbf{R})}} \tag{10.44}\]

这与第 09 章的 \(\alpha<2/\lambda_{\max}(\mathbf{A})\) 完全一致(因为 \(\mathbf{A}=2\mathbf{R}\))。稳态时 \(E[\mathbf{x}_{ss}]=[\mathbf{I}-2\alpha\mathbf{R}]E[\mathbf{x}_{ss}]+2\alpha\mathbf{h}\),解得

\[E[\mathbf{x}_{ss}]=\mathbf{R}^{-1}\mathbf{h}=\mathbf{x}^* \tag{10.46}\]

一个样本一个样本地学,在期望意义下得到的就是最小均方误差解。

10.4.2 单次实现的抖动

这里证明的只是期望收敛。单次运行中,权值会在 \(\mathbf{x}^*\) 附近随机波动:即使已经到了最优点,每个样本的瞬时梯度 \(-2e(k)\mathbf{z}(k)\) 仍不为零,权值就被不断推来推去。波动幅度随 \(\alpha\) 增大而增大,Widrow & Stearns [WiSt85] 称之为失调(misadjustment)。学习率因此面临一个权衡:大 \(\alpha\) 跟得快但抖得厉害,小 \(\alpha\) 稳但慢。另外,期望稳定只是必要条件:要让权值的方差也有界,学习率需要比 \(1/\lambda_{\max}\) 更保守,[WiSt85] 给出的条件与 \(\mathrm{tr}(\mathbf{R})\)(所有特征值之和)有关。10.6 节的实验会直接看到这一点。

10.4.3 例:苹果与橘子

用第 03 章的苹果/橘子问题,ADALINE 取零偏置:

\[\mathbf{p}_1=[1,-1,-1]^T,\ t_1=-1\ \text{(橘子)};\qquad \mathbf{p}_2=[1,1,-1]^T,\ t_2=1\ \text{(苹果)}\]

两类等概率时

\[\mathbf{R}=\tfrac12\mathbf{p}_1\mathbf{p}_1^T+\tfrac12\mathbf{p}_2\mathbf{p}_2^T=\begin{bmatrix}1&0&-1\\0&1&0\\-1&0&1\end{bmatrix},\qquad \lambda=1.0,\ 0.0,\ 2.0\]

所以 \(\alpha<1/2=0.5\)。保守取 \(\alpha=0.2\)(实际中常常算不出 \(\mathbf{R}\),可以试错)。从零权值开始交替输入:

  • \(k=0\)(橘子):\(a=0\),\(e=-1\),\(\mathbf{W}(1)=[0,0,0]+2(0.2)(-1)[1,-1,-1]=[-0.4,\ 0.4,\ 0.4]\);
  • \(k=1\)(苹果):\(a=[-0.4,0.4,0.4][1,1,-1]^T=-0.4\),\(e=1.4\),\(\mathbf{W}(2)=[0.16,\ 0.96,\ -0.16]\);
  • \(k=2\)(橘子):\(a=-0.64\),\(e=-0.36\),\(\mathbf{W}(3)=[0.016,\ 1.104,\ -0.016]\);
  • 持续迭代收敛到 \(\mathbf{W}(\infty)=[0,\ 1,\ 0]\)。

这正是第 03 章手工设计的边界:位于两个参考模式的正中间。感知机规则则可能停在任何一条能分开两类的边界上。注意 \(\mathbf{R}\) 有一个零特征值(对应方向 \([1,0,1]^T\)),均方误差沿这个方向是平的;因为从零初值出发、而每次更新都落在 \(\mathbf{p}_1,\mathbf{p}_2\) 张成的子空间里,权值在零特征值方向上始终没有分量,最终停在最小范数解上。

白话解释:两个样本的第 1 维都是 \(+1\),第 3 维都是 \(-1\),这两维对区分苹果和橘子毫无信息,而且彼此完全共线。于是 \([1,0,1]^T\) 方向上加多少权值都不改变任何输出(\([1,0,1]\cdot\mathbf{p}_1=[1,0,1]\cdot\mathbf{p}_2=0\))——误差曲面在这个方向是一条平底山谷。每次 LMS 更新是 \(\mathbf{p}\) 的倍数,所以永远不会往这个方向走;从 0 出发就停在谷底离原点最近的那一点("最小范数解")。若初值在这个方向上有分量,它会原样保留下来,最终解就不同了——这就是练习 E10.4、E10.5 说的"初值依赖"。

例(P10.4)。 用 P10.3 的两个模式,\(\alpha=0.25\),零初值,每个模式只用一次:输入 \(\mathbf{p}_1\),\(e=1\),\(\mathbf{W}(1)=[\tfrac12,\tfrac12]\);输入 \(\mathbf{p}_2\),\(a=0\),\(e=-1\),\(\mathbf{W}(2)=[0,1]\)——两步就到最优。因为 \(\mathbf{R}=\mathbf{I}\),\(\lambda_{\max}=1\),\(\alpha<1\);等高线是圆,所以收敛特别快(P10.5)。


10.5 自适应滤波

ADALINE 虽然和感知机一样只能处理线性可分问题,却是实际应用最广的神经网络之一,主要领域是自适应滤波。

10.5.1 抽头延迟线与自适应 FIR 滤波器

抽头延迟线(tapped delay line)把一个标量信号 \(y(k)\) 变成向量:

\[\mathbf{p}(k)=[y(k),\,y(k-1),\,\dots,\,y(k-R+1)]^T\]

接在 ADALINE 前面,就得到自适应滤波器:

\[a(k)=\sum_{i=1}^Rw_{1,i}\,y(k-i+1)+b \tag{10.62}\]

熟悉数字信号处理的读者会认出这是有限冲激响应(FIR)滤波器,只是系数由 LMS 在线调整。熟悉时间序列的读者会认出,如果目标是 \(y(k+1)\),这就是一个 AR(\(R\)) 预测器(见第 06 册第 02a 章)。

例(P10.1)。 三抽头滤波器 \(w=[2,-1,3]\),无偏置,输入 \(\{\dots,0,5,-4,0,\dots\}\)(\(y(0)=5,\ y(1)=-4\))。输出:\(a(0)=[2,-1,3][5,0,0]^T=10\),\(a(1)=[2,-1,3][-4,5,0]^T=-13\),\(a(2)=[2,-1,3][0,-4,5]^T=19\),\(a(3)=-12\),之后全为 0。\(y(0)\) 影响 \(k=0,1,2\) 三个时刻,等于冲激响应长度。

例(P10.6)——自适应预测器。 用前两个值预测下一个:\(a(k)=w_{1,1}y(k-1)+w_{1,2}y(k-2)\),\(t(k)=y(k)\)。平稳过程的自相关 \(C_y(0)=3,\ C_y(1)=-1,\ C_y(2)=-1\)。于是

\[\mathbf{R}=\begin{bmatrix}3&-1\\-1&3\end{bmatrix},\quad \mathbf{h}=\begin{bmatrix}C_y(1)\\C_y(2)\end{bmatrix}=\begin{bmatrix}-1\\-1\end{bmatrix},\quad \mathbf{x}^*=\mathbf{R}^{-1}\mathbf{h}=\begin{bmatrix}-1/2\\-1/2\end{bmatrix}\]

这正是 AR(2) 模型的 Yule–Walker 方程的解:最优线性预测系数只依赖于自相关函数。Hessian \(2\mathbf{R}\) 的特征值为 4(\([1,1]^T\))和 8(\([1,-1]^T\)),最大稳定学习率 \(\alpha<1/\lambda_{\max}(\mathbf{R})=1/4\)。

10.5.2 自适应噪声消除

这个应用的特别之处在于:网络要最小化的"误差",恰好就是我们想恢复的信号。

情景。 医生在线查看脑电图(EEG)信号 \(s\),它被 60 Hz 工频噪声污染。我们能拿到噪声源 \(v\) 的一份样本(例如从电源线取)。噪声 \(v\) 经过某条未知的"噪声路径"变成污染噪声 \(m\),叠加在 EEG 上得到被污染信号 \(t=s+m\)。把 \(v\) 送入自适应滤波器,把 \(t\) 当作目标。滤波器只知道 \(v\),只能复现 \(t\) 中与 \(v\) 线性相关的部分——也就是 \(m\)。它实际上在模仿那条噪声路径,使 \(a\approx m\),于是误差 \(e=t-a\approx s\),误差就是恢复的 EEG。

单一正弦噪声只需两个权值、无偏置:\(a(k)=w_{1,1}v(k)+w_{1,2}v(k-1)\),两个抽头足以实现任意的幅度衰减和相移。

计算。 \(\mathbf{z}(k)=[v(k),v(k-1)]^T\),\(t(k)=s(k)+m(k)\)。设 EEG 为 \([-0.2,0.2]\) 上均匀分布的白噪声,噪声源为 60 Hz 正弦、以 180 Hz 采样(每周期 3 点):

\[v(k)=1.2\sin\Big(\frac{2\pi k}{3}\Big),\qquad m(k)=0.12\sin\Big(\frac{2\pi k}{3}+\frac{\pi}{2}\Big)\]

(污染噪声为源噪声衰减 10 倍、相移 \(\pi/2\)。)对一个周期取平均:

\[E[v^2(k)]=(1.2)^2(0.5)=0.72,\qquad E[v(k)v(k-1)]=(1.2)^2(0.5)\cos\frac{2\pi}{3}=-0.36\ \Rightarrow\ \mathbf{R}=\begin{bmatrix}0.72&-0.36\\-0.36&0.72\end{bmatrix}\]

\(\mathbf{h}\) 的第一个元素 \(E[s(k)v(k)]+E[m(k)v(k)]\):前项因 \(s\) 与 \(v\) 独立且零均值为 0,后项因相位差 \(\pi/2\) 也为 0。第二个元素中 \(E[m(k)v(k-1)]=-0.0624\)。所以 \(\mathbf{h}=[0,\,-0.0624]^T\),

\[\mathbf{x}^*=\mathbf{R}^{-1}\mathbf{h}=\begin{bmatrix}-0.0578\\-0.1156\end{bmatrix}\]

极小点处的均方误差:\(c=E[t^2]=E[s^2]+E[m^2]\)(交叉项为 0),

\[E[s^2]=\frac{1}{0.4}\int_{-0.2}^{0.2}s^2ds=0.0133,\qquad E[m^2]=0.0072,\qquad c=0.0205\]
\[F(\mathbf{x}^*)=c-2\mathbf{x}^{*T}\mathbf{h}+\mathbf{x}^{*T}\mathbf{R}\mathbf{x}^*=0.0205-2(0.0072)+0.0072=0.0133\]

最小均方误差恰好等于 EEG 的均方值——滤波器把噪声全部消掉,剩下的"误差"就是 EEG 本身,这正是我们要的。

金融直觉:噪声消除和配对交易的对冲完全同构。被污染信号 \(t=s+m\) 是你持有的股票收益,\(m\) 是它暴露于市场的部分,\(s\) 是特质收益(alpha);参考输入 \(v\) 是指数收益。滤波器用 \(v\) 去拟合 \(t\),只能拟合出与 \(v\) 线性相关的 \(m\),拟合不了与 \(v\) 独立的 \(s\)。所以"对冲后的残差"\(e=t-a\) 就是 alpha。最小均方误差等于 \(E[s^2]\),意思是对冲最多能消掉市场部分,消不掉特质风险——这正是 CAPM 里系统风险与非系统风险的分解。两个抽头 \(v(k),v(k-1)\) 的作用类似于同时用当期和滞后一期的指数收益做对冲,用来处理非同步交易造成的时滞。

Hessian \(2\mathbf{R}\) 的特征值 2.16 和 0.72,最大稳定学习率 \(2/2.16=0.926\)。原书图 10.8 显示 \(\alpha=0.1\)、初值 \((0,-2)\) 的 LMS 轨迹,像一条"带噪声的最速下降"轨迹;减小 \(\alpha\) 轨迹更平滑但更慢,增大则更振荡。图 10.9 显示约 0.2 秒后滤波器调好,后半段恢复信号与原始信号的均方差为 0.002,相对信号均方值 0.0133 很小。误差降不到零,原因正是 10.4.2 节的失调:LMS 用的是梯度的噪声估计。

回声消除。 长途电话线中,长途线与本地线之间的"混合器"阻抗失配产生回声。在长途线末端,入线信号同时送给自适应滤波器和混合器,滤波器以混合器输出为目标,于是能抵消混合器输出中与入线信号相关的部分——回声。线路两端各装一个。P10.7 的飞行员语音降噪是同一结构:另设一个麦克风采集发动机噪声做参考输入。


10.6 量化实战:LMS 作为在线回归

10.6.1 对应关系

把本章的符号翻译成量化语言:

本章 量化中的含义
输入 \(\mathbf{z}(k)\) 当日的因子值 / 对冲资产收益 / 滞后收益(加常数 1)
目标 \(t(k)\) 当日的目标资产收益 / 下期收益
权值 \(\mathbf{x}\) 回归系数:β、对冲比率、因子载荷、预测系数
\(\mathbf{R}^{-1}\mathbf{h}\) 总体 OLS 系数(维纳解)
LMS 更新 每天收盘后用一条新观测把系数推一小步
学习率 \(\alpha\) 遗忘速度:在 \(\mathbf{R}\approx\mathbf{I}\) 时,均值误差每步乘以 \(1-2\alpha\),相当于记忆长度约 \(1/(2\alpha)\) 个观测
噪声消除 对冲:参考输入是对冲资产,"误差"就是对冲后的残差(价差、alpha)

几个直接可用的结论:

  • P10.6 的预测器就是 AR 模型,\(\mathbf{R}^{-1}\mathbf{h}\) 就是 Yule–Walker 解;用 LMS 在线估计 AR 系数,可以跟踪缓慢变化的自相关结构。
  • 稳定性要求标准化:\(\alpha<1/\lambda_{\max}(\mathbf{R})\)。若输入是日收益(标准差约 1.5%)而偏置项是常数 1,\(\mathbf{R}\approx\mathrm{diag}(\sigma^2,1)\),条件数约 4400:学习率被偏置那一维卡住,β 那一维每天只能移动 \(2\alpha\sigma^2\) 量级,几乎学不动。把输入除以它的波动率(只用历史数据估计,避免前视)即可。

推导拆解:记忆长度 \(1/(2\alpha)\) 从哪来?\(\mathbf{R}=\mathbf{I}\) 时,由上面的一维推导,期望误差每步乘以 \(\rho=1-2\alpha\)。一个 \(k\) 天前的观测,对今天估计的影响大约被打了 \(\rho^k\) 的折扣,这就是 EWMA 的权重衰减。EWMA 的"平均回看期"是 \(\sum_k k(1-\rho)\rho^k\approx\rho/(1-\rho)\approx1/(1-\rho)=1/(2\alpha)\)。例:\(\alpha=0.01\) 时 \(\rho=0.98\),与 RiskMetrics 常用的 0.94(约 16 天)相比,记忆更长,约 50 天。条件数 4400 的情况下,β 那一维的公比是 \(1-2\alpha\sigma^2\approx1-4.5\times10^{-6}\),记忆长达二十多万天,等于不学。

  • 同族方法:滚动窗口 OLS(硬截断的记忆)、指数加权最小二乘 / RLS(递推最小二乘,收敛快、每步 \(O(n^2)\))、Kalman 滤波(把 β 当作随机游走状态,学习率由噪声方差自动决定,见第 06 册第 11b 章)。LMS 是其中计算最省的一个,每步 \(O(n)\),代价是收敛慢、对输入尺度敏感。
  • 假设的局限:收敛分析假设相继输入独立、过程平稳。金融收益的波动聚集、结构突变都会违背这些假设,所以要监控权值是否过度振荡,学习率宁小勿大。

10.6.2 代码

第一段复现苹果/橘子例与 P10.6;第二段模拟一个对冲比率缓慢漂移、并在第 1500 天跳升 0.5 的资产对,比较静态 OLS、滚动 OLS 与不同学习率的 LMS。所有估计都只用当天之前的数据(样本外),评价指标是 β 的跟踪误差和对冲后残差的波动率(真实噪声波动为 1%,这是下限)。

import numpy as np
# 苹果/橘子例(10.48):零偏置 ADALINE,alpha=0.2,交替输入
P = [np.array([1., -1., -1.]), np.array([1., 1., -1.])]; T = [-1., 1.]
R = 0.5 * np.outer(P[0], P[0]) + 0.5 * np.outer(P[1], P[1])
print("R 的特征值:", np.round(np.linalg.eigvalsh(R), 4), " 稳定上限 1/lambda_max =", 1/np.linalg.eigvalsh(R).max())
W = np.zeros(3); alpha = 0.2
for k in range(60):
    p, t = P[k % 2], T[k % 2]
    e = t - W @ p
    W = W + 2 * alpha * e * p
    if k < 3: print(f"W({k+1}) = {np.round(W, 4)}")
print("W(60) =", np.round(W, 4))

# P10.6 自适应预测器:R^{-1}h 即 Yule-Walker 解
Rp = np.array([[3., -1.], [-1., 3.]]); h = np.array([-1., -1.])
print("最优预测系数 x* =", np.linalg.solve(Rp, h), " alpha 上限 =", 1/np.linalg.eigvalsh(Rp).max())

输出:

R 的特征值: [0. 1. 2.]  稳定上限 1/lambda_max = 0.5
W(1) = [-0.4  0.4  0.4]
W(2) = [ 0.16  0.96 -0.16]
W(3) = [ 0.016  1.104 -0.016]
W(60) = [-0.  1.  0.]
最优预测系数 x* = [-0.5 -0.5]  alpha 上限 = 0.25
import numpy as np
rng = np.random.default_rng(42)

# 模拟:y_t = b + beta_t * x_t + eps_t,beta_t 缓慢漂移并在 t=1500 跳升 0.5
T, warm = 2500, 250
x = rng.normal(0, 0.015, T)                       # 对冲资产日收益
beta = 1.0 + np.cumsum(rng.normal(0, 0.01, T)); beta[1500:] += 0.5
y = 0.0002 + beta * x + rng.normal(0, 0.01, T)    # 目标资产日收益

def lms(x, y, alpha, scale):
    """LMS / Widrow-Hoff:z=[x/scale, 1],w <- w + 2*alpha*e*z。返回每天开盘前的 beta 估计"""
    w = np.zeros(2); out = np.empty(len(x))
    for t in range(len(x)):
        out[t] = w[0] / scale                     # 只用 t-1 及以前的信息
        z = np.array([x[t] / scale, 1.0])
        e = y[t] - w @ z
        w += 2 * alpha * e * z
    return out

def rolling_ols(x, y, win):
    out = np.full(len(x), np.nan)
    for t in range(win, len(x)):
        xs, ys = x[t-win:t], y[t-win:t]
        out[t] = np.cov(xs, ys, bias=True)[0, 1] / xs.var()
    return out

# 不缩放时输入相关矩阵 R≈diag(σ^2,1),条件数巨大
R_raw = np.array([[np.mean(x**2), np.mean(x)], [np.mean(x), 1.0]])
print("未缩放 R 特征值:", np.linalg.eigvalsh(R_raw), "条件数 %.0f" % np.linalg.cond(R_raw))
scale = x[:warm].std()                            # 用预热期估计波动率做缩放 -> R≈I

ev = slice(warm, T)
def report(name, bhat):
    m = ~np.isnan(bhat[ev])
    rmse = np.sqrt(np.mean((bhat[ev][m] - beta[ev][m])**2))
    resid = (y - bhat * x)[ev][m]
    print(f"{name:<22s} beta 跟踪 RMSE={rmse:.3g}  对冲后残差波动={resid.std()*1e2:.3g}%")

report("全样本静态 OLS(作弊)", np.full(T, np.cov(x, y)[0, 1] / x.var()))
for win in [60, 250]:
    report(f"滚动 OLS 窗口 {win}", rolling_ols(x, y, win))
report("LMS 未缩放 alpha=0.01", lms(x, y, 0.01, 1.0))
for a in [0.002, 0.01, 0.05]:
    report(f"LMS 缩放 alpha={a} (≈{1/(2*a):.0f}天记忆)", lms(x, y, a, scale))
with np.errstate(all="ignore"):
    for a in [0.3, 0.6]:
        report(f"LMS 缩放 alpha={a}", lms(x, y, a, scale))

输出:

未缩放 R 特征值: [2.27482971e-04 1.00000044e+00] 条件数 4396
全样本静态 OLS(作弊)          beta 跟踪 RMSE=0.258  对冲后残差波动=1.08%
滚动 OLS 窗口 60           beta 跟踪 RMSE=0.112  对冲后残差波动=1.03%
滚动 OLS 窗口 250          beta 跟踪 RMSE=0.142  对冲后残差波动=1.03%
LMS 未缩放 alpha=0.01     beta 跟踪 RMSE=1.63  对冲后残差波动=2.62%
LMS 缩放 alpha=0.002 (≈250天记忆) beta 跟踪 RMSE=0.201  对冲后残差波动=1.04%
LMS 缩放 alpha=0.01 (≈50天记忆) beta 跟踪 RMSE=0.107  对冲后残差波动=1.02%
LMS 缩放 alpha=0.05 (≈10天记忆) beta 跟踪 RMSE=0.189  对冲后残差波动=1.06%
LMS 缩放 alpha=0.3       beta 跟踪 RMSE=3.22  对冲后残差波动=4.73%
LMS 缩放 alpha=0.6       beta 跟踪 RMSE=6.75e+134  对冲后残差波动=7.29e+134%

解读。

  1. 条件数决定成败。 未缩放时 \(\mathbf{R}\) 的条件数约 4400。\(\alpha=0.01\) 对偏置那一维是合适的,但 β 那一维的有效步长只有 \(2\alpha\sigma^2\approx4.5\times10^{-6}\),2500 天里 β 估计几乎没离开初值 0,对冲后残差波动 2.62%,比不对冲还差不多。缩放后同样的 \(\alpha=0.01\) 给出所有方法里最好的结果。
  2. 学习率就是记忆长度。 \(\alpha=0.002\)(约 250 天记忆)跟得太慢;\(\alpha=0.05\)(约 10 天)失调太大、估计太抖;\(\alpha=0.01\)(约 50 天)与 60 天滚动 OLS 相当甚至略好。最优的 \(\alpha\) 取决于 β 漂移速度与噪声大小之比——这正是 Kalman 滤波能自动权衡的东西。
  3. 期望稳定不等于实际可用。 缩放后 \(\mathbf{R}\approx\mathbf{I}\),期望收敛的上限是 \(\alpha<1/\lambda_{\max}=1\)。可是 \(\alpha=0.3\) 时估计已经剧烈跳动(跟踪误差 3.22),\(\alpha=0.6\) 彻底发散。原因是 10.4.2 节说的:权值方差要有界,学习率必须远小于期望分析给出的上限;[WiSt85] 给出的均方稳定条件与 \(\mathrm{tr}(\mathbf{R})\) 有关(这里 \(\mathrm{tr}(\mathbf{R})\approx2\)),实践中学习率通常比 \(1/\lambda_{\max}\) 小一到两个数量级。
  4. 全样本静态 OLS 用了未来数据("作弊"),仍然最差,因为它给不出时变的 β。在 β 会漂移的场合,"用所有数据"不如"用最近的数据"。

本章小结

ADALINE 是线性传输函数的单层网络,决策边界 \(\mathbf{W}\mathbf{p}+\mathbf{b}=\mathbf{0}\),只能处理线性可分问题。它的均方误差是二次函数 \(c-2\mathbf{x}^T\mathbf{h}+\mathbf{x}^T\mathbf{R}\mathbf{x}\),Hessian 为 \(2\mathbf{R}\),\(\mathbf{R}\) 正定时唯一极小点为维纳解 \(\mathbf{R}^{-1}\mathbf{h}\),存在性只取决于输入的相关矩阵。LMS 用瞬时平方误差代替均方误差,随机梯度为 \(-2e\mathbf{z}\),更新 \(\mathbf{W}\leftarrow\mathbf{W}+2\alpha\mathbf{e}\mathbf{p}^T\),计算极省、可在线运行。在输入独立平稳的假设下权值期望收敛到维纳解,条件 \(0<\alpha<1/\lambda_{\max}(\mathbf{R})\);单次实现会在最优点附近抖动,学习率越大抖得越厉害。抽头延迟线加 ADALINE 就是自适应 FIR 滤波器,可用于噪声消除、回声消除和预测;噪声消除中的"误差"就是要恢复的信号。在量化中,LMS 是在线回归:学习率即遗忘速度,输入必须标准化,它与滚动 OLS、RLS、Kalman 滤波同属一族。

概念 公式 / 要点
ADALINE \(\mathbf{a}=\mathbf{W}\mathbf{p}+\mathbf{b}\)
均方误差 \(F(\mathbf{x})=c-2\mathbf{x}^T\mathbf{h}+\mathbf{x}^T\mathbf{R}\mathbf{x}\),\(c=E[t^2]\),\(\mathbf{h}=E[t\mathbf{z}]\),\(\mathbf{R}=E[\mathbf{z}\mathbf{z}^T]\)
Hessian \(\mathbf{A}=2\mathbf{R}\)
最优解(维纳解) \(\mathbf{x}^*=\mathbf{R}^{-1}\mathbf{h}\)
随机梯度 \(\hat\nabla F=-2e(k)\mathbf{z}(k)\)
LMS \(\mathbf{W}(k+1)=\mathbf{W}(k)+2\alpha\mathbf{e}(k)\mathbf{p}^T(k)\),\(\mathbf{b}(k+1)=\mathbf{b}(k)+2\alpha\mathbf{e}(k)\)
期望收敛条件 \(0<\alpha<1/\lambda_{\max}(\mathbf{R})\),\(E[\mathbf{x}_{ss}]=\mathbf{R}^{-1}\mathbf{h}\)
自适应 FIR \(a(k)=\sum_{i=1}^Rw_{1,i}y(k-i+1)+b\)
记忆长度(\(\mathbf{R}\approx\mathbf{I}\)) 约 \(1/(2\alpha)\) 个样本

练习

基础

  1. 三抽头滤波器 \(w=[1,-4,2]\)、无偏置,求它对输入 \(\{0,0,0,1,1,2,0,0\}\) 的响应(原书 E10.1)。 提示: 设 \(y(0)=1,y(1)=1,y(2)=2\)。\(a(0)=1\),\(a(1)=1-4=-3\),\(a(2)=2-4+2=0\),\(a(3)=0-8+2=-6\),\(a(4)=0+0+4=4\),之后为 0。
  2. P10.3 中把两个模式的概率改为 0.75 和 0.25(原书 E10.3),重新求 \(\mathbf{h}\)、\(\mathbf{R}\)、最优权值和最大稳定学习率。 提示: \(\mathbf{R}=\begin{bmatrix}1&0.5\\0.5&1\end{bmatrix}\),特征值 1.5 与 0.5,\(\alpha<2/3\);\(\mathbf{h}=[0.5,1]^T\),\(\mathbf{x}^*=\mathbf{R}^{-1}\mathbf{h}=[0,1]^T\)(最优权值不变,但曲面变成椭圆)。
  3. 解释为什么在 P10.3 / P10.4 的问题中把目标从 \(\pm1\) 改为 \(\pm26\) 不改变最大稳定学习率(参考原书 E10.12)。 提示: 稳定条件只依赖 \(\mathbf{R}\),即只依赖输入;目标只改变 \(\mathbf{h}\) 和 \(c\)。
  4. 验证苹果/橘子例中 \(\mathbf{W}(\infty)=[0,1,0]\) 满足 \(\mathbf{R}\mathbf{x}=\mathbf{h}\),并说明 \(\mathbf{R}\) 奇异时为什么从零初值出发会得到这个特定解。 提示: \(\mathbf{h}=\tfrac12(-1)\mathbf{p}_1+\tfrac12(1)\mathbf{p}_2=[0,1,0]^T\);所有更新都在 \(\mathrm{span}\{\mathbf{p}_1,\mathbf{p}_2\}\) 内,零特征值方向 \([1,0,1]^T\) 上的分量始终为 0,所以得到最小范数解。

进阶

  1. 自适应预测器 \(a(k)=w_{1,1}y(k-1)+w_{1,2}y(k-2)\) 用于预测 \(y(k)=\sin(k\pi/5)\)(原书 E10.13)。求 \(\mathbf{R}\)、\(\mathbf{h}\)、最优权值和最大稳定学习率。 提示: 正弦信号 \(E[y(k)y(k-j)]=\tfrac12\cos(j\pi/5)\)。\(\mathbf{R}=\tfrac12\begin{bmatrix}1&\cos(\pi/5)\\\cos(\pi/5)&1\end{bmatrix}\),\(\mathbf{h}=\tfrac12[\cos(\pi/5),\cos(2\pi/5)]^T\),解得 \(\mathbf{x}^*=[2\cos(\pi/5),\,-1]^T\approx[1.618,-1]^T\)(正弦满足二阶差分方程 \(y(k)=2\cos(\pi/5)y(k-1)-y(k-2)\),可以完美预测);\(\lambda_{\max}=\tfrac12(1+\cos(\pi/5))\approx0.905\),\(\alpha<1.105\)。
  2. 在 10.6 节代码中把 β 的漂移速度从每日 0.01 改为 0.002 和 0.03,分别找出跟踪误差最小的 \(\alpha\)。结果与"记忆长度 \(1/(2\alpha)\)"的直觉是否一致? 提示: 漂移越快,最优记忆越短、最优 \(\alpha\) 越大;噪声越大,最优 \(\alpha\) 越小。
  3. 把 LMS 改为"归一化 LMS":\(\mathbf{x}\leftarrow\mathbf{x}+\dfrac{\mu}{\epsilon+\|\mathbf{z}\|^2}e\mathbf{z}\),在未缩放的输入上重做 10.6 节实验,看它能否自动解决尺度问题。 提示: 归一化使步长与输入能量无关,对整体尺度不敏感;但两个分量尺度悬殊时仍会被大的那一维主导,所以逐维标准化依然必要。
  4. 推导:若 \(\mathbf{R}=\sigma^2\mathbf{I}\),LMS 的权值期望误差 \(E[\mathbf{x}_k]-\mathbf{x}^*\) 每步乘以多少?由此说明"记忆长度"与指数加权移动平均(EWMA)衰减因子的对应关系。 提示: 乘以 \(1-2\alpha\sigma^2\);对应 EWMA 衰减因子 \(\lambda=1-2\alpha\sigma^2\),半衰期 \(\ln2/(2\alpha\sigma^2)\)。

原书推荐习题: P10.3–P10.5、E10.3(由模式概率计算 \(c,\mathbf{h},\mathbf{R}\)、等高线与稳定学习率);P10.6、E10.13(自适应预测器,与 AR 模型和 Yule–Walker 方程直接对应,最值得做);噪声消除例与 P10.7(参考信号消除结构);E10.4、E10.5(\(\mathbf{R}\) 奇异、加偏置与初值依赖);P10.9、E10.14(编程复现 Widrow–Hoff 1960 字符识别并测试噪声敏感性)。

原书对照

本章小节 原书章节 PDF 页码
10.1 历史与 ADALINE 10 Objectives / ADALINE Network p.309–312
10.2 均方误差 10 Mean Square Error p.312–315
10.3 LMS 算法 10 LMS Algorithm p.315–317
10.4 收敛性分析(含苹果/橘子例) 10 Analysis of Convergence p.317–322
10.5 自适应滤波、噪声消除、回声消除 10 Adaptive Filtering p.321–329
小结 10 Summary of Results p.330–331
例题 P10.1–P10.9 10 Solved Problems p.332–347
结语与延伸阅读 10 Epilogue / Further Reading p.348–349
习题 E10.1–E10.14 10 Exercises p.350–356