梯度下降 代价函数

梯度下降 代价函数代价函数与梯度下降

大家好,又见面了,我是你们的朋友全栈君。

代价函数 梯度下降

什么是代价函数?大家都知道误差。误差就是实际值与预测值之间的差别。

损失函数(Loss Function )是定义在单个样本上的,算的是一个样本的误差。

代价函数(Cost Function )是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。
概况来讲,任何能够衡量模型预测出来的值h(θ)与真实值y之间的差异的函数都可以叫做代价函数C(θ),如果有多个样本,则可以将所有代价函数的取值求均值,记做J(θ)。因此很容易就可以得出以下关于代价函数的性质:

  1. 对于每种算法来说,代价函数不是唯一的;
  2. . 代价函数是参数θ的函数;
    3 .总的代价函数J(θ)可以用来评价模型的好坏,代价函数越小说明模型和参数越符合训练样本(x, y);
    4 .J(θ)是一个标量;

对于线性回归来说
梯度下降 代价函数

线性回归代价函数
m:训练样本的个数;

hθ(x):用参数θ和x预测出来的y值;

y:原训练样本中的y值,也就是标准答案

上角标(i):第i个样本
当我们确定了模型h,后面做的所有事情就是训练模型的参数θ。那么什么时候模型的训练才能结束呢?这时候也涉及到代价函数,由于代价函数是用来衡量模型好坏的,我们的目标当然是得到最好的模型(也就是最符合训练样本(x, y)的模型)。因此训练参数的过程就是不断改变θ,从而得到更小的J(θ)的过程。理想情况下,当我们取到代价函数J的最小值时,就得到了最优的参数θ。
在优化参数θ的过程中,最常用的方法是梯度下降,这里的梯度就是代价函数J(θ)对θ1, θ2, …, θn的偏导数
说到梯度下降,梯度下降中的梯度指的是代价函数对各个参数的偏导数,偏导数的方向决定了在学习过程中参数下降的方向,学习率(通常用α表示)决定了每步变化的步长,有了导数和学习率就可以使用梯度下降算法(Gradient Descent Algorithm)更新参数了。
梯度下降的基本过程就和下山的场景很类似。
在这里插入图片描述
首先,我们有一个可微分的函数。这个函数就代表着一座山。我们的目标就是找到这个函数的最小值,也就是山底。根据之前的场景假设,最快的下山的方式就是找到当前位置最陡峭的方向,然后沿着此方向向下走,对应到函数中,就是找到给定点的梯度 ,然后朝着梯度相反的方向,就能让函数值下降的最快!因为梯度的方向就是函数之变化最快的方向。
所以,我们重复利用这个方法,反复求取梯度,最后就能到达局部的最小值,这就类似于我们下山的过程。在这里插入图片描述

在这里插入图片描述
上图中的α是什么含义?
α在梯度下降算法中被称作为学习率或者步长,意味着我们可以通过α来控制每一步走的距离,以保证不要步子跨的太大扯着蛋,哈哈,其实就是不要走太快,错过了最低点。同时也要保证不要走的太慢,导致太阳下山了,还没有走到山下。所以α的选择在梯度下降法中往往是很重要的!α不能太大也不能太小,太小的话,可能导致迟迟走不到最低点,太大的话,会导致错过最低点。
在这里插入图片描述
为什么要梯度要乘以一个负号?
梯度前加一个负号,就意味着朝着梯度相反的方向走!我们都知道,梯度的方向实际就是函数在此点上升最快的方向!而我们需要朝着下降最快的方向走,自然就是负的梯度的方向,所以此处需要加上负号。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136592.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vscode 使用flake8和yapf[通俗易懂]

    vscode 使用flake8和yapf[通俗易懂]vscode使用flake8和yapf

    2025年11月2日
    5
  • matlab中ode45函数解二阶微分方程_matlab求常微分方程组

    matlab中ode45函数解二阶微分方程_matlab求常微分方程组Matlab微分方程求解并绘制曲线1.用dsolve()求解>>clear>>clc>>symsy(t)>>Dy=diff(y,1)Dy(t)=diff(y(t),t)>>y=dsolve(Dy==y-2*t/y,y(0)==1)y=(2*t+1)^(1/2)>>t=0:0.1:4;>>y=eval(y);>>plot(t,

    2025年8月9日
    3
  • vs中快速注释快捷键_VS2010快捷键

    vs中快速注释快捷键_VS2010快捷键选中需要注释的代码段,按Ctrl+K+C即可快速注释;选中需要取消注释的代码段,按Ctrl+K+U即可取消注释。

    2022年8月15日
    7
  • 基于机器学习的文本分类算法的研究[通俗易懂]

    基于机器学习的文本分类算法的研究[通俗易懂]1.简述文本分类的方法属于有监督的学习方法,分类过程包括文本预处理、特征抽取、降维、分类和模型评价。本文首先研究了文本分类的背景,中文分词算法。然后是对各种各样的特征抽取进行研究,包括词项频率-逆文档频率和word2vec,降维方法有主成分分析法和潜在索引分析,最后是对分类算法进行研究,包括朴素贝叶斯的多变量贝努利模型和多项式模型,支持向量机和深度学习方法。深度学习方法包括多层感知机,卷积神…

    2022年6月8日
    42
  • idea创建工程的目录_idea创建java文件

    idea创建工程的目录_idea创建java文件前提:已安装好jdk,配置好环境变量。我使用的是java8首先在自己的d盘下建一个文件夹,用来存放我们待会新建的项目,我创建了ideaproject:1,第一步打开idea2,第二步选择创建java项目,并选择自己的jdk(我自己本地已经配置了所以有),没有可以点击new去自己的安装目录下找,一般默认安装c:\programfiles\java,然后选择next下一步3,第三步将“creat…

    2022年9月27日
    4
  • PowerBuilder — 条码打印

    PowerBuilder — 条码打印#使用ocx控件使用微软的MSBCODE9.OCX,但是注册老不成功,需要安装office之后才能注册成功,不知道有没有好的处理方法??#使用字体字体下载:http://download.csdn.net/detail/easyboot/9452777字符转换:代码来源http://club.excelhome.net/thread-606919-1-1.html…

    2022年7月26日
    15

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号