optimization失败解决办法
三个临界点
一、critical point(临界点 / 驻点)
在多元函数 \(f(x1,x2,…,xn\))中,
临界点(critical point) 是指:
也就是所有偏导数都为 0 的点。
👉 这些点可能是:
- 局部极小值点(local minimum)
- 局部极大值点(local maximum)
- 鞍点(saddle point)
所以 临界点是一个集合的上位概念,它包含了后两种情况。
二、local minima(局部极小值)
定义:
点$ x^* $是局部极小值点,当存在一个足够小的邻域 \(U\),
对所有 \(x∈U\),都有:
\(f(x∗)≤f(x)\)
👉 在这个点附近,函数值都是比它高的。
(但可能还有更低的全局最小值)
在一元函数里,这个点的特征是:
\(f′(x∗)=0,f′′(x∗)>0\)
在多元函数中:
\(∇f(x∗)=0,H(x∗)\)(Hessian矩阵)正定
三、saddle point(鞍点)
定义:
点\(x^*\) 也是临界点(梯度为 0),
但是在某些方向上函数值比它大,某些方向上比它小。
也就是说:
\(∃ u,v:f(x∗+u)>f(x∗),f(x∗+v)<f(x∗)\)
它既不是极大,也不是极小。
在多元函数中:
\(∇f(x∗)=0,H(x∗)\)有正有负特征值(不定矩阵)
四、直观对比
| 类型 | 梯度条件 | Hessian条件 | 函数形状 | 示例 |
|---|---|---|---|---|
| local minimum | \(∇f=0\) | 正定 | 碗口向上 | \(f(x,y)=x2+y2\) |
| local maximum | \(∇f=0\) | 负定 | 碗口向下 | \(f(x,y)=−x2−y2\) |
| saddle point | \(∇f=0\) | 不定 | 鞍形 | \(f(x,y)=x2−y2\) |

方法一:Hessian 与临界点类型判断
在临界点 $( theta' ) \(处,梯度为 0: \)\nabla L(\theta') = 0$
根据二阶泰勒展开:
\(L(\theta) \approx L(\theta') + \frac{1}{2}(\theta - \theta')^T H (\theta - \theta')\)
其中 ( H ) 是 Hessian 矩阵。
判断规则
| 条件 | Hessian 性质 | 结论 |
|---|---|---|
| 对所有 (v),(v^T H v > 0) | 正定 | 局部极小值(Local Minima) |
| 对所有 (v),(v^T H v < 0) | 负定 | 局部极大值(Local Maxima) |
| 有的 (v^T H v > 0),有的 (v^T H v < 0) | 不定 | 鞍点(Saddle Point) |
💡 总结:
临界点处梯度为零;
Hessian 的符号决定了函数曲面的形态。

方法二:Batch 和 Momentum
small Batch 和 large Batch 的优劣:
速度(GPU并行计算);
不是 Batch 越大越好,也不是越小越好

验证集正确率:
**validation generated set(验证集)**
Batch 越大,带来的结果可能越差
这个是 optimization 的问题

优势比较

Momentum
梯度(Gradient):就是函数在某一点处,变化最快的方向和变化率。
一般的 Gradient
每次更新沿着梯度的反方向

Momentum 的 Gradient(有惯性的更新)
每次更新沿着梯度的反方向和上一次的影响


浙公网安备 33010602011771号