机器学习常见的优化算法

机器学习中常见的一些优化算法的总结,以最直接的方式理解。

注:梯度下降法图片来自Rachel-Zhang的博客


机器学习常见的优化算法

不是所有的方程都具有解析解,因此可采用优化的方法寻找其最有解,在机器学习中常见的算法有梯度下降法、牛顿法和拉格朗日对偶性。

1、梯度下降法

具有一阶连续的偏导数的目标函数,以Andrew Ng老师的课件简要说明。采用线性回归算法来说明,回归函数为:

目标函数和优化条件

机器学习常见的优化算法_第1张图片

让参数沿着梯度下降的方向走,并迭代地不断减小J(theta0,theta1),达到稳定状态。

机器学习常见的优化算法_第2张图片

初始化theta0,theta1,然后根据梯度下降的方向优化目标值theta0和theta1,使代价函数逐渐收敛到一定的值,一般是指代价函数的偏导数小于某一个值。

机器学习常见的优化算法_第3张图片

机器学习常见的优化算法_第4张图片

在线性回归中梯度下降对参数有两种更新方法,其中一种是同时对参数进行更新;另一种是没更新一个直接用到下一个参数的更新中。以下图为例,左侧的符合本次线性回归函数要求同时更新,右侧的是更新完一个参数将新更新的参数用到下个参数更新的计算过程中。

机器学习常见的优化算法_第5张图片

alpha为梯度下降的学习率,也称步长。

机器学习常见的优化算法_第6张图片

机器学习常见的优化算法_第7张图片

其最终效果为

机器学习常见的优化算法_第8张图片

以上为梯度下降的简单描述,其中梯度下降中的学习率alpha是可以变化的,可以选择每次使代价函数最小的alpha,即可以修改学习率。


2、牛顿法(拟牛顿法)

牛顿法是常用来解决方程求解和最优化问题,求解问题通常是利用一阶导数求解方程为0的解,优化问题通常是利用二阶导数求解一阶导数为0的解。
(1)求解方程的牛顿法
参考Andrew Ng的Machine Learning 的讲义,求解方程法f(theta)=0,利用f(theta) = f(theta0) + (theta1-theta0)*f'(theta0),可通过迭代算法实现。
机器学习常见的优化算法_第9张图片
牛顿方法实现过程如下图所示:
机器学习常见的优化算法_第10张图片
当f(theta)-f(theta0)
(2)牛顿方法求最优化问题
牛顿法求解最优化问题,即求法l(theta)的极大极小值问题,该问题可转化为求解l'(theta)=0 问题,此时可将问题转换为第一部分求解方程问题。因此,
机器学习常见的优化算法_第11张图片
其中,l''(theta) = H。因此

其中,H的形式如下,将x替换为theta即可。
机器学习常见的优化算法_第12张图片
李航统计学习基础中的理解偏理论些,从另一方面更好理解为x(k+1)-x(k)=f'/H,即H(x(k+1)-x(k))=f'。
机器学习常见的优化算法_第13张图片
机器学习常见的优化算法_第14张图片
机器学习常见的优化算法_第15张图片
机器学习常见的优化算法_第16张图片
(3)拟牛顿算法
在牛顿法中,需要计算H的逆,这一过程比较复杂,因此构造矩阵G来逼近H的逆阵,降低计算量。这是拟牛顿法的基本思想。
x(k+1)-x(k)=(f'(k+1)-f'(k))/H,因此,G满足x(k+1)-x(k)=G*(f'(k+1)-f'(k))。因此该条件为称为拟牛顿法。按照牛顿条件,在每次迭代中可以选择更新矩阵G(k+1)=G(k)+(delta)G(k)。

理解不是很深刻,待理解后详解:
采用BFD算法,G的更新公式为

其中,




3、拉格朗日对偶性


参考文献与博客:

1.  http://blog.csdn.net/abcjennifer/article/details/7700772

2. Andrew Ng 在Machine Learning的课件

3. 李航.统计学习基础

你可能感兴趣的:(Machine,Learning)