神经网络训练与优化:BP、过拟合、Hessian 与鞍点

2270 字
11 分钟
神经网络训练与优化:BP、过拟合、Hessian 与鞍点

神经网络的学习过程可以分成两个层面:一是模型如何表示复杂函数并通过 BP 更新参数,二是优化算法在高维损失面上究竟会遇到什么困难。

把这两部分放在一起,可以从“网络为什么能学”继续追问到“训练为什么会停”“梯度很小是否代表到达最优点”。

内容脉络#

  1. M-P 神经元与激活函数构成网络的基础单元。
  2. 多层网络依靠反向传播计算梯度并更新参数。
  3. 早停和正则化用于改善泛化能力。
  4. 梯度接近零不等于到达局部最小值。
  5. Hessian 矩阵的特征值可以区分极小值、极大值与鞍点。

神经网络基础:表示、BP 与泛化#

先从模型结构和训练机制出发,理解激活函数、万有逼近能力、BP 算法,以及早停和正则化的作用。

神经网络模型#

1943年一直沿用至今的M-P神经网络模型

M-P神经网络模型#

模型解释#

将输入神经元的x乘上相应权重w并求和,将结果与阈值θ\theta做差,再经过激活函数f得到输出值y

名词解释#

阈值(threshold / bias): 表示神经元电位超过阈值则被激活

激活函数(activation function): 对神经元的线性组合结果进行非线性变换。不同激活函数的值域不同,例如 Sigmoid 的值域是 (0,1)(0,1),ReLU 的值域是 [0,+)[0,+\infty)

训练目标#

通过训练模型,得出合适的w和θ\theta,其中训练算法最常见的就是下面会说到的BP算法

激活函数#

回顾第三章线性模型中的对数几率回归模型和单位阶跃函数

最理想状态是用单位阶跃函数输入值映射为0/1,但由于其不连续、不光滑的性质, 我们使用 Sigmoid 函数将输入值映射到 (0,1)(0,1)

σ(x)=11+ex\sigma(x)=\frac{1}{1+e^{-x}}

它的导数可以直接由函数值表示:

σ(x)=σ(x)(1σ(x))\sigma'(x)=\sigma(x)\left(1-\sigma(x)\right)

万有逼近能力#

名词概念:#

在满足激活函数等条件时,包含足够多神经元的单隐层前馈网络可以在紧致集合上以任意精度逼近连续函数。这个结论说明了表示能力,但不保证网络容易训练,也不说明需要多少神经元。

引入原因:#

很多算法都具有万有逼近能力,不是神经网络所特有的,如决策树、支持向量机等等。 而之所以在神经网络中强调其万有逼近能力,是因为其数学公理方面的理论薄弱,为了证明其有效性而进行说明。

BP算法#

误差逆传播(error BackPropagation,简称BP)算法,亦称反向传播算法

BP算法是一种迭代算法,基于梯度下降(gradient descent)策略, 数学推导过程不多做阐述,详见西瓜书or南瓜书

缓解过拟合#

由于神经网络强大的表示能力,其经常容易过拟合,为此我们有以下两种策略

1.早停(early stopping)#

将数据集分为训练集和验证集,若验证集得到的误差升高,则停止训练。

但是很显然神经网络的误差可能是细微的波动,但却造成了训练的停止,有点像决策树中的预剪枝,基于贪心的策略。

所以采用:

  • 若验证误差连续若干轮没有明显改善,则停止训练。
  • 保存验证误差最低时的模型参数,而不是简单使用最后一轮参数。

2.正则化(regularization)#

在误差目标函数中增加一项描述网络复杂度

一种常见的 L2 正则化目标为:

J(w)=1mk=1mEk+λw22,λ0J(\boldsymbol w) =\frac{1}{m}\sum_{k=1}^{m}E_k +\lambda\|\boldsymbol w\|_2^2, \qquad \lambda\geq0

第一项是经验误差,第二项惩罚过大的权重。λ\lambda 越大,正则化越强。通常只惩罚连接权重,是否惩罚偏置需要根据实现约定说明。

高维优化:从梯度停滞到鞍点#

在掌握 BP 后继续分析优化过程。高维神经网络中,训练停滞往往与鞍点和平坦区域有关,不能简单归因于局部极小值。

1 前言#

当训练损失降不下去时,应同时检查模型容量、数据、实现、超参数和优化过程。鞍点与平坦区域只是可能原因之一,不能仅凭损失曲线直接判断。下面使用 Hessian 矩阵说明驻点附近的局部曲率。

2 梯度下降收敛停滞的关键原因#

对于标准梯度下降,若精确到达 L(θ)=0\nabla L(\boldsymbol\theta)=\boldsymbol0 的点,参数更新量会变为零。但梯度为零并不意味着一定到达局部最小值,也可能到达局部最大值或鞍点。

  • 局部最小值点:在其充分小的邻域内,沿任意方向移动都不会得到更小的函数值。
  • 鞍点:在其邻域内同时存在使函数值增大和减小的方向。
  • 驻点:满足 L(θ)=0\nabla L(\boldsymbol\theta)=\boldsymbol0 的点,包括局部极小值、局部极大值和鞍点等。

当我们遇到梯度为零的驻点时,可以先使用 Hessian 矩阵的特征值判断它可能是局部极小值、局部极大值还是鞍点。

3 Hessian 矩阵与二次型#

在点 θ\boldsymbol\theta' 附近,损失函数的二阶泰勒展开为:

L(θ)L(θ)+L(θ)T(θθ)+12(θθ)TH(θ)(θθ)\begin{aligned} L(\boldsymbol\theta) \approx{}&L(\boldsymbol\theta') +\nabla L(\boldsymbol\theta')^{\mathrm T} (\boldsymbol\theta-\boldsymbol\theta') \\ &+\frac{1}{2} (\boldsymbol\theta-\boldsymbol\theta')^{\mathrm T} H(\boldsymbol\theta') (\boldsymbol\theta-\boldsymbol\theta') \end{aligned}

其中 H(θ)H(\boldsymbol\theta') 是 Hessian 矩阵,由损失函数对各参数的二阶偏导数组成。对二阶连续可微的标量函数,Hessian 是对称矩阵。

θ\boldsymbol\theta' 是驻点,则 L(θ)=0\nabla L(\boldsymbol\theta')=\boldsymbol0。令 v=θθ\boldsymbol v=\boldsymbol\theta-\boldsymbol\theta',可得到:

ΔL12vTH(θ)v\Delta L \approx \frac{1}{2} \boldsymbol v^{\mathrm T} H(\boldsymbol\theta') \boldsymbol v

u\boldsymbol u 是 Hessian 的特征向量,对应特征值为 λ\lambda,则:

H(θ)u=λuH(\boldsymbol\theta')\boldsymbol u =\lambda\boldsymbol u

因此:

uTH(θ)u=λu22\boldsymbol u^{\mathrm T} H(\boldsymbol\theta') \boldsymbol u =\lambda\|\boldsymbol u\|_2^2

由于 u22>0\|\boldsymbol u\|_2^2>0,沿特征向量方向的局部曲率符号由 λ\lambda 决定:

  • λ>0\lambda>0:该方向局部向上弯曲。
  • λ<0\lambda<0:该方向局部向下弯曲。

在驻点处,所有特征值均大于零时为严格局部极小值,均小于零时为严格局部极大值,同时存在正负特征值时为鞍点。若存在零特征值,二阶判别通常不足以下结论。

4 如何理解图中的收敛点#

图示实验重复训练同一网络,并比较收敛点的训练损失与 Hessian 正特征值比例。正特征值比例越高,表示在数值计算所覆盖的方向中,局部向上弯曲的方向越多。

这张图可以描述为:

  1. 左侧点群的正特征值比例较低,并在该实验中对应较高损失,说明这些点附近存在较多非正曲率方向。
  2. 右侧点群的正特征值比例较高,并对应较低损失。若仍存在可信的负特征值,则 Hessian 不定,数学上仍属于鞍点;若负特征值非常接近零,则还要考虑数值误差。

图中的 never reach a real "local minima" 可以理解为该实验中的观察,而不能直接推广为所有神经网络训练的普遍定理。实际训练还可能停在近似驻点、平坦区域或退化极小值附近,Hessian 的微小负特征值也可能受到数值近似影响。

5 总结#

  1. 高维非凸优化中,鞍点和平坦区域都可能造成训练变慢,但不能断言模型最终几乎总是停在鞍点。
  2. 在驻点处,Hessian 正定对应严格局部极小值,负定对应严格局部极大值,不定对应鞍点;存在零特征值时需要更高阶分析。
  3. 若存在可靠的负曲率方向,沿其移动可能帮助优化算法逃离鞍点。
  4. 低训练损失与良好泛化不是同一概念,不能仅凭正特征值比例判断泛化性能。

把训练问题分成两类#

当训练效果不理想时,可以先判断问题属于哪一层:

  • 优化问题:训练损失降不下去,可能与学习率、梯度消失、鞍点或病态曲率有关。
  • 泛化问题:训练集表现很好而验证集较差,通常需要数据增强、正则化、早停或更合理的模型容量。

二者不能混为一谈。更强的优化器可能让训练损失下降,却不一定改善测试集表现;更强的正则化能够改善泛化,却可能让训练损失变高。

总结#

BP 提供了高效计算梯度的方法,正则化与早停控制模型复杂度,Hessian 则帮助我们理解梯度之外的局部几何结构。将三者结合,才能更完整地解释神经网络为何能够训练,以及训练为何会变慢或停滞。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

神经网络训练与优化:BP、过拟合、Hessian 与鞍点
https://hp-patience.github.io/posts/neural-network-training-and-optimization/
作者
Celyn
发布于
2024-05-16
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
Profile Image of the Author
Celyn
记录 AI、前后端与编程技术学习,用费曼学习法把知识讲清楚。
公告
欢迎来到 Celyn 的博客!专注于AI大模型、深度学习与编程技术分享。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
20
分类
13
标签
53
总字数
53,589
运行时长
0
最后活动
0 天前

文章目录