彻底学会系列:一、机器学习之梯度下降(1)

1 梯度下降概念

1.1 概念

梯度下降是一种优化算法,用于最小化一个函数的值,特别是用于训练机器学习模型中的参数,其基本思想是通过不断迭代调整参数的值,使得函数值沿着梯度的反方向逐渐减小,直至达到局部或全局最小值

1.2 理解

在实际业务中,一般多个特征对应一个目标结果值。即对一个多维复杂的方程组的每一维的特征权重进行计算,以求出这个方程局部或全局最小值。如果使用正规方程的进计算,计算量太大,时间及财力消耗巨大。采用梯度下降方法,选定一个经验初始值,一步步沿着梯度的反方向进行计算,使方程解尽快达到收敛,并得出最优解。

1.3 分类

  • 批量梯度下降(Batch Gradient Descent)
  • 随机梯度下降(Stochastic Gradient Descent)
  • 小批量梯度下降(Mini-batch Gradient Descent)

1.4 应用

梯度下降法是机器学习和优化领域中最常用的优化算法之一,被广泛应用于训练神经网络、线性回归、逻辑回归等各种机器学习模型中

2 梯度下降公式

2.1 表达公式

θ n + 1 = θ n − α ∗ g r a d i a n t \theta^{n+1} = \theta^n - \alpha * gradiant θn+1=θnαgradiant

其中 α \alpha α表示学习率, g r a d i e n t gradient gradient表示梯度

θ n + 1 = θ n − α ∗ ∂ J ( θ ) ∂ θ \theta^{n+1} = \theta^n - \alpha * \frac{\partial J (\theta )}{\partial \theta} θn+1=θnαθJ(θ)

另一种写法

2.2 图示

在这里插入图片描述

2.3 每一维求解,一起找到 J ( θ ) J(\theta) J(θ)最小值

θ 0 n + 1 = θ 0 n − α ∗ ∂ J ( θ ) ∂ θ 0 \theta_0^{n+1} = \theta_0^n - \alpha * \frac{\partial J (\theta )}{\partial \theta_0} θ0n+1=θ0nαθ0J(θ)
θ 1 n + 1 = θ 1 n − α ∗ ∂ J ( θ ) ∂ θ 1 \theta_1^{n+1} = \theta_1^n - \alpha * \frac{\partial J (\theta )}{\partial \theta_1} θ1n+1=θ1nαθ1J(θ)
θ m n + 1 = θ m n − α ∗ ∂ J ( θ ) ∂ θ m \theta_m^{n+1} = \theta_m^n - \alpha * \frac{\partial J (\theta )}{\partial \theta_m} θmn+1=θmnαθmJ(θ)

在这里插入图片描述

3 梯度下降学习率

3.1 概念

梯度下降算法中的学习率learning rate 是一个非常重要的超参数,它控制了每次参数更新的步长大小。学习率决定了在梯度下降过程中参数更新的速度和稳定性

3.2 理解

为得到局部或全局最小函数值,特征权重按梯度反方向逐渐减小,这个减去的值,就叫作学习率或步长

3.3 调整策略

  • 固定学习率: 将学习率设置为一个固定的常数,例如0.01或0.001。这是最简单的学习率调整策略,但可能不够灵活,无法适应不同问题和数据的特性。

  • 学习率衰减(Learning Rate Decay): 在训练过程中逐渐减小学习率,以使模型在接近最优解时更加稳定。常见的衰减策略包括指数衰减、分段衰减等。

  • 自适应学习率(Adaptive Learning Rate): 根据参数更新的情况动态地调整学习率。例如,AdaGrad、RMSProp、Adam等优化算法会根据梯度的历史信息来自适应地调整学习率,以更有效地更新参数。

  • 学习率搜索(Learning Rate Search): 在训练过程中动态地搜索最优的学习率。例如,可以使用学习率范围测试(Learning Rate Range Test)等方法来估计合适的学习率范围。

3.4 应用

  • 学习率设置得太小,参数更新的步长就会很小,导致收敛速度缓慢,需要更多的迭代次数才能收敛到最优解,或者在达到最优解之前就提前停止。

  • 学习率设置得太大,参数更新的步长就会很大,可能导致算法无法收敛,甚至发生震荡或发散。

    使用 η \eta η 表示学习率,下图3种学习率情况
    在这里插入图片描述

3.5 设置学习率

学习率的是一个经验,把它设置成一个比较小的正整数,0.1、0.01、0.001、0.0001,just make
在这里插入图片描述

4 梯度下降实验步骤

  1. 随机设置最优解 θ \theta θ
  2. 随机生成一组数值 w 0 、 w 1 、 w 2 、 w n w_0、w_1、w_2、w_n w0w1w2wn, 期望 为 0 方差 为 1 的正太分布数据。 、
  3. 求梯度 g ,梯度代表曲线某点上的切线的斜率,沿着切线往下就相当于沿着坡度最陡峭的方向下降
  4. if g < 0, 变大,if g > 0, 变小
  5. 判断是否收敛 convergence,如果收敛跳出迭代,如果没有达到收敛,回第 3 步,继续迭代3~4步

收敛的判断标准是: 随着迭代进行损失函数Loss,变化非常微小甚至不再改变,即认为达到收敛
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

AntV L7深圳智慧城市

本案例使用L7库和Mapbox GL JS构建深圳智慧城市。 文章目录 1. 引入 CDN 链接2. 引入组件3. 创建地图4. 创建场景5. 获取数据6. 创建面图层7. 演示效果8. 代码实现 1. 引入 CDN 链接 <!-- 1.引入CDN链接 --> <script src"https://unpkg.com/antv/l7"><…

Centos yum报错‘Connection timed out after 30002 milliseconds‘) 正在尝试其它镜像。解决办法

修改源后更新报错 我有两个Centos 一个7 一个8&#xff0c;疏忽在7上面配置了8的源后报错&#xff0c;通过下面的报错发现提示的是Centos7的源找不到&#xff0c;才意识到是不是配置错了源。 报错信息&#xff1a; http://mirrors.aliyun.com/centos/7/AppStream/x86_64/os/r…

Java 面向对象(类与对象 成员方法 方法重载 可变参数 构造方法 / 构造器 this关键字 包 访问修饰符)

目录 一、类与对象1. 类与对象的定义2. 类和对象的内存分配机制 二、成员方法1. 成员方法的定义2. 方法的调用机制3. 成员方法传参机制 三、方法重载四、可变参数1. 基本概念2. 基本语法3. 应用 五、 构造方法 / 构造器1. 特点2. 使用案例3. 对象创建的流程 六、this关键字1. 运…

【Linux】信号保存{sigset_t/sigpending/sigprocmask/bash脚本/代码演示}

文章目录 1.信号相关常见概念2.管理信号的数据结构3.初识sigset_t4.信号集操作函数4.1sigpending4.2sigprocmask4.2代码测试1.测试12.测试23.测试3 4.3bash 脚本文件 1.信号相关常见概念 信号相关动作&#xff1a;产生 发送 接收 阻塞 递达(处理) 实际执行信号的处理动作称为信…

0基础 三个月掌握C语言(11)

字符函数和字符串函数 为了方便操作字符和字符串 C语言标准库中提供了一系列库函数 接下来我们学习一下这些函数 字符分类函数 C语言提供了一系列用于字符分类的函数&#xff0c;这些函数定义在ctype.h头文件中。这些函数通常用于检查字符是否属于特定的类别&#xff0c;例如…

html--宠物

文章目录 htmljscss html <!DOCTYPE html> <html lang"en" > <head><meta charset"UTF-8"><title>CodePen - Spaceworm</title><script> window.requestAnimFrame (function() {return (window.requestAnimat…

粤嵌6818开发板触摸屏应用

一、触摸屏应用 1.触摸屏设备的名字 在Linux下&#xff0c;一切皆文件&#xff0c;触摸屏也是一个文件。 触摸屏设备的名字&#xff1a;/dev/input/event0 2.触摸屏的两个专业术语 事件 ->event0 当一些外接控制设备(鼠标、键盘&#xff0c;wifi&#xff0c;触摸屏&am…

4.1_7 文件共享

文章目录 4.1_7 文件共享&#xff08;一&#xff09;基于索引结点的共享方式&#xff08;硬链接&#xff09;&#xff08;二&#xff09;基于符号链的共享方式&#xff08;软链接&#xff09; 总结 4.1_7 文件共享 注意&#xff1a;多个用户共享同一个文件&#xff0c;意味着系…

单片机第四季-第二课:uCos2源码-BSP

1&#xff0c;初始uCos2 文件中uC开头的为uCos相关的。 2&#xff0c;uCos2源码工程建立 建立Source Insight工程 寻找main函数 (1)RTOS其实就是一个大的裸机程序&#xff0c;也是从main开始运行的 (2)main之前也是有一个汇编的启动文件的 (3)main中调用了很多初始化函数 bsp部…

《你就是孩子最好的玩具·升级版》笔记(一)尊重孩子的感受

目录 简介 经典摘录 简介 作者是&#xff08;美&#xff09;金伯莉布雷恩。奠定父母与孩子一生亲密关系的情感引导书。 什么是情感引导&#xff1f; 情感引导式教育的核心&#xff0c;就是教我们的孩子如何去合理地认知以及表达自己的感受&#xff0c;书中更侧重于在这方面为…

【NBUOJ刷题笔记】递推_递归+分治策略2

0. 前言 PS&#xff1a;本人并不是集训队的成员&#xff0c;因此代码写的烂轻点喷。。。本专题一方面是巩固自己的算法知识&#xff0c;另一方面是给NBU学弟学妹们参考解题思路&#xff08;切勿直接搬运抄袭提交作业&#xff01;&#xff01;&#xff01;&#xff09;最后&…

【matlab】如何批量修改图片命名

【matlab】如何批量修改图片命名 (●’◡’●)先赞后看养成习惯😊 假如我的图片如下,分别是1、2、3、4、5的命名 需求一:假如现在我需要在其后面统一加上_behind字符串,并且保留原命名,同时替换掉原先的图片,也就是不copy新的一份,直接在原文件夹中处理,我们可以进行…

软件杯 深度学习 python opencv 动物识别与检测

文章目录 0 前言1 深度学习实现动物识别与检测2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存…

openEuler学习总结1(仅供学习参考)

华为的openEuler内核是源于Linux。 openEuler操作系统安装流程 第一步&#xff1a;开启虚拟化 第二步&#xff1a;安装一个虚拟化软件virtualbox 第三步&#xff1a;镜像 第四步&#xff1a;配置 设置虚拟机所在的目录 把网卡类型选择成桥接网卡 挂载镜像 设置完成&#xff0…

YOLOv9详解

1.概述 在逐层进行特征提取和空间转换的过程中&#xff0c;会损失大量信息&#xff0c;例如图中的马在建模过程中逐渐变得模糊&#xff0c;从而影响到最终的性能。YOLOv9尝试使用可编程梯度信息PGI解决这一问题。 具体来说&#xff0c; PGI包含三个部分&#xff0c;&#xff0…

【你也能从零基础学会网站开发】Web建站之jQuery进阶篇 jQuery常见属性和方法概述与使用

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 jQuery创建新的…

vulhub中Apache Shiro 认证绕过漏洞复现(CVE-2010-3863)

Apache Shiro是一款开源安全框架&#xff0c;提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用&#xff0c;同时也能提供健壮的安全性。 在Apache Shiro 1.1.0以前的版本中&#xff0c;shiro 进行权限验证前未对url 做标准化处理&#xff0c;攻击者可以构造/、//、…

交流互动系统|基于springboot框架+ Mysql+Java+Tomcat的交流互动系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

redis学习-String类型的命令介绍以及特殊情况分析

目录 1. set key value 2. get key 3. append key string 4. strlen key 5. incr key 和 decr key 6. incrby key num 和 decrby key num 7. getrange key start end 8. setrange key start string 9. setex key time value 10. setnx key value 11. mset key1 val…

【Web开发】CSS教学(超详细,满满的干货)

&#x1f493; 博客主页&#xff1a;从零开始的-CodeNinja之路 ⏩ 收录文章&#xff1a;【Web开发】CSS教学(超详细,满满的干货) &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 CSS一. 什么是CSS?1.1 基本语法规范1.2 引入方式1.3 规范 二. CSS选…