机器学习中的数学原理——随机梯度下降法

news2025/7/17 7:19:56

这个专栏主要是用来分享一下我在机器学习中的学习笔记及一些感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎私信或者评论区留言!这一篇就更新一下《白话机器学习中的数学——随机梯度下降法》!

一、什么是随机梯度下降法 

随机梯度下降是随机取样替代完整的样本,主要作用是提高迭代速度,避免陷入庞大计算量的泥沼。 对于整个样本做GD又称为批梯度下降(BGD,batch gradient descent)。 随机梯度下降(SGD, stochastic gradient descent) :名字中已经体现了核心思想,随机选取一个店做梯度下降,而不是遍历所有样本后进行参数迭代。

二、算法分析 

之前我们介绍过最速梯度下降法,即只要向与导数的符号相反的方向移动 x,g(x) 就会自然而然地沿着最小值的方向前进了。也就是自动更新参数。但是最速下降法除了计算花时间以外,还有一个缺点——容易陷入局部最优解。在讲解回归时,我们使用的是平方误差目标函数。这个函数形式 简单,所以用最速下降法也没有问题。现在我们来考虑稍微复杂 一点的,比如下列的图这种形状的函数:

最速下降法来找函数的最小值时,必须先要决定从哪个 x 开始 找起。之前我们用 g(x) 说明的时候是从 x = 3 或者 x = −1 开始的,这是我们随便选择的,选用随机数作为初始值的情况比较多。不过这样每次初始值都会变,进而导致陷入局部最优解的问题。假设这张图中标记的位置就是初始值:

那么从这个点开始找,可以求出最小值。但是如果将下列这个点作为初始值,还没计算完就会停止,这就叫陷入了局部最优解

随机梯度下降法就是以最速下降法为基础的。我们先复习一下最速下降法,还记得最速下降法的参数更新表达式吗?

这个表达式使用了所有训练数据误差,而在随机梯度下降法中会随机选择一个训练数据并使用它来更新参数。这个表达 式中的 k 就是被随机选中的数据索引

所以最速下降法更新 1 次参数的时间,随机梯度下降法可以更新 n 次,速度上明显提升。 此外,随机梯度下降法由于训练数据是随机选择的,更新参数时使用的又是选择数据时的梯度,所以不容易陷入目标函数的局部最优解。并且在实际计算过程中,的确会收敛!这样的做法就叫做随机梯度下降法

上述提到的是随机选择1个训练数据的做法,此外还有随机选择 m 个训练数据来更新参数的做法。设随机选择 m 个训练数据的索引的集合为 K,那么我们这样来更新参数:

假设训练数据有 100 个,那么在 m = 10 时,创建一个有 10 个随机数的索引的集合,例如 K = {61, 53, 59, 16, 30, 21, 85, 31, 51, 10},然后重复更新参数就可以了,这样的做法称为小批量(mini-batch)梯度下降法,这是一种介于最速下降法和随机梯度下降法之间的方法

三、总结

不管是随机梯度下降法还是小批量梯度下降法,我们都必须考虑学习率 η。把 η 设置为合适的值是很重要的。学习率的决定是一个很难的问题,可以通过反复尝试来找到合适的值,除此之外还有其他的几个办法,这是我们后续所要学习的!这三个算法总结成一句话:最速梯度下降法是用每个对应的估计值减去实际值求和,随机梯度下降法是用选定的一个估计值减去实际值求和,批量梯度下降法是用选定的多个估计值减去实际值求和。

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

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

相关文章

NVM安装

注意事项: 1、不能安装任何node版本(如存在请删除后安装nvm); 安装步骤: 1、下载nvm ![在这里插入图片描述](https://img-blog.csdnimg.cn/c9dcc27383aa41888347080438c0914e.png 解压后点击exe文件进行安装: &#x…

负载均衡简介

一、什么是负载均衡? 互联网早期,业务流量比较小并且业务逻辑比较简单,单台服务器便可以满足基本的需求;但随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台机器的性能问题以及单点问题凸显…

SMMP:一种基于稳定成员资格的多峰聚类算法(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

伦茨LENZE GDC操作指南

1、GDC软件综述 GDC程序可以“在线模式”和“离线模式”使用: 离线模式 可以在没有与目标系统(控制器)相连接条件下使用。该功能允许离线设定参数、编程等工作。 在线模式 通过PC的串口、并口或系统总线实现GDC与目标系统(控制器…

376. 机器任务——最小点覆盖+匈牙利算法

有两台机器 A,B 以及 K 个任务。 机器 A 有 N 种不同的模式(模式 0∼N−1),机器 B 有 M 种不同的模式(模式 0∼M−1)。 两台机器最开始都处于模式 0。 每个任务既可以在 A 上执行,也可以在 B…

艾美捷游离巯基检测试剂盒基本参数和特点说明

游离硫醇(即蛋白质上的游离半胱氨酸、谷胱甘肽和半胱氨酸残基)的检测和测量是研究许多生物系统中的生物过程和事件的基本任务之一。 艾美捷游离巯基检测试剂盒提供了一种简单、可重复和灵敏的工具,用于测定样品(即血浆、血清、组织…

3D格式转换工具HOOPS Exchange助力3D 打印软件实现质的飞跃

HOOPS SDK是用于3D工业软件开发的工具包,其中包括4款工具,分别是用于读取和写入30多种CAD文件格式的HOOPS Exchange、专注于Web端工程图形渲染的HOOPS Communicator、用于移动端和PC端工程图形渲染的HOOPS Visualize、支持将3D数据以原生3D PDF、HTML和标…

解决电脑C盘空间不足,发现微信和qq文件占用了大量内存

项目场景: 电脑C盘空间不足,需要隔一段时间清理垃圾,分析占用空间的文件,将C盘文件迁移到E盘。 问题描述 C盘提示空间不足 原因分析: 通过扫描磁盘发现微信和qq文件占用了几十G的内存,由于微信和qq的一…

C++成员函数当作参数调用的两种方式

平时编程时,多用来将数据进行传参,在考虑回调场景下我们会将函数单做参数传给被调用函数,让被调用函数在时机成熟时进行调用。在某些场景下,需要将类的成员函数当作参数进行回调,此时定义成员函数形参的方式通常有两种…

我的python学习经历及资源整理

对于小白来说,有个人引导会比自学要高效的多,尤其容易坚持不下去的小伙伴。可以试试下面这个入门课程,不用本地安装Python环境,能直接在网页上敲代码,还有大牛老师带着入门,能少走很多弯路!只要…

直播弹幕系统(五)- 整合Stomp替换原生WebSocket方案探究

直播弹幕系统(五)- 整合Stomp替换原生WebSocket方案探究前言一. STOMP 协议简单介绍1.1 客户端编码基础1.2 服务端编码基础1.2.1 SimpMessagingTemplate1.2.2 SendTo 和 MessageMapping二. SpringBoot整合STOMP并实现聊天室2.1 基础配置和依赖2.2 WebSoc…

华为EC6108V9C免拆卡刷固件包

华为EC6108V9C免拆卡刷固件包 固件特点: 1、修改dns,三网通用; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、无开机广告,无系统更新,不在被强制升级; 4、大量精简内置的没用的软件&…

Redis高级篇之最佳实践

Redis高级篇之最佳实践 本章内容 Redis 键值设计批处理优化服务端优化集群最佳实践 笔记整理自 b站_黑马程序员Redis入门到实战教程 1. Redis键值设计 优雅的key结构 Redis 的 Key 虽然可以自定义,但最好遵循下面的几个最佳实践约定: 遵循基本格式&a…

Docker容器中安装Jenkins

众所周知,jenkins是现在比较流行的一种工具,今天就记录一下在工作中如何使用了jenkins, 由于我使用的使用Linux(Debain 11)开发环境使用了jdk1.8,会跟最新版的jenkins(官方介绍最新版要jdk11支持)有不良的化学反应,所以把jenkins放到了容器中…

Hive+Spark离线数仓工业项目实战--项目介绍及环境构建(2)

Docker的介绍 了解Docker的基本功能和设计 - 为什么要用Docker? - 什么是Docker? 路径 - step1:生产环境的问题 - step2:容器的概念 - step3:Docker的设计 实施 生产环境的问题 - 运维层面:一…

Windows下的通用进程守护程序(持续更新中),高仿supervisor。

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:无尽的折腾后,终于又回到…

【Three.js入门】标准网格材质、置换贴图、粗糙度贴图、金属贴图、法线贴图

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,也会涉及到服务端 📃个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀未…

【实时数仓】DWS层的定位、DWS层之访客主题计算(PV、UV、跳出次数、计入页面数、连续访问时长)

文章目录一 DWS层与DWM层的设计1 设计思路2 需求梳理3 DWS层定位二 DWS层-访客主题计算1 需求分析与思路2 功能实现(1)封装VisitorStatsApp,读取Kafka各个流数据a 代码b 测试(2)合并数据流a 封装主题宽表实体类Visitor…

CMakeList

目录 .1 简介 .2 常用命令 2.1 指定 cmake 的最小版本 2.2 设置项目名称 2.3 设置编译类型 2.4 指定编译包含的源文件 2.4.1 明确指定包含哪些源文件 2.4.2 搜索所有的 cpp 文件 2.4.3自定义搜索规则 2.5 查找指定的库文件 2.6. 设置包含的目录 2.7. 设置链接库搜索…

中国晶振市场规模将增长至2026年的263.21亿元,国产市场未来可期

晶振作为频率控制和频率选择基础元件,广泛应用于资讯设备、移动终端、通信及网络设备、汽车电子、智能电表、电子银行口令卡等领域,随着新兴电子产业、物联网的快速发展,及以 5G、蓝牙 5.0、Wi-Fi 6 等无线通信新技术的广泛应用,预…