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

机器学习-Gradient Descent

机器学习(Gradient Descent)

videopptblog

梯度下降(Gradient Descent)

optimization problem:
optimization

损失函数最小化
假设本模型有两个参数𝜃1和𝜃2,随机取得初始值
求解偏微分,梯度下降对参数进行更新梯度下降

Visualize:

确定梯度方向,红色表示Gradient方向,蓝色是梯度下降的方向,因为我们要是损失函数L减小,使用应该取与Gradient方向相反的方向,这也对应着进行参数更新时用的是-(减号)
其中:η 叫做Learning rates(学习速率)

Visualize

Small Tips

Tip 1:Tuning your learning rates

下面是两幅图,我们来简单看一下

  1. 图左边黑色为损失函数的曲线,假设从左边最高点开始:(一维)
    • 学习率刚刚好,比如红色的线,就能顺利找到最低点。
    • 学习率太小,比如蓝色的线,也可以顺利找到最低点,就会走的太慢,时间成本太高。
    • 学习率有点大,比如绿色的线,出现了跳过最低点,反复进行横跳,很难到达最低点。
    • 学习率非常大,比如黄色的线,直接就飞出去了,更新参数的时候只会发现损失函数越更新越大
  2. 当参数为一维或者二维的时候,我们可以很直观地建立图形进行观察,但是超过了三维以后,我们就无法进行可视化,但是右图是始终可以建立的,分别表示了不同学习率下参数更新以后损失函数的变化情况。将参数改变对损失函数的影响进行可视化。比如学习率太小(蓝色的线),损失函数下降的非常慢;学习率太大(绿色的线),损失函数下降很快,但马上就卡住不下降了;学习率特别大(黄色的线),损失函数就飞出去了;红色的就是差不多刚好,可以得到一个好的结果。

Learning Rate

我们可能会猜想,学习率很重要,既不能太大,跳出最优解,也不能太小,收敛过慢,那有没有一种可能实现学习率地改变呢?

Adaptive Learning Rates

在训练的过程中,我们需要实现学习率的自适应变化:

  1. Reduce the learning rate by some factor every few epochs.
    • 前期初始点可能距离最低点较远,我们可以将学习率设置大一些,使得损失函数更快收敛。
    • update参数以后,离最低点较近,此时,我们应该调整学习率变小,防止跳过了最低点。
  2. Learning rate cannot be one-size-fits-all
    • 给不同的参数分配不同的学习率
自适应学习率算法-Adagrad

下面有两种方法,第一种是针对一个参数的,但是我们要学习的是第二种,实现参数独立的自适应学习率算法

Adagrad

w是一个参数
𝜎t :之前参数的所有微分的均方根,对于每个参数都是不一样的。
普通梯度下降如Vanilla Gradient descent
使用Adagrad算法:每个参数的学习率都把除以之前微分的均方根。

Adagrad

变形
end

Contradiction

按照正常的理解,梯度越大,说明可能离最低点越远,那么我们变化的步伐也应该越大,梯度越小,说明可能离最低点越远,那么我们变化的步伐也应该越小,但是在Adagrad算法里面,当梯度越大的时候,步伐应该越大,但下面分母又导致当梯度越大的时候,步伐会越小,前后有点矛盾了。
解释:
此处我们的步长是相对的,我们当前的梯度的大小也是相对于前面的梯度大小来调整步长

  1. 构造反差效果
    反差
  2. 通过实例看出最优步长与一次微分成正比,与二次微分成反比,这里采用之前所有一次微分的均方根估计二次微分
    • 正比解释:一次微分越大,说明可能离最低点越远,步伐越大
    • 反比解释:二次微分越小,一次微分变化越慢,一次微分也就倾向于保留较大的趋势,步伐也就越大
      二次微分
  3. 同一参数,可以通过比较其一次微分比较其距离最优值的距离;不同参数还需要考虑二次微分。
    Do not cross parameters
    参数
  4. 第2点我们提到了Use first derivative to estimate second derivative
    • 一个较为复杂的参数模型,我们在进行求解的时候,算一次偏微分可能就需要很长的时间,所以二次偏微分一般不可取
    • 一般情况下,在一定的范围内取一次偏微分,进行平方求和开根号,在一定的程度上面也可以反映二次偏微分的大小
      二次偏微分

Tip 2:Stochastic Gradient Descent(SGD)

基本思想:损失函数没处理一个批次的数据就进行一次更新,
Loss Function

  • 普通的算法在进行参数更新的时候是一次遍历所有的例子,然后更新,实现一次更新,步伐一般较大。
  • SGD算法进行参数更新的时候每遍历一个例子就进行一次更新,实现多次更新,一般步伐较小。

SGD

Tip 3:Feature Scaling

Scaling

存在多个变量的时候,很可能出现的一种情况就是,他们的取值范围不一样,一个可以很大,一个可以很小,那么我们在对他们的对应参数进行相同变化的时候,而y的变化的情况却大不相同。

Scaling

左图: x1的scale比x2要小很多,所以当 w1​和 w2做同样的变化时,w1对 y 的变化影响是比较小的(w1对损失函数L有较小的微分,在w1方向上梯度较小,图像较为平滑),x2​ 对 y 的变化影响是比较大的(w2对损失函数L有较大的微分,在w2方向上梯度较大,图像上有比较陡峭的峡谷)
右图:二者scale相近,各点处梯度大致相同
来源

Normalize

归一化

计算每一个维度变量的

  • 均值:mi
  • 标准差: σi

进行相应的变化
归一化
这样所有维度的均值都是0,方差都是1。

Gradient Descent Theory

当我们在使用梯度下降算法进行参数优化的时候,每一次的优化并不能百分百保证使得损失函数越来越小。

Taylor

我们在一般情况下,我们无法一瞬间找到全局最优解,可以做到的是给定某个初始值和某个范围,我们可以找到局部最低点。

How to y find the point with the smallest value nearby?

Taylor Series

一个变量的泰勒展开

Taylor

Taylor多项式在点x=x0上逼近函数的值。多项式的阶次越高,多项式中的项越多,逼近函数的实际值越近。

Taylor

两个变量的泰勒展开

Taylor

Gradient Desent

Loss

我们在前面提到了,给定某个初始值和某个范围,如果这个范围足够小,那么我们是不是可以用泰勒展开对损失函数表达式进行替换

Taylor

以d为半径,做一个足够小的圆形区域,在这个区域上面,我们可以使用泰勒展开

Taylor

s可以看作定值,后面可以看作向量点乘(不记得的去百度一下)
点乘还有一种计算方法就是:两向量的模相乘再乘以夹角的余弦值,其中(u,v)是一节偏微分,是梯度,所以要让点乘结果最小,我们可以让两向量方向相反,夹角余弦值为-1,让另一向量模最大,但是有边界限制。

Taylor

现在我们可以更好理解使用泰勒展开的意义了,最后得到的向量的方向也就是我们向最低点移动的方向,但是不要忘记了我们使用泰勒展开的前提范围足够小,同样也要求我们学习率也要足够小,这样才能保证泰勒展开的精度是足够的

More Limitation of Gradient Descent

  • 微分值为0,可能是极值点,但不一定是全局极值,也可能仅仅只是微分值为0的非极值点
  • 在实际的ML中,当微分值小于某一个数值就停下来了,但这里只是比较平缓,并不是极值点

Limitation

相关文章:

机器学习-Gradient Descent

机器学习(Gradient Descent) videopptblog 梯度下降(Gradient Descent) optimization problem: 损失函数最小化 假设本模型有两个参数𝜃1和𝜃2,随机取得初始值 求解偏微分,梯度下降对参数进行更新 Visualize: 确定梯度方向&…...

MySql003——SQL(结构化查询语言)基础知识

一、数据库的相关概念 DB:数据库(Database) 即存储数据的“仓库”,其本质是一个文件系统。它保存了一系列有组织的数据。DBMS:数据库管理系统(Database Management System) 是一种操纵和管理数…...

springCloud Eureka注册中心配置详解

1、创建一个springBoot项目 2、在springBoot项目中添加SpringCloud依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2021.0.3</version><type>…...

gti 远程操作

目录 一. 分布式版本控制管理系统 1. 理解分布式版本控制管理系统 二. 创建远程仓库 ​编辑 ​编辑 三. 克隆远程仓库_HTTP 四. 克隆远程仓库_SSH 配置公钥 添加公钥 五. git 向远程仓库推送 六. 拉取远程仓库 七. 忽略特殊文件 八. 配置别名 一. 分布式版本控制管理…...

Ftrace

一、概述 Ftrace有剖析器和跟踪器。剖析器提供统计摘要&#xff0c;如激素胡和直方图&#xff1b;而跟踪器提供每一个事件的细节。 Ftrace剖析器列表&#xff1a; 剖析器描述function内核函数统计分析kprobe profiler启用的kprobe计数器uprobe profiler启用的uprobe计数器hi…...

Tomcat修改端口号

网上的教程都比较老&#xff0c;今天用tomcat9.0记录一下 conf文件夹下server.xml文件 刚开始改了打红叉的地方&#xff0c;发现没用&#xff0c;改了上面那行...

vue2企业级项目(一)

vue2企业级项目&#xff08;一&#xff09; 创建项目&#xff0c;并创建项目编译规范 1、node 版本 由于是vue2项目&#xff0c;所以 node 版本比较低。使用 12.18.3 左右即可 2、安装vue 安装指定版本的vue2 npm i -g vue2.7.10 npm i -g vue/cli4.4.63、编辑器规范 vsc…...

【前端知识】React 基础巩固(三十八)——log、thunk、applyMiddleware中间件的核心代码

React 基础巩固(三十八)——log、thunk、applyMiddleware中间件的核心代码 一、打印日志-中间件核心代码 利用Monkey Patching&#xff0c;修改原有的程序逻辑&#xff0c;在调用dispatch的过程中&#xff0c;通过dispatchAndLog实现日志打印功能 // 打印日志-中间件核心代码…...

hive删除数据进行恢复

在实际开发或生产中&#xff0c;hive表如果被误删&#xff0c;如被truncate或是分区表的分区被误删了&#xff0c;只要在回收站的清空周期内&#xff0c;是可以恢复数据的&#xff0c;步骤如下&#xff1a; &#xff08;1&#xff09; 先找到被删除数据的存放目录&#xff0c;…...

二、前端高德地图、渲染标记(Marker)引入自定义icon,手动设置zoom

要实现这个效果&#xff0c;我们先看一下目前的页面展示&#xff1a; 左边有一个图例&#xff0c;我们可以方法缩小地图&#xff0c;右边是动态的marker标记&#xff0c;到时候肯定时候是后端将对应的颜色标识、文字展示、坐标点给咱们返回、我们肯定可以拿到一个list&#xf…...

UDF和UDAF、UDTF的区别

UDF UDF&#xff08;User-defined functions&#xff09;用户自定义函数&#xff0c;简单说就是输入一行输出一行的自定义算子。 是大多数 SQL 环境的关键特性&#xff0c;用于扩展系统的内置功能。&#xff08;一对一&#xff09; UDAF UDAF&#xff08;User Defined Aggregat…...

小研究 - 浅析 JVM 中 GC 回收算法与垃圾收集器

本文主要介绍了JVM虚拟机中非常重要的两个部分&#xff0c;GC 回收算法和垃圾收集器。从可回收对象的标记开始&#xff0c;详细介绍 了四个主流的GC算法&#xff0c;详细总结了各自的算法思路及优缺点&#xff0c; 提出了何种情况下应该通常选用哪种算法。 目录 1 标记可回收对…...

Flowable-服务-骆驼任务

目录 定义图形标记XML内容Flowable与Camel集成使用示例设计Came路由代码 定义 Camel 任务不是 BPMN 2.0 规范定义的官方任务&#xff0c;在 Flowable 中&#xff0c;Camel 任务是作为一种特殊的服务 任务来实现的。主要做路由工作的。 图形标记 由于 Camel 任务不是 BPMN 2.…...

用html+javascript打造公文一键排版系统9:主送机关排版

一、主送机关的规定 公文一般在标题和正文之间还有主送机关&#xff0c;相关规定为&#xff1a; 主送机关 编排于标题下空一行位置&#xff0c;居左顶格&#xff0c;回行时仍顶格&#xff0c;最后一个机关名称后标全角冒号。如主送机关名称过多导致公文首页不能显示正文时&…...

SpringBoot 集成 EasyExcel 3.x 优雅实现 Excel 导入导出

介绍 EasyExcel 是一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具。它能让你在不用考虑性能、内存的等因素的情况下&#xff0c;快速完成 Excel 的读、写等功能。 EasyExcel文档地址&#xff1a; https://easyexcel.opensource.alibaba.com/ 快速开始 …...

RT1052 的四定时器

文章目录 1 Quad Timer&#xff0c;简称&#xff1a;QTMR2 单个通道的框图3 QTMR配置3.1 QTMR1 时钟使能。3.2 初始化 QTMR1。3.2.1 QTMR_Init 3.3 设置 QTMR1 通道 0 的定时周期。3.3.1QTMR_SetTimerPeriod 3.4 使能 QTMR1 通道 0 的比较中断。3.4.1 QTMR_EnableInterrupts 3.…...

ViT-vision transformer

ViT-vision transformer 介绍 Transformer最早是在NLP领域提出的&#xff0c;受此启发&#xff0c;Google将其用于图像&#xff0c;并对分类流程作尽量少的修改。 起源&#xff1a;从机器翻译的角度来看&#xff0c;一个句子想要翻译好&#xff0c;必须考虑上下文的信息&…...

Election of the King 2023牛客暑期多校训练营4-F

登录—专业IT笔试面试备考平台_牛客网 题目大意&#xff1a;有一个n个数的数组a&#xff0c;有n-1轮操作&#xff0c;每轮由每个数选择一个和它的差最大的数&#xff0c;如果相同就选值更大的&#xff0c;被最多数组选择的数字被删去&#xff0c;有相同的也去掉数值更大的那个…...

Nacos的搭建及服务调用

文章目录 一、搭建Nacos服务1、Nacos2、安装Nacos3、Docker安装Nacos 二、OpenFeign和Dubbo远程调用Nacos的服务1、搭建SpringCloudAlibaba的开发环境1.1 构建微服务聚合父工程1.2 创建子模块cloud-provider-payment80011.3 创建子模块cloud-consumer-order80 2、远程服务调用O…...

uniapp小程序自定义loding,通过状态管理配置全局使用

一、在项目中创建loding组件 在uniapp的components文件夹下创建loding组件&#xff0c;如图&#xff1a; 示例代码&#xff1a; <template><view class"loginLoading"><image src"../../static/loading.gif" class"loading-img&q…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...