一文弄懂梯度下降算法

1、引言

在上一篇文章中,我们介绍了如何使用线性回归和成本损失函数为房价数据找到最拟合的线。不过,我们也看到,测试多个截距值可能既繁琐又低效。在本文中,我们将深入探讨梯度下降算法,这是一种更加强大的技术,可以帮助我们找到完美的截距并进而优化模型。我们将探究其背后的数学原理,看看如何将其应用到线性回归问题中。

闲话少说,我们直接开始吧!

2、梯度下降

梯度下降是一种强大的优化算法,旨在快速有效地找到曲线的最低点。将这一过程形象化的最佳方式就是想象你站在山顶,山谷中有一个装满黄金的宝箱在等着你。

在这里插入图片描述

然而,山谷的确切位置却不得而知,因为外面一片漆黑,什么也看不见。此外,你还想赶在其他人之前到达山谷(因为您想独自拥有所有宝藏)。梯度下降算法可以帮助你驾驭地形,高效快速地到达最佳点。在每个点上,它都会告诉你需要走多少步,朝哪个方向走。

同样,梯度下降算法的处理步骤也可以应用于线性回归问题。为了直观地展示寻找最小值的过程,让我们绘制 MSE 曲线。我们已经知道该曲线的方程为:
在这里插入图片描述

从上一篇文章中,我们知道问题中的 MSE 方程为:
在这里插入图片描述

如果我们把视角放大,就会发现在上式中代入一系列截距值,就能得到一条 MSE 曲线(与我们的山谷相似)。因此,让我们输入 10,000 个截距值,就能得到这样一条曲线:
在这里插入图片描述

我们的目标是达到 MSE 曲线的底部,我们可以通过下面的来步骤实现这一目标。

3、步骤一:随机初始化

在这种情况下,我们可以从截距值随机初始化开始,这里假设我们最初猜测的截距值为 0。

4、 步骤二:计算梯度值

曲线在某一点处的梯度值用该点的切线表示(切线是曲线在该点与曲线相切的一种特殊说法)。例如,在 A 点,当截距等于 0 时,MSE 曲线的梯度可用红色切线表示。

在这里插入图片描述

为了确定具体梯度值,我们需要运用微积分的知识。具体来说,梯度等于曲线相对于给定点截距的导数,计算公式表示为:
在这里插入图片描述

我们据此,计算 MSE曲线在截距为零处的导数如下:
在这里插入图片描述

现在,为了求出在A点的梯度,我们将 A 点的截距值代入上式。由于截距 = 0,所以 A 点的导数为:
在这里插入图片描述

因此,当截距为0时,梯度值为-190。

注意:当我们接近最佳值时,梯度值将趋近于零。在最佳值处,梯度值等于零。相反,离最佳值越远,梯度值越大

由此我们可以推断,步长应该与梯度有关,因为梯度会告诉我们应该迈小步还是大步。这意味着,当曲线的梯度值接近 0 时,我们就应该迈小步,因为我们已经接近最优值了。而如果梯度较大,我们就应该迈大步,以便更快地达到最优值。

注意:如果我们迈出了超级大的一步,那么我们可能会跳得很大,错过最佳点。因此,我们需要小心谨慎。

在这里插入图片描述

5、步骤三:更新

由于我们看到步长和梯度成正比,因此步长是通过梯度乘以一个预先确定的常量值(称为学习率)来确定的:
在这里插入图片描述

学习率控制步长的大小,确保步长不会过大或过小。

实际上,学习率通常是一个小正数,即 ≤ 0.001。但对于我们的问题,让我们把它设为 0.1。

因此,当截距为 0 时,计算步长公式为:

在这里插入图片描述

根据上述计算出的步长,我们使用以下任何一个等效公式更新截距(又称更改当前位置):

在这里插入图片描述

要在这一步中找到新的截距,我们只需要代入相关的值,如下:

在这里插入图片描述

求解得到新的截距 = 19。现在将这个值代入MSE 等式,我们会发现截距为 19 时的 MSE = 8064.095。我们又一步就接近了最佳值,降低了 MSE。

在这里插入图片描述

即使观察我们的图表,也会发现截距为 19 的新直线比截距为 0 的旧直线更适合我们的数据,如下:

在这里插入图片描述

6、步骤四:重复

接着我们使用更新后的截距值来重复步骤 2 和 3。

例如,由于本次迭代的新截距值为 19,因此在步骤 2 之后,我们将计算这一新点的梯度:
在这里插入图片描述

我们发现,在截距值 19 处,MSE 曲线的梯度为-152(如下图中红色切线所示)。

在这里插入图片描述

接下来,根据步骤 3,我们来计算步长:
在这里插入图片描述

随后,更新截距值:
在这里插入图片描述

现在,我们可以将截距为 19 的直线与截距为 34.2 的新直线进行比较,如下:
在这里插入图片描述

我们可以看到,新的直线更加符合数据的分布。总体而言,MSE 越来越小。
在这里插入图片描述

而我们的步长却越来越小:
在这里插入图片描述

我们反复重复这一过程,直到趋近于最优解:
在这里插入图片描述

当我们向曲线的最小点前进时,我们发现步长越来越小。13 步之后,梯度下降算法估计截距值为 95,这将被确认为 MSE 曲线的最小点。很明显,这种方法比我们在上一篇文章中看到的 "暴力 "方法更有效。

现在我们有了截距的最佳值,线性回归模型就应该是这样:
在这里插入图片描述

线性回归方程线可视化是这样的:
在这里插入图片描述

最佳拟合线,截距=95,斜率=0.069

最后,回到马克朋友的问题–他的 2400 平方英尺的房子应该卖多少钱?
在这里插入图片描述

将 2400 平方英尺的房屋面积代入上式,计算结果如下:

在这里插入图片描述

然后就可以了。我们可以告诉我们这位杞人忧天的朋友马克,根据他所在社区的 3 所房子的情况,他应该以 26.06 万美元左右的价格出售自己的房子。

7、 为什么梯度下降有用?

为了说明这一点,请考虑这样一种情况:我们试图到达曲线 C 的最小点,记为 x*。而我们目前在 A 点,位于 x* 的左边:
在这里插入图片描述

如果我们求出曲线在 A 点相对于 x 的导数(表示为 dC(x)/dx),会得到一个负值(这意味着梯度是向下倾斜的)。我们还观察到,我们需要向右移动才能到达 x*。因此,我们需要增加 x 才能达到最小值 x*。
在这里插入图片描述

由于 dC(x)/dx 为负值,x-𝛂*dC(x)/dx 将大于 x,从而向 x* 移动。

同样,如果我们位于最小点 x* 右侧的 A 点,那么我们会得到一个正梯度(梯度向上倾斜),即 dC(x)/dx

在这里插入图片描述

因此, x-𝛂*dC(x)/dx 将小于 x,从而向 x* 移动。

8、梯度下降什么时候停止?

因此,当某一点的梯度接近 0 或在最小点附近时,步长也将接近 0,表明算法已达到最优解。
在这里插入图片描述

当我们接近最小点时,梯度接近 0,因此步长也接近 0

通常,最小步长 = 0.001 或更小

在这里插入图片描述

尽管如此,梯度下降法也有一个在终止前的步数限制,称为 “最大步数”。

通常,最大步数 = 1000 或更大

因此,即使步长大于最小步长,如果步数超过最大步数,梯度下降算法也会停止。

9、多个局部最优解

到目前为止,我们一直在处理一条很容易确定最小点的曲线(这类曲线称为凸曲线)。但如果我们有一条不那么漂亮的曲线(技术上又称非凸曲线),看起来像这样呢?
在这里插入图片描述

在这里,我们可以看到 B 点是全局最小值(实际最小值),而 A 点和 C 点是局部最小值(可能会被混淆为全局最小值的点,但其实不是)。因此,如果一个函数有多个局部最小值和一个全局最小值,并不能保证梯度下降一定能找到全局最小值。此外,找到哪个局部最小值还取决于初始猜测的位置(如梯度下降的步骤 1 所示)。

在这里插入图片描述

以上面这条非凸曲线为例,如果初始猜测点位于block A 或block C,梯度下降算法会宣布最小点分别位于局部最小点 A 或 C,而实际上它应该位于 B。

现在的问题是,我们如何做出正确的初始化猜测?

答案并不简单:从上图中可以看出,如果我们对 x 的最小值猜测是 0,因为它位于图块 A 中,那么它将导致局部最小值 A 的出现。此外,如果可行的话,使用不同的初始化猜测运行算法并比较其结果,可以让我们了解猜测之间是否存在显著差异。这有助于更有效地确定全局最小值。

10、总结

本文重点介绍了如何利用梯度下降法来求解线性回归问题,并给出了详细的图例说明。

您学废了吗?

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

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

相关文章

go~缓存设计配合singleFlight

一个缓存设计,配合go的singleFlight 最开始的设计如下 添加分布式缓存 上线后分布式缓存上涨的流量并不等于下游下降的流量,而是下游下降的流量 * 2~3 究其原因,就是采用了go的singleFlight,假定请求缓存时长10ms&a…

学校消防巡检二维码卡如何使用

为了加强和规范学校消防安全管理,预防和减少火灾危害,保障公共财产和教师、职工、学生的生命安全;传统的学校消防巡检都是纸质巡检记录会存在浪费纸张、信息滞后、容易造假、容易丢失、信息更新不及时。 通过凡尔码平台生成学校消防二维码巡…

揭秘:国产化系统加密

随着信息化时代的到来,数据安全已成为国家、企业和个人共同关注的焦点。政府系统国产化作为提高信息安全和自主可控能力的重要举措,正逐步得到广泛实施。在这一过程中,沙箱技术作为一种先进的安全机制,其在国产化系统加密效果方面…

系统设计中的垂直扩展和水平扩展,该如何选择?

在系统设计时,我们需要预估系统的容量,但是,随着系统流量的增大,我们会通过扩容来应对流量,常见的扩容方式是垂直扩展和水平扩展,因此,这本文章,我们将深入探讨这两种扩展策略的优缺…

项目管理中常见的6种度量指标,你知道吗?

在项目管理中,为了有效地监控和控制项目的进展、成本、质量等方面,我们通常会采用一系列的度量指标。这些度量指标不仅可以帮助项目经理了解项目的当前状态,还能预测未来的趋势,从而作出相应的决策。以下是六种常见的项目度量数据…

AI产品活跃用户排名出炉!文心一言APP国内第一,Kimi疯狂掉队

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 6月28日,极光大数据旗下月狐数据发布2024年5月中国生成式AI行业市场热点月度分析报告,披露了国内移动端主流生成式AI应用…

BFS:队列+树的宽搜

一、二叉树的层序遍历 . - 力扣&#xff08;LeetCode&#xff09; 该题的层序遍历和以往不同的是需要一层一层去遍历&#xff0c;每一次while循环都要知道在队列中节点的个数&#xff0c;然后用一个for循环将该层节点走完了再走下一层 class Solution { public:vector<vec…

AUTOSAR以太网之IPv4

系列文章目录 返回总目录 文章目录 系列文章目录一、IPv4报文格式二、主要函数1.IPv4_Init()2.IPv4_Receive()3.IPv4_Transmit() 一、IPv4报文格式 二、主要函数 1.IPv4_Init() 这个函数除了对模块配置进行初始化&#xff0c;如果有分包和组包使能&#xff0c;则会对一些相关…

桌面提醒工具哪个好?简单好用的便签提醒app推荐

在日常的生活和工作中&#xff0c;我们经常会遇到各种各样的事情&#xff0c;有时候可能会遗忘一些重要的事情。这个时候&#xff0c;一个简单好用的便签提醒工具就显得尤为重要了。那么&#xff0c;哪款桌面提醒工具比较好用呢&#xff1f;下面&#xff0c;就为大家推荐一款我…

ONNX模型利用CUDA加速如何正确配置好环境?

目前onnx可选的执行引擎非常多&#xff0c;覆盖了从cpu、gpu到npu&#xff0c;从Intel平台到AMD平台等。如下是onnxruntime所有的执行引擎。 [TensorrtExecutionProvider, CUDAExecutionProvider, MIGraphXExecutionProvider, ROCMExecutionProvider, OpenVINOExecutionProvide…

基于公有云部署wordpress

云平台选择 腾讯云 阿里云 华为云 项目部署 一、架构讲解 1.1、定义与组成 LNMP是Linux、Nginx、MySQL&#xff08;或MariaDB&#xff09;和PHP&#xff08;或Perl、Python&#xff09;的首字母缩写&#xff0c;代表在Linux系统下使用Nginx作为Web服务器&#xff0c;MySQL作为…

Mongodb安装与配置

Mongodb的下载 这里下载的是MongoDB 7.0.11版本的 首先进入官网&#xff1a;https://www.mongodb.com/ 点击完上面两步后&#xff0c;加载来到该页面&#xff0c;选择自己的版本、系统&#xff0c;是压缩包(zip)还是安装包(msi)。 下载好之后能&#xff0c;来到安装包哪里&a…

互联网直播/点播技术与平台创新应用:视频推拉流EasyDSS案例分析

随着互联网技术的快速发展&#xff0c;直播/点播平台已成为信息传播和娱乐的重要载体。特别是在电视购物领域&#xff0c;互联网直播/点播平台与技术的应用&#xff0c;不仅为用户带来了全新的购物体验&#xff0c;也为商家提供了更广阔的营销渠道。传统媒体再一次切实感受到了…

wavesummit2024发布飞桨3.0版本

今天网上看了wavesummit2024深度学习开发者大会,本来没有啥期待&#xff0c;结果发现飞桨竟然发布3.0版本了&#xff01; 以下是飞桨框架 3.x 的新特性&#xff1a; 动静统一自动并行&#xff1a; 为了降低大模型的编程难度&#xff0c;飞桨还优化了动静统一的半自动并行编程范…

陪诊小程序开发:寻找陪诊师更加快速,全程陪护!

陪诊行业是一个新兴行业&#xff0c;在当下市场中具有较大的发展前景。对于无法陪家人看病或者对医院不熟悉的人来说&#xff0c;陪诊师成为了刚需&#xff01;目前随着社会的发展&#xff0c;人们的生活节奏不断加快&#xff0c;陪诊市场的需求量也在不断增加&#xff0c;发展…

荣耀终端发布首个端侧AI反诈检测技术,助力用户防范网络诈骗

在今日盛大开幕的2024年上海世界移动通信大会上&#xff0c;荣耀终端以卓越的创新实力引领行业潮流&#xff0c;率先发布了手机行业中首个端侧AI反诈检测技术。该技术旨在为用户提供更加安全、可靠的网络通信体验&#xff0c;助力防范日益猖獗的网络诈骗行为。 AI-321 | 专注全…

技巧类题目

目录 技巧类题目 136 只出现一次的数字 191 位1的个数 231. 2 的幂 169 多数元素 75 颜色分类 &#xff08;双指针&#xff09; 287. 寻找重复数 136 只出现一次的数字 给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均…

【Redis四】主从复制、哨兵以及Cluster集群

目录 一.主从复制、哨兵、集群的区别 二.Redis主从复制 1.作用 2.原理 3.流程 三.搭建Redis 主从复制 1.源码编译安装以及配置文件修改 1.1.修改 Redis 配置文件&#xff08;Slave节点操作&#xff09; 2.验证主从复制 2.1.在Master节点上看日志 2.2.在Master节点上…

Raylib学习-鼠标检测与GPU缓冲区使用

鼠标左键点击运行绘制 #include <raylib.h>int main() {const int screenWidth 800;const int screenHeight 450;InitWindow(screenWidth, screenHeight, "test"); // 设置帧率SetTargetFPS(150); // 设置一个画布&#xff0c;可以使用GPU进行绘制RenderText…

虚拟化技术(二)

目录 三、存储虚拟化&#xff08;一&#xff09;存储虚拟化的一般模型&#xff08;二&#xff09;存储虚拟化的实现方式&#xff08;三&#xff09;案例分析 四、网络虚拟化&#xff08;一&#xff09;核心层网络虚拟化&#xff08;二&#xff09;接入层网络虚拟化&#xff08;…