机器学习面试准备之二、优化方法
一、梯度下降
梯度下降法是一种最优化方法,用来优化cost function。
梯度下降法的最大问题就是会陷入局部最优,并且每次在对当前样本计算cost的时候都需要去遍历全部样本才能得到cost值,这样计算速度就会慢很多。
二、随机梯度下降
现在好多框架中一般使用随机梯度下降法,它在计算cost的时候只计算当前的代价,最终cost是在全部样本迭代一遍之求和得出,还有他在更新当前的参数w的时候并不是依次遍历样本,而是从所有的样本中随机选择一条进行计算,此方法收敛速度快(一般是使用最大迭代次数),并且还可以避免局部最优,并且还很容易并行。
三、mini-batch
如果不是每拿到一个样本即更改梯度,而是若干个样本的平均梯度作为更新方向,则是 mini-batch梯度下降算法。
梯度下降算法的扩充问题:
学习率如何确定?
- 固定学习率
- 优化学习率
在斜率(方向导数)大的地方,使用小学习率
在斜率(方向导数)小的地方,使用大学习率
三、其他
- 拟牛顿法
求Hessian矩阵的逆影响算法效率,同时,搜索方向只要和负梯度的夹角小于90°即可, 因此,可以用近似矩阵代替Hessian矩阵,只 要满足该矩阵正定、容易求逆,或者可以通 过若干步递推公式计算得到。
- BFGS
- L-BFGS
BFGS需要存储n×n的方阵Ck用于近似 Hessian阵的逆矩阵;而L-BFGS仅需要存储 最近m(m约为10,m=20足够)个 x, f x
用于近似Ck即可。
L-BFGS的空间复杂度O(mn),若将m看做常 数,则为线性,特别适用于变量非常多的优 化问题。
优缺点:无需选择学习率α,更快,但是更复杂。