可扩展机器学习——梯度下降(Gradient Descent)

注:这是一份学习笔记,记录的是参考文献中的可扩展机器学习的一些内容,英文的PPT可见参考文献的链接。这个只是自己的学习笔记,对原来教程中的内容进行了梳理,有些图也是引用的原来的教程,若内容上有任何错误,希望与我联系,若内容有侵权,同样也希望告知,我会尽快删除。这部分本应该加上实验的部分,实验的部分在后期有时间再补上。

可扩展机器学习系列主要包括以下几个部分:

概述
- Spark分布式处理
- 线性回归(linear Regression)
- 梯度下降(Gradient Descent)
- 分类——点击率预测(Click-through Rate Prediction)
- 神经科学

四、梯度下降(Gradient Descent)

1、线性回归的优化问题

对于线性回归来说,其目标是找到一组 w 使得下面的函数 f(w) 达到最小:

f(w)=Xwy22

2、梯度下降法的流程

梯度下降法是一种迭代型的优化算法,根据初始点在每一次迭代的过程中选择下降法方向,进而改变需要修改的参数,梯度下降法的详细过程如下:

  • Start at a random point
  • Repeat
    • Determine a descent direction
    • Choose a step size
    • Update
  • Until stopping criterion is satisfied

具体过程如下图所示:

在初始时,在点 w0 处,选择下降的方向,选择步长,更新,此时到达 w1 处,判断是否满足终止的条件,发现并未到达最优解,重复上述的过程,直至到达 w

3、凸优化与非凸优化

简单来讲,凸优化问题是指只存在一个最优解的优化问题,即任何一个局部最优解即为全局最优解,可以由下图表示:

非凸优化是指在解空间中存在多个局部最优解,而全局最优解是其中的某一个局部最优解,可以由下图表示:

最小二乘(Least Squares),岭回归(Ridge Regression)和Logistic回归(Logistic Regression)的损失函数都是凸优化问题。

4、梯度下降法的若干问题

1、选择下降的方向

为了求解优化问题 f(w) 的最小值,我们希望每次迭代的结果能够接近最优价 w ,对于一维的情况,如下图所示:

若当前点的斜率(梯度)为正,则选择的方向向左,若当前的斜率(梯度)为负,则选择的梯度的方向是向右。

负的斜率即为下降的方向。

对于上述的一维的情况,有下述的更新规则:

其中, αi 称为步长。对于二维的情况,如下图所示:

其中,函数值由黑白色表示,黑色表示更大的值,箭头表示的是梯度。

负的梯度是最快的下降的方向。

此时更新的规则如下:

2、最小二乘中的梯度下降

梯度下降法的更新规则如上所示,对于最小二乘法,有如下的损失函数的表示:

f(w)=wxy22=j=1n(wx(j)y(j))2

在利用梯度下降法的过程中需要求解梯度,即:

dfdw(w)=2j=1n(wx(j)y(j))x(j)

则根据更新公式,有如下的更新步骤:

wi+1=wiαij=1n(wx(j)y(j))x(j)

对于向量形式,有:

wi+1=wiαij=1n(wTix(j)y(j))x(j)

3、步长的选择

对于步长 α 的选择,若选择太小,会导致收敛的速度比较慢;若选择太大,则会出现震荡的现象,即跳过最优解,在最优解附近徘徊,上述两种情况如下面的两张图所示:

因此,选择合适的步长对于梯度下降法的收敛效果显得尤为重要。

在实践的过程中,人们发现了不同的步长形式,一种通用的步长设置方法如下:

αi=αni

其中, α 是一个常数, n 表示的是训练数据中特征的个数,i表示的是迭代的代数。

4、梯度下降法的优缺点

对于梯度下降法,有如下的一些优缺点:

  • 优点

    • 容易并行
    • 每次迭代过程中开销较小
    • 随机梯度下降的开销更小
  • 缺点

    • 收敛速度较慢
    • 需要在节点之间进行通信

5、并行梯度下降

对于梯度下降法中的更新规则:

wi+1=wiαij=1n(wTix(j)y(j))x(j)

并行的计算方法如下:

若需要PDF版本,请关注我的新浪博客@赵_志_勇,私信你的邮箱地址给我。

参考文献

scalable-machine-learning

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页