机器学习6-梯度下降法

梯度下降法

目的

梯度下降法(Gradient Descent)是一个算法,但不是像多元线性回归那样是一个具体做回归任务的算法,而是一个非常通用的优化算法来帮助一些机器学习算法求解出最优解的,所谓的通用就是很多机器学习算法都是用它,甚至深度学习也是用它来求解最优解。所有优化算法的目的都是期望以最快的速度把模型参数θ求解出来,梯度下降法就是一种经典常用的优化算法。

梯度下降法的思想

在这里插入图片描述
梯度下降法的基本思想可以类比为一个下山的过程,如下图所示函数看似为一片山林,红色的是山林的高点,蓝色的为山林的低点,蓝色的颜色越深,地理位置越低,则图中有一个低点,一个最低点。

梯度下降法的公式

在这里插入图片描述
其中Wj 是W向量中的一个元素, η为学习率。学习率一般是整数,学习率一般都是正数,那么在山左侧梯度是负的,那么这个负号就会把 W 往大了调,如果在山右侧梯度就是正的,那么负号就会把 W 往小了调。每次 Wj 调整的幅度就是η*gradient,就是横轴上移动的距离。

学习率设置技巧


在这里插入图片描述
根据我们上面讲的梯度下降法公式,我们知道η是学习率,设置大的学习率 Wj 每次调
整的幅度就大,设置小的学习率 Wj 每次调整的幅度就小,然而如果步子迈的太大也会有问
题其实,俗话说步子大了容易扯着蛋,可能一下子迈到山另一头去了,然后一步又迈回来了,
使得来来回回震荡。步子太小呢就一步步往前挪,也会使得整体迭代次数增加。

梯度下降法的流程

1 .初始化参数Wj,
2. 求梯度函数
3. 判断是否收敛,如果收敛跳出迭代,否则继续循环。
在这里插入图片描述

三种常用的梯度下降法

基于线性回归的损失函数求导得到导函数
在这里插入图片描述
然后将导数应用在如下的梯度下降公式中
在这里插入图片描述
假设所有样本数为N.该梯度计算基于线性回归损失函数得到。
m=N 全量梯度下降;
m=1 随机梯度下降;
1<m<N 批量梯度下降。

梯度下降法挑战

  1. 选择一个合理的学习速率很难。如果学习速率过小,则会导致收敛速度很慢。如果学习速率过大,那么其会阻碍收敛,即在极值点附近会振荡。
  2. 学习速率调整(又称学习速率调度,Learning rate schedules 试图在每次更新过程中,改变学习速率,如退火。一般使用某种事先设定的策略或者在每次迭代中衰减一个较小的阈值。无论哪种调整方法,都需要事先进行固定设置,这边便无法自适应每次学习的数据集特点。
  3. 模型所有的参数每次更新都是使用相同的学习速率。如果数据特征是稀疏的或者每个特征有着不同的取值统计特征与空间,那么便不能在每次更新中每个参数使用相同的学习速率,那些很少出现的特征应该使用一个相对较大的学习速率。
  4. 对于非凸目标函数,容易陷入那些次优的局部极值点中,如在神经网路中。那么如何避免呢。Dauphin 指出更严重的问题不是局部极值点,而是鞍点(一段导数接近0)
    在这里插入图片描述

批次和轮次

轮次:epoch,轮次顾名思义是把我们已有的训练集数据学习多少轮。
批次:batch,批次这里指的的我们已有的训练集数据比较多的时候,一轮要学习太多数据,那就把一轮次要学习的数据分成多个批次,一批一批数据的学习。

归一化

目的

在这里插入图片描述
对于y=
X1对应年龄,X2对应工资,其维度单位不一样会导致训练时间参数变化,θ2的变化会小一些。
归一化的一个目的是使得最终梯度下降的时候可以不同维度θ参数可以在接近的调整幅度上。

归一化的方式

最大最小值归一化

在这里插入图片描述
最大最小值归一化,把所有值缩放到0到1之间,但是容易受到极大值的影响。

标准归一化

在这里插入图片描述
标准归一化是除以的是标准差,而标准差的计算
会考虑到所有样本数据,所以受到离群值的影响会小一些,这就是除以方差的好处!但是如
果是使用标准归一化不一定会把数据缩放到 0 到 1 之间了

正则化

提到正则化一定要先讲下拟合问题

过拟合欠拟合

(1) under fit:还没有拟合到位,训练集和测试集的准确率都还没有到达最高。学的还不
到位。
(2) over fit:拟合过度,训练集的准确率升高的同时,测试集的准确率反而降低。学的过
度了,做过的卷子都能再次答对,考试碰到新的没见过的题就考不好。
(3) just right:过拟合前训练集和测试集准确率都达到最高时刻。学习并不需要花费很多
时间,理解的很好,考试的时候可以很好的把知识举一反三。真正工作中我们是奔着过
拟合的状态去调的,但是最后要的模型肯定是没有过拟合的。
正则化就是防止过拟合,增加模型的鲁棒性 robust,鲁棒是 Robust 的音译,也就是强壮的意思。就像计算机软件在面临攻击、网络过载等情况下能够不死机不崩溃,这就是该软件的鲁棒性。鲁棒性调优就是让模型拥有更好的鲁棒性,也就是让模型的泛化能力和推广能力更加的强大。
所以正则化(鲁棒性调优)的本质就是牺牲模型在训练集上的正确率来提高推广能力, W 在数值上越小越好,这样能抵抗数值的扰动。在数值上越小越好,这样能抵抗数值的扰动。同时为了保证模型的正确率 W 又不能极小。
故而人们将原来的损失函数加上一个惩罚项,这里面损失函数就是原来固有的损失函数,比如回归的话通常MSE,分类的话通常是 cross entropy 交叉熵,然后在加上一部分惩罚项来使得计算出来的模型 W 相对小一些来带来泛化能力。

常见的惩罚项

在这里插入图片描述
其实 L1 和 L2 正则的公式数学里面的意义就是范数,代表空间中向量到原点的距离。当我们把多元线性回归损失函数加上 L2 正则的时候,就诞生了 Ridge 岭回归。当我们把多元线性回归损失函数加上 L1 正则的时候,就孕育出来Lasso 回归。
在这里插入图片描述
当我们看到上图时,其实里面学问很大,通常我们会说 L1 正则会使得计算出来的模型有的 W 趋近于 0,有的 W 相对较大,而 L2 会使得 W 参数整体变小,这是为什么呢?这得从梯度下降更新得角度去考虑如果损失函数加上正则项,那么导函数就等于多了正则项的导函数,即原来比如 MSE的导函数和 L1、L2 的导函数,那么梯度 gradient 就是这两部分组成,每次减小的幅度就是学习率η×(MSE 的导+L1/L2 的导),说白了就是比不加惩罚项要多更新一部分,这部分就
使得 W 奔着原点 0 去。
在这里插入图片描述
上式中λ是正则项系数,λ越大,说明我们算法工程师越看重模型的泛化能力,经验值是设置 0.4,也可以看成是保障正确率的 base loss 的权值是 1,保障泛化能力的正则项权值是 0.4。既然现在要去最小化的整体损失函数变成了两部分加和,那么θ就既得满足原有的损失函数比如 MSE,同时还得满足 L1 或者 L2 这部分,从图上来说就是θ得在紫色的损失函数等高线上同时又得在红色的 L1 或 L2 的等高线上,说白了就是要出现在交点上面。
因为更高维度空间的图形很难去绘制和观看,所以这里选择两个特征维度对应w1 和w2 两个参数的图来解释。
以下公式就是 L1 或者 L2 的导函数,也就是每次梯度下降会多走的幅度,我们可以看到如果是 L1 每次会多走η*1 的幅度,我们知道η学习率一开始设置一个常数那么每次多走的幅度对应不同的维度来说是一样的一个常数,学习率是 0.5 的话,比如w1 多走 0.5,w2也是多走 0.5。反观 L2 每次多走的幅度是之前的 2 倍的wi
在这里插入图片描述

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

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

相关文章

(0基础保姆教程)-JavaEE开课啦!--11课程(初识Spring MVC + Vue2.0 + Mybatis)-实验9

一、什么是Spring MVC&#xff1f; Spring MVC 是一个基于 Java 的 Web 框架&#xff0c;遵循 MVC 设计模式&#xff0c;用于构建企业级应用程序。它通过控制器(Controller)处理用户请求&#xff0c;模型(Model)处理业务逻辑&#xff0c;视图(View)展示数据&#xff0c;实现了请…

微前端-MicroApp

微前端即是由一个主应用来集成多个微应用&#xff08;可以不区分技术栈进行集成&#xff09; 下面是使用微前端框架之一 MicroApp 对 react微应用 的详细流程 第一步 创建主应用my-mj-app 利用脚手架 npx create-react-app my-mj-app 快速创建 安装 npm install --save rea…

知识库助手的构建之路:ChatGLM3-6B和LangChain的深度应用

ChatGLM3-6B和LangChain构建知识库助手 安装依赖库 使用pip命令安装以下库&#xff1a; pip install modelscope langchain0.1.7 chromadb0.5.0 sentence-transformers2.7.0 unstructured0.13.7 markdown3.0.0 docx2txt0.8 pypdf4.2.0依赖库简介&#xff1a; ModelScope&a…

shell(2)永久环境变量和字符串显位

shell&#xff08;2&#xff09;永久环境变量和字符串显位 声明&#xff01; 学习视频来自B站up主 ​泷羽sec​​ 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章 笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习…

Java实现IP代理池

文章目录 Java实现IP代理池一、引言二、构建IP代理池1、代理IP的获取2、代理IP的验证1. 导入必要的库2. 设置代理IP和端口3. 发起HTTP请求4. 检查请求结果5. 完整的验证方法 注意事项 三、使用IP代理池四、总结 Java实现IP代理池 一、引言 在网络爬虫或者需要频繁请求网络资源…

微服务保护和分布式事务

文章目录 一、微服务保护1.1 微服务保护方案&#xff1a;1.1.1 请求限流&#xff1a;1.1.2 线程隔离&#xff1a;1.1.3 服务熔断&#xff1a; 1.2 Sentinel&#xff1a;1.2.1 介绍和安装&#xff1a;1.2.2 微服务整合&#xff1a; 1.3 请求限流&#xff1a;1.4 线程隔离&#x…

后端 Java发送邮件 JavaMail 模版 20241128测试可用

配置授权码 依赖 <dependency><groupId>javax.mail</groupId><artifactId>javax.mail-api</artifactId><version>1.5.5</version> </dependency> <dependency><groupId>com.sun.mail</groupId><artifa…

MySQL安装与卸载(linux)

MySQL安装与卸载 MySQL8.0.26-安装1. 准备一台Linux服务器2. 下载Linux版MySQL安装包3. 上传MySQL安装包4. 创建目录,并解压5. 安装mysql的安装包6. 启动MySQL服务7. 查询自动生成的root用户密码8. 修改root用户密码9. 创建用户10. 并给root用户分配权限11. 重新连接MySQL MySQ…

设置ip和代理DNS的WindowsBat脚本怎么写?

今天分享一个我们在工作时&#xff0c;常见的在Windows中通过批处理脚本&#xff08;.bat 文件&#xff09;来设置IP地址、代理以及DNS 相关配置的示例&#xff0c;大家可以根据实际需求进行修改调整。 一、设置静态IP地址脚本示例 以下脚本用于设置本地连接&#xff08;你可…

施工车辆,工程车类型识别,可识别装载机,搅拌车,挖掘机,拉土车等,支持YOLO,COCO,VOC三种格式带标记

1338总图像数 数据集分割 训练组 87&#xff05; 1170图片 有效集 8% 112图片 测试集 4% 56图片 预处理 自动定向&#xff1a; 已应用 调整大小&#xff1a; 拉伸至 640x640 增强 每个训练示例的输出&#xff1a; 3 旋转&#xff1a; -15 至 15 之间 …

新版布谷直播软件源码开发搭建功能更新明细

即将步入2025年也就是山东布谷科技专注直播系统开发,直播软件源码出售开发搭建等业务第9年,山东布谷科技不断更新直播软件功能&#xff0c;以适应当前新市场环境下的新要求。山东布谷科技始终秉承初心&#xff0c;做一款符合广大客户需求的直播系统软件。支持广大客户提交更多个…

科技赋能:企业如何通过新技术提升竞争力的策略与实践

引言 在当今瞬息万变的商业环境中&#xff0c;科技的迅猛发展正在重新定义行业的游戏规则。无论是小型企业还是跨国巨头&#xff0c;都感受到数字化转型的迫切需求。过去&#xff0c;企业竞争力更多依赖于成本控制、资源调配或市场覆盖&#xff0c;而如今&#xff0c;新技术的引…

项目自动化部署,持续集成/持续交付(CI/CD)工具有那些?他们的优劣势分别是什么?共计15个工具进行对比分析。

项目自动化部署&#xff0c;持续集成/持续交付&#xff08;CI/CD&#xff09;工具有那些&#xff1f;他们的优劣势分别是什么&#xff1f; 主要对比的工具有&#xff1a;Jenkins 、阿里云云效、华为云DevCloud、腾讯云CODING、百度智能云DevOps、 GitLab CI/CD、CircleCI、Trav…

Web登录页面设计

记录第一个前端界面&#xff0c;暑假期间写的&#xff0c;用了Lottie动画和canvas标签做动画&#xff0c;登录和注册也连接了数据库。 图片是从网上找的&#xff0c;如有侵权私信我删除&#xff0c;谢谢啦~

洛谷 P2385 [USACO07FEB] Bronze Lilypad Pond B C语言 bfs

题目&#xff1a; https://www.luogu.com.cn/problem/P2385 题目看仔细&#xff0c;是M行N列.八个方向数组依靠M1,M2&#xff0c;所以初始化方向数组要在主函数里面&#xff0c;传入bfs函数里。 #include <iostream> #include<algorithm> #include<queue>…

告别照相馆!使用AI证件照工具HivisionIDPhotos打造在线证件照制作软件

文章目录 前言1. 安装Docker2. 本地部署HivisionIDPhotos3. 简单使用介绍4. 公网远程访问制作照片4.1 内网穿透工具安装4.2 创建远程连接公网地址 5. 配置固定公网地址 前言 本文主要介绍如何在Linux系统使用Docker快速部署一个AI证件照工具HivisionIDPhotos&#xff0c;并结合…

C语言实例_14之求俩数的最大公约数和最小公倍数

1.最大公约数和最小公倍数概述 最大公约数&#xff08;Greatest Common Divisor&#xff0c;简称GCD&#xff09;&#xff1a; 也称为最大公因数&#xff0c;是指两个或多个整数共有约数中最大的一个。例如&#xff0c;对于整数12和18&#xff0c;它们的约数分别为&#xff1…

Mybatis:Mybatis快速入门

Mybatis的官方文档是真的非常好&#xff01;非常好&#xff01; 点一下我呗&#xff1a;Mybatis官方文档 MyBatis 是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可…

JAVA:Spring Boot 3 实现 Gzip 压缩优化的技术指南

1、简述 随着 Web 应用的用户量和数据量增加&#xff0c;网络带宽和页面加载速度逐渐成为瓶颈。为了减少数据传输量&#xff0c;提高用户体验&#xff0c;我们可以使用 Gzip 压缩 HTTP 响应。本文将介绍如何在 Spring Boot 3 中实现 Gzip 压缩优化。 2、配置 Spring Boot 3 对…

Mybatis集成篇(一)

Spring 框架集成Mybatis 目前主流Spring框架体系中&#xff0c;可以集成很多第三方框架&#xff0c;方便开发者利用Spring框架机制使用第三方框架的功能。就例如本篇Spring集成Mybatis 简单集成案例&#xff1a; Config配置&#xff1a; Configuration MapperScan(basePack…