梯度下降

梯度下降法指的是函数值loss随梯度下降的方向减小
归问题的第三步中,需要解决下面的最优化问题:
4.机器学习——梯度下降_损失函数
L :lossfunction(损失函数)
4.机器学习——梯度下降_python_02

parameters是复数,即 θ 指代一堆参数,比如上篇说到的 w和 b 。

我们要找一组参数 θ ,让损失函数越小越好,这个问题可以用梯度下降法解决:

假设 θ 有里面有两个参数 4.机器学习——梯度下降_python_03,随机选取初始值:

4.机器学习——梯度下降_梯度下降_04

4.机器学习——梯度下降_python_05


Gradient: Loss的等高線的法線方向

Learning rate存在的问题

4.机器学习——梯度下降_机器学习_06

做gradient descent一个很重要的事情是,要把不同的learning rate下,loss随update次数的变化曲线给可视化出来

Tip1:调整学习速率

小心翼翼地调整学习率

自适应学习率
最基本、最简单的大原则是:learning rate通常是随着参数的update越来越小的
举一个简单的思想:随着次数的增加,通过一些因子来减少学习率

  • 通常刚开始,初始点会距离最低点比较远,所以使用大一点的学习率
  • update好几次参数之后呢,比较靠近最低点了,此时减少学习率
  • 比如 4.机器学习——梯度下降_机器学习_07 ,t是次数。随着次数的增加,4.机器学习——梯度下降_梯度下降法_08减小

学习率不能是一个值通用所有特征,不同的参数需要不同的学习率

Adagrad 算法

Adagrad 是什么?

Adagrad就是将不同参数的learning rate分开考虑的一种算法

4.机器学习——梯度下降_梯度下降_09


这里的w是function中的某个参数,t表示第t次update,4.机器学习——梯度下降_机器学习_10表示Loss对w的偏微分,而4.机器学习——梯度下降_机器学习_11是之前所有Loss对w偏微分的方均根(根号下的平方均值),这个值对每一个参数来说都是不一样的

4.机器学习——梯度下降_损失函数_12

最后公式:

4.机器学习——梯度下降_python_13Adagrad的contradiction(矛盾)解释

分母表示梯度越大步伐越小,分子却表示梯度越大步伐越大,两者似乎相互矛盾。

原因:

直观:反差效果

深层:4.机器学习——梯度下降_机器学习_10就是一次微分,而分母中的4.机器学习——梯度下降_损失函数_15反映了二次微分的大小,所以Adagrad想要做的事情就是,在不增加任何额外运算的前提下,想办法去估测二次微分的值。

4.机器学习——梯度下降_梯度下降_16

Stochastic Gradicent Descent

随机梯度下降的方法可以让训练更快速

  • 传统的gradient descent的思路是看完所有的样本点之后再构建loss function,然后去update参数;
  • stochastic gradient descent的做法是,看到一个样本点就update一次,因此它的loss function不是所有样本点的error平方和,而是这个随机样本点的error平方。

Feature Scaling

概念介绍
特征缩放,当多个特征的分布范围很不一样时,最好将这些不同feature的范围缩放成一样。
方法:
假设有R个example(上标i表示第i个样本点),4.机器学习——梯度下降_梯度下降法_17,每一笔example,它里面都有一组feature(下标j表示该样本点的第j个特征)

对每一个demension i,都去算出它的平均值mean=4.机器学习——梯度下降_梯度下降法_18,以及标准差standard deviation=4.机器学习——梯度下降_机器学习_19

对第r个example的第i个component,减掉均值,除以标准差,即
4.机器学习——梯度下降_梯度下降_20

将每一个参数都归一化成标准正态分布,即4.机器学习——梯度下降_机器学习_21,其中4.机器学习——梯度下降_损失函数_22表示第i个参数

gradient descent的限制

gradient descent的限制是,它在gradient即微分值接近于0的地方就会停下来,而这个地方不一定是global minima,它可能是local minima,可能是saddle point鞍点,甚至可能是一个loss很高的plateau平缓高原

gradient descent数学

Taylor Series
泰勒表达式:4.机器学习——梯度下降_机器学习_23

When x is close to 4.机器学习——梯度下降_梯度下降法_24 : 4.机器学习——梯度下降_梯度下降法_25

同理,对于二元函数,when x and y is close to 4.机器学习——梯度下降_梯度下降法_24 and 4.机器学习——梯度下降_梯度下降_27

4.机器学习——梯度下降_梯度下降_28

从泰勒展开式推导出gradient descent

对于loss图像上的某一个点(a,b),如果我们想要找这个点附近loss最小的点,就可以用泰勒展开的思想

4.机器学习——梯度下降_损失函数_29

假设用一个red circle限定点的范围,这个圆足够小以满足泰勒展开的精度,那么此时我们的loss function就可以化简为:

4.机器学习——梯度下降_机器学习_30

4.机器学习——梯度下降_机器学习_314.机器学习——梯度下降_损失函数_324.机器学习——梯度下降_机器学习_33

4.机器学习——梯度下降_梯度下降_34

假定red circle的半径为d,则有限制条件:4.机器学习——梯度下降_机器学习_35

此时去求4.机器学习——梯度下降_机器学习_36,这里有个小技巧,把4.机器学习——梯度下降_梯度下降_37转化为两个向量的乘积:4.机器学习——梯度下降_梯度下降_38

观察图形可知,当向量4.机器学习——梯度下降_梯度下降_39与向量4.机器学习——梯度下降_python_40反向,且刚好到达red circle的边缘时(用4.机器学习——梯度下降_梯度下降法_41去控制向量的长度),4.机器学习——梯度下降_梯度下降_37最小

4.机器学习——梯度下降_机器学习_43

4.机器学习——梯度下降_梯度下降_39实际上就是4.机器学习——梯度下降_梯度下降法_45,于是4.机器学习——梯度下降_梯度下降_37局部最小值对应的参数为中心点减去gradient的加权 4.机器学习——梯度下降_梯度下降法_47 这就是gradient descent在数学上的推导,注意它的重要前提是,给定的那个红色圈圈的范围要足够小,这样泰勒展开给我们的近似才会更精确,而4.机器学习——梯度下降_梯度下降法_41的值是与圆的半径成正比的,因此理论上learning rate要无穷小才能够保证每次gradient descent在update参数之后的loss会越来越小,于是当learning rate没有设置好,泰勒近似不成立,就有可能使gradient descent过程中的loss没有越来越小

当然泰勒展开可以使用二阶、三阶乃至更高阶的展开,但这样会使得运算量大大增加,反而降低了运行效率