最小二乘法和梯度下降法

news2024/11/17 5:50:23

目录

最小二乘法

梯度下降法

1.梯度下降法的定义

2.梯度下降法的运行过程

3.梯度下降法的步骤

4.梯度下降法的分类

(1)批量梯度下降 BGD

(2)随机梯度下降 SGD

(3)小批量梯度下降 mini-batch GD

5.梯度下降改进

(1)Momentum

(2)AdaGrad(Adaptive Gradient)

(3)Adam( Adaptive Moment Estimation)


摘要:

1.最小二乘法

        通过最小化实际观测值与模型预测值之间的残差平方和来确定最佳参数。

        核心思想:求解未知参数,使得理论值与观测值之差(即误差,或者说残差)的平方和达到最小。

2.梯度下降法

        梯度下降法是一种优化算法,常用于机器学习和深度学习中,用于最小化一个损失函数。

        核心思想:是通过迭代调整模型参数,以使损失函数达到最小值。

        参数更新:新参数 = 旧参数 - 学习率 × 梯度


最小二乘法

最小二乘法是一种常用于拟合数据和估计模型参数的数学方法。

它通过最小化实际观测值与模型预测值之间的残差平方和来确定最佳参数。

最小二乘法广泛应用于回归分析和曲线拟合。

🌍它的主要思想就是求解未知参数,使得理论值与观测值之差(即误差,或者说残差)的平方和达到最小。

在最小二乘法中,我们通常有一个模型,该模型包含一些待定的参数,而实际观测到的数据点与模型的预测值之间存在差异。最小二乘法的目标是找到最优的参数值,使得这些差异的平方和最小。化。

 

梯度下降法

1.梯度下降法的定义

梯度下降法是一种优化算法,常用于机器学习和深度学习中,用于最小化一个损失函数。

🌍梯度下降法的核心思想是通过迭代调整模型参数,以使损失函数达到最小值。

这个过程类似于寻找山上最低点的过程,其中梯度代表了上升最快的方向,而负梯度则代表了下降最快的方向。

 怎么找损失函数的最小值呢?我们可以借助【极值点】来描述。

🌍梯度下降法的核心思想是通过迭代调整模型参数,以使损失函数达到最小值。

根据高数知识我们可以知道最小值点=min{极小值点,边界值}。

梯度下降法就是寻找一个极小值点。

有的函数的极小值点会有很多个,这个时候就要看运气了。梯度下降法最开始会随机寻找一个位置,然后从这个位置开始找局部的最优解,如果运气好的话就找到了最小值,如果不好的话就只是找到了一个极小值。

2.梯度下降法的运行过程

在梯度下降法中,我们利用梯度的信息来调整模型参数,以减小损失函数。具体来说,沿着梯度的反方向更新参数,从而使损失函数逐渐减小,最终达到最优参数配置。

首先说【梯度】是什么?

在数学和向量微积分中,梯度是一个向量,表示函数在某一点上的变化率。对于一个多元函数,梯度由该函数对每个自变量的偏导数组成。

🌍在梯度下降法中,我们沿着梯度的反方向更新参数,从而使损失函数逐渐减小,最终达到最优参数配置。

梯度的方向也就是上图蓝线标的方向,梯度的反方向也就是红线标的方向。

那么如何调整【参数】呢?

这个调整的大小由【学习率】(learning rate)控制。

学习率是一个重要的超参数,过大的学习率可能导致算法不稳定,而过小的学习率可能导致收敛速度缓慢。

新参数 = 旧参数 - 学习率 × 梯度

3.梯度下降法的步骤

  1. 初始化参数: 随机或使用某些启发式方法初始化模型参数。这些参数是算法的初始猜测,梯度下降将通过迭代来更新这些参数。

  2. 计算损失函数: 使用当前参数计算损失函数的值。损失函数是衡量模型预测与实际值之间差异的函数。目标是最小化这个损失函数。

  3. 计算梯度: 计算损失函数关于模型参数的梯度(偏导数)。梯度是一个向量,其每个分量表示对应参数的变化率。梯度的方向是损失函数增加最快的方向,而梯度的负方向是损失函数减少最快的方向。

  4. 更新参数: 沿着梯度的反方向调整模型参数,以减小损失函数的值。这个调整的大小由学习率(learning rate)控制。学习率是一个重要的超参数,过大的学习率可能导致算法不稳定,而过小的学习率可能导致收敛速度缓慢。

    新参数 = 旧参数 - 学习率 × 梯度

  5. 重复步骤2-4: 重复上述步骤,直到满足停止条件,例如达到最大迭代次数、损失函数收敛到一个设定的阈值,或者梯度足够小。

4.梯度下降法的分类

根据计算一次目标函数梯度的样本数量可分为批量梯度下降(Batch gradient descent, BGD),随机梯度下降(Stochatic gradient decent, SGD),小批量梯度下降(mini-batch gradient descent)。

(1)批量梯度下降 BGD

在训练过程中,每一步迭代都使用训练集的所有内容。

也就是说,利用现有参数对训练集中的每一个输入生成一个估计输出y ̂_i,然后跟实际输出 y_i 比较,统计所有误差,求平均以后得到平均误差,以此来作为更新参数的依据。

优点:由于每一步都利用了训练集中的所有数据,因此当损失函数达到最小值以后,能够保证此时计算出的梯度为0,换句话说,就是能够收敛。因此,使用BGD时不需要逐渐减小学习速率。

缺点:由于每一步都要使用所有数据,因此随着数据集的增大,运行速度会越来越慢.

(2)随机梯度下降 SGD

随机梯度下降方法一次只抽取一个随机样本进行目标函数梯度计算。

优点:由于每次只计算一个样本,所以SGD收敛非常快。

缺点:因为是随机抽取样本,因此误差是不可避免的,且每次迭代的梯度受抽样的影响比较大。

(3)小批量梯度下降 mini-batch GD

小批量梯度下降结合了批量梯度下降和随机梯度下降的优点,它一次以小批量的训练数据计算目标函数的权重并更新参数。

🌍梯度下降法的问题

        1. 难以选择合适的学习速率:如果学习速率选择过小会造成网络收敛太慢,但是设得太大可能使得损失函数在最小点周围不断摇摆而永远达不到最小点;

        2.如果训练数据十分稀疏并且不同特征的变化频率差别很大,这时候对变化频率慢得特征采用大的学习率,而对变化频率快的特征采用小的学习率是更好的选择;

5.梯度下降改进

(1)Momentum

        若当前的梯度方向与累积的历史梯度方向一致,则当前的梯度会被加强,从而这一步下降的幅度更大。若当前的梯度方向与累积的梯度方向不一致,则会减弱当前下降的梯度幅度。

(2)AdaGrad(Adaptive Gradient)

        每一次更新参数时(一次迭代),不同的参数使用不同的学习率。

(3)Adam( Adaptive Moment Estimation)

        Adam利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。其优点主要在于经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。

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

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

相关文章

ASP.NET Core NE8实现HTTP Upgrade和HTTP CONNECT代理服务器

看到一个文章[Go] 不到 100 行代码实现一个支持 CONNECT 动词的 HTTP 服务器 原理图如下: 这里在NET8.0中实现反向代理服务器部分 新建MiniApi项目 编辑Program.cs文件。 var builder WebApplication.CreateSlimBuilder(args);var app builder.Build();// 将…

非官方 Bevy 作弊书07-09

源自 网页 Working with 2D - Unofficial Bevy Cheat Book 个人用 有道 翻译,希望能够帮助像我一样的 英语不好 的 bevy 初学者 非官方 Bevy 作弊书 7 使用 bevy 2D 本章涵盖与使用 Bevy 制作 2D 游戏相关的主题。 2D Camera Setup - Unofficial Bevy Cheat Book 非…

【代码随想录14】104.二叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数

目录 104.二叉树的最大深度题目描述参考代码 111.二叉树的最小深度题目描述参考代码 222.完全二叉树的节点个数题目描述参考代码 104.二叉树的最大深度 题目描述 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径…

解决 Required Integer parameter ‘uid‘ is not present

1.原因分析 后端没接收到uid可能是前端没传递uid也可能是前端传递了uid,但是传递方式与后端接收方式不匹配,导致没接收到更大的可能是因为后端请求方式错了。比如: 2.解决方案 先确定前端传参方式与后端请求方式是匹配的后端get请求的话…

TIDB修改日志级别

日志级别 tidb 默认日志级别 为 info,可选项为 [debug, info, warn, error, fatal],在 tidb-server,tikv-server,tiflash-server,pd-server 四个板块内都可以设置 查看集群名称 使用 tiup 命令 查看集群信息 [rootDB2-001 tidb]# tiup cluster list tiup is chec…

【Axure高保真原型】可视化环形图

今天和大家可视化环形图的原型模板,,包括4种效果,移入变色在环形中部显示数据、移入变色在标签弹窗显示数据、移入放大在环形中部显示数据、移入放大在标签弹窗显示数据。这个原型是用Axure原生元件制作的,所以不需要联网或者调用…

C++入门学习(十五)运算符

算术运算符&#xff1a;用于处理四则运算赋值运算符&#xff1a;用于将表达式的值赋给变量比较运算符&#xff1a;用于表达式的比较&#xff0c;并返回一个真值或假值逻辑运算符&#xff1a;用于根据表达式的值返回真值或假值 一、加减乘除 #include <iostream> #incl…

nginx复现负载均衡案例

这里是下载好了docker&#xff0c;并显示了下镜像这里是拉到了nginx的镜像这里是把容器起来&#xff0c;-itd是容器关闭后销毁这里是显示起来的容器进入到这个容器里面查看许多命令用不了&#xff0c;应该想办法把docker里的文件夹映射到物理机中 这里是如果访问6666端口那么隧…

Unity出AAB包资源加载过慢

1&#xff09;Unity出AAB包资源加载过慢 2&#xff09;Unity IL2CPP打包&#xff0c;libil2cpp.so库中没有Mono接口 3&#xff09;如何在URP中正确打出Shader变体 4&#xff09;XLua打包Lua文件粒度问题 这是第370篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的热门话题&…

Android开发修炼之路——(一)Android App开发基础-2

本专栏文章 上一篇 Android开发修炼之路——&#xff08;一&#xff09;Android App开发基础-1 2 App的工程结构 本节介绍App工程的基本结构及其常用配置&#xff0c;首先描述项目和模块的区别&#xff0c;以及工程内部各目录与配置文件的用途说明&#xff1b;其次阐述两种级别…

0125-1-vue3初体验

vue3尝鲜体验 初始化 安装vue/clinext&#xff1a; yarn global add vue/clinext # OR npm install -g vue/clinext然后在 Vue 项目运行&#xff1a; vue upgrade --next项目目录 vue3-template ├── index.html // html模板 ├── mock // mock数据 │ └── user.…

【技术分享】Ubuntu 20.04如何更改用户名

产品简介 本文适用于所有RK3568/RK3588平台产品在Ubuntu 20.04系统上如何更改用户名&#xff0c;本文以IDO-EVB3588开发板为例&#xff0c;在ubuntu20.04系统上修改用户名industio为usernew。 IDO-EVB3588开发板是一款基于RK3588平台的产品。该开发板集成了四核Cortex-A76和四…

Linux文件系统损坏

为了解决一个bug&#xff0c;不小心点了个大数据量文件导出测试&#xff0c;之后服务器可能是因为CPU和内存占用爆满就崩掉了&#xff0c;然后我心态也崩掉了。之后去机房重启服务器&#xff0c;重启后&#xff0c;linux相关各种命令全部都用不了。刚开始还不敢相信是服务器出了…

ZK监控方法以及核心指标

文章目录 1. 监控指标采集1.1 zk版本高于3.6.0监控指标采集1.2 zk版本低于3.6.0监控指标采集1.3 配置promethues采集和大盘 2. 核心告警指标3. 参考文章 探讨zk的监控数据采集方式以及需要关注的核心指标&#xff0c;便于日常生产进行监控和巡检。 1. 监控指标采集 3.6.0 版本…

计算CNN卷积层和全连接层的参数量

计算CNN卷积层和全连接层的参数量 先前阅读 CNN ExplainerA Comprehensive Guide to Convolutional Neural Networks — the ELI5 way 本文主旨意在搞明白2个问题&#xff1a; 第一个问题 一个卷积操作&#xff0c;他的参数&#xff0c;也就是我们要训练的参数&#xff0c;也…

SpringBoot 3.1.7 集成Kafka 3.5.0

一、背景 写这边篇文章的目的&#xff0c;是记录我在集成kafka客户端遇到的一些问题&#xff0c;文章会记录整个接入的过程&#xff0c;其中会遇到几个坑&#xff0c;如果需要最终版本&#xff0c;直接看最后一节就行了&#xff0c;感觉Spring-Kafka的文档太少了&#xff0c;如…

MATLAB环境下一种音频降噪优化方法—基于时频正则化重叠群收缩

语音增强是语音信号处理领域中的一个重大分支&#xff0c;这一分支已经得到国内外学者的广泛研究。当今时代&#xff0c;随着近六十年来的不断发展&#xff0c;己经产生了许多有效的语音增强算法。根据语音增强过程中是否利用语音和噪声的先验信息&#xff0c;语音增强算法一般…

Linux shell编程学习笔记42:hdparm命令

ChatGPT 和文心一言哪个更好用&#xff1f; 从智能回复、语言准确性、知识库丰富度等方面比较&#xff0c;两大AI助手哪个更胜一筹&#xff1f;快来和我们分享一下你的看法吧~ 0 前言 获取硬盘序列号是信息资产管理和信息安全检测中经常要收集的信息&#xff0c;对于Linux来说…

2.数据结构 顺序表(自留笔记)

文章目录 一.静态顺序表&#xff1a;长度固定二.动态顺序表1.下面证明原地扩容和异地扩容代码如下&#xff1a;2.下面是写一段Print&#xff0c;打印数字看看&#xff1a;3.头插4.尾删5.头删6.越界一定会报错吗7.下标插入8.下标删除9.查找数字10.应用&#xff1a;利用顺序表写一…

云原生 - 微信小程序 COS 对象存储图片缓存强制更新解决方案

问题描述 遇到一个这样的情况&#xff1a;在微信小程序里图片缓存十分麻烦&#xff0c;网上很多说在腾讯云里的 COS 存储对象服务里设置对应的图片缓存&#xff08;Header 头 Cache-Contorl&#xff09;&#xff0c;说实话真不好用&#xff0c;一会儿生效&#xff0c;一会儿没…