量化交易中文教材

第 08 章 性能曲面与最优点

对应原书第 8 章。从这一章起进入性能学习(performance learning):给网络定义一个衡量好坏的数值指标,再在权值空间里找让它最小的点。本章只回答"最优点长什么样、怎么判断",下一章(原书第 9 章)回答"怎么找到它"。Taylor 展开、梯度、Hessian、一二阶最优性条件这些通用内容与第 04 册第 02 章(无约束优化基础)重叠,本章压缩通用部分,重点放在原书特有的视角:用 Hessian 的特征值和特征向量读懂二次性能曲面的形状,以及线性网络的平方误差为什么一定是二次曲面。

学习目标

读完本章,你应当能够:

  1. 说明性能学习的两步:选性能指标、在参数空间中搜索;写出性能指标在某点的二阶 Taylor 展开,指出梯度和 Hessian 的位置。
  2. 计算一阶、二阶方向导数,说明最陡方向是梯度方向、等高线切线方向斜率为零。
  3. 区分强极小、弱极小、全局极小、鞍点;陈述并推导一阶必要条件、二阶必要条件和二阶充分条件。
  4. 对二次函数 \(\frac12\mathbf{x}^T\mathbf{A}\mathbf{x}+\mathbf{d}^T\mathbf{x}+c\),求梯度、Hessian、驻点,并用 Hessian 的特征值/特征向量画出等高线草图、判断曲面类型。
  5. 推导"线性神经元 + 平方误差 = 二次性能曲面",求出最优权值。
  6. 把均值–方差组合优化看成二次性能曲面,用 Hessian 的条件数解释最优权重的不稳定性。

读前导读

这一章在解决什么问题

结论先说:训练神经网络就是"找一个函数的最低点"。本章只回答一个问题:怎样判断一个点是不是最低点、最低点附近的地形长什么样。工具是二阶 Taylor 展开——你其实早就在用:债券价格变化 \(\Delta P/P\approx-D\,\Delta y+\frac12C(\Delta y)^2\) 就是价格对收益率的二阶 Taylor 展开,久期 \(D\) 对应一阶导数(梯度),凸性 \(C\) 对应二阶导数(Hessian)。本章把它推广到"很多个变量同时变化":梯度是一个向量(每个参数一个斜率),Hessian 是一个矩阵(每对参数一个曲率)。

本章有两个和你直接相关的结论。第一,线性神经元 + 误差平方和,性能曲面一定是一个"碗"(二次函数),碗底就是 OLS 解——所以线性回归是最简单的神经网络训练问题,答案你早就会算。第二,均值–方差组合优化也是同一种碗,碗的形状由协方差矩阵决定;资产高度相关时碗底是一条又平又长的山谷,最优权重沿谷底大幅漂移,这就是 Markowitz 优化"误差放大"的几何解释。

需要先想起来的数学

  • 导数与 Taylor 展开。\(F(x)\approx F(x^*)+F'(x^*)(x-x^*)+\frac12F''(x^*)(x-x^*)^2\):用"当前值 + 斜率 × 位移 + 曲率 × 位移平方的一半"近似函数。例:\(F(x)=e^x\) 在 0 处,\(e^{0.1}\approx1+0.1+0.005=1.105\)(真值 1.10517)。见 第 00 册第 02 章 导数与泰勒展开(含久期凸性的对照)。
  • 偏导数、梯度与 Hessian。偏导数 \(\partial F/\partial x_i\) 是"只动 \(x_i\)、其余不动"时的导数。例:\(F=x_1^2+3x_1x_2\),\(\partial F/\partial x_1=2x_1+3x_2\),\(\partial F/\partial x_2=3x_1\)。把所有偏导排成列向量就是梯度 \(\nabla F\)(读作 nabla F 或"梯度 F");二阶偏导排成矩阵就是 Hessian \(\nabla^2F\),本例为 \(\begin{bmatrix}2&3\\3&0\end{bmatrix}\)。见 第 00 册第 05 章 多元微积分与优化。
  • 二次型与正定。\(\mathbf{x}^T\mathbf{A}\mathbf{x}=\sum_{i,j}a_{ij}x_ix_j\) 是一个数。若对一切非零 \(\mathbf{x}\) 都有 \(\mathbf{x}^T\mathbf{A}\mathbf{x}>0\),称 \(\mathbf{A}\) 正定;\(\ge0\) 称半正定。组合方差 \(\mathbf{w}^T\boldsymbol\Sigma\mathbf{w}\ge0\) 就说明协方差矩阵半正定。判断方法:对称矩阵的特征值全正 ⇔ 正定。见 第 00 册第 06 章 线性代数速成。
  • 特征分解(第 05 章)。对称矩阵 \(\mathbf{A}=\mathbf{B}\boldsymbol\Lambda\mathbf{B}^T\),\(\mathbf{B}\) 的列是标准正交的特征向量,\(\mathbf{B}^T\mathbf{B}=\mathbf{I}\)。

本章符号补充:\(\nabla F(\mathbf{x}^*)^T(\mathbf{x}-\mathbf{x}^*)\) 是梯度与位移的内积,即"各方向斜率 × 各方向位移"之和;\(F^{(n)}\) 是 \(n\) 阶导数,\(n!\) 是 \(1\times2\times\cdots\times n\);"⇔"读作"当且仅当",两边互为充要条件。

怎么读这一章

核心必读是 8.2.2 节(向量 Taylor 展开)、8.4 节(最优性条件,记住两张小表)、8.5 节(二次函数,尤其 8.5.2 特征值就是曲率)和 8.6 节(线性网络的性能曲面)。8.3 节方向导数读懂"梯度方向最陡、切线方向为零"两个结论即可。8.2.1 节 \(\cos x\) 的例子和 8.4.1 节几个非二次例子可以快速浏览。8.7 节量化实战建议细读,它是整章最有实际价值的部分。


8.1 性能学习

到目前为止的学习规则分两类:联想学习(第 07 章 Hebb 学习,后面还有第 15 章)和竞争学习(第 15 章,原书第 16 章)。第三类是性能学习:调整网络参数,使网络的"性能"最优。原书第 8–14 章都属于这一类,它包括第 10 章的 LMS 和第 11 章的反向传播,是今天神经网络训练的主流。

性能学习分两步:

  1. 定义"性能":找一个定量的性能指标(performance index)\(F(\mathbf{x})\),网络表现好时小、表现差时大。\(\mathbf{x}\) 是所有权值和偏置排成的向量。本章和下一章假定指标已经给定,第 10、11、13 章讨论怎样选择。
  2. 搜索参数空间:调整 \(\mathbf{x}\) 使 \(F(\mathbf{x})\) 减小。本章研究 \(F\) 的曲面——性能曲面(performance surface)——的形状,以及保证极小点存在的条件。

量化里几乎所有"拟合"都是性能学习:回归最小化残差平方和,GARCH 最大化似然(最小化负对数似然),组合优化最小化风险减收益,策略参数优化最大化夏普率。本章的工具对它们全部适用。


8.2 Taylor 展开、梯度与 Hessian

8.2.1 标量情形

\(F(x)\) 在名义点 \(x^*\) 处的 Taylor 级数为

\[F(x)=F(x^*)+F'(x^*)(x-x^*)+\frac12F''(x^*)(x-x^*)^2+\cdots+\frac1{n!}F^{(n)}(x^*)(x-x^*)^n+\cdots\tag{8.1}\]

截取有限项来近似 \(F\)。

例(原书 8.2–8.6) \(F(x)=\cos x\) 在 \(x^*=0\) 处:\(\cos x=1-\frac12x^2+\frac1{24}x^4-\cdots\)。零阶近似 \(F_0=1\);一阶近似与零阶相同(一阶导为零);二阶近似 \(F_2=1-\frac12x^2\);四阶近似 \(F_4=1-\frac12x^2+\frac1{24}x^4\)。\(x\) 很接近 0 时三者都准确;远离时只有高阶近似准确,阶数越高准确范围越宽——因为高次项含 \((x-x^*)\) 的高次幂,\(x\) 越接近 \(x^*\) 它们越快地变小。

对比(原书 P8.1) 同一个 \(\cos x\) 在 \(x^*=\pi/2\) 处展开:\(\cos x=-(x-\frac\pi2)+\frac16(x-\frac\pi2)^3-\cdots\)。这里零阶近似 \(F_0=0\) 很差,一阶近似 \(F_1=\frac\pi2-x\) 在相当宽的范围内都准确。展开点的选择决定了哪一阶近似有用:在极值点附近,一阶项消失,二阶项决定局部形状——这正是我们在极小点附近关心的。

8.2.2 向量情形

性能指标是全部 \(n\) 个参数的函数。在 \(\mathbf{x}^*\) 处展开:

\[F(\mathbf{x})=F(\mathbf{x}^*)+\nabla F(\mathbf{x}^*)^T(\mathbf{x}-\mathbf{x}^*)+\frac12(\mathbf{x}-\mathbf{x}^*)^T\nabla^2F(\mathbf{x}^*)(\mathbf{x}-\mathbf{x}^*)+\cdots\tag{8.9}\]

其中梯度(gradient)和 Hessian 矩阵为

\[\nabla F=\begin{bmatrix}\dfrac{\partial F}{\partial x_1}\\ \vdots\\ \dfrac{\partial F}{\partial x_n}\end{bmatrix},\qquad \nabla^2F=\begin{bmatrix}\dfrac{\partial^2F}{\partial x_1^2}&\cdots&\dfrac{\partial^2F}{\partial x_1\partial x_n}\\ \vdots&\ddots&\vdots\\ \dfrac{\partial^2F}{\partial x_n\partial x_1}&\cdots&\dfrac{\partial^2F}{\partial x_n^2}\end{bmatrix}.\tag{8.10–8.11}\]

梯度和 Hessian 是理解性能曲面的两个核心对象。Taylor 定理的严格形式(含余项)见第 04 册第 02 章。

金融直觉:式 (8.9) 就是"多因子版的久期–凸性公式"。设债券组合价格依赖两条关键利率 \(y_1,y_2\)(比如 2 年和 10 年)。价格变化 \(\approx\) 各关键利率久期 × 各自变动之和(梯度项)+ \(\frac12\) × 二阶项。二阶项 \(\frac12\Delta\mathbf{x}^T\nabla^2F\Delta\mathbf{x}\) 展开为 \(\frac12\big(F_{11}\Delta x_1^2+2F_{12}\Delta x_1\Delta x_2+F_{22}\Delta x_2^2\big)\),其中 \(F_{11},F_{22}\) 是各自的凸性,交叉项 \(F_{12}\) 是"两个利率一起动"时额外的曲率(交叉凸性)。Hessian 的对角元是普通凸性,非对角元是交叉凸性。Hessian 一定是对称的(\(F_{12}=F_{21}\)),因为光滑函数的二阶偏导与求导顺序无关。


8.3 方向导数

梯度的第 \(i\) 个分量是沿 \(x_i\) 轴的斜率,Hessian 的第 \(i\) 个对角元是沿 \(x_i\) 轴的曲率。沿任意方向 \(\mathbf{p}\):

\[\text{一阶方向导数}=\frac{\mathbf{p}^T\nabla F(\mathbf{x})}{\|\mathbf{p}\|},\qquad \text{二阶方向导数}=\frac{\mathbf{p}^T\nabla^2F(\mathbf{x})\,\mathbf{p}}{\|\mathbf{p}\|^2}.\tag{8.12–8.13}\]

除以 \(\|\mathbf{p}\|\) 是为了让结果只依赖方向、不依赖长度。

推导拆解:方向导数公式从 Taylor 展开直接读出。沿单位方向 \(\mathbf{u}=\mathbf{p}/\|\mathbf{p}\|\) 走距离 \(s\),代入式 (8.9):\(F(\mathbf{x}+s\mathbf{u})\approx F(\mathbf{x})+s\,\mathbf{u}^T\nabla F+\frac12s^2\,\mathbf{u}^T\nabla^2F\,\mathbf{u}\)。把它看成 \(s\) 的一元函数,\(s\) 的系数就是一阶导数 \(\mathbf{u}^T\nabla F\),\(s^2/2\) 的系数就是二阶导数 \(\mathbf{u}^T\nabla^2F\mathbf{u}\);把 \(\mathbf{u}\) 换回 \(\mathbf{p}/\|\mathbf{p}\|\) 即得式 (8.12)–(8.13)。

为什么梯度方向最陡?一阶方向导数 \(\mathbf{u}^T\nabla F=\|\nabla F\|\cos\theta\)(\(\|\mathbf{u}\|=1\),\(\theta\) 是 \(\mathbf{u}\) 与梯度的夹角)。\(\cos\theta\) 最大为 1,在 \(\theta=0\) 即沿梯度方向取到,最大斜率就是 \(\|\nabla F\|\);\(\theta=90^\circ\) 时为 0,即等高线方向;\(\theta=180^\circ\) 时最小,即负梯度方向下降最快。

例(原书 8.14–8.16) \(F(\mathbf{x})=x_1^2+2x_2^2\),点 \(\mathbf{x}^*=[0.5,0.5]^T\),梯度 \(\nabla F=[2x_1,4x_2]^T=[1,2]^T\)。沿 \(\mathbf{p}=[2,-1]^T\) 的方向导数为 \(\frac{[2\ -1][1,2]^T}{\sqrt5}=0\)。

两个结论:

  • 与梯度正交的方向斜率为零。这个方向就是等高线的切线方向——沿等高线走,函数值不变。
  • 最大斜率在梯度方向上,大小为 \(\|\nabla F\|\)(此例为 \(\sqrt5\approx2.24\))。这是第 9 章最速下降法的出发点:沿负梯度方向走,函数下降最快。

原书 P8.3 用这个性质求等高线的切线:\(F(\mathbf{x})=(2+x_1)^2+5(1-x_1-x_2^2)^2\) 在原点的梯度为 \([-6,0]^T\),令 \((\mathbf{x}-\mathbf{0})^T\nabla F=0\) 得切线 \(x_1=0\)。


8.4 极小点与最优性条件

8.4.1 几种极小点

  • 强极小(strong minimum):存在 \(\delta>0\),使对一切 \(0<\|\Delta\mathbf{x}\|<\delta\) 有 \(F(\mathbf{x}^*)<F(\mathbf{x}^*+\Delta\mathbf{x})\)。往任何方向挪一小步,函数都严格增大。
  • 全局极小(global minimum):对一切 \(\Delta\mathbf{x}\ne\mathbf{0}\) 都有 \(F(\mathbf{x}^*)<F(\mathbf{x}^*+\Delta\mathbf{x})\)。强极小只管一个小邻域,邻域外可能有更低的点,所以也叫局部极小(local minimum)。
  • 弱极小(weak minimum):不是强极小,但存在 \(\delta>0\),使 \(F(\mathbf{x}^*)\le F(\mathbf{x}^*+\Delta\mathbf{x})\)。往任何方向走函数都不下降,但某些方向上函数不变。

例:

  • \(F(x)=3x^4-7x^2-\frac12x+6\)(原书 8.17):两个强极小约在 \(-1.1\) 与 \(1.1\),后者是全局极小。
  • \(F(\mathbf{x})=(x_2-x_1)^4+8x_1x_2-x_1+x_2+3\)(原书 8.18):两个强局部极小约在 \((-0.42,0.42)\) 与 \((0.55,-0.55)\),后者是全局极小;\((-0.13,0.13)\) 处是鞍点(saddle point)——沿直线 \(x_1=-x_2\) 是局部极大,沿与之正交的方向是局部极小。
  • \(F(\mathbf{x})=(x_1^2-1.5x_1x_2+2x_2^2)x_1^2\)(原书 8.19):直线 \(x_1=0\) 上每一点都是弱极小。

8.4.2 一阶条件

在 \(\mathbf{x}^*\) 附近,\(\|\Delta\mathbf{x}\|\) 很小时 \(F(\mathbf{x}^*+\Delta\mathbf{x})\approx F(\mathbf{x}^*)+\nabla F(\mathbf{x}^*)^T\Delta\mathbf{x}\)。若 \(\nabla F^T\Delta\mathbf{x}>0\),则反方向 \(-\Delta\mathbf{x}\) 会让函数下降,与极小矛盾。所以对一切 \(\Delta\mathbf{x}\) 都要有 \(\nabla F^T\Delta\mathbf{x}=0\),即

\[\nabla F(\mathbf{x}^*)=\mathbf{0}.\tag{8.27}\]

这是局部极小的一阶必要条件(不充分)。满足它的点叫驻点(stationary point)。

8.4.3 二阶条件

驻点处一阶项为零,展开剩下 \(F(\mathbf{x}^*+\Delta\mathbf{x})=F(\mathbf{x}^*)+\frac12\Delta\mathbf{x}^T\nabla^2F(\mathbf{x}^*)\Delta\mathbf{x}+\cdots\)。若对一切 \(\Delta\mathbf{x}\ne\mathbf{0}\) 有 \(\Delta\mathbf{x}^T\nabla^2F\,\Delta\mathbf{x}>0\),即 Hessian 正定(positive definite),则 \(\mathbf{x}^*\) 是强极小。正定可用特征值检验:全部为正 ⇔ 正定;全部非负 ⇔ 半正定(positive semidefinite)。

正定只是充分条件。二阶项为零时更高阶项仍可能使函数增大,所以强极小的二阶必要条件只是半正定。

白话解释:一元时你熟悉的规则是"\(F'=0\) 且 \(F''>0\) 就是极小"。多元时 \(F''>0\) 要换成"沿每一个方向的曲率都为正",而沿方向 \(\Delta\mathbf{x}\) 的曲率正是 \(\Delta\mathbf{x}^T\nabla^2F\,\Delta\mathbf{x}\)(差一个长度因子),所以条件就是 Hessian 正定。只检查对角元为正不够:\(\begin{bmatrix}1&2\\2&1\end{bmatrix}\) 对角元都是 1,但沿 \([1,-1]^T\) 方向 \(1-2-2+1=-2<0\),是鞍点。这和组合风险一样:每只资产方差为正不保证任意多空组合方差为正,关键看整个矩阵。用特征值判断最省事:对称矩阵特征值全正 ⇔ 正定,见 8.5.2 节的解释。

例(原书 8.32–8.34) \(F(\mathbf{x})=x_1^4+x_2^2\)。唯一驻点是原点,Hessian \(\begin{bmatrix}12x_1^2&0\\0&2\end{bmatrix}\) 在原点为 \(\begin{bmatrix}0&0\\0&2\end{bmatrix}\),只是半正定。它满足必要条件,但一、二阶条件无法证明它是极小;实际上它是强极小,靠的是四阶项。

总结:

条件 内容
极小(强或弱)的必要条件 \(\nabla F(\mathbf{x}^*)=\mathbf{0}\) 且 \(\nabla^2F(\mathbf{x}^*)\) 半正定
强极小的充分条件 \(\nabla F(\mathbf{x}^*)=\mathbf{0}\) 且 \(\nabla^2F(\mathbf{x}^*)\) 正定

例(原书 P8.4) \(F(x)=x^4-\frac23x^3-2x^2+2x+4\)。\(F'(x)=4x^3-2x^2-4x+2=0\) 的根为 \(1,-1,0.5\)。\(F''(x)=12x^2-4x-4\):\(F''(\pm1)>0\),\(F''(0.5)=-3<0\)。故 \(\pm1\) 是强局部极小,\(0.5\) 是强局部极大。\(F(1)=4.333\),\(F(-1)=1.667\),又因最高次项 \(x^4\) 系数为正,\(|x|\to\infty\) 时 \(F\to\infty\),所以 \(-1\) 是全局极小。**"比较所有局部极小 + 检查边界/无穷远处的行为"**是确认全局最优的基本方法。

例(原书 P8.5) 上面 8.4.1 节的二元函数,三个驻点的 Hessian 特征值分别为 \((8.0,\ 8.84)\)、\((-6.26,\ 8.0)\)、\((8.0,\ 21.42)\):第一、三个正定,是强极小;第二个特征值异号,Hessian 不定(indefinite),是鞍点。负曲率方向为 \([1,-1]^T\),正曲率方向为 \([1,1]^T\)。本章代码将数值复现这一结果。


8.5 二次函数:读懂 Hessian 的特征结构

8.5.1 为什么二次函数是核心

二次函数是"万能"的性能指标:许多应用中直接出现(线性网络的平方误差就是,见 8.6 节);而任何光滑函数在极小点附近的小邻域内都近似为二次函数(Taylor 展开到二阶)。一般形式

\[F(\mathbf{x})=\frac12\mathbf{x}^T\mathbf{A}\mathbf{x}+\mathbf{d}^T\mathbf{x}+c,\tag{8.35}\]

\(\mathbf{A}\) 对称(不对称时可换成 \((\mathbf{A}+\mathbf{A}^T)/2\),函数值不变)。利用 \(\nabla(\mathbf{h}^T\mathbf{x})=\mathbf{h}\) 与 \(\nabla(\mathbf{x}^T\mathbf{Q}\mathbf{x})=2\mathbf{Q}\mathbf{x}\)(\(\mathbf{Q}\) 对称):

\[\nabla F(\mathbf{x})=\mathbf{A}\mathbf{x}+\mathbf{d},\qquad \nabla^2F(\mathbf{x})=\mathbf{A}.\tag{8.38–8.39}\]

推导拆解:两个梯度公式用二维例子验证最直观。\(\mathbf{h}^T\mathbf{x}=h_1x_1+h_2x_2\),对 \(x_1\)、\(x_2\) 求偏导得 \(h_1,h_2\),即梯度为 \(\mathbf{h}\)——相当于一元的 \((hx)'=h\)。\(\mathbf{x}^T\mathbf{Q}\mathbf{x}=q_{11}x_1^2+2q_{12}x_1x_2+q_{22}x_2^2\)(\(\mathbf{Q}\) 对称),对 \(x_1\) 求偏导得 \(2q_{11}x_1+2q_{12}x_2\),对 \(x_2\) 得 \(2q_{12}x_1+2q_{22}x_2\),合起来正是 \(2\mathbf{Q}\mathbf{x}\)——相当于一元的 \((qx^2)'=2qx\)。式 (8.35) 前面的 \(\frac12\) 正是为了抵消这个 2,使梯度干净地等于 \(\mathbf{A}\mathbf{x}+\mathbf{d}\)。令梯度为零解出 \(\mathbf{x}^*=-\mathbf{A}^{-1}\mathbf{d}\),相当于一元的 \(ax+d=0\Rightarrow x=-d/a\)。

更高阶导数全为零,所以 Taylor 展开的前三项精确等于二次函数。\(\mathbf{A}\) 可逆时,唯一驻点是

\[\mathbf{x}^*=-\mathbf{A}^{-1}\mathbf{d}.\tag{8.62}\]

8.5.2 特征值就是曲率

取驻点在原点的 \(F(\mathbf{x})=\frac12\mathbf{x}^T\mathbf{A}\mathbf{x}\)。\(\mathbf{A}\) 对称,特征向量可取标准正交,\(\mathbf{B}=[\mathbf{z}_1\ \cdots\ \mathbf{z}_n]\),\(\mathbf{B}^{-1}=\mathbf{B}^T\),\(\mathbf{A}=\mathbf{B}\boldsymbol\Lambda\mathbf{B}^T\)(第 05 章)。把方向 \(\mathbf{p}\) 写成特征基下的坐标 \(\mathbf{p}=\mathbf{B}\mathbf{c}\),二阶方向导数变为

\[\frac{\mathbf{p}^T\mathbf{A}\mathbf{p}}{\|\mathbf{p}\|^2}=\frac{\mathbf{c}^T\mathbf{B}^T\mathbf{B}\boldsymbol\Lambda\mathbf{B}^T\mathbf{B}\mathbf{c}}{\mathbf{c}^T\mathbf{B}^T\mathbf{B}\mathbf{c}}=\frac{\mathbf{c}^T\boldsymbol\Lambda\mathbf{c}}{\mathbf{c}^T\mathbf{c}}=\frac{\sum_i\lambda_ic_i^2}{\sum_ic_i^2}.\tag{8.47}\]

推导拆解:式 (8.47) 每一步用了什么:分子 \(\mathbf{p}^T\mathbf{A}\mathbf{p}\) 中代入 \(\mathbf{p}=\mathbf{B}\mathbf{c}\)(于是 \(\mathbf{p}^T=\mathbf{c}^T\mathbf{B}^T\),转置规则)和 \(\mathbf{A}=\mathbf{B}\boldsymbol\Lambda\mathbf{B}^T\);然后用 \(\mathbf{B}^T\mathbf{B}=\mathbf{I}\)(特征向量标准正交)把两处 \(\mathbf{B}^T\mathbf{B}\) 消掉,剩 \(\mathbf{c}^T\boldsymbol\Lambda\mathbf{c}\);对角阵的二次型就是 \(\sum_i\lambda_ic_i^2\),没有交叉项。分母同理 \(\mathbf{p}^T\mathbf{p}=\mathbf{c}^T\mathbf{c}=\sum c_i^2\)——换到正交基不改变长度。数值例:\(\mathbf{A}=\begin{bmatrix}2&1\\1&2\end{bmatrix}\),特征值 1(方向 \([1,-1]^T/\sqrt2\))和 3(方向 \([1,1]^T/\sqrt2\))。沿 \(\mathbf{p}=[1,0]^T\),\(c_1=c_2=1/\sqrt2\),曲率 \(=(1\cdot\frac12+3\cdot\frac12)/1=2\),与直接算 \(\mathbf{p}^T\mathbf{A}\mathbf{p}=a_{11}=2\) 一致。

金融直觉:这就是 5.8 节"组合方差在特征基下可加"的同一个公式:组合方差 \(\mathbf{w}^T\boldsymbol\Sigma\mathbf{w}=\sum\lambda_ic_i^2\)。单位长度组合的方差不可能小于最小特征值、也不可能大于最大特征值;最小方差的"组合方向"就是最小特征值对应的主成分。

这个式子信息量很大:

  • 任意方向的二阶导数是各特征值的加权平均,权重是该方向在各特征方向上的分量平方。因此 \(\lambda_{\min}\le\dfrac{\mathbf{p}^T\mathbf{A}\mathbf{p}}{\|\mathbf{p}\|^2}\le\lambda_{\max}\)(Rayleigh 商性质,见第 01 册第 04a 章)。
  • 取 \(\mathbf{p}=\mathbf{z}_{\max}\),\(\mathbf{c}\) 只在 \(\lambda_{\max}\) 对应位置为 1,二阶导数恰为 \(\lambda_{\max}\)。特征值就是对应特征向量方向上的二阶导数(曲率);最大曲率在 \(\mathbf{z}_{\max}\) 方向,最小曲率在 \(\mathbf{z}_{\min}\) 方向。
  • 特征向量构成使二次型交叉项消失的坐标系,叫等高线的主轴(principal axes)。椭圆等高线的长轴沿最小曲率方向(函数沿这个方向变化慢,等高线间距大),短轴沿最大曲率方向。

8.5.3 四种典型形状

例子 \(\mathbf{A}\) 特征值与特征向量 形状
\(x_1^2+x_2^2\) \(\begin{bmatrix}2&0\\0&2\end{bmatrix}\) \(\lambda_1=\lambda_2=2\),任意方向 圆形凹谷:各方向曲率相同,等高线为圆
\(x_1^2+x_1x_2+x_2^2\) \(\begin{bmatrix}2&1\\1&2\end{bmatrix}\) \(\lambda_1=1,\ [1,-1]^T\);\(\lambda_2=3,\ [1,1]^T\) 椭圆凹谷:长轴沿 \([1,-1]^T\)
\(-\frac14x_1^2-\frac32x_1x_2-\frac14x_2^2\) \(\begin{bmatrix}-0.5&-1.5\\-1.5&-0.5\end{bmatrix}\) \(\lambda_1=1,\ [-1,1]^T\);\(\lambda_2=-2,\ [-1,-1]^T\) 拉长的鞍形:沿 \(\mathbf{z}_1\) 极小、沿 \(\mathbf{z}_2\) 极大
\(\frac12x_1^2-x_1x_2+\frac12x_2^2\) \(\begin{bmatrix}1&-1\\-1&1\end{bmatrix}\) \(\lambda_1=2,\ [-1,1]^T\);\(\lambda_2=0,\ [-1,-1]^T\) 平稳山谷:直线 \(x_1=x_2\) 上全是弱极小

8.5.4 按特征值符号分类

对二次函数(驻点在原点、\(\mathbf{d}=\mathbf{0}\)):

  1. 特征值全正 ⇒ 唯一强极小(圆形或椭圆凹谷);
  2. 全负 ⇒ 唯一强极大;
  3. 有正有负 ⇒ 唯一鞍点;
  4. 全非负但有零 ⇒ 弱极小(平稳山谷),或者没有驻点;
  5. 全非正但有零 ⇒ 弱极大,或者没有驻点。

\(c\ne0\) 只把整个曲面上下平移。\(\mathbf{d}\ne\mathbf{0}\) 且 \(\mathbf{A}\) 可逆时,等高线形状不变,只是中心移到 \(-\mathbf{A}^{-1}\mathbf{d}\)。对二次函数,强极小存在当且仅当 Hessian 正定;非二次函数则可能在 Hessian 仅半正定时仍有强极小(如 \(x_1^4+x_2^2\))。

\(\mathbf{A}\) 奇异时会怎样(原书 P8.7)。\(F(\mathbf{x})=[1\ -1]\mathbf{x}+\frac12\mathbf{x}^T\begin{bmatrix}1&1\\1&1\end{bmatrix}\mathbf{x}\)。Hessian 特征值 \(\lambda_1=0\)(\(\mathbf{z}_1=[1,-1]^T\))、\(\lambda_2=2\)(\(\mathbf{z}_2=[1,1]^T\))。没有线性项时它是平稳山谷;但线性项的梯度 \([1,-1]^T\) 恰好沿零曲率方向 \(\mathbf{z}_1\),于是函数沿 \(\mathbf{z}_2\) 弯曲、沿 \(\mathbf{z}_1\) 却一路线性下降——下降山谷(falling valley),根本没有驻点。原书 E8.13 的结论:只有当 \(\mathbf{d}\) 与零特征值方向正交(此例中 \(\mathbf{d}\propto[1,1]^T\))时,才会出现弱极小。


8.6 线性网络的性能曲面

本章的工具第一次正式用于神经网络(原书 P8.6)。单输入线性神经元 \(a=wp+b\),训练样本 \(\{p_1=2,t_1=0.5\}\),\(\{p_2=-1,t_2=0\}\),性能指标取误差平方和

\[F(\mathbf{x})=(t_1-a_1)^2+(t_2-a_2)^2,\qquad \mathbf{x}=\begin{bmatrix}w\\b\end{bmatrix}.\]

把误差写成向量:\(\mathbf{e}=\mathbf{t}-\mathbf{G}\mathbf{x}\),\(\mathbf{G}=\begin{bmatrix}p_1&1\\p_2&1\end{bmatrix}\)。于是

\[F=(\mathbf{t}-\mathbf{G}\mathbf{x})^T(\mathbf{t}-\mathbf{G}\mathbf{x})=\mathbf{t}^T\mathbf{t}-2\mathbf{t}^T\mathbf{G}\mathbf{x}+\mathbf{x}^T\mathbf{G}^T\mathbf{G}\mathbf{x}.\]

对照式(8.35),这是二次函数,\(c=\mathbf{t}^T\mathbf{t}\),\(\mathbf{d}=-2\mathbf{G}^T\mathbf{t}\),\(\mathbf{A}=2\mathbf{G}^T\mathbf{G}\)。驻点

\[\mathbf{x}^*=-\mathbf{A}^{-1}\mathbf{d}=(\mathbf{G}^T\mathbf{G})^{-1}\mathbf{G}^T\mathbf{t}=\begin{bmatrix}5&1\\1&2\end{bmatrix}^{-1}\begin{bmatrix}1\\0.5\end{bmatrix}=\begin{bmatrix}0.167\\0.167\end{bmatrix},\]

即 \(w=b=0.167\)。Hessian \(2\mathbf{G}^T\mathbf{G}=\begin{bmatrix}10&2\\2&4\end{bmatrix}\) 的特征值约为 10.6 和 3.4,都为正,所以是强极小;等高线是椭圆,长轴沿小特征值 3.4 对应的特征向量(约 \([0.3,-1]^T\))。

推导拆解:展开那一步和 \((t-gx)^2=t^2-2tgx+g^2x^2\) 一样,只是要注意矩阵乘法不能交换:\((\mathbf{t}-\mathbf{G}\mathbf{x})^T(\mathbf{t}-\mathbf{G}\mathbf{x})=\mathbf{t}^T\mathbf{t}-\mathbf{t}^T\mathbf{G}\mathbf{x}-\mathbf{x}^T\mathbf{G}^T\mathbf{t}+\mathbf{x}^T\mathbf{G}^T\mathbf{G}\mathbf{x}\);中间两项都是数(\(1\times1\)),一个数的转置等于它自己,所以 \(\mathbf{x}^T\mathbf{G}^T\mathbf{t}=\mathbf{t}^T\mathbf{G}\mathbf{x}\),合并为 \(-2\mathbf{t}^T\mathbf{G}\mathbf{x}\)。对照 \(\frac12\mathbf{x}^T\mathbf{A}\mathbf{x}\) 要让 \(\frac12\mathbf{A}=\mathbf{G}^T\mathbf{G}\),所以 \(\mathbf{A}=2\mathbf{G}^T\mathbf{G}\);线性项 \(\mathbf{d}^T\mathbf{x}=-2\mathbf{t}^T\mathbf{G}\mathbf{x}\),所以 \(\mathbf{d}=-2\mathbf{G}^T\mathbf{t}\)。

这里 \(\mathbf{G}\) 就是回归的设计矩阵 \(\mathbf{X}\)(每行一个样本,最后一列全是 1 对应截距/偏置),\(\mathbf{x}=[w,b]^T\) 就是 \([\hat\beta_1,\hat\beta_0]^T\),\(\mathbf{x}^*=(\mathbf{G}^T\mathbf{G})^{-1}\mathbf{G}^T\mathbf{t}\) 就是 \((\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y}\)。单个线性神经元的训练问题和 OLS 是同一个问题。

三个要点:

  1. 线性网络 + 平方误差 ⇒ 二次性能曲面,这对任意多个输入、任意多个样本都成立。最优解就是最小二乘解(正规方程),和第 07 章的伪逆规则是同一个答案。

  2. Hessian \(2\mathbf{G}^T\mathbf{G}\) 只由输入数据决定,与目标无关。输入之间越相关,\(\mathbf{G}^T\mathbf{G}\) 越接近奇异,椭圆越扁。

    金融直觉:你在 CFA 里学过 OLS 系数的协方差矩阵是 \(\sigma^2(\mathbf{X}^T\mathbf{X})^{-1}\)。这里 Hessian 正比于 \(\mathbf{X}^T\mathbf{X}\),所以"Hessian 的逆"正比于系数的估计方差:曲率小的方向(椭圆长轴),系数方差大、估计不准;曲率大的方向,系数估得准。多重共线性时两个因子系数的"差"几乎无法确定,正是因为沿这个方向的曲率接近零——谷底平坦,在上面往哪挪,误差平方和都差不多。

  3. 只要 \(\mathbf{G}^T\mathbf{G}\) 半正定(总是如此),曲面就不会有鞍点或极大;若 \(\mathbf{G}\) 列满秩,则有唯一强极小。第 10 章的 LMS 算法正是建立在这个"碗"形曲面上,而多层网络(第 11 章)的曲面不再是二次的,会出现多个局部极小和鞍点。

预告:在扁长的椭圆曲面上做梯度下降,学习率受最大曲率 \(\lambda_{\max}\) 限制(太大会在陡峭方向来回振荡),而沿最小曲率 \(\lambda_{\min}\) 方向的收敛又非常慢。条件数 \(\lambda_{\max}/\lambda_{\min}\) 因此决定了训练的难易,原书第 9、10 章会定量说明。


8.7 量化实战:组合优化的性能曲面

8.7.1 均值–方差就是一个二次性能曲面

无约束的均值–方差问题最小化

\[F(\mathbf{w})=\frac\gamma2\mathbf{w}^T\boldsymbol\Sigma\mathbf{w}-\boldsymbol\mu^T\mathbf{w},\]

对照式(8.35),\(\mathbf{A}=\gamma\boldsymbol\Sigma\),\(\mathbf{d}=-\boldsymbol\mu\),最优解 \(\mathbf{w}^*=-\mathbf{A}^{-1}\mathbf{d}=\frac1\gamma\boldsymbol\Sigma^{-1}\boldsymbol\mu\) 就是式(8.62)。本章的全部几何直觉都可以直接搬过来:

  • Hessian 的特征结构就是协方差矩阵的主成分结构。最大特征值方向通常是"所有资产同涨同跌"的市场方向,曲率最大——在这个方向上多押一点,风险迅速上升。最小特征值方向是高度相关资产之间的价差组合,曲率很小——几乎"不花风险"。
  • 病态 Hessian ⇒ 平坦长谷 ⇒ 最优点对 \(\boldsymbol\mu\) 极度敏感。\(\boldsymbol\mu\) 的一个小误差 \(\delta\boldsymbol\mu\) 引起最优权重变化 \(\delta\mathbf{w}=\mathbf{A}^{-1}\delta\boldsymbol\mu\),在特征基下沿第 \(i\) 个方向被放大 \(1/\lambda_i\) 倍。最小特征值接近零时,曲面接近"平稳山谷"甚至"下降山谷",最优点沿谷底大幅漂移。这是均值–方差优化"误差放大"问题的几何解释。
  • 补救就是改变曲面形状:对协方差做收缩(shrinkage),把最小特征值抬离零;或加 \(\ell_2\) 正则 \(\frac{\kappa}{2}\|\mathbf{w}\|^2\),等价于 \(\mathbf{A}\to\mathbf{A}+\kappa\mathbf{I}\),所有特征值都加 \(\kappa\)。

回归也一样:P8.6 的 Hessian \(2\mathbf{G}^T\mathbf{G}\) 的条件数刻画了因子共线程度,椭圆越扁,系数在长轴方向上越不确定(方差越大)。

8.7.2 非凸目标:局部极小、鞍点与"尖"与"平"

神经网络的损失、带交易成本或整数约束的组合问题、参数化策略的夏普率,都是非凸的,存在多个局部极小和鞍点。P8.4 的做法——找出所有驻点、用 Hessian 分类、比较函数值、检查无穷远处的行为——在低维时可以照做,高维时只能依赖多起点搜索。对策略参数优化还有一个实用判据:最优点处的 Hessian 曲率很大(尖峰),说明参数稍有偏离表现就骤降,往往是过拟合;曲率小的平坦宽谷对应更稳健的参数。

8.7.3 代码

下面的代码核对原书的方向导数例子、P8.5 的驻点分类和 P8.6 的线性网络性能曲面,然后构造一个 20 只高度相关资产(两两相关 0.9)的均值–方差问题:给 \(\boldsymbol\mu\) 加上年化 2% 的估计误差,看最优权重漂移多少;再把协方差向对角阵收缩 30%,看条件数和漂移如何变化。

import numpy as np
from scipy.optimize import fsolve
np.set_printoptions(precision=4, suppress=True)

# ---------- 方向导数:原书 (8.14)-(8.16) ----------
grad = lambda x: np.array([2 * x[0], 4 * x[1]])                 # F = x1^2 + 2 x2^2
x0 = np.array([0.5, 0.5])
for p in [np.array([2., -1.]), np.array([1., 2.]), np.array([1., 0.])]:
    print("dir", p, "slope = %.4f" % (p @ grad(x0) / np.linalg.norm(p)))

# ---------- 原书 P8.5:用 Hessian 特征值给驻点分类 ----------
def g(x):
    d = x[1] - x[0]
    return np.array([-4 * d**3 + 8 * x[1] - 1, 4 * d**3 + 8 * x[0] + 1])
def H(x):
    d2 = 12 * (x[1] - x[0])**2
    return np.array([[d2, -d2 + 8], [-d2 + 8, d2]])
F = lambda x: (x[1] - x[0])**4 + 8 * x[0] * x[1] - x[0] + x[1] + 3
for guess in ([-0.4, 0.4], [-0.1, 0.1], [0.5, -0.5]):
    xs = fsolve(g, guess)
    lam = np.linalg.eigvalsh(H(xs))
    kind = "strong min" if lam.min() > 0 else ("saddle" if lam.min() < 0 < lam.max() else "?")
    print("x* =", xs, " F = %.4f" % F(xs), " eig(H) =", lam, "->", kind)

# ---------- 原书 P8.6:线性神经元 + 平方误差 = 二次性能曲面 ----------
p = np.array([2., -1.]); t = np.array([0.5, 0.])
G = np.c_[p, np.ones(2)]                                        # 参数 x = [w, b]
A, d, c = 2 * G.T @ G, -2 * G.T @ t, t @ t
x_star = -np.linalg.solve(A, d)
lam, Z = np.linalg.eigh(A)
print("A =\n", A, "\nx* = -A^{-1} d =", x_star, "  eig(A) =", lam)
print("principal axes (columns):\n", Z)

# ========== 量化:均值-方差 = 二次函数;Hessian 病态 -> 最优权重对 mu 极度敏感 ==========
rng = np.random.default_rng(5)
n = 20
rho = 0.9                                                       # 资产两两高度相关
vol = rng.uniform(0.15, 0.35, n)
Corr = rho * np.ones((n, n)) + (1 - rho) * np.eye(n)
Sigma = np.outer(vol, vol) * Corr
mu = 0.02 + 0.3 * vol                                           # "真实"期望收益
gamma = 5.0
def mv(S, m): return np.linalg.solve(gamma * S, m)              # w* = -A^{-1} d, A = gamma*S, d = -mu
def shrink(S, a):                                               # 向对角阵收缩,抬高最小特征值
    return (1 - a) * S + a * np.diag(np.diag(S))
w_true = mv(Sigma, mu)
for a in [0.0, 0.3]:
    S = shrink(Sigma, a)
    ev = np.linalg.eigvalsh(gamma * S)
    devs = []
    for _ in range(200):
        mu_hat = mu + rng.normal(0, 0.02, n)                    # mu 的估计误差(年化 2%)
        devs.append(np.linalg.norm(mv(S, mu_hat) - mv(S, mu)))
    print(f"shrink a={a:.1f}: eig(A) min={ev.min():.4f} max={ev.max():.3f} cond={ev.max()/ev.min():7.1f}  "
          f"mean ||dw|| from 2% mu-noise = {np.mean(devs):.2f}")
# 二阶方向导数夹在 [lambda_min, lambda_max](Rayleigh 商)
A = gamma * Sigma; ev, V = np.linalg.eigh(A)
u = rng.standard_normal(n)
print("curvature along random dir = %.4f in [%.4f, %.4f]" % (u @ A @ u / (u @ u), ev.min(), ev.max()))
print("curvature along z_min = %.4f, along z_max = %.4f" % (V[:, 0] @ A @ V[:, 0], V[:, -1] @ A @ V[:, -1]))
print("z_max ~ equal-sign 'market' direction? all same sign:", np.all(np.sign(V[:, -1]) == np.sign(V[0, -1])))
print("||w_true|| = %.2f, sum(w_true) = %.2f" % (np.linalg.norm(w_true), w_true.sum()))

运行输出:

dir [ 2. -1.] slope = 0.0000
dir [1. 2.] slope = 2.2361
dir [1. 0.] slope = 1.0000
x* = [-0.4188  0.4188]  F = 2.9267  eig(H) = [8.     8.8364] -> strong min
x* = [-0.1348  0.1348]  F = 3.1295  eig(H) = [-6.2557  8.    ] -> saddle
x* = [ 0.5536 -0.5536]  F = 0.9438  eig(H) = [ 8.     21.4193] -> strong min
A =
 [[10.  2.]
 [ 2.  4.]] 
x* = -A^{-1} d = [0.1667 0.1667]   eig(A) = [ 3.3944 10.6056]
principal axes (columns):
 [[ 0.2898 -0.9571]
 [-0.9571 -0.2898]]
shrink a=0.0: eig(A) min=0.0127 max=6.023 cond=  474.6  mean ||dw|| from 2% mu-noise = 3.76
shrink a=0.3: eig(A) min=0.0470 max=4.339 cond=   92.4  mean ||dw|| from 2% mu-noise = 1.04
curvature along random dir = 0.0422 in [0.0127, 6.0229]
curvature along z_min = 0.0127, along z_max = 6.0229
z_max ~ equal-sign 'market' direction? all same sign: True
||w_true|| = 1.11, sum(w_true) = 1.43

解读:

  • 方向导数:沿 \([2,-1]^T\)(与梯度正交、等高线切线方向)斜率为 0;沿梯度方向 \([1,2]^T\) 斜率为 \(\sqrt5\approx2.236\),是最大值。
  • P8.5:三个驻点和 Hessian 特征值与原书一致,\((0.55,-0.55)\) 处函数值 0.944 最小,是全局极小;中间的驻点特征值一负一正,是鞍点。
  • P8.6:最优权值 \(w=b=0.1667\),Hessian 特征值 3.39 与 10.61;小特征值对应的主轴约为 \([0.29,-0.96]^T\)(与原书的 \([0.3,-1]^T\) 同方向),是椭圆的长轴。
  • 组合优化:20 只两两相关 0.9 的资产,Hessian 条件数约 475。\(\boldsymbol\mu\) 每个分量只差年化 2%,最优权重向量(以净值倍数计)的欧氏距离平均漂移 3.76,而真实最优权重本身的范数只有 1.11——误差比信号还大三倍多,这就是典型的"平坦长谷"。向对角阵收缩 30% 后,最小特征值从 0.0127 升到 0.047,条件数降到 92,漂移降到 1.04。代价是收缩后的协方差有偏,这是"方差–偏差权衡"在组合优化中的体现。
  • 最后三行验证了 Rayleigh 商性质:随机方向的曲率 0.042 落在 \([\lambda_{\min},\lambda_{\max}]\) 内,而且因为高维随机方向在各特征方向上的分量大致均匀,它更接近大多数小特征值而非唯一的大特征值;最大曲率方向的所有分量同号,正是"市场方向"。

本章小结

性能学习先选一个性能指标,再在参数空间里找它的极小点。二阶 Taylor 展开用梯度和 Hessian 刻画性能曲面的局部形状:一阶方向导数在梯度方向最大、在等高线切线方向为零;二阶方向导数是曲率。极小点分强、弱、全局三种,驻点也可能是鞍点。一阶必要条件是梯度为零,二阶必要条件是 Hessian 半正定,充分条件是 Hessian 正定。二次函数 \(\frac12\mathbf{x}^T\mathbf{A}\mathbf{x}+\mathbf{d}^T\mathbf{x}+c\) 是最重要的特例:梯度 \(\mathbf{A}\mathbf{x}+\mathbf{d}\),Hessian \(\mathbf{A}\),驻点 \(-\mathbf{A}^{-1}\mathbf{d}\);Hessian 的特征向量是等高线主轴,特征值是对应方向的曲率,任意方向的曲率都是特征值的加权平均;按特征值符号可分为凹谷、峰顶、鞍点、平稳山谷和下降山谷。线性网络配平方误差一定得到二次性能曲面,其 Hessian \(2\mathbf{G}^T\mathbf{G}\) 由输入决定。均值–方差组合优化是同一种曲面,协方差的病态让最优权重对期望收益的误差极度敏感,收缩或正则化通过抬高最小特征值改善曲面形状。

概念 公式 / 要点
二阶 Taylor \(F(\mathbf{x})\approx F(\mathbf{x}^*)+\nabla F^T\Delta\mathbf{x}+\frac12\Delta\mathbf{x}^T\nabla^2F\,\Delta\mathbf{x}\)
一阶方向导数 \(\mathbf{p}^T\nabla F/|\mathbf{p}|\);梯度方向最大,切线方向为零
二阶方向导数 \(\mathbf{p}^T\nabla^2F\,\mathbf{p}/|\mathbf{p}|^2\in[\lambda_{\min},\lambda_{\max}]\)
必要条件 \(\nabla F=\mathbf{0}\),\(\nabla^2F\) 半正定
充分条件(强极小) \(\nabla F=\mathbf{0}\),\(\nabla^2F\) 正定
二次函数 \(\nabla F=\mathbf{A}\mathbf{x}+\mathbf{d}\),\(\nabla^2F=\mathbf{A}\),\(\mathbf{x}^*=-\mathbf{A}^{-1}\mathbf{d}\)
特征结构 特征向量 = 主轴,特征值 = 曲率;长轴沿最小曲率方向
曲面分类 全正:凹谷;全负:峰;异号:鞍;含零:平稳山谷或下降山谷
线性网络 \(F=|\mathbf{t}-\mathbf{G}\mathbf{x}|^2\),\(\mathbf{A}=2\mathbf{G}^T\mathbf{G}\),\(\mathbf{x}^*=(\mathbf{G}^T\mathbf{G})^{-1}\mathbf{G}^T\mathbf{t}\)
均值–方差 \(\mathbf{A}=\gamma\boldsymbol\Sigma\),\(\mathbf{d}=-\boldsymbol\mu\),\(\mathbf{w}^*=\boldsymbol\Sigma^{-1}\boldsymbol\mu/\gamma\)

练习

基础

  1. 求 \(F(x)=x^4-\frac12x^2+1\) 的驻点并分类。(原书 E8.4) 答案:\(F'=4x^3-x=0\) 得 \(x=0,\pm\frac12\);\(F''=12x^2-1\),\(F''(0)=-1<0\) 为局部极大,\(F''(\pm\frac12)=2>0\) 为强极小(两者函数值相同,都是全局极小)。
  2. 对 \(F(\mathbf{x})=x_1^2+x_1x_2+x_2^2+3x_1+3x_2\),求梯度、Hessian、驻点,并说明曲面形状。(E8.3 中的一个) 答案:\(\mathbf{A}=\begin{bmatrix}2&1\\1&2\end{bmatrix}\),\(\mathbf{d}=[3,3]^T\),\(\mathbf{x}^*=-\mathbf{A}^{-1}\mathbf{d}=[-1,-1]^T\);特征值 1、3,椭圆凹谷,长轴沿 \([1,-1]^T\)。
  3. \(F(\mathbf{x})=\frac12\mathbf{x}^T\begin{bmatrix}1&-3\\-3&1\end{bmatrix}\mathbf{x}+[4\ -4]\mathbf{x}+2\)。求梯度、Hessian 特征值,判断驻点类型,并求在原点沿 \([1,1]^T\) 的一阶、二阶方向导数。(原书 E8.7) 答案要点:特征值 \(-2\)(方向 \([1,1]^T\))与 4(方向 \([1,-1]^T\)),鞍点;原点梯度为 \(\mathbf{d}=[4,-4]^T\),沿 \([1,1]^T\) 一阶方向导数为 0,二阶方向导数为 \(-2\)。
  4. \(F(\mathbf{x})=x_1x_2-x_1+2x_2\):求驻点并分类,再求在 \([-1,1]^T\) 处沿 \([-1,1]^T\) 的方向导数。(原书 E8.11) 答案要点:\(\nabla F=[x_2-1,\ x_1+2]^T\),驻点 \([-2,1]^T\);Hessian \(\begin{bmatrix}0&1\\1&0\end{bmatrix}\) 特征值 \(\pm1\),鞍点;在 \([-1,1]^T\) 梯度为 \([0,1]^T\),方向导数 \(1/\sqrt2\)。
  5. 只改变 P8.7 中的 \(\mathbf{d}\)(保持非零),使函数出现弱极小。(原书 E8.13) 答案:\(\mathbf{d}\) 必须与零特征值方向 \([1,-1]^T\) 正交,即 \(\mathbf{d}\propto[1,1]^T\)。

进阶

  1. \(F(\mathbf{x})=(x_1+x_2)^4-12x_1x_2+x_1+x_2+1\)。验证 \([-0.6504,-0.6504]^T\)、\([0.085,0.085]^T\)、\([0.5655,0.5655]^T\) 是驻点,并用 Hessian 特征值分类。(原书 E8.5) 提示:仿照本章代码,把 \(g\)、\(H\) 换掉即可。Hessian 为 \(12(x_1+x_2)^2\begin{bmatrix}1&1\\1&1\end{bmatrix}+\begin{bmatrix}0&-12\\-12&0\end{bmatrix}\),特征方向固定为 \([1,1]^T\) 与 \([1,-1]^T\)。
  2. \(F(\mathbf{x})=\frac32x_1^2+2x_1x_2+x_2^3+4x_1+4x_2\)。在 \([1,0]^T\) 处做二次近似,求近似函数的驻点;这个点是原函数的极小点吗?(原书 E8.10) 提示:二次近似的驻点就是从 \([1,0]^T\) 出发的一步牛顿法;它一般不是原函数的驻点,这正是牛顿法需要迭代的原因(原书第 9 章)。
  3. 证明对任意数据,线性神经元的平方误差性能曲面 \(\|\mathbf{t}-\mathbf{G}\mathbf{x}\|^2\) 不可能有鞍点或严格极大。\(\mathbf{G}\) 何时有唯一强极小?何时是平稳山谷? 答案要点:Hessian \(2\mathbf{G}^T\mathbf{G}\) 半正定;\(\mathbf{G}\) 列满秩时正定,有唯一强极小;列线性相关(如两个输入完全共线)时有零特征值,又因 \(\mathbf{d}=-2\mathbf{G}^T\mathbf{t}\) 必在 \(\mathbf{G}^T\) 的列空间内、与零空间正交,所以是平稳山谷(弱极小),不会是下降山谷。
  4. 量化思考:在均值–方差问题中加入 \(\ell_2\) 正则 \(\frac\kappa2\|\mathbf{w}\|^2\)。写出新的 \(\mathbf{A}\),说明各特征值、条件数和最优权重对 \(\boldsymbol\mu\) 误差的放大倍数如何变化。 答案要点:\(\mathbf{A}=\gamma\boldsymbol\Sigma+\kappa\mathbf{I}\),每个特征值加 \(\kappa\),条件数变为 \((\lambda_{\max}+\kappa)/(\lambda_{\min}+\kappa)\),沿第 \(i\) 个主方向的放大倍数从 \(1/\lambda_i\) 降到 \(1/(\lambda_i+\kappa)\)。
  5. 量化思考:你用网格搜索优化一个均线策略的两个参数(快线、慢线周期),得到夏普率曲面。如何用本章的方法判断最优参数是否稳健? 提示:在最优点附近用有限差分估计 Hessian,看特征值大小(曲率越大越"尖")以及最小曲率方向;也可以直接比较最优点邻域内的平均夏普率与最优点处的值。

原书推荐习题:P8.5、E8.5(Hessian 特征值分类驻点);P8.6(线性网络二次曲面的完整推导,强烈推荐);P8.7、E8.13(奇异 Hessian 下驻点的存在性);E8.6(覆盖二次函数全部形状);E8.10(二次近似与牛顿法的关系)。


原书对照

本章内容 原书章节 PDF 页码
8.1 性能学习 Objectives p.228–229
8.2 Taylor 展开 Taylor Series(标量、向量) p.229–231
8.3 方向导数 Directional Derivatives p.232–234
8.4 极小点与最优性条件 Minima、Necessary Conditions for Optimality p.234–239
8.5 二次函数 Quadratic Functions、Eigensystem of the Hessian p.239–246
结果汇总 Summary of Results p.247–248
8.4、8.6 中的例题 Solved Problems P8.1–P8.7 p.249–260
结语、延伸阅读 Epilogue、Further Reading p.261–262
练习 Exercises E8.1–E8.13 p.263–266

原书配套演示:nnd8ts1(标量 Taylor 近似)、nnd8ts2(向量 Taylor 近似)、nnd8dd(方向导数)、nnd8qf(二次函数)。延伸阅读推荐 Gill、Murray、Wright《Practical Optimization》,Himmelblau《Applied Nonlinear Programming》,Scales《Introduction to Non-Linear Optimization》;本套教材中对应的系统讲解在第 04 册第 02 章。