一文搞通深度学习的核心精髓梯度下降

0 介绍

梯度下降算法是深度学习的核心精髓。撑起了深度学习的发展,它是一种用于训练模型参数的方法,旨在最小化损失函数。梯度下降算法主要包括两个阶段:前向传播和反向传播。在前向传播阶段,我们将输入数据传递给模型,计算出预测输出。然后,在反向传播阶段,我们根据预测输出和实际输出之间的差异来计算损失函数的梯度,从而更新模型参数。这个过程中,梯度的计算至关重要,因为它决定了模型参数更新的方向和速度。
在实际应用中,我们可能会遇到一些问题,例如数据溢出、梯度消失或爆炸等。这些问题会导致模型训练不稳定,甚至失败。为了解决这些问题,我们可以采取以下策略:
1.数据归一化:通过对输入数据进行归一化处理,可以将数据缩放到一个较小的范围,从而降低数据溢出的风险。
2.梯度裁剪:在计算梯度时,我们可以对梯度的大小进行限制,避免梯度过大或过小导致模型训练不稳定。
3.学习率调整:合适的学习率对于模型的收敛至关重要。通过调整学习率,我们可以使模型在训练过程中更快地收敛到最优解。
4. 正则化:在损失函数中添加正则化项,可以有效地控制模型复杂度,避免过拟合现象的发生。
5. 使用动量法:在梯度下降过程中,引入动量概念,可以使模型在更新参数时具有更好的稳定性。
6. 使用优化器:引入优化器,如Adam、RMSProp等,可以改善模型训练过程中的收敛性能。
接下来,我们通过此文全文掌握下梯度下降算法的一些精髓。

1 梯度下降法

维基百科给出的定义是梯度下降法(Gradient descent)是一个一阶最优化算法,通常也称为最速下降法。要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者近似梯度)的反方向的规定步长距离点进行迭代搜索。
如果相反地向梯度正方向迭代进行搜索,则会接近函数的局部极大值点,从而被称为梯度上升法。

1.2 梯度下降法的应用背景

假定房屋只有一个变量影响,那就是房屋的面积。假设有一个二线城市的房屋销售的数据如下:
在这里插入图片描述
我们可以做出一个图,x轴是房屋的面积,y轴是房屋的售价,如下:
在这里插入图片描述
如果来了一个新的房子/面积,假设在房屋销售价格的记录中没有,我们可以用一条曲线去尽量准的拟合这些数据,如果有新的输入面积,我们可以在将曲线上这个点对应的值返回。
如果用一条直线去拟合房屋价格数据,可能如下图
在这里插入图片描述
而图中绿色的点就是我们想要预测的点。
为了数学建模,首先给出一些概念和常用的符号
房屋销售记录表-训练集(training set)或者训练数据(training data),是我们流程中的输入数据,一般是x
房屋销售价钱–输出数据,一般称为y
拟合的函数(或者称为假设或者模型),一般写做y=h(x)
训练数据的条目数(# training set),一条训练数据是由一对输入数据,算法会通过一系列的过程得到一个估计函数,这个函数有能力对没有见过的新数据做出一个新的估计。
在这里插入图片描述
我们用X1 ,X2,…Xn去描述feature里面的分量(n为特征数目),比如X1 = 房间面积,X2 = 房间朝向,我们可以做出一个估计函数:
在这里插入图片描述
在这里插入图片描述 在这称为参数(j表示第j个权重),在这儿的意思是调整feature中每个特征的权重/影响力,代表到底是房屋的面积更重要还是房屋的地段更重要,而在这里插入图片描述的上标i表示第i个训练样本,为评估模型好坏,需要一个机制去评估在这里插入图片描述是否比较好,相当于对h函数进行评估的函数称为损失函数(loss function),用于描述h函数不好的程度,这里设为J函数在这里插入图片描述换言之。我们把对在这里插入图片描述的估计值在这里插入图片描述与真实值在这里插入图片描述差的平方和作为损失函数,前面乘上的系数1/2 是为了方便求导(且在求导的时候,这个系数会消掉),我们一般用m表示的是样本的数量。如何调整在这里插入图片描述使得在这里插入图片描述取得最小值有很多种方法,其中有最小二乘法(min square),是一种完全是数学描述的方法,另外一种就是梯度下降法。

1.2 方向导数和梯度

了解梯度下降法,我们首先要知道什么是方向导数和梯度。
我们按照导数→偏导数→方向导数→梯度的顺序来学习

  1. 首先,在一元函数中的某一点A,对该点求导,即是过该点切线的斜率,A点的导数即是过该点切线的斜率。
    在这里插入图片描述
    2.其次,所谓偏导数,是针对二元函数Z=f(x,y)而言,如果自变量x变化,而自变量y固定(即把y看做常理),这时f(x,y)相当于x的一元函数,此时f(x,y)对x的导数就称为偏导数。

在这里插入图片描述
3.最后,如下图,z=f(x,y)在A点在这个方向上也是有切线的,其切线的斜率就是方向导数。

在这里插入图片描述
4 . 然而针对曲面上A这个点的切线是可以有很多条的。也就是针对A点有很多个方向导数。

在这里插入图片描述

  1. 那什么是梯度呢,所谓的梯度是一个矢量,其方向上的方向导数最大,其大小正好是此最大方向导数。
  2. 在这里插入图片描述

1.3 梯度定义

我们用数学公式推导一下:
方向导数:表示标量场中u§在给定点处沿某一方向在这里插入图片描述的变化率
在这里插入图片描述
通过可以做出无数条射线。函数u§从给定出发点有无穷多个变化方向,每个方向都有一个方向导数,其中哪个方向上变化率最大?我们做两个矢量
在这里插入图片描述
其中 在这里插入图片描述在这里插入图片描述在这里插入图片描述代表三个坐标轴上的单位向量
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述代表 方向上的方向余弦
在这里插入图片描述
在这里插入图片描述时,方向导数获得最大值在这里插入图片描述
所以梯度即方向导数获得最大值在这里插入图片描述
即梯度大小为该点标量函数的最大变化率,即最大方向导数,梯度的方向为该点方向导数最大的方向。

定义:设函数f(x,y)在平面区域D内具有一阶连续偏导数,则对每一点在这里插入图片描述,都可以定出一个向量
在这里插入图片描述则该向量称为f(x,y)在点在这里插入图片描述处的梯度,记作在这里插入图片描述在这里插入图片描述

1.4 梯度下降法

通过导数的定义,当想求极小值或极大值时,则是看导数即切线斜率为0的点
在这里插入图片描述而偏导数也是类似的,让函数z=f(x,y)取得极小值的必要条件是
在这里插入图片描述
然问题在于一元导数好求,但二元函数的导数在实际中经常不好求解,而梯度下降(也称最速下降)则提供了求解函数极小值的一个间接求解思路(求极大值通过梯度上升),即其本质是为了确定最快下降的方向,从而最快达到极小值。如下图:
在这里插入图片描述
具体做法是每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向(即当前最陡峭的位置向下)走一步。
就这样,每要走一步就根据上一步所在的位置选择当前最陡峭最快下山的方向走下一步,一步步走下去,一直走到我们感觉已经到了山脚。
总之,梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为“最速下降法”。最速下降法越接近目标值,步长越小,前进越慢。
值得一提的是,下山这个例子其实不如泉水下山更形象(或者天黑后,打着手电筒最快下山,毕竟谁没事蒙着眼睛下山呢)

比如水受重力影响,会在当前位置,沿着最陡峭的方向流动,有时会形成瀑布(梯度的反方向为函数值下降最快的方向)
水流下山的路径不是唯一的,在同一个地点,有可能有多个位置具有同样的陡峭程度,而造成了分流(可以得到多个解)
遇到坑洼地区,有可能形成湖泊,而终止下山过程。

即梯度下降方向可以理解为函数值下降最快的方向。

参考博文:https://blog.csdn.net/v_JULY_v/article/details/81350035

  • 35
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值