梯度下降算法原理 神经网络(Gradient Descent)

简介: 梯度下降算法原理 神经网络(Gradient Descent)

在求解神经网络算法的模型参数,梯度下降(Gradient Descent)是最常采用的方法。下面是我个人学习时对梯度下降的理解,如有不对的地方欢迎指出。

1、✌ 梯度定义

        微积分我们学过,对多元函数的各个变量求偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(∂f/∂x, ∂f/∂y)T,简称grad f(x,y)或者▽f(x,y)。对于在点(x0,y0)的具体梯度向量就是(∂f/∂x0, ∂f/∂y0)T.或者▽f(x0,y0),如果是3个参数的向量梯度,就是(∂f/∂x, ∂f/∂y,∂f/∂z)T,以此类推。

        那么这个梯度向量求出来有什么意义呢?他的意义从几何意义上讲,就是函数变化增加最快的地方。具体来说,对于函数f(x,y),在点(x0,y0),沿着梯度向量的方向就是(∂f/∂x0, ∂f/∂y0)T的方向是f(x,y)增加最快的地方。或者说,沿着梯度向量的方向,更加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是 -(∂f/∂x0, ∂f/∂y0)T的方向,梯度减少最快,也就是更加容易找到函数的最小值。

对于F点来说,F点的梯度为绿色向量的方向,那么它的反方向即为下降最快的地方

对于B点来说,B点的梯度为负,所以梯度的反方向为右下方,也是函数下降最快的地方

可见,他们都朝着使函数到达最小值的方向努力。

2、✌ 梯度下降和梯度上升

        一般我们要求取损失函数最小值时就要利用梯度下降,对应求取最大值就应该用梯度上升,两种方法都是将参数进行迭代更新。

下面进行介绍梯度下降的原理。

3、✌ 梯度下降的图示

        首先我们看这张图,z轴为损失函数,x、y轴分别为两个参数,现在问题就是我们要求取损失函数达到最小对应参数的取值,可能会想,穷举每个参数,这个方法显然不行,参数取值不限,不可能取到所有值,或者对损失函数求导,求极值,这种方法按理来说可能没有问题,但是因为我们每次遇到的损失函数不同,把这种方法封装成一个函数较难,函数类型不同,求导不同,无法做到通解,那么应该怎么做呢?

        把它看成一个碗,当我们向碗里放一个小球时,按自然现象来说,小球肯定会向下滚,那么小球滚的路径有什么特别之处呢?当让是坡度大的地方,越陡的地方越容易下来而且越快,那不就和我们的梯度对应上了吗,小球每次沿着梯度的反方向滚动总会有一个时刻达到最低点。

        梯度下降就是这个原理,可是又有了新的问题,我们看一张图。

        按照上面的理论,小球肯定会滚到一个最低点,那么这个点一定是最低点吗?肯定不是,根据上面的图可以看出,如果小球一旦陷入某一个凹陷的区域,就会终止,并没有达到最低点,那么就说我们获得的是局部最优,而不是全局最优,这里有一个补充,如果我们的损失函数为凸函数,那么我们一定会得到全局最优解。

        学过高数可能知道,取得极小值的位置,并不一定是最小值,它只是局部的最小值,那么应该怎么做呢,由此产生了很多优化的算法,利用各种数学的推导衍生新的公式,这里不予说明,本文只为讲解梯度下降原理,有兴趣可自行查找相关文献。

4、✌ 梯度下降的相关概念

w = w − a ∗ d J / d w w=w-a*dJ/dww=wadJ/dw

这个就是梯度下降的核心公式,用这个公式来进行更新w的取值,这里问什么用减号呢?话不多说看图。

        当我们的点是b点时,梯度为正(导数值),那么我们想要取到最小值,肯定是要左移,那么就需要减去该值*学习率

如果是a点,梯度为负(导数值为负),那么就需要右移,导数值为负就应该加上它

  1. 损失函数:学过线性回归可能知道,我们评估它的好坏利用的就是MSE(均方误差),利用它进行度量模型拟合的程度。
    J ( w 1 , w 2 ) = 1 / m ∑ i = 0 m ( y − y ′ ) 2 J(w1,w2)=1/m\sum_{i=0}^m(y-y')^2J(w1,w2)=1/mi=0myy2
    显然这个函数越小越好,那么我们就是要求取最优的w1和w2取值使我们的损失函数达到最小值,这就用到了梯度下降。
  2. 学习率:就是上面公式中的a,有的地方也叫做步长,我感觉很矛盾,这个地方我感觉有些问题,我个人认为就是一个起调节作用的数,因为w和它对应的导数有可能数量级不同,这时就需要将导数乘一个小点的数调节一下

5、✌ 梯度下降的计算过程

        其中涉及到多维矩阵运算以及特别多的符号,对于初学者很难理解,这里我们简化一下,用一个简易版的来代替,不过原理是一样的,就是将低维推广到多维。

话不多说(因为编辑文档公式不好写,所有我在草纸上演示了下过程),来看图!!!

6、✌ 算法过程:

  1. 确定当前参数所在位置的梯度(导数)d J / d w dJ/dwdJ/dw
  2. 用学习率乘以梯度,得到参数更新的距离,即a*dJ/dw
  3. 确定迭代次数和阈值,分为两种情况
    3.1 第一种达到迭代次数,计算结束
    3.2 第二种参数更新值小于阈值,说白了就是a*dJ/dw趋于0,说明近乎达到了最优位置

7、✌ 算法优化:

有没有什么地方可以优化呢?

  1. 学习率的选择:
    很容易知道,如果学习率过小的化,会导致参数更新率较小,变化小,导致迭代次数增加,增加模型训练时间,如果学习率过大的化,会导致参数变化太大,迭代过快,导致跳过最优解的位置
    看张图就明白了

  2. 参数的初始值:
    初始值的不同也会影响模型的效果,因为梯度下降有时会得到局部最优解,而如果位置选择得当的化会避免这种状况
  3. 数据的归一化,消除量纲影响 :
    归一化后不同特征的取值范围会划分到同一范围,会减少一定的计算量
    x = x − m e a n ( x ) / s t d ( x ) x=x-mean(x)/std(x)x=xmean(x)/std(x)
    样本减去均值除以标准差,这样处理后的数据会符合高斯分布


目录
打赏
0
0
0
0
20
分享
相关文章
|
13天前
|
基于 PHP 语言深度优先搜索算法的局域网网络监控软件研究
在当下数字化时代,局域网作为企业与机构内部信息交互的核心载体,其稳定性与安全性备受关注。局域网网络监控软件随之兴起,成为保障网络正常运转的关键工具。此类软件的高效运行依托于多种数据结构与算法,本文将聚焦深度优先搜索(DFS)算法,探究其在局域网网络监控软件中的应用,并借助 PHP 语言代码示例予以详细阐释。
27 1
短视频到底如何推荐的?深度剖析视频算法推送原理详细且专业的解读-优雅草卓伊凡-【01】短视频算法推荐之数据收集
短视频到底如何推荐的?深度剖析视频算法推送原理详细且专业的解读-优雅草卓伊凡-【01】短视频算法推荐之数据收集
64 12
短视频到底如何推荐的?深度剖析视频算法推送原理详细且专业的解读-优雅草卓伊凡-【01】短视频算法推荐之数据收集
基于GA遗传优化TCN时间卷积神经网络时间序列预测算法matlab仿真
本内容介绍了一种基于遗传算法优化的时间卷积神经网络(TCN)用于时间序列预测的方法。算法运行于 Matlab2022a,完整程序无水印,附带核心代码、中文注释及操作视频。TCN通过因果卷积层与残差连接学习时间序列复杂特征,但其性能依赖超参数设置。遗传算法通过对种群迭代优化,确定最佳超参数组合,提升预测精度。此方法适用于金融、气象等领域,实现更准确可靠的未来趋势预测。
深入解析图神经网络注意力机制:数学原理与可视化实现
本文深入解析了图神经网络(GNNs)中自注意力机制的内部运作原理,通过可视化和数学推导揭示其工作机制。文章采用“位置-转移图”概念框架,并使用NumPy实现代码示例,逐步拆解自注意力层的计算过程。文中详细展示了从节点特征矩阵、邻接矩阵到生成注意力权重的具体步骤,并通过四个类(GAL1至GAL4)模拟了整个计算流程。最终,结合实际PyTorch Geometric库中的代码,对比分析了核心逻辑,为理解GNN自注意力机制提供了清晰的学习路径。
194 7
深入解析图神经网络注意力机制:数学原理与可视化实现
基于MobileNet深度学习网络的活体人脸识别检测算法matlab仿真
本内容主要介绍一种基于MobileNet深度学习网络的活体人脸识别检测技术及MQAM调制类型识别方法。完整程序运行效果无水印,需使用Matlab2022a版本。核心代码包含详细中文注释与操作视频。理论概述中提到,传统人脸识别易受非活体攻击影响,而MobileNet通过轻量化的深度可分离卷积结构,在保证准确性的同时提升检测效率。活体人脸与非活体在纹理和光照上存在显著差异,MobileNet可有效提取人脸高级特征,为无线通信领域提供先进的调制类型识别方案。
基于模糊神经网络的金融序列预测算法matlab仿真
本程序为基于模糊神经网络的金融序列预测算法MATLAB仿真,适用于非线性、不确定性金融数据预测。通过MAD、RSI、KD等指标实现序列预测与收益分析,运行环境为MATLAB2022A,完整程序无水印。算法结合模糊逻辑与神经网络技术,包含输入层、模糊化层、规则层等结构,可有效处理金融市场中的复杂关系,助力投资者制定交易策略。
基于PSO粒子群优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-LSTM-SAM网络时间序列预测算法。使用Matlab2022a开发,完整代码含中文注释及操作视频。算法结合卷积层提取局部特征、LSTM处理长期依赖、自注意力机制捕捉全局特征,通过粒子群优化提升预测精度。适用于金融市场、气象预报等领域,提供高效准确的预测结果。
基于GA遗传优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
本项目基于MATLAB 2022a实现了一种结合遗传算法(GA)优化的时间卷积神经网络(TCN)时间序列预测算法。通过GA全局搜索能力优化TCN超参数(如卷积核大小、层数等),显著提升模型性能,优于传统GA遗传优化TCN方法。项目提供完整代码(含详细中文注释)及操作视频,运行后无水印效果预览。 核心内容包括:1) 时间序列预测理论概述;2) TCN结构(因果卷积层与残差连接);3) GA优化流程(染色体编码、适应度评估等)。最终模型在金融、气象等领域具备广泛应用价值,可实现更精准可靠的预测结果。
基于GA遗传优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本项目使用MATLAB 2022a实现时间序列预测算法,完整程序无水印。核心代码包含详细中文注释和操作视频。算法基于CNN-LSTM-SAM网络,融合卷积层、LSTM层与自注意力机制,适用于金融市场、气象预报等领域。通过数据归一化、种群初始化、适应度计算及参数优化等步骤,有效处理非线性时间序列,输出精准预测结果。
基于WOA鲸鱼优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本内容介绍了一种基于CNN-LSTM-SAM网络与鲸鱼优化算法(WOA)的时间序列预测方法。算法运行于Matlab2022a,完整程序无水印并附带中文注释及操作视频。核心流程包括数据归一化、种群初始化、适应度计算及参数更新,最终输出最优网络参数完成预测。CNN层提取局部特征,LSTM层捕捉长期依赖关系,自注意力机制聚焦全局特性,全连接层整合特征输出结果,适用于复杂非线性时间序列预测任务。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等