当前位置: 首页 > news >正文

线性回归 梯度下降

梯度下降算法

在开始之前,为了方便解释,首先规定几个符号所代表的意义:

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=1m(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的主要思路是:

  1. 给定 θ 0 θ_0 θ0 θ 1 θ_1 θ1的初始值,通常令 θ 0 = 0 θ_0=0 θ0=0 θ 1 = 0 θ_1=0 θ1=0
  2. 不断改变 θ 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αθjJ(θ0,θ1),j=0 and j=1
}
解释:

  1. := 表示赋值运算符

  2. α称为学习率,用来控制下降的步长(Padding),即更新的幅度:
    如果α太小,同步更新的速率会非常的慢
    而α过大,同步更新时可能会越过最小值点

  3. ∂ J ( θ 0 , θ 1 ) ∂ θ j \frac{∂J(θ_0,θ_1)}{∂θ_j} θjJ(θ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)}) θ0J(θ0,θ1)=m1i=1m(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)} θ1J(θ0,θ1)=m1i=1m(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αθ0J(θ0,θ1)
t e m p 1 : θ 1 : = θ 1 − α ∂ J ( θ 0 , θ 1 ) ∂ θ 1 temp1:~~θ_1:=θ_1-α\frac{∂J(θ_0,θ_1)}{∂θ_1} temp1:  θ1:=θ1αθ1J(θ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'(θ) θ0J(θ),对 θ 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=1m(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=1m(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事件进行了处理。不过这样真的有用吗,真是防君子不防小人,只是给收集资料增加了许多…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...