11.梯度下降法的思想——举足轻重的模型优化算法

news2024/9/27 20:21:16

引言

优化算法在机器学习和人工智能中扮演者至关重要的角色。机器学习模型的训练过程本质上是一个优化问题,即通过调整模型参数来最小化损失函数。梯度下降法(Gradient Descent)在优化算法中占据着重要的地位,因其简单、有效且易于实现。

通过阅读本篇博客,你可以:

1.掌握梯度下降法的概念

2.了解如何设置学习率

一、梯度下降法的概念

1.梯度下降法的简述

梯度下降法(Gradient Descent)是一个算法。但不是像多元线性回归那样的一个具体做回归任务的算法,而是一个非常通用的优化算法。我们可以使用它来求解模型的最优解。所有优化算法的目的都是期望以最快的速度把模型参数 \theta 求解出来,梯度下降法就是一种经典的常用的优化算法。

2.使用梯度下降法的原因

在之前的博客10.解析解方法推导线性回归——不容小觑的线性回归算法-CSDN博客中我们利用 \theta解析解公式去求解MSE损失函数为凸函数的最优解。但如果我们机器学习的损失函数是非凸函数的话,设置梯度为0会得到很多个极值,甚至可能得到极大值!

换一个角度,我们之前利用的解析解公式  \theta = (X^{T}X)^{-1}X^{T}y 来求解最优解。我们设 X^{T}X是一个 n * n 的矩阵,考虑到 X^{T}X 是一个对称正定矩阵,求逆可以使用矩阵分解来进行(可以使常数因子复杂度更低),这样就能使求逆的复杂度为 O(n^{3}) 。整体的时间复杂度受求逆操作的影响,时间复杂度会高达 O(n^{3}) 。显而易见,这个方法整体的时间复杂度是相当高的

从上述可以得出,使用 \theta 的解析解公式求解并不是机器学习甚至是深度学习常用的手段。而我们在大部分情况下会使用梯度下降法去求解最优解。

3.梯度下降的思想

上图中,横轴代表 \theta ,纵轴代表损失。我们要去寻找损失最低的点,就是 \theta 的最优解。计算机会随机初始化一个 \theta (这里的 \theta 不是一个值,而是一个向量  \omega _{0},...,\omega_{n} ),有了 \theta 之后我们就可以根据公式计算出 \hat{y} ( \hat{y} = X \theta )。然后根据 \hat{y} 与真实值 y 之间的损失去算出MSE。最后调整 \theta 再循环往复,一直到找到最优解为止。这就像我们问朋友工资是多少,他会说"你猜?"。我们肯定会随机说出一个数字,他就会告诉你猜低了或者猜高了,这样我们就可以奔着对方的方向一直猜下去,直到猜对了为止。梯度下降法就是这样的,只有得到了正确的反馈后继续猜才有意义。

4.梯度下降公式

梯度下降公式用于更新 \theta,以最小化目标函数,其基本形式为:

W^{t+1}_{j} = W^{t}_j - \eta \cdot gradient_{j}

这里的 W^{t}_{j} 就是 \theta 中的某一个,这里的 \eta 就是下图的 Learning step(学习率Learning rate),这个学习率我们就可以看作损失下降的步伐大小。

在大多数情况下,学习率都是正数。如果 W 在最低点的左侧,则梯度是负数,那么我们的 W 就会往大了调;如果 W 在最低点的右侧,则梯度是正数,那么我们的 W 就是往小了调。每次 W 的调整幅度都是 \eta \cdot graident ,就是在横轴上的移动距离。

算法的维度和特征越多,那么这个公式的调用次数就越多。由于 W_{0} 的存在,n 维的算法每次迭代要应用这个式子 n+1 次。\theta 对应的是多个维度,每个维度都可以画一个与上述一样的图。

观察上图,我们可以发现不是某一个 \theta_{0} 或 \theta_{1} 找到最小值就是最优解,而是它们一起找到 J 最小的时候才是最优解。

二、学习率的设置

1.学习率设置的原理

W^{t+1}_{j} = W^{t}_j - \eta \cdot gradient_{j}

根据上述梯度下降公式,我们知道 \eta 是学习率,设置大的学习率 W_{j} 每次调整的幅度就大,设置小的学习率 W_{j} 每次调整的幅度就小。当然,步子迈的太大也会出现问题,正如俗话说:"步子太大容易扯着蛋"。设置的学习率太大就会导致下方右图的情况出现,在两边来回震荡。反之,设置的学习率太小就会一步步往前挪,使得整体的迭代次数增加。

下图中的图 a ,是学习率设置的最理想情况,最佳步骤,只需要一步就可以得到最优解,当然,这在现实当中基本上是不可能实现的。图 b 则是设置了较小的学习率,一次次迭代直到最优解。图c 是设置比较大的学习率,我们会发现它在最优解两端不断的震荡,向最优解靠近。图 d 由于学习率设置的过大,迭代后梯度变大,梯度变大导致移动的步子更大,这样就会远离最优解,这也是我们最不愿意看到的情况。

下图展现了不同学习率设置的梯度下降法的关系,横轴代表了梯度下降的迭代次数,纵轴代表了损失的大小。我们可以看到,在相同的迭代次数下,较好的学习率可以得到更低的损失,也就意味着能更快的获得最优解。下图中的蓝色函数代表了上方的图 b ,绿色函数就代表了图 c ,黄色函数代表了图 d

 2.局部最优解和全局最优解

如下图所示,如果损失函数是非凸函数,使用梯度下降法是有可能落到局部最小值的,所以学习率不能设置的太小太稳健(毕竟风浪越大鱼越贵)。当然,局部最小值也不会产生什么大问题,因为应用层面只要有实际应用价值和堪用就好了。

总结

本篇博客重点讲述了模型优化算法梯度下降法的基本原理和相关公式。希望可以对大家起到作用,谢谢。


关注我,内容持续更新(后续内容在作者专栏《从零基础到AI算法工程师》)!!!

 

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

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

相关文章

阿里云服务器挖矿木马清除

这里写自定义目录标题 阿里云服务器挖矿木马清除清除步骤: 阿里云服务器挖矿木马清除 直接看图: 清除步骤: 是的,根据您提供的 systemctl 输出,c3pool_miner.service 看起来非常可疑,因为它的描述是 “…

langchain v0.3更新了什么?

版本改动 这是具体改动的链接 官方blog首先说明了: 所有软件包已在内部从 Pydantic 1 升级到 Pydantic 2。 所有软件包都完全支持在用户代码中使用 Pydantic 2,而无需使用 langchain_core.pydantic_v1 或 pydantic.v1 等桥接程序。 由于 Pydantic 1 已…

Django 配置邮箱服务,实现发送信息到指定邮箱

一、这里以qq邮箱为例,打开qq邮箱的SMTP服务 二、django项目目录设置setting.py 文件 setting.py 添加如下内容: # 发送邮件相关配置 EMAIL_BACKEND django.core.mail.backends.smtp.EmailBackend EMAIL_USE_TLS True EMAIL_HOST smtp.qq.com EMAIL…

18724 二叉树的遍历运算

### 思路 1. **递归构建树**: - 先序遍历的第一个节点是根节点。 - 在中序遍历中找到根节点的位置,左边部分是左子树,右边部分是右子树。 - 递归构建左子树和右子树。 2. **递归生成后序遍历**: - 递归生成左子树的…

《Python编程:从入门到实践》数据可视化

一、项目 数据可视化学习 二、库依赖 matplotlib,pygal, 三、生成数据 1.绘制简单的折线图 import matplotlib.pyplot as pltsquares [1, 4, 9, 16, 25] plt.plot(squares) plt.show() 模块pyplot包含很多用于生成图表的函数。 (1&am…

Excel求和为什么是0?结果不对的来跟着步骤排查

大家好,这里是效率办公指南! 🔢 Excel求和功能是日常工作中常用的工具,但有时我们可能会遇到求和结果意外地显示为0,这可能会让我们感到困惑。今天,我们就来具体分析一下可能导致Excel求和结果为0的原因&a…

100套顶刊配色方案!Matlab超绝配色包TheBestColor

两三年前,我刚开始研究制作Matlab配色包,那时Matlab几乎只能用自带的默认配色,选择极少。 时至今日,Matlab配色已不是问题。 实际体验下来,在某些层面,甚至比隔壁R、Python吃得还要好一些。 但吃得太好&…

TARA分析方法论——威胁分析和风险评估方法

一、什么是TARA分析方法论 威胁分析和风险评估(Threat Analysis and Risk Assessment) 通过识别整车/项目的网络安全资产,分析其中的潜在的安全威胁,综合考虑威胁攻击可行性、危害影响等因素,识别出整车/项目可能存在…

【技巧】移动云手机如何防止1小时自动关机

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 背景介绍 领的免费云手机,如果1或2小时内不登录,就会被自动关机,这非常影响使用。本方法可以实现自动刷新页面&…

西门子:觅最佳的生态伙伴,筑最好的数字平台|商业创新同行者

沧海桑田,时光变幻。 纵观全球,历经百年仍能保持基业长青的公司少之又少,而像西门子这样依旧矗立在顶峰的企业可谓凤毛麟角,成功的数字化转型更是为这家企业带来了持续不断的澎湃活力。 作为当代数字化时代的创新经济模式&#…

智能手机取证: 专家如何从被锁定设备中提取数据?

在数字取证领域,从被锁定的手机中检索数据的能力是决定调查成功与否的关键技能。由于智能手机往往是解决复杂案件的关键,智能手机取证已经成为打击犯罪和恐怖主义战争中的一个关键组成部分。通话记录、短信、电子邮件,甚至位置数据都可能被发…

【机器学习(十一)】机器学习分类案例之是否患糖尿病预测—XGBoost分类算法—Sentosa_DSML社区版

文章目录 一、XGBoost算法二、Python代码和Sentosa_DSML社区版算法实现对比(一) 数据读入和统计分析(二)数据预处理(三)模型训练与评估(四)模型可视化 三、总结 一、XGBoost算法 关于集成学习中的XGBoost算法原理,已经进行了介绍与总结,相关内容可参考【…

代理IP获取工具:轻松获取可靠的代理IP

在网络世界中,代理IP是一个非常有用的工具。无论是为了提升隐私保护,还是为了访问特定的网络资源,代理IP都能提供极大的帮助。本文将介绍几种常见的代理IP获取工具,帮助你轻松获取可靠的代理IP。 什么是代理IP获取工具&#xff1…

c++反汇编逆向还原——for循环(笔记)

c反汇编逆向还原代码for循环的实现,for循环和while循环在逆向还原的区别 一、汇编 mov :将源操作数复制到目的操作数 lea :与mov类似 mov a,b 表示将b赋值给a 若是 mov a,[b] 这是将b的地址赋值给a,相…

RTMP播放器全解析

一、RTMP 播放器概述 (一)RTMP 播放器的定义与作用 RTMP 播放器是一种专门用于播放采用 RTMP(Real Time Messaging Protocol)协议的视频流的工具。在当今的流媒体播放领域中,它扮演着至关重要的角色。RTMP 播放器能够…

找不到d3dx9_43.dll怎么办,d3dx9_43.dll丢失的多种解决方法

在现代计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“找不到d3dx9_43.dll,无法继续执行代码”。这个错误提示通常出现在运行某些游戏或应用程序时,它会导致程序无法正常运行。本文将针对这个问题进行原因分析,并提供…

Ubuntu18升级cmake和python

Ubuntu18升级cmake和python 1、升级cmake至3.22.12、升级python至3.82.1 安装依赖包2.2 添加deadsnakes PPA源2.3 安装python3.82.4 将python各版本添加到update-alternatives2.5 配置python3默认指向python3.82.6 测试python3版本2.7 配置python默认指向python32.8 测试python…

《面向对象是怎样工作的》笔记

6、1、在面向对象的世界中,我们需要事先为所有的行动准备好方法并通过消息传递来调用方法,这样事物才会开始运作。 2、实际上,类、继承和多态应该被明确定义为能提高软件的可维护性和可重用行的结构。类将变量和子程序汇总在一起&#xff0c…

叉车高位显示器无线摄影,安装更加便捷!

叉车叉货,基本功能,但货叉升降高度确不一定,普通的3米左右,高的十几米,特别是仓储车,仓库叉货空间小,环境昏暗,视线受阻严重,司机叉货升的那么高怎么准确无误的插到货呢&…

尊享免费博导实验指导、结果解读、一站式实验服务与论文润色,助力科研人员成就卓越

🌟 教授团队领衔,全方位服务! 🚀 从实验设计到论文发表,一站式解决方案! 📈 选择我们,加速您的科研进程,让成果不再等待! 📝 专业分析 定制服…