首页 > 其他分享 >机器学习中的梯度下降

机器学习中的梯度下降

时间:2024-07-16 18:29:59浏览次数:15  
标签:机器 函数 梯度 算法 下降 学习 最小值 损失

        本文只是简单解释一下梯度下降,其中涉及到的公式并没有展示说明。

1.什么是梯度?

        梯度也可以理解为导数。

        在一维空间中:梯度就是导数,或者说对于一个线性函数,也就是线的斜率。

2.什么是梯度下降?

        梯度是个向量,自变量沿着该向量的方向变化,函数值变化最快。在机器学习中,为使损失函数下降最快,我们需要让模型参数沿着梯度的负方向更新,即梯度下降

        附上图解(简略过程):

        第一步:计算函数的导数f(x)'

        第二步:任意选择一个起点,如A点。代入X得出Y',将计算得到的Y'作为新的X,图中对应B点。

        第三步:对B点重复第二步操作,会得到C、D、F......以此类推

        一般而言,随着梯度值逐步逼近0,每次X更新幅度越来越小。

         

3.梯度下降的作用?

        如果看懂了上面说的梯度下降的简略过程,这里就很容易明白了。我们将上面的函数换成损失函数,梯度下降就是用来求损失函数最小值时自变量对应取值。

什么是损失函数?

        机器学习算法的预测值减去真实值最后取绝对值叫做误差,而损失函数就是负责计算这个误差的。不同的参数会产生不同的误差,梯度下降就是为了找到让误差值最小时候对应的参数。

额外补充:机器学习常见的两类算法

        1,回归算法,产生一条曲线来拟合现有的数据,实现预测未来的数据。

        2,分类算法,产生一条曲线实现分类,在这个曲线一侧为一类另外一侧算一类。

        而损失函数就是用来评估算法产生的这条曲线的效果好不好

4.常用的梯度下降方法

        批量梯度下降

        批量梯度下降对训练集中的每个点的误差求和,仅在评估所有训练样本后才更新模型。这个过程称为训练周期。

        批量梯度下降的最要问题是计算每一步的梯度时都需要使用整个训练集,这导致在规模较大的数据集上,其会变得非常的慢。

        随机梯度下降

        在每一步的梯度计算上只随机选取训练集中的一个样本。很明显,由于每一次的操作都使用了非常少的数据,这样使得算法变得非常快。由于每一次迭代,只需要在内存中有一个实例,这使随机梯度算法可以在大规模训练集上使用。
        另一方面,由于它的随机性,与批量梯度下降相比,其呈现出更多的不规律性:它到达最小 值不是平缓的下降,损失函数会忽高忽低,只是在大体上呈下降趋势。随着时间的推移,它 会非常的靠近最小值,但是它不会停止在一个值上,它会一直在这个值附近摆动。因此,当算法停止的时候,最后的参数还不错,但不是最优值。

        小批量梯度下降

        小批量梯度下降结合了批量梯度下降和随机梯度下降概念。每次迭代只使用训练集其中一个小批量来训练模型,这个批中的所有样本共同决定了本次迭代中梯度的方向,这种方法兼顾了批量梯度下降的计算效率和随机梯度下降的速度。

补充

        学习率

        在梯度下降的过程中学习率不能过大或者过小,下图的正常情况。

        当学习率过小,会大大增加迭代时间,如下图所示。

        如果学习率过大可能会发生梯度发散,即可能下一次的值比上一次还要大,导致最终无法收敛。如下图所示。

        损失函数

        在实际训练过程中,损失函数一般不会很简单的就是一个开口向上的二次函数,例如下图。

        如果随机初始值选在了图像的左侧,则它将收敛到局部最小值,这个值要比全局最小值要大。 如果它从右侧开始,那么训练需要很长时间,如果你早早地结束训练,你将永远到不了全局最小值。 

        但是线性回归模型的均方差损失函数是一个凸函数(曲线上的任意两点,它们的连线段不会与曲线发生交叉,即该线段不会与曲线有第三个交点)。这意味着这个损失函数没有局部最小值,仅仅只有一个全局最小值。

标签:机器,函数,梯度,算法,下降,学习,最小值,损失
From: https://blog.csdn.net/qq_65960840/article/details/140467260

相关文章

  • 【新手硬件工程师学习日记】之电容的九大作用
    1、隔直流隔直流电容作用:阻止直流通过而让交流通过。2、旁路(去耦)高频旁路电容器作用:为交流电路中某些并联的组件提供低阻抗通路。3、耦合耦合电容电路模型作用:作为两个电路之间的连接,允许交流信号通过并传输到下一级电路。......
  • 【硬件学习日记】之丝印摆放
        在原理图部分结束之后就要转到PCB给元器件布局了,那么为了更好地给元器件布局还不妨碍视野,我一般选择把元器件的丝印缩小摆放在元器件中心点,效果如下:步骤如下:①Ctrl+A选择全部元器件②快捷键A+P,点“标识符”这一侧的中间这个点。如果你想把丝印放在元器件的别......
  • 【硬件学习日记】之覆铜与板边间距
            覆铜和板边不能没有间距,因为如果没有间距的话工艺切割的时候可能会有裸露的铜暴露在空气中,可能会致使板子出问题(嵌入式硬件真的是玄学=.=)。所以要设置覆铜与板边的距离。D+R规则快捷键。找到BoardOutlineClearance,然后最小间距设置为15mil(1mm也可以),如果没......
  • 学习微调大语言模型 LLM 时的碎碎念
    要完全解决幻觉问题,就要让模型的推理有足够的上下文,而不是凭空编造。这一点需要从训练时就要做到。就是说,例如roleplay的微调,若角色的回复包含了某种状态(天气如何、吃没吃饭等),这些状态不应该是凭空出现的,而是已经出现在上文。我的设想是,模型应当会主动索求状态的说明文字,若没有......
  • 机器学习分类结果精度测定 - 混淆矩阵(Confusion Matrix)
    一、引言机器学习和数据科学中一个经常被忽视,但至关重要的概念是模型评估。你可能已经建立了一个非常先进的模型,但如果没有合适的评估机制,你就无法了解模型的效能和局限性。这就是混淆矩阵(ConfusionMatrix)派上用场的地方。1.1什么是混淆矩阵?混淆矩阵是一种特定的表格布局......
  • 【Datawhale AI夏令营】 Task1 学习笔记
    目录一、baseline二、NLP模型自然语言处理的主要任务自然语言处理的技术和方法自然语言处理的应用自然语言处理的挑战 三、赛题理解 赛题背景赛事任务术语词典干预术语词典干预的主要特点术语词典干预的实施方法四、实操 步骤体会感想   学习目标:跑......
  • GPT的tkinter学习之路(3)
    Task1:使用菜单和对话框预期效果:建立一个窗口,左上角是菜单栏,点击后会出现几个选项,如图code:importtkinterastkfromtkinterimportmessagebox,filedialog#创建主窗口root=tk.Tk()root.title("Tkinter菜单和对话框示例")root.geometry("400x300")#创建......
  • MySQL的学习
    关于数据库(DB)数据库是按照数据结构来组织、存储和管理数据的仓库。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。有什么类型关系型数据库所谓关系模型就是“一对一、一对多、多对多”等关系模型,非关系型数据库它们不保证关系数据的A......
  • MySQL学习笔记——索引
    索引0.前言本文是跟着网课学习的时候随手记录的一篇关于MySQL索引的学习笔记1.索引概述1.1.索引介绍索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据......
  • 暑期集训shellcode5(手搓机器码)
    拖进ida里面反汇编再让人工智能分析(我是废物)(后来给源码了,直接上源码)#include<string.h>#include<stdio.h>#include<stdlib.h>#include<inttypes.h>#include<capstone/capstone.h>#include<sys/mman.h>intupkeep(){setvbuf(stdin,NULL,_IONB......