YeeKal
optimization

牛顿法和梯度下降

YeeKal
"#optimization"

牛顿法(Newton Method)

求零点

根据一阶泰勒展开公式:

得到求零点的迭代公式:

求极值

优化算法中求极值的过程可以转化为一阶到函数为0,从而将问题转化为求零点的过程。迭代公式的推导有两种。第一种把优化问题中的导函数看作零点问题中的原函数,则可以根据零点迭代公式直接得到:

第二种是根据二阶泰勒展开:

求导,并令导数为0,得到:

优化过程中步长的计算

令$d_k=-\frac{f'(x_k)}{f''(x_k)}$是迭代中每一步更新的步长. 对于有n维变量的函数而言,偏导数$\Delta f(x)=f'(x_k)\in R^n, H(f(x))=f''(x_k)\in R^{(n\times n)}$,所以$d_k$并不是由两个矩阵直接相除,而是通过解方程$H(f(x))d_k=-\Delta f(x)$得到。

梯度下降

另一种视角:

Quadratic approximation

define the expansion where replacing usual $\nabla^2f(x)$ by $\frac{1}{t}I$:

which can be refered as the linear approximzation to $f$, the optimal value is:

牛顿法可以看作根据泰勒二次展开的线性近似进行推导,而剃度下降是把泰勒展开中的二次项进一步做近似而得到。两者最后都统一成根据梯度信息进行迭代,只是梯度的系数各不一样。

机器学习中的实践用法变种

Batch Gradient Descent

针对整个数据集,通过所有样本计算梯度方向.

  • 优点:全局最优解;易于并行实现;
  • 缺点:当样本数目很多时,训练过程会很慢

Mini-Batch Gradient Descent

小批量

Stochastic Gradient Descent

可以看作是单个样本计算梯度

  • 优点:训练速度快;
  • 缺点:准确度下降,并不是全局最优;不易于并行实现

总结

  • 牛顿法需要计算二阶导数,这使得牛顿法在以离散数据为基础的机器学习上很难适用