【机器学习300问】9、梯度下降是用来干嘛的?

news2024/11/27 10:30:40

        当你和我一样对自己问出这个问题后,分析一下!其实我首先得知道梯度下降是什么,也就它的定义。其次我得了解它具体用在什么地方,也就是使用场景。最后才是这个问题,梯度下降有什么用?怎么用?

        所以我按照这个思路给大家讲讲我自己是怎么理解梯度下降的。

一、什么是梯度下降?

(1)先说说什么是梯度

        梯度的本质是一个向量,他指的是函数在某一个点的变化率(斜率),向量是有大小和方向的量,方向好理解,大小是指这个点的斜率数值大小。

        如果一个函数,它是二元的,那么函数画出的图像就是一个面,如果它还有更多的输入值,那么画出的图像就是超平面,这种情况我也说不清了。所以就从最简单的二元线性回归模型来说吧。

MSE的3D图像

       哪怕是最简单的一元线性回归模型的损失函数,都蛮难画的。但不要紧,因为是二元函数他们的形状大同小异,但都像一个碗一样,所以这里就用简单点的函数的来理解。

一元线性回归模型y = wx + b
它的损失函数MSEJ(w,b)=\frac{1}{2m}\sum_{i=1}^{m}(f_{w,b}(x^{i})-y^{i})^{2}
简化二元函数f(w,b) = w^{2}+b^{2}

        在某个点(w,b)处的梯度,就是分别对w求偏导数,然后对b求偏导数,最后长这个这样子\left ( \frac{\sigma f}{\sigma w},\frac{\sigma f}{\sigma b}\right )由全部变量的偏导数汇总在一起形成的向量就被成为梯度。 

(2)再从定义上理解梯度下降

        梯度下降是一个算法,它不仅可以用在多元线性回归任务中,而且是一个非常通用的优化算法。它用于寻找一些函数的最小值。梯度是一个向量,不仅表示方向,同时也表示这个方向上的斜率大小。因此,梯度的反方向是函数值下降最快的方向,也就是函数值下降最快的速度。梯度下降算法的核心思想就是沿着梯度方向逐步迭代搜索,直至找到最小值,即策略是要找到一个最小值,使得函数值尽可能小。

(3)最后从图像上直观理解梯度下降

梯度下降算法-图解1

        这个图中横坐标是参数\theta,他表示所有的要学习的参数,那我上面举得例子来说参数指的是w和b,在这图里呢就简化成了所有参数统称\theta。纵坐标是代价Cost其实就是预测值与真实值之间的差距。从图中可以看出来,这个差距在不断地变小。

        要注意哦!光是差距变小还不足以说明什么是梯度下降,它是每一步都是最快的下降速度来下降的。 就好像你下坡总有迈步子的动作,所以图中有一个叫做“学习率”的东西,可以控制每次下降多少。

二、梯度下降算法用在哪儿?

        因为这是机器学习的专题,所有我就只说一下它在机器学习领域的使用。 梯度下降算法主要用在机器学习模型训练,用来寻找一个损失函数局部最小值点,特别是当目标函数是多变量实值函数时。

  • 监督学习:用于训练各种回归模型(如线性回归、逻辑回归)和分类模型(如支持向量机、神经网络)的参数优化。
  • 深度学习:是训练深层神经网络的标准方法,包括卷积神经网络(CNN)、循环神经网络(RNN)、多层感知器(MLP)等,用于图像识别、自然语言处理、语音识别等多种任务。 

三、梯度下降算法怎么用?

       具体来说,梯度下降法通过迭代更新模型参数来逐步降低目标函数的值。在每次迭代过程中,算法计算目标函数关于当前参数值的梯度(即函数在该点的斜率或方向导数向量),然后沿着梯度的反方向移动一定的步长(学习率)。

        以下是梯度下降算法的步骤:

  1. 首先,我们有一个目标函数(损失函数),其中的参数表示模型的参数。目标是找到能够最小化目标函数的参数值。
  2. 目标函数的梯度(导数)表示了函数在当前参数值处的变化方向。我们沿着梯度的负方向调整参数值,以降低目标函数的值,也可以说是我们向着函数减小的方向前进,直到到达一个局部最小值的位置。
  3. 通过不断迭代更新参数,梯度下降算法尝试找到能够最小化目标函数的参数值。
  4. 当满足某个停止准则,如达到最大迭代次数、梯度足够接近零等,我们就可以停止迭代搜索。

        也许你还听说过“梯度上升”实际上它就是将求最小值变成了求最大值,要做的无非是将损失函数添加一个符号而已。所以一般都统一叫做梯度下降。

        在上述步骤中,我们让函数值朝着最低点前进,但每次前进多少呢?有没有一个衡量标准?如果梯度下降太快了或者太慢了会对训练有什么影响吗?其实是有衡量每次前进多少的标准的,那就是“学习率”,我会在我的下一篇文章给大家继续分享!

        【机器学习300问】10、学习率设置过大或过小对训练有何影响?

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

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

相关文章

muduo网络库剖析——监听者EpollPoller类

muduo网络库剖析——监听者EpollPoller类 前情从muduo到my_muduo 概要epoll原理解析epoll提供的接口epoll的触发模式epoll实现多路复用 框架与细节成员函数使用方法 源码结尾 前情 从muduo到my_muduo 作为一个宏大的、功能健全的muduo库,考虑的肯定是众多情况是否…

低代码配置-属性配置面板设计

模块设计 tab项切换 组件基础属性组件数据属性组件事件属性表单属性 模块输出函数设计 tab切换函数 列表表单属性 数据来源: 调用接口时一次赋予,无需使用selectItem,如需使用,归入基础属性列表标题是否展示筛选区域 示例&am…

前端框架前置学习Webpack(1) 常用webpack配置

什么是Webpack? 定义 本质上,Webpack是用于现代JavaScript应用程序的静态模块打包工具.当webpack处理应用程序时,它会在内部从一个或多个入口点构建一个依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个bundles,它们均为静态资源,用于展示你的内容.…

数学建模--论文

内容来自数学建模BOOM:【快速入门】北海:数模建模基础MATLAB入门论文写作数学模型与算法(推荐数模美赛国赛小白零基础必看教程)_哔哩哔哩_bilibili 目录 一、论文整体模版 1.整体框架 2.示例 二、标题 1.标题主题事项 三、摘要 1.摘要三要素&am…

LaTeX 多栏文档 Multiple columns如何插入图片并修改样式

在今天写报告的时候用到了 latex 的多栏列表,插入图片的时候感觉很无助 如果不喜欢让Latex自动安排图片位置,可以使用float包,然后可以使用\begin{figure}[H]。 记得提前导入这个包 \usepackage{float} 为了让我的图片的caption居中&#xf…

Go 语言中高效切片拼接和 GO 1.22 提供的新方法

Table Contents 切片拼接的必要性基本拼接方法及其局限性使用 append 函数高效拼接的策略控制容量和避免副作用利用 Go 1.22 的新特性切片动态扩容的深入理解内存重新分配与数据迁移性能优化策略结论在 Go 语言中,切片拼接是一项常见的操作,但如果处理不当,可能会导致性能问…

Verilog刷题笔记15

题目: An adder-subtractor can be built from an adder by optionally negating one of the inputs, which is equivalent to inverting the input then adding 1. The net result is a circuit that can do two operations: (a b 0) and (a ~b 1). See Wikipe…

[go语言]输入输出

目录 知识结构 输入 1.Scan ​编辑 2.Scanf 3.Scanln 4.os.Stdin --标准输入,从键盘输入 输出 1.Print 2.Printf 3.Println 知识结构 输入 为了展示集中输入的区别,将直接进行代码演示。 三者区别的结论:Scanf格式化输入&#x…

中科院罗小舟团队提出 UniKP 框架,大模型 + 机器学习高精度预测酶动力学参数

作者:李宝珠 编辑:三羊 中国科学院深圳先进技术研究院罗小舟团队提出了,基于酶动力学参数预测框架 (UniKP),实现多种不同的酶动力学参数的预测。 众所周知,生物体内的新陈代谢是通过各种各样的化学反应来实现的。这…

SpringBoot 统计API接口用时该使用过滤器还是拦截器?

统计请求的处理时间(用时)既可以使用 Servlet 过滤器(Filter),也可以使用 Spring 拦截器(Interceptor)。两者都可以在请求处理前后插入自定义逻辑,从而实现对请求响应时间的统计。 …

Modelsim SE 10.5安装教程

ModelSim 是一种功能强大的硬件描述语言 (HDL,Hardware Description Language) 仿真和验证工具,可以单独仿真,也可以联合Quartus/Vivado等软件联合仿真,仿真速度快,广泛应用于数字电路设计和验证领域。 大学老师爱教VH…

JavaWeb后端——Maven

maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理 maven项目对象模型简称POM, maven解决问题: 1. 添加第三方jar包,maven将 jar 包放在本地仓库中统一管理,使用时用坐标的方式引用即可 2. 解决 jar 包之间的依…

计算机网络-计算机网络的概念 功能 发展阶段 组成 分类

文章目录 计算机网络的概念 功能 发展阶段总览计算机网络的概念计算机网络的功能计算机网络的发展计算机网络的发展-第一阶段计算机网络的发展-第二阶段-第三阶段计算机网络的发展-第三阶段-多层次ISP结构 小结 计算机网络的组成与分类计算机网络的组成计算机网络的分类小结 计…

springBoot 添加自定义类库包

一、新建SpringBoot Web 二、添加类库包 com.saas.pdf 删除掉多余的类,新建类:PdfUtil.java package com.saas.pdf;public class PdfUtil {public static void Save(String filePath) {System.out.println("保存成功!");} }三、…

阿里云服务器4核8G配置收费标准及新老用户优惠价格整理

阿里云服务器4核8g配置云服务器u1价格是955.58元一年,4核8G配置还可以选择ECS计算型c7实例、计算型c8i实例、计算平衡增强型c6e、ECS经济型e实例、AMD计算型c8a等机型等ECS实例规格,规格不同性能不同,价格也不同,阿里云服务器网al…

十二、Qt 操作PDF文件(2)

一、在《十、Qt 操作PDF文件-CSDN博客》中我们用Poppler类库打开了PDF文件,并显示到窗体上,但只能显示一页,功能还没完善,在本章节中,加入了: 通过选择框选择PDF文件并打开,默认打开第一页。通…

最新内置30+远程接口,全新API接口管理系统PHP源码,附带系统搭建教程

搭建教程 内置30远程接口doc文件夹可参考自行编辑api文件夹里附赠qrcode接口源码 此程序基于ThinkPHP5.1 PHP版本需7.0-7.3之间。 Nginx请设置如下TP伪静态 Apache无需配置 运行目录默认即可 将程序上传至网站根目录,访问域名/install进行安装操作

IP定位助力网络安全防线

随着互联网技术的飞速发展,网络安全问题日益凸显。在网络安全领域,IP地址定位技术正发挥着越来越重要的作用,成为维护网络安全的一道有力防线。 一、追踪黑客攻击者,维护公共安全 在网络安全领域,黑客攻击是一个严重的…

Phantomjs+Java+springboot实现后端截图

一、phantomjs介绍 (1)一个基于webkit内核的无界面浏览器,即没有UI界面,即它就是一个浏览器,只是其内的点击、翻页等人为相关操作需要程序设计实现。 (2)提供javascript API接口,即通…

路由器初始化配置、功能配置

实验环境 拓扑图 Ip规划表(各组使用自己的IP规划表) 部门 主机数量 网络地址 子网掩码 网关 可用ip Vlan 市场部 38 192.168.131.0 255.255.255.0 192.168.131.1 2-254 11 研发部 53 192.168.132.0 255.255.255.0 192.168.132.1 2-2…