线性回归 梯度下降
梯度下降算法
在开始之前,为了方便解释,首先规定几个符号所代表的意义:
m m m 训练集中训练样本的数量
X X X 输入变量 Y Y Y 输出变量
( x , y ) (x,y) (x,y) 训练样本
( x i , y i ) (x^i,y^i) (xi,yi)第i个训练样本(i表示一个索引)
监督学习算法的流程
提供训练集>学习算法得到$h$
(假设函数:用于描绘x与y的关系)>预测y 的值
代价/损失函数(Cost function)
假设函数(Hypothesis function)—— h h h (用来表示某一个数据集可能存在的线性/非线性关系的函数。)
对于线性拟合,其假设函数为:
h θ ( x ) = θ 1 x + θ 0 h_θ(x)=θ_1x+θ_0 hθ(x)=θ1x+θ0
这其中的 θ θ θ是假设函数当中的参数。
也可以简化为:
h θ ( x ) = θ 1 x h_θ(x)=θ_1x hθ(x)=θ1x
代价函数,在统计学上称为均方根误差函数。当假设函数中的系数 θ θ θ取不同的值时, 1 2 m \frac{1}{2m} 2m1倍假设函数预测值 h θ ( x ( i ) ) h_θ(x^{(i)}) hθ(x(i))和真实值 y ( i ) y^{(i)} y(i)的差的平方的和之间的函数关系表示为代价函数 J J J。
J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ_0,θ_1)=\frac{1}{2m}∑_{i=1}^m(h_θ(x^{(i)})-y^{(i)})^2 J(θ0,θ1)=2m1i=1∑m(hθ(x(i))−y(i))2
在这里取1/2的原因是便于消除求导之后产生的2倍,同时也可以进一步缩小 θ θ θ
代价函数在几何上表示为数据集空间内的各点到假设函数的距离的平方的平均值的一半。
要想使得数据能够被假设函数很好地拟合,那么代价函数要尽量地小。当代价函数取到它的最小值即 J ( θ 1 ) m i n J(θ_1)_{min} J(θ1)min时,此时的填入假设函数的 θ θ θ对数据的拟合程度是最好的。
对于线性的代价函数,假设函数对数据集的拟合程度越高,对应的 ( θ 0 , θ 1 ) (θ_0,θ_1) (θ0,θ1)越接近代价函数图像等高线的中心。
梯度下降算法(Gradient Descent)
梯度
在微积分中,函数 f ( x , y ) f(x,y) f(x,y)在 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)处是函数值增加最快的方向是梯度(Gradient)的方向,梯度的反方向是函数值减小最快的方向。
梯度的计算公式:
▿ f ∣ ( x 0 , y 0 ) = ( f x ( x 0 , y 0 ) , f y ( x 0 , y 0 ) ) ▿f|_{(x_0,y_0)}=(f_x(x_0,y_0),f_y(x_0,y_0)) ▿f∣(x0,y0)=(fx(x0,y0),fy(x0,y0))
概述
梯度下降算法是一种求解代价函数最小值的方法,它可以用在多维任意的假设函数当中。
简而言之,梯度下降算法求得 J ( θ 1 ) m i n J(θ_1)_{min} J(θ1)min的主要思路是:
- 给定 θ 0 θ_0 θ0和 θ 1 θ_1 θ1的初始值,通常令 θ 0 = 0 θ_0=0 θ0=0, θ 1 = 0 θ_1=0 θ1=0。
- 不断改变 θ 0 θ_0 θ0和 θ 1 θ_1 θ1的值使得 J ( θ 0 , θ 1 ) J(θ_0,θ_1) J(θ0,θ1)的值逐渐变小,直到找到 J ( θ 0 , θ 1 ) J(θ_0,θ_1) J(θ0,θ1)的最小值或者局部最小值。
如果从一个初始值出发,寻找附近的最小值,重复该过程,得到上图,最后得到的值为局部最优解。
将梯度下降算法类比为爬山,从一个点开始,不断寻找“下山”的路线,最后找到一个“下山”的出口。——吴恩达
类似于标题图
当改变初始值时,会找到另一条“下山”的路径,找到第二个局部最优解(局部最小值)。
对于线性回归的代价函数而言,只存在一个局部最小值。(见代价函数的图像)
表示
梯度下降算法可以表示为:
Repeat untill convergence{
θ j : = θ j − α ∂ J ( θ 0 , θ 1 ) ∂ θ j , j = 0 a n d j = 1 θ_j:=θ_j-α\frac{∂J(θ_0,θ_1)}{∂θ_j},j=0~and~j=1 θj:=θj−α∂θj∂J(θ0,θ1),j=0 and j=1
}
解释:
-
:= 表示赋值运算符
-
α称为学习率,用来控制下降的步长(Padding),即更新的幅度:
如果α太小,同步更新的速率会非常的慢
而α过大,同步更新时可能会越过最小值点 -
∂ J ( θ 0 , θ 1 ) ∂ θ j \frac{∂J(θ_0,θ_1)}{∂θ_j} ∂θj∂J(θ0,θ1)是代价函数的梯度:
∂ J ( θ 0 , θ 1 ) ∂ θ 0 = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) \frac{∂J(θ_0,θ_1)}{∂θ_0}=\frac{1}{m}∑_{i=1}^m(h_θ(x^{(i)})-y^{(i)}) ∂θ0∂J(θ0,θ1)=m1i=1∑m(hθ(x(i))−y(i))
∂ J ( θ 0 , θ 1 ) ∂ θ 1 = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x ( i ) \frac{∂J(θ_0,θ_1)}{∂θ_1}=\frac{1}{m}∑_{i=1}^m(h_θ(x^{(i)})-y^{(i)})x^{(i)} ∂θ1∂J(θ0,θ1)=m1i=1∑m(hθ(x(i))−y(i))x(i)△在代价函数中(以简化的代价函数为例),无论初始值在最小值点的左侧还是右侧,通过同步更新都能够使该点被“移动(Update)”到最小值,在最小值点,由于导数值为0,最终同步更新停止在了 θ j = θ j θ_j=θ_j θj=θj,如前面所说, θ j θ_j θj即为极小值点。
同步更新
同步更新(Simulaneous update)是实现梯度下降算法的最有效方式。
t e m p 0 : θ 0 : = θ 0 − α ∂ J ( θ 0 , θ 1 ) ∂ θ 0 temp0:~~θ_0:=θ_0-α\frac{∂J(θ_0,θ_1)}{∂θ_0} temp0: θ0:=θ0−α∂θ0∂J(θ0,θ1)
t e m p 1 : θ 1 : = θ 1 − α ∂ J ( θ 0 , θ 1 ) ∂ θ 1 temp1:~~θ_1:=θ_1-α\frac{∂J(θ_0,θ_1)}{∂θ_1} temp1: θ1:=θ1−α∂θ1∂J(θ0,θ1)
θ 0 : = t e m p 0 θ_0:=temp0 θ0:=temp0
θ 1 : = t e m p 1 θ_1:=temp1 θ1:=temp1
这个更新方程能够同时更新 θ 0 θ_0 θ0和 θ 1 θ_1 θ1: θ 0 θ_0 θ0更新为 θ 0 − J ′ ( θ ) θ_0-J'(θ) θ0−J′(θ),对 θ 1 θ_1 θ1同理。
更新的方法是计算赋值号右边带入 θ 1 θ_1 θ1和 θ 2 θ_2 θ2的值进行计算,得到的两个值分别储存在temp0和temp1中,从上到下进行赋值。
对于简化的代价函数:
θ 1 : = θ 1 − α J ′ ( θ 1 ) θ_1:=θ_1-αJ'(θ_1) θ1:=θ1−αJ′(θ1)
d J ( θ 1 , θ 0 ) d θ j = d ( 1 2 m Σ ( h θ ( x i ) − y i ) ) 2 ) \frac{dJ(θ_1,θ_0)}{dθ_j} =d(\frac{1}{2m}Σ(h_θ(x_i)-y_i))^2) dθjdJ(θ1,θ0)=d(2m1Σ(hθ(xi)−yi))2)
将梯度代回代价函数中就得到了Batch梯度下降法的基本形式:
Repeat untill convergence{
θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) θ_0:=θ_0-α\frac{1}{m}∑_{i=1}^m(h_θ(x^{(i)})-y^{(i)}) θ0:=θ0−αm1i=1∑m(hθ(x(i))−y(i))
θ 1 : = θ 1 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x ( i ) θ_1:=θ_1-α\frac{1}{m}∑_{i=1}^m(h_θ(x^{(i)})-y^{(i)})x^{(i)} θ1:=θ1−αm1i=1∑m(hθ(x(i))−y(i))x(i)
}
- 批量梯度下降 (Batch Gradient Descent,BGD)梯度下降的每一步中,都用到了所有的训练样本
- 随机梯度下降(Stochastic GradientDescent,SGD)用到一个样本,在每一次计算之后梯度下降的每一步中,便更新参数,而不需要首先将所有的训练集求和 小北量梯度下降
- (Mini-Batch Gradient Descent.MBGD)梯度下降的每一步中,用到了一定批量的训练样本
相关文章:
线性回归 梯度下降
梯度下降算法 在开始之前,为了方便解释,首先规定几个符号所代表的意义: m m m 训练集中训练样本的数量 X X X 输入变量 Y Y Y 输出变量 ( x , y ) (x,y) (x,y) 训练样本 ( x i , y i ) (x^i,y^i) (xi,yi)第i个训练样本(i表示…...

[Linux]进程等待
文章目录 3.进程等待3.1什么是进程等待3.2为什么要进程等待3.3如何进行进程等待?1.wait2.waitpid2.1函数的讲解2.2status的理解2.3代码理解 3.4学后而思1.直接用全局变量获取子进程退出码可以吗?如下2.进程具有独立性 退出码是子进程的数据 父进程是如何拿到退出码的3.对内存…...

Project DESFT 白皮书中文版——应用于普惠金融的可信数字凭证解决方案
1. 概述 Project DESFT 是由 Solv 基金会与 zCloak Network 联合设计孵化,以跨境贸易和金融服务为场景的分布式可信数字凭证解决方案(Distributed Trusted Digital Credential Solution),项目获得新加坡金管局(Monetar…...
907. 子数组的最小值之和 --力扣 --JAVA
题目 给定一个整数数组 arr,找到 min(b) 的总和,其中 b 的范围为 arr 的每个(连续)子数组。 由于答案可能很大,因此 返回答案模 10^9 7 。 解题思路 找到以当前值为最小值所能组成的子数组;若存在两个相同…...

3D模型渲染导致电脑太卡怎么办?
在线工具推荐: 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 1、什么是3D渲染? 3D渲染是指通过计算机图形学技术将三维模型转化为二维图像的过程…...

构建个人代理池:使用GitHub项目proxy_pool的搭建配置及代码接口详解
手把手教你搭建代理IP池: 项目简介: 爬虫代理IP池项目,主要功能为定时采集网上发布的免费代理验证入库,定时验证入库的代理保证代理的可用性,提供API和CLI两种使用方式。同时你也可以扩展代理源以增加代理池IP的质量和数量。…...

Pytorch进阶教学——训练一个图像分类模型(GPU)
目录 1、前言 2、数据集介绍 3、获取数据 4、创建网络 5、训练模型 6、测试模型 6.1、测试整个模型准确率 6.2、测试单张图片 1、前言 编写一个可以分类蚂蚁和蜜蜂图片的模型,使用数据集对卷积神经网络进行训练。训练后的模型可以对蚂蚁或蜜蜂的图片进行…...

Docker Swarm总结+CI/CD Devops、gitlab、sonarqube以及harbor的安装集成配置(3/5)
博主介绍:Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 🍅文末获取源码下载地址🍅 👇🏻 精彩专栏推荐订阅👇🏻…...

Linux:windows 和 Linux 之间文本格式转换
背景 在 Windows 上编辑的文件,放到 Linux 平台,有时会出现奇怪的问题,其中有一个是 ^M 引起的,例如这种错误: /bin/bash^M: bad interpreter 这个问题相信大家也碰到过,原因是 Windows 和 Linux 关于换行的…...

VBA技术资料MF88:测试Excel文件名是否有效
我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到…...
u8g2图形库——丝滑菜单制作
目录 一、实物效果展示 二、丝滑菜单实现原理 三、代码开源 1.ui_bmp.h 2.ui.h 3.ui.c 一、实物效果展示 u8g2图形库——丝滑菜单制作 二、丝滑菜单实现原理 int ui_run(short *a,short *a_tag,uint8_t step,uint8_t slow_cnt) //UI滑动效果 {uint8_t temp;…...

Go 异常处理流程
在 Go 语言中,panic、recover 和 defer 是用于处理异常情况的关键字。它们通常一起使用来实现对程序错误的处理和恢复。 1. defer 语句 defer 用于在函数返回之前执行一段代码。被 defer 修饰的语句或函数会在包含 defer 的函数执行完毕后执行。defer 常用于资源清…...

ubuntu20.04安装tensorRT流程梳理
目标:先跑demo,再学习源码 step1, 提前准备好CUDA环境 安装CUDA,cuDNN 注意,CUDA,cuDNN需要去官网下载.run和tar文件安装,否则在下面step4 make命令会报找不到cuda等的错误,具体安装教程网上…...

数字孪生技术:提升UI交互性与个性化设计
随着数字化时代的到来,数字孪生技术正在逐渐改变我们的生活和工作方式。数字孪生是一种复制现实世界系统或实体的技术,通过创建数字模型来模拟现实世界中的各种行为和事件。这种技术不仅为人们提供了一个全新的视角来看待和解决问题,同时也为…...

外包干了5个月,技术退步明显.......
先说一下自己的情况,大专生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…...

嵌入式常见的几种接口
嵌入式开发中,常见的外设通信接口/协议有SPI,I2C,UART三种,本文先分三个部分对SPI,I2C,UART进行介绍,最后对这三种协议进行比较。 1 SPI 1.1 SPI的简介 SPI(Serial Peripheral …...

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(七)
分页查询、删除和修改菜品 1. 菜品分页查询1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计 1.2 代码开发1.2.1 设计DTO类1.2.2 设计VO类1.2.3 Controller层1.2.4 Service层接口1.2.5 Service层实现类1.2.6 Mapper层 1.3 功能测试1.3.2 前后端联调测试 2. 删除菜品2.1 需求分析…...
Grafana采用Nginx反向代理,部分功能报错‘Origin not allowed’ behind proxy
只有部分功能会有这个提示,比如修改密码啥的,网上找了下,官方找到了答案:https://community.grafana.com/t/after-update-to-8-3-5-origin-not-allowed-behind-proxy/60598 有个回复是这样的: tl:dr: try adding prox…...

请大数据把奥威BI分析工具推给每一个财务!
这个财务指标怎么算?那些数据什么时候能拿到?看完报表,发现某部门上个月的支出涨幅过大,想了解原因怎么办?……财务人,你是不是每个月都把时间消耗在这些事情上了?那你可得快接住这个BI大数据分…...

知乎禁止转载的回答怎么复制做笔记?
问题 对于“禁止转载”的回答,右键复制是不行的,ctrl-c也不行,粘贴之后都是当前回答的标题。稍微看了代码,应该是对copy事件进行了处理。不过这样真的有用吗,真是防君子不防小人,只是给收集资料增加了许多…...

python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...