当前位置: 首页 > news >正文

【pytorch12】什么是梯度

说明

  • 导数
  • 偏微分
  • 梯度

梯度:是一个向量,向量的每一个轴是每一个方向上的偏微分
梯度是有方向也有大小,梯度的方向代表函数在当前点的一个增长的方向,然后这个向量的长度代表了这个点增长的速率

在这里插入图片描述
蓝色代表比较小的值,红色代表比较大的值,中间的箭头比较长,方向是由一个极小值指向一个极大值,因此中间这部分梯度反应了函数的增长的方向,说明了从这个方向增长这个方向是最快的

如何搜索到一个极小值?

一般情况下我们搜索的是极小值,如果想要搜索极大值的话,可以把loss变成负号,就可以通过搜索一个极小值解来搜索极大值解

在这里插入图片描述
所以这个函数的梯度是(2 θ 1 \theta_{1} θ1,2 θ 2 \theta_{2} θ2),再求(0,0)处的一个梯度情况,因此有时候会陷入到一个局部最小值的情况

在这里插入图片描述
在这里插入图片描述
红色是最原始版本的梯度下降来搜索会卡在马鞍的点上
在这里插入图片描述
对于任何的一个点和另外的一个点,我们拉一条直线,这条直线中间的中点以及中点所对应的函数的值,例如定义为z1,z2且z1>z2,叫做凸函数,对于这种情况可以找到一个全局最优解

存在且不太常见的
在这里插入图片描述
存在局部极大和局部极小,存在多个局部极小值

实际的例子:ResNet-56的平面
在这里插入图片描述
对于函数的输出可能有无数多个w参数,对于ResNet可以有上千万个W的参数f=(w1,w2,…),把上千万的自变量可视化到一个二维的平面,可能会陷入到无数多的局部极小值中,即使有全局最小值解,因此对于一个深层次的神经网络,取搜索的时候可能找到一个表现不满意的因为此时的解可能是一个局部极小值解,因此网络的精度不会特别高,Resnet加了一个shortcut的模块,在神经网络的旁边加了一条支路,发现神经网络可以变得很深同时也可以优化的很好,可视化后会变成第二个平面

使用梯度来搜索最小值的情况下,除了会遇到局部最小值,还可能遇到鞍点
在这里插入图片描述

优化器表现

  • 初始状态
  • 学习率
  • 动量(即如何逃离局部极小值)

初始状态

在这里插入图片描述
对于初始状态的不同,会影响找到的是全局解还是局部极小值这样的情况,搜索的路径也可能不一样,因此大家再做深度学习的时候函数的全职一定要初始化,而且初始化的时候如果没有把握就按照目前主流的初始化的方法
在这里插入图片描述
上图两种初始化,左边会到全局最小解,右边会到局部极小值,不同的初始化状态会得到不一样的结果

学习率

在这里插入图片描述

学习率设置为1的时候(比较大),步长会比较大,但实际上我们需要的情况是左边蓝色的点慢慢下降而不是左边跳到右边再跳到左边,是因为学习率设置的过大,会一步跨的太长直接跨过了最小值,对于比较好的函数还可以慢慢震荡到最小值,但是大部分现实情况是直接不收敛了,一开始要把learning rate设置的小一点,0.01或0.001这样,如果发现收敛了可以试着大一点这样会让收敛的速度会快一点

学习率也会影响收敛的精度,例如到最小值附近learning rate还是很大会一直在附近震动永远到不了最小值,只会得到一个近似比较好的情况,这种时候要慢慢减小learning rate

如何逃出局部最小值
在这里插入图片描述

很有可能搜索到局部最小值就停止了,但是还有最小值,这时候可以添加一个动量,这个动量可以直观的理解为惯性,也就是说在局部极小值左边发现梯度呈现右下降的趋势,在右边发现梯度呈左下角的趋势,如果在此时考虑一个惯性的话,在右边的时候梯度会引导你回去到局部最小值,但是本来就是向右去降低梯度的,如果可以考虑到一个惯性的话,假设向右走是v1向量向左走是v2向量,把这两个向量综合一下就会得到一个朝向于偏向v2的方向

常见函数的梯度

在这里插入图片描述
简单感知机线性模型的求解
在这里插入图片描述
二次模型的梯度
在这里插入图片描述
指数求解梯度的方式
在这里插入图片描述
线性感知机的输出和真实label之间的均方差
在这里插入图片描述

log函数求梯度
在这里插入图片描述

相关文章:

【pytorch12】什么是梯度

说明 导数偏微分梯度 梯度:是一个向量,向量的每一个轴是每一个方向上的偏微分 梯度是有方向也有大小,梯度的方向代表函数在当前点的一个增长的方向,然后这个向量的长度代表了这个点增长的速率 蓝色代表比较小的值,红色…...

南京,协同开展“人工智能+”行动

南京,作为江苏省的省会城市,一直以来都是科技创新和产业发展的高地。近日,南京市政府正式印发了《南京市进一步促进人工智能创新发展行动计划(2024—2026 年)》和《南京市促进人工智能创新发展若干政策措施》的“11”文…...

Selenium IDE 的使用指南

Selenium IDE 的使用指南 在自动化测试的领域中,Selenium 是一个广为人知且强大的工具集。而 Selenium IDE 作为其中的一个组件,为测试人员提供了一种便捷且直观的方式来创建和执行自动化测试脚本。 一、Selenium IDE 简介 Selenium IDE 是一个用于录…...

vue配置sql规则

vue配置sql规则 实现效果组件完整代码父组件 前端页面实现动态配置sql条件,将JSON结构给到后端,后端进行sql组装。 这里涉及的分组后端在组装时用括号将这块规则括起来就行,分组的sql连接符(并且/或者)取组里的第一个。…...

面试官:Redis执行lua脚本能保证原子性吗?

核心问题 Redis执行lua脚本是否能确保原子性? 面试经历 面试者在面试中自信回答Redis执行lua脚本能保证原子性,但未能深入解释原因。 原子性概念 原子性:一个事务的所有命令要么全部执行成功,要么全部执行失败。 Redis官方说…...

基于Chrome扩展的浏览器可信事件与网页离线PDF导出

基于Chrome扩展的浏览器可信事件与网页离线PDF导出 Chrome扩展是一种可以在浏览器中添加新功能和修改浏览器行为的软件程序,我们可以基于Manifest规范的API实现对于浏览器和Web页面在一定程度上的修改,例如广告拦截、代理控制等。Chrome DevTools Proto…...

马拉松报名小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,赛事信息管理,赛事报名管理,活动商城管理,留言板管理,系统管理 微信端账号功能包括:系统首页,赛事信息&…...

python使用pywebview集成vue3和element-plus开发桌面系统框架

随着web技术越来越成熟,就连QQ的windows客户端都用web技术来开发,所以在未来,web技术来开发windows桌面软件也会越来越多,所以在此发展驱动之下,将最近流程的python与web技术相结合,使用vue3和element-plus…...

C++线程的使用

C11之前,C语言没有对并发编程提供语言级别的支持,这使得我们在编写可移植的并发程序时,存在诸多的不便。现在C11中增加了线程以及线程相关的类,很方便地支持了并发编程,使得编写的多线程程序的可移植性得到了很大的提高…...

算法库应用--寻找最长麦穗

学习贺利坚老师算法库 数据结构例程——串的顺序存储应用_使用顺序串存储身份证号-CSDN博客 本人详细解析博客 串的顺序存储的应用实例二_串的顺序存储应用-CSDN博客 版本更新日志 V1.0: 在原有的基础上, 进行优化名字, 并且有了相应的算法库作为支撑, 我使用了for循环来代替老…...

ython 使用 cx_Freeze 打包,不想要打包文件中能直接看到依赖的代码,如何处理

背景:因为使用 cx_Freeze 打包时,添加需要依赖的文件 cx_Freeze 是一个用于将 Python 程序打包成独立可执行文件的工具,支持多个平台。当你需要打包包含多个 .py 文件的项目时,你可以通过编写一个 setup.py 文件来指定哪些模块应…...

某DingTalk企典 - Token

⚠️前言⚠️ 本文仅用于学术交流。 学习探讨逆向知识,欢迎私信共享学习心得。 如有侵权,联系博主删除。 请勿商用,否则后果自负。 网址 aHR0cHM6Ly9kaW5ndGFsay5jb20vcWlkaWFuLw 浅聊一下 没毛病,就这字段,有效期…...

手写一个类似@RequestParam的注解(用来接收请求体的参数)

一、本文解决的痛点 按照大众认为的开发规范,一般post类型的请求参数应该传在请求body里面。但是我们有些post接口只需要传入一个字段,我们接受这种参数就得像下面这样单独创建一个类,类中再添加要传入的基本类型字段,配合Reques…...

【遇坑笔记】Node.js 开发环境与配置 Visual Studio Code

【遇坑笔记】Node.js 开发环境与配置 Visual Studio Code 前言node.js开发环境配置解决pnpm 不是内部或外部命令的问题(pnpm安装教程)解决 pnpm : 无法加载文件 C:\Program Files\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。 vscode 插件开…...

【ajax实战07】文章筛选功能

本文章目标:根据筛选条件,获取匹配数据展示 本章**“查询参数对象”指的是,要“获取文章列表”功能**中服务器接口要求配置的对象 实现步骤如下: 一:设置频道列表数据 二:监听筛选条件改变,…...

promise.all和promise.race的区别

Promise.all和Promise.race是JavaScript中Promise API的两个重要方法,它们在处理多个Promise对象时表现出不同的行为。以下是它们之间的主要区别: 1. 功能和行为 Promise.all: 功能:接收一个包含多个Promise的数组&#x…...

Python爬取豆瓣电影+数据可视化,爬虫教程!

1. 爬取数据 1.1 导入以下模块 import os import re import time import requests from bs4 import BeautifulSoup from fake_useragent import UserAgent from openpyxl import Workbook, load_workbook1.2 获取每页电影链接 def getonepagelist(url,headers):try:r reque…...

初阶数据结构二叉树练习系列(1)

这个系列的文章将带大家一起刷题,并且总结思路 温馨提示:本篇文章里的练习题仅适合刚学完二叉树的小白使用 相同的树 思路 情况分析:第一种情况:两棵树都为空 → 返回true 第二种情况&am…...

【selenium 】操作元素

操作元素 元素操作鼠标操作键盘操作 元素操作 元素操作示例清空输入框clear()deiver.find_element_by_id(“username”).clear()输入文字send_keys()deiver.find_element_by_id(“username”).send_keys(‘zs’)元素点击 click()deiver.find_element_by_id(“login”).click()…...

【MySQL】事务实现原理

目录 事务 如何使用 ACID 原子性(Atomicity) 原子性实现原理 持久性(Durability) 持久性实现原理 隔离性 隔离级别 读未提交 读已提交 可重复读 串行化 隔离级别原理 锁 共享锁&独占锁 意向锁 索引记录锁 间隙锁 临键锁 插入意向锁 自增锁 MVCC 实现…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异&#xff…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...

2023赣州旅游投资集团

单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...

Vue ③-生命周期 || 脚手架

生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...

多元隐函数 偏导公式

我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式,给定一个隐函数关系: F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 🧠 目标: 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z​、 …...