神经网络中的算法-梯度下降算法

news/2024/4/29 1:41:38/文章来源:https://blog.csdn.net/kupe87826/article/details/127523004

目录

一、概述      

二、算法思想

1、一维

 2、多维

 三、梯度下降类型

1、批量梯度下降算法

2、随机梯度下降算法

3、小批量梯度下降算法


一、概述      

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

        说起梯度下降算法,其实并不是很难,它的重要作用就是求函数的极值。梯度下降就是求一个函数的最小值,对应的梯度上升就是求函数最大值。虽然梯度下降与梯度上升都是求函数极值的算法,为什么我们常常提到“梯度下降”而不是梯度上升“呢?主要原因是在大多数模型中,我们往往需要求函数的最小值,即使求最大值也可以转化为求最小值(取反即可)。比如BP神经网络算法,我们得出损失函数,当然是希望损失函数越小越好,这个时候肯定是需要梯度下降算法的。梯度下降算法作为很多算法的一个关键环节,其重要意义是不言而喻的

二、算法思想

1、一维


        梯度下降算法的思想是:先任取点(x0,f(x0)),求f(x)在该点x0的导数f"(x0),在用x0减去导数值f"(x0),计算所得就是新的点x1。然后再用x1减去f"(x1)得x2…以此类推,循环多次,慢慢x值就无限接近极小值点。
        具体是有公式推导的,不过比较麻烦。其实这个算法是可以直观理解的。比如对于函数f(x)=x**2,当x大于0时,导数大于零,x减去导数值后变小;只要x大于零,每次减去一个大于零的导数,x值肯定变小。当x小于零时,导数小于零,减去小于零的数后x值增加,所以无论x0起始于何处,最终都能走到极值点0处。只不过有可能从单侧趋近(像走楼梯一样下降),也可能x一会儿大于极值点,一会儿小于极值点,交替地趋近,最终x趋于0。

 2、多维

(1)确定当前位置的损失函数的梯度,对于,其梯度表达式为:

(2)用步长a乘以损失函数的梯度,得到当前位置下降的距离,即。

(3)如果梯度的向量的模接近于0或者两次函数值之间的差值接近于0则停止,否则进入第(4)步。(从条件可以看出梯度下降有可能求的是局部最优值)

(4)更新所有的参数值,更新表达式如下,更新完成后转入步骤(1):

 三、梯度下降类型

1、批量梯度下降算法

        计算会每次从所有数据中计算梯度,然后求平均值,作为一次迭代的梯度,对于高维数据,计算量相当大,因此,把这种梯度下降算法称之为批量梯度下降算法

2、随机梯度下降算法

        由于批量下降法每迭代更新一次权重都需要计算所有样本误差,而实际问题中经常有上亿的训练样本,故效率偏低,且容易陷入局部最优解,因此提出了随机梯度下降算法。其每轮计算的目标函数不再是全体样本误差,而仅是单个样本误差,即每次只代入计算一个样本目标函数的梯度来更新权重,再取下一个样本重复此过程,直到损失函数值停止下降或损失函数值小于某个设定的阈值。此过程简单,高效,通常可以较好地避免更新迭代收敛到局部最优解。


3、小批量梯度下降算法

        小批量梯度下降算法是综合了批量梯度下降算法和随机梯度下降算法的优缺点,随机选取样本中的一部分数据,通常最常用的也是小批量梯度下降算法,计算速度快,收敛稳定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_218408.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NetworkManager nmcli ipv4 静态ip 笔记221025

nmcli connection modify 可以修改现有连接 con 可以写成 c 到 connection 之间的字段mod 可以写成 m 到 modify 之间的字段nmcli connection modify nmcli connec modify nmcli conne modif nmcii conn modi nmcli con mod nmcli co mo nmcli c m nmcli c modify nmcli conne…

购物中心智能管理系统该如何选择

快鲸智慧楼宇系统作为新一代数智化商管系统,以实际业务场景出发构建产品逻辑,并在传统商管系统基础上,拥有独家的商业大数据加持,同时嵌入了BI智能分析工具,打造了一个招商营运场景的数智化系统,将“人的经…

[C++] 初接触 泛型编程—— C++ 模板分析

泛型编程 C中引入了重载的概念,使得可以编写多个函数名相同但参数、返回值不同的函数,例如: 相同的函数名可以传入不同的参宿,进而调用不同的函数 但,即使有了重载,相同功能的函数 还要分别对不同的类型进…

Python之numpy数组篇(下)

目录 一、数组排序 1、概念 2、升序,最大、最小值 3、原地、横向排序 二、数组内积运算 1、概念 2、代码例子 三、访问数组元素 1、使用介绍 2、行列直接访问 3、切片 4、行列访问扩展 四、数组对函数运算的支持 1、概念 2、例子 五、改变数组形状 1…

1.3.3系统调用

文章目录为什么引入系统调用什么是系统调用系统调用和库函数的区别系统调用的背后为什么引入系统调用 为了防止这样情况的发生,就是防止进程能够随意的去调用我们的系统资源,操作系统提供了系统调用的功能,用户进程想要使用打印机这种共享资源…

12_Vue事件总结

事件总结 事件修饰符连携 准备工作 html <!-- 定义一个容器 --><div class="app"><!-- 事件修饰符连携 --><div class="box" @click="toBaidu"><a href="https://www.baidu.com" @click.stop="toBaid…

Java代码审计前置知识——SpringMVC基础

目录 (一&#xff09;回顾MVC 1.1 什么是MVC Model&#xff08;模型&#xff09; View&#xff08;视图&#xff09; Controller&#xff08;控制器&#xff09; 1.2 Model1时代 1.3 Model2时代 总结 1.4 回顾Servlet 0x01 新建一个Maven工程当做父工程,pom依赖 0x0…

1.1.2操作系统的特征

操作系统是一个系统软件&#xff0c;但与其他系统软件和应用软件有很大的不同&#xff0c;就是它拥有自己的特殊性&#xff0c;及基本特征 首先共享和并发是相互存在的条件共享和并发是虚拟和异步的前提&#xff0c;是操作系统的两个最基本的特征 1并发 拿餐厅吃饭举例子&…

3.3.3JavaScript网页编程——WebAPI(JS之BOM含正则)

目录BOMwindow对象定时器-延时函数setTimeoutJS执行机制&#xff08;执行栈、任务队列&#xff09;面试要问location对象location.href (获取完整url或者赋值)location.search (获取?后面的)location.hash(获取#号后面的)location.reloadnavigator对象&#xff08;检测浏览器移…

10_事件处理阶段

v-on指令 语法 v-on:xxx 这里的xxx指代的是各类事件类型,例如单击,双击,鼠标悬停,键盘监听等等...... 准备工作 准备一个容器,两个按钮,一个按钮不传递参数,另一个按钮传递参数 <body><!-- 创建一个容器 --><div class="subject"><!-- 标…

having where的区别,SQL70 返回更多的产品

返回更多的产品_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/dc91b7d2de3c4603a55995e83210f605?tpId298&tqId2368029&ru/exam/oj&qru/ta/sql-teach-yourself/question-ranking&sourceUrl%2Fexam%2Foj%3Fpage%3D1%26tab%3DSQL%25E7%25A…

MMSegmentation V0.27.0训练与推理自己的数据集(二)

1、官方模型转换MMSegmentation风格 如果你想自己转换关键字使用官方存储库的预训练模型&#xff0c;我们还提供了一个脚本swin2mmseg.py在tools directory &#xff0c;将模型的关键字从官方的repo转换为MMSegmentation风格。 python tools/model_converters/swin2mmseg.py …

一篇文章带你了解服务器操作系统——Linux简单入门

一篇文章带你了解服务器操作系统——Linux简单入门 Linux作为服务器的常用操作系统,身为工作人员自然是要有所了解的 在本篇中我们会简单介绍Linux的特点,安装,相关指令使用以及内部程序的安装等本篇内容属于《瑞吉外卖》的知识科普部分,有兴趣可以查看一下《瑞吉外卖》的相…

欧拉路径(欧拉环游、欧拉回路)

一个流行的游戏是用铅笔画这些图&#xff0c;但是图中的每一条边都只能被画一次&#xff0c;在画图过程中铅笔不能离开纸面。难度更高的问题是&#xff0c;不光要一笔画完图&#xff0c;并且起点和终点还要落在同一处。如果我们将上面的三个图形都看作图数据结构&#xff0c;那…

flash动画设计并发布、嵌入到网页

【创意内容】 Flash动画设计,二维动画自己选择了动画主题,有三个板块:bubbles动画、蝴蝶飞动画、全球游线图动画,都是自己做的,使用了场景运用动画、图片的滚动、形状遮罩等功能。 【程序运行截图】 bubbles butterflies global

ICCV 2021 | Y-Net:轨迹-场景信息的真正融合

今天没有多余的解释&#xff0c;直接开始吧~ 1. Y-Net网络结构 Y-Net的网络结构长什么样子呢&#xff1f;Y-Net的网络结构就长下图这样子。看上去我好像在自言自语&#xff0c;其实你仔细揣摩就会发现&#xff0c;我真的是在自言自语。可以看到说&#xff0c;Y-Net网络输入的是…

TPH-YOLOv5: 基于Transformer预测头的改进YOLOv5用于无人机捕获场景目标检测

代码链接&#xff1a;GitHub - cv516Buaa/tph-yolov5 这是一篇针对无人机小目标算法比赛后写的论文&#xff0c;无人机捕获场景下的目标检测是近年来的热门课题。由于无人机总是在不同的高度上飞行&#xff0c;目标尺度变化剧烈&#xff0c;给网络优化带来了负担。此外&#xf…

buu [NPUCTF2020]认清形势,建立信心

题目&#xff1a; from Crypto.Util.number import * from gmpy2 import * from secret import flagp getPrime(25) e # Hidden q getPrime(25) n p * q m bytes_to_long(flag.strip(b"npuctf{").strip(b"}"))c pow(m, e, n) print(c) print(pow(2,…

hadoop至MapReduce-004

MapReduce定义 MapReduce是一个分布式运算程序的编程框架&#xff0c;核心功能是将用户编写的业务逻辑代码和自带默认组件组合成一个完整的分布式运算程序&#xff0c;并发运行在hadoop集群上 MapReduce的优缺点 优点 易于编程&#xff1a;用户只关心业务逻辑代码扩展性&am…

webpack 异步import生成代码解析

文章目录原文件内容文件目录打包前打包后入口文件生成代码生成的一些辅助方法__webpack_require__.m__webpack_require__.d__webpack_require__.o__webpack_require__.u__webpack_require__.g__webpack_require__.r导入文件通用方法__webpack_require__异步文件引入获取下载文件…