二阶优化问题
前面说的算法都是使用梯度 ,属于一阶方法。二阶方法则需要求海森矩阵(或部分二阶偏导)。
牛顿法
给出一个函数 ,用二阶泰勒展开来近似 附近的 :
得到临界点:
如果目标函数 是有最小值的二次函数,牛顿法可以直接跑到最小值点,如果不是,牛顿法反复迭代多次可以很快接近附近的临界点。如果附近的临界点不是最小点牛顿法不适用。
牛顿法每次迭代计算量很大:参数数量设为 ,需要在内存中储存 的海森矩阵,还要算它的逆矩阵(速度是 )。所以深度学习一般不直接使用牛顿法。
共轭梯度法
待补充!
线性共轭梯度
最初,共轭梯度法用于求解 维线性方程 。
构造目标函数 (二次型), 等价于 。
我们只考虑 对称正定的情况,这样 有唯一最小值。
给出 个向量 ,如果其中任意两个向量都有 (),则称这组向量与 共轭。
可以证明,依次沿着这些向量优化,可以在 次迭代后到达最小值。