浏览量: 61 次浏览

梯度下降算法优化

2019年7月12日 0 作者 Nie Hen

Gradient Descent

在前面已经线性回归已经了解了一部分梯度下降算法。
获取最小的损失函数(可能会是局部最小的。)
通过求积分,小于0,曲线下降,往下走,(步数由积分大小决定),到达地方之后再计算积分,小于0,继续往下走,大于0,则说明曲线上升,往反方向走,(步数依旧有积分大小决定),这样不断迭代就会走到谷底,最小值的地方。(也可以理解为求极值点)
参考资料
线性回归模型中的损失函数为平方差损失函数,其是凸函数(可以通过求二次积分可知是凸函数),所以可以使用梯度下降法获取到最小的损失函数。

Gradient Descent =595*350
算法过程

1)确定当前位置的损失函数的梯度,对于θi,其梯度表达式如下:
        ∂∂θiJ(θ0,θ1...,θn)
2)用步长乘以损失函数的梯度,得到当前位置下降的距离,即α∂∂θiJ(θ0,θ1...,θn对应于前面登山例子中的某一步。

3)确定是否所有的θi,梯度下降的距离都小于ε,如果小于ε则算法终止,当前所有的θi(i=0,1,…n)即为最终结果。否则进入步骤4.

4)更新所有的θ,对于θi,其更新表达式如下。更新完毕后继续转入步骤1.
        enter description here
当存在多个参数的时候,通常使用的按照就偏微分来改变步数,是不准确的。只有当一个参数的时候比较准确。所以之前的需要做些改变。

Change Learning Rate

learning rate这个参数值 设置的偏小就会很慢,偏大就可能会找不到最高点

enter description here =495*450
在初始的时候 Learning Rate可以大点 因为距离最小l有点远。
在经过几次调整参数后,便开始接近与最低点 可以降低Learning data
可以这样 来逐步降低 t是次数
enter description here
使用更好的方法来改变 Learning data

enter description here  =525*350
Adagrad
简单来讲,设置全局学习率(λ)之后,每次通过,全局学习率(λ)逐参数的(w)除以历史梯度平方和的平方根,使得每个参数的学习率不同
在参数空间更为平缓的方向,会取得更大的进步(因为平缓,所以历史梯度平方和较小,对应学习下降的幅度较小),并且能够使得陡峭的方向变得平缓,从而加快训练速度。(速度会越来越慢)
参考

enter description here  =450*300

Adagrad算法 =450*300
当数据忽然的变得很大或是很小,这是使用Adagrad算法,可以变得较为平缓。
同时当多个参数的时候,使用一个位置的偏微分大小来控制步数是很不准确的,如果除以之前偏微分的平方和平均再开方,会相对准确些。

Atochastic Gradient Descent(随机梯度下降)
loss function被改变,每次到一个例子,会更新loss function 而之前的是直接将它给计算出来用样本中的一个例子来近似我所有的样本,来调整θ,因而随机梯度下降是会带来一定的问题,因为计算得到的并不是准确的一个梯度,对于最优化问题,凸问题,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近。但是相比于批量梯度,这样的方法更快,更快收敛,虽然不是全局最优,但很多时候是我们可以接受的

随机梯度下降公式 =600*200

Feature Scaling(特征缩放)
将所选特征的value都缩放到一个大致相似的范围。这样做的目的是为了加快收敛,减少采用梯度下降算法迭代的次数

enter description here =450*300
椭圆形处理起来相对麻烦,而圆形就好很多,会减少很多的迭代次数。
最简单的方式是缩放到0-1(min max normalization,)
enter description here
另一种是叫做 standard deviation normalization, 他会将所有特征数据缩放成 平均值为0, 方差为1. 使用这些标准化手段. 我们不仅可以快速推进机器学习的学习速度, 还可以避免机器学习 学得特扭曲.
Taylor Series(泰勒公式)
泰勒公式,应用于数学、物理领域,是一个用函数在某点的信息描述其附近取值的公式。如果函数足够平滑的话,在已知函数在某一点的各阶导数值的情况之下,泰勒公式可以用这些导数值做系数构建一个多项式来近似函数在这一点的邻域中的值。泰勒公式还给出了这个多项式和实际的函数值之间的偏差。

泰勒展开式  =450*300

多个参数的泰勒展开式 =600*200