优化算法
一维梯度下降
稍微偏数学一点的视角
\(f(x + \epsilon) = f(x) + \epsilon f'(x) + O(\epsilon ^2)\)
\(f(x - \eta f'(x)) = f(x) - \eta f'^2(x) + O(\eta^2f'^2(x))\)
\(f(x - \eta f'(x)) \lessapprox f(x)\)
\(\eta\)就是学习率
自适应方法
牛顿法
Hessian矩阵
\(H_{ij} = \frac{\partial^2 f}{\partial x_i \partial x_j}\)
-
对角线元素:\(H_{ii} = \frac{\partial^2 f}{\partial x_i^2}\)
-
正数:向上凹(碗形),往两边走损失都会变大 → 这里是稳定低谷
- 负数 < 0:向下凸(山峰),往两边走损失都会变小 → 这里是山顶
- 接近 0:很平,梯度下降走不动(神经网络里的平坦极小值)
某个权重的对角线值越大,说明这个参数稍微动一点,损失变化特别剧烈,学习率要调小。
- 非对角线元素:\(H_{ij} = \frac{\partial^2 f}{\partial x_i \partial x_j}\)
代表:改参数 i,参数 j 对损失的影响会怎么变
- 正数:两个参数正相关,一起变大 / 变小,损失一起涨 / 跌
- 负数:两个参数负相关,一个涨一个跌,损失抵消
- 接近 0:两个参数基本独立,互不影响
非对角线越大 → 参数耦合越严重 → 普通梯度下降震荡、难收敛。