梯度下降【无约束最优化问题】(一)

简介: 本文属于 线性回归算法【AIoT阶段三】(尚未更新),这里截取自其中一段内容,方便读者理解和根据需求快速阅读。本文通过公式推导+代码两个方面同时进行,因为涉及到代码的编译运行,如果你没有NumPy,Pandas,Matplotlib的基础,建议先修文章:数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解),本文是梯度下降的第一部分,后续还会有:三种梯度下降方法与代码实现,梯度下降优化,梯度下降优化进阶 (暂未更新)

前言

本文属于 线性回归算法【AIoT阶段三】(尚未更新),这里截取自其中一段内容,方便读者理解和根据需求快速阅读。本文通过公式推导+代码两个方面同时进行,因为涉及到代码的编译运行,如果你没有NumPy,Pandas,Matplotlib的基础,建议先修文章:数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解),本文是梯度下降的第一部分,后续还会有:三种梯度下降方法与代码实现梯度下降优化梯度下降优化进阶 (暂未更新)


1.无约束最优化

🚩无约束最优化问题(unconstrained optimizationproblem)指的是从一个问题的所有可能的备选方案中,选择出依某种指标来说是最优的解决方案。从数学上说,最优化是研究在一个给定的集合S上泛函J(θ)的极小化或极大化问题:广义上,最优化包括数学规划、图和网络、组合最优化、库存论、决策论、排队论、最优控制等。狭义上,最优化仅指数学规划。


大白话说就是,比如对于一个二次函数我们要求其极值,无约束的意思就是 x  的取值是任意的,在 R 上都可取,对于有约束可以形象化理解为我们对 x的范围进行了限制,比如我们要求 x > 0 。


2.梯度下降

🚩梯度下降法  (Gradient Descent)是一个算法,但不是像多元线性回归那样是一个具体做回归任务的算法,而是一个非常通用的优化算法来帮助一些机器学习算法(都是无约束最优化问题)求解出最优解所谓的通用就是很多机器学习算法都是用梯度下降,甚至深度学习也是用它来求解最优解。所有优化算法的目的都是期望以最快的速度把模型参数θ求解出来,梯度下降法就是一种经典常用的优化算法。

image.png

image.jpeg

其实这就跟生活中的情形很像,比如你问一个朋友的工资是多少,他说你猜?那就很难了,他说你猜完我告诉你是猜高了还是猜低了,这样你就可以奔着对的方向一直猜下去,最后总会猜对!梯度下降法就是这样的,多次尝试。并且,在试的过程中还得想办法知道是不是在猜对的路上,说白了就是得到正确的反馈再调整然后继续猜才有意义~


这个就好比道士下山,我们把 Loss (或者称为 Cost,即损失)曲线看成是山谷,如果走过了,就再往回返,所以是一个迭代的过程。


3.梯度下降公式

🚩这里梯度下降法的公式就是一个式子指导计算机迭代过程中如何去调整 θ ,可以通过泰勒公式一阶展开来进行推导和证明:

image.pngimage.jpeg

image.png

image.jpeg

所以观察上图我们可以发现不是某一个 θ 0或 θ 1 找到最小值就是最优解,而是它们一起找到J(θ) 最小值才是最优解。

4.学习率

🚩根据我们上面讲的梯度下降公式,我们知道 η 设置大的学习率 w j每次调整的幅度就大,设置小的学习率w j每次调整的幅度就小,然而如果步子迈的太大也会有问题,俗话说步子大了容易扯着蛋!学习率大,可能一下子迈过了,到另一边去了(从曲线左半边跳到右半边),继续梯度下降又迈回来, 使得来来回回震荡。步子太小呢,就像蜗牛一步步往前挪,也会使得整体迭代次数增加。

image.png

学习率的设置是门一门学问,一般我们会把它设置成一个比较小的正整数,0.1,0.01,0.001,0.000,都是常见的设定数值(然后根据情况调整)。一般情况下学习率在整体迭代过程中是不变,但是也可以设置成随着迭代次数增多学习率逐渐变小,因为越靠近山谷我们就可以步子迈小点,可以更精准的走入最低点,同时防止走过。还有一些深度学习的优化算法会自己控制调整学习率这个值,后面学习过程中这些策略在讲解代码中我们会一一讲到。

image.png


image.pngimage.png







目录
相关文章
|
传感器 芯片
最详细STM32,cubeMX 点亮 led
最详细STM32,cubeMX 点亮 led
586 0
|
数据可视化 计算机视觉
ICCV2021 | TOOD:任务对齐的单阶段目标检测
单阶段目标检测通常通过优化目标分类和定位两个子任务来实现,使用具有两个平行分支的头部,这可能会导致两个任务之间的预测出现一定程度的空间错位。本文提出了一种任务对齐的一阶段目标检测(TOOD),它以基于学习的方式显式地对齐这两个任务。
ICCV2021 | TOOD:任务对齐的单阶段目标检测
|
9月前
|
机器学习/深度学习 前端开发 算法
基于STP文件的智能比对系统技术介绍
基于STP文件的智能比对系统通过集成多项先进技术,实现设计图纸与实物的自动化、高精度比对。系统采用分布式架构,包含前端Web界面、后端处理服务器、图像数据库和深度学习模型模块,支持STP文件解析、3D模型可视化、多视角图片生成及实物照片智能匹配。该系统显著提升机械制造和质量控制领域的效率与准确性,减少人工操作误差,广泛应用于设计验证、质量检测等场景。
496 3
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
《DeepSeek-R1 “人性化”交互:情感计算是幕后真英雄》
在人工智能快速发展的今天,DeepSeek-R1以其卓越的“人性化”交互设计备受关注。这种设计使机器能像人类一样理解并回应情感需求,提供自然、舒适的交流体验。其背后是否依赖情感计算技术成为热议话题。情感计算通过分析语言、表情等信息,使AI感知并回应用户情绪,这与DeepSeek-R1的表现高度契合。尽管它还依赖其他技术如深度学习和多轮对话管理,但情感计算无疑为其提供了重要支持,使其在众多AI产品中脱颖而出。未来,情感计算将在AI人性化交互中发挥更大作用。
269 14
|
8月前
|
机器学习/深度学习 存储 人工智能
《DeepSeek情感分析技术:突破与创新,精准判断情感倾向》
在数字化时代,文本数据激增,情感分析成为关键需求。DeepSeek作为AI领域的佼佼者,基于Transformer架构实现深度语义理解,通过多模态融合技术全面感知情感,结合领域自适应与迁移学习跨越不同场景,采用对抗训练提升鲁棒性,并融合情感词典与知识图谱增强理解。这些创新使DeepSeek能精准判断情感倾向,为企业和研究提供有力支持。
970 20
|
XML 前端开发 Java
Spring Boot中怎么使用BPMN
在Spring Boot中集成BPMN工作流,如Camunda,能实现业务流程自动化。以请假流程为例,步骤包括:创建Spring Boot项目并添加Camunda依赖;使用Camunda Modeler设计请假流程,涵盖提交申请、经理审批、HR记录及流程完成阶段;保存BPMN文件至`src/main/resources`目录,以便Camunda自动部署;实现流程逻辑,如通过REST API启动流程实例,并传递请假请求数据。整个过程展示了BPMN流程从设计到部署的完整周期,使业务流程自动化变得高效且直接。 **注意:**摘要已压缩至240字符内,部分内容被省略。
904 2
Spring Boot中怎么使用BPMN
|
消息中间件 存储 监控
RabbitMQ 死信队列
RabbitMQ的死信队列(DLQ)是存储无法正常消费消息的特殊队列,常见于消息被拒绝、过期或队列满时。DLQ用于异常处理、任务调度和监控,通过绑定到普通队列自动路由死信消息。通过监听死信队列,可以对异常消息进行补偿和进一步处理,提升系统稳定性和可维护性。
327 1
|
机器学习/深度学习 算法 C语言
【深度学习】优化算法:从梯度下降到Adam
【深度学习】优化算法:从梯度下降到Adam
356 1
|
开发框架 自然语言处理 Python
LangChain与智能Agent构建问题之MetaGPT安装如何解决
LangChain与智能Agent构建问题之MetaGPT安装如何解决
226 0
|
数据采集 机器学习/深度学习 算法
梯度消失了怎么办?
梯度消失是深度神经网络训练中的常见问题之一。解决梯度消失问题的方法包括使用更复杂的模型、不同的激活函数、批标准化、残差连接、改变优化器和学习率以及数据预处理等。需要根据具体情况选择相应的解决方法,并监视网络权重和激活函数的分布情况来识别和缓解梯度消失的问题。
3816 0
梯度消失了怎么办?