1.梯度下降
1.1 什么是梯度下降?
梯度下降法的基本思想可以类比为一个下山的过程
假设这样一个场景:
一个人被困在山上,需要从山上下来(i.e. 找到山的最低点,也就是山谷)。但此时山上的浓雾很大,导致可视度很低。
因此,下山的路径就无法确定,他必须利用自己周围的信息去找到下山的路径。这个时候,他就可以利用梯度下降算法来帮助自己下山。
具体来说就是,以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着山的高度下降的地方走,(同理,如果我们的目标是上山,也就是爬到山顶,那么此时应该是朝着最陡峭的方向往上走)。然后每走一段距离,都反复采用同一个方法,最后就能成功的抵达山谷。
在一阶函数中,某一点的梯度表示函数在该点处的导数(导数的正负号表示函数上升的方向),梯度下降是基于微积分中导数的概念。
根据之前的场景假设,最快的下山的方式就是找到当前位置最陡峭的方向,然后沿着此方向向下走,对应到函数中,就是找到给定点的梯度 ,然后朝着梯度相反的方向,就能让函数值下降的最快!因为梯度的方向就是函数值变化最快的方向。 所以,我们重复利用这个方法,反复求取梯度,最后就能到达局部的最小值,这就类似于我们下山的过程。而求取梯度就确定了最陡峭的方向,也就是场景中测量方向的手段。
1.2 梯度的概念
梯度是微积分中一个很重要的概念
在单变量函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率;
在多变量函数中,梯度就是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向。
1.3 损失函数
为了评估模型拟合的好坏,通常用损失函数来度量拟合的程度。损失函数极小化,意味着拟合程度最好,对应的模型参数即为最优参数。在线性回归中,损失函数通常为样本输出和假设函数的差取平方。比如对于样本(xi,yi)(i=1,2,...n),采用线性回归,损失函数为:
1.4 梯度下降原理
(1)几何意义:
如前文所言,在一元函数中,梯度即是导数,通过导数正负号可以确定函数上升的方向,例如上图所示,A点处导数为负数,那么X轴负方向即是函数值增大的方向;假设在抛物线对称轴右侧任取一点B,B点处导数值为正,则表示在X轴正方向处,函数值上升。而上升最快的方向的反方向,则是函数值下降最快的方向,对应到梯度就是梯度的反方向。
对于二元函数,梯度定义为:
因此,通过求梯度我们依然可以求得函数在哪个方向上能取得较大的值和较小的值。
(2)核心公式:
此公式的意义是:f是关于Θ的一个函数,我们当前所处的位置为Θ0点,要从这个点走到f的最小值点,也就是山底。首先我们先确定前进的方向,也就是梯度的反向,然后走一段距离的步长,也就是η,走完段步长,就到达了Θ点。
η为步长,又称学习率,通过控制η的大小来调节每次运算的精确程度。η过小则会导致计算机计算过多,η过大则会出现类似于“之字形”下降。(例下)
(3)梯度下降算法的一般步骤:
1.5 实例应用
步骤:
- 先确定η和ε的大小,计算函数y的导数。
- 计算选取的点的导数值,从而确定下一次计算的自变量x的值。
- 由此循环,不断更新选取的点的导数以及自变量x的值,直到满足ε的条件即停止运算。
1.6 梯度下降算法的延伸
(1)梯度上升,此时只需将η前面的符号改为正号即可
(2)梯度算法的缺点:
①靠近极大/极小值时收敛速度减慢,即自变量的变化越来越小
②η的选取会影响运算,可能出现“之字形”变化。
1.7思考
在使用梯度下降算法过程中,步长是我们要考虑到的因素,以及计算次数(即所占资源),是否可以通过一个公式或者是算法,联系两者,求得占用较少资源的步长。



