梯度下降方法训练模型

一、梯度的概念

梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。

在单变量的实值函数的情况,梯度只是导数,或者,对于一个线性函数,也就是线的斜率。

导数(Derivative),也叫导函数值,是用来分析函数“变化率”的一种度量。针对函数中的某个特定点x0,该点的导数就是x0点的“瞬间斜率”,也即切线斜率。

导数定义如下:

对于一条直线来说,求该直线的斜率就是找到该直线上两个点(X1,Y1)和(X2,Y2),分别求出两点在y和x上的增量。因此斜率就是y的改变量比上x的改变量:

对于曲线来说,某个点的导数就是该点的切线的斜率。

对于多元函数而言,梯度是一个向量,也就是说,把求得的偏导数(偏导数就是它关于其中一个变量的导数而保持其他变量恒定)以向量的形式写出来,就是梯度。

二、梯度下降

梯度下降(Gradient Descent)是一种在机器学习和深度学习中被广泛应用的优化算法。该算法的核心思想非常直观:找到一个函数的局部最小值(或最大值)通过不断地沿着该函数的梯度(gradient)方向更新参数。

简单地说,梯度下降是一个用于找到函数最小值的迭代算法。在机器学习中,这个“函数”通常是损失函数(Loss Function),该函数衡量模型预测与实际标签之间的误差。通过最小化这个损失函数,模型可以“学习”到从输入数据到输出标签之间的映射关系。

上图的梯度下降看起来很完美,但是神经网络是复杂函数,具有大量非线性变换,由此得到的损失函数看起来不像一个很好的碗状。实际上,损失函数可能是这样的:

从上图可以看出,有局部最小值(Local Minima),鞍点(Saddle Point),全局最小值(Global Minima),因此梯度下降往往也不一定会降到全局最小值。不过,最近的研究表明,局部极小值并不一定不好。在神经网络的损失曲面上,有太多的极小值,而一些局部极小值的表现可能和全局最小值一样好。更重要的是,预测集的损失曲面一般和训练集的略有不同。平坦宽阔的极小值,从训练集到预测集的切换不会改变太多损失,而狭窄的极小值则不然。更平坦的极小值推广性更好。

三、常用的梯度下降算法

梯度下降算法(Gradient Descent Optimization)是神经网络模型训练最常用的优化算法。对于深度学习模型,基本都是采用梯度下降算法来进行优化训练的。梯度下降算法背后的原理:目标函数 J(θ) 关于参数 θ 的梯度将是损失函数(loss function)上升最快的方向。而我们要最小化loss,只需要将参数沿着梯度相反的方向前进一个步长,就可以实现目标函数(loss function)的下降。这个步长 η 又称为学习速率。参数更新公式如下:

其中 ∇ J(θ) 是参数的梯度。

具体的梯度下降方法请参考以下链接:

一文看懂常用的梯度下降算法 - 知乎

参考来源:

如何使用梯度下降法解决CNN问题梯度下降法解决CNN问题的原理过程概述,主要面向对CNN感兴趣的同学,希望能够通过这篇科 - 掘金

100行Python代码,轻松搞定神经网络_Scratch少儿编程网

常见的梯度下降算法_梯度下降算法有哪些-CSDN博客

更多:

⁣西克中国 | SICK

传感器技术学习平台

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值