梯度下降 代价函数

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

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

代价函数 梯度下降

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

损失函数(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)更新参数了。
梯度下降的基本过程就和下山的场景很类似。
在这里插入图片描述
首先,我们有一个可微分的函数。这个函数就代表着一座山。我们的目标就是找到这个函数的最小值,也就是山底。根据之前的场景假设,最快的下山的方式就是找到当前位置最陡峭的方向,然后沿着此方向向下走,对应到函数中,就是找到给定点的梯度 ,然后朝着梯度相反的方向,就能让函数值下降的最快!因为梯度的方向就是函数之变化最快的方向。
所以,我们重复利用这个方法,反复求取梯度,最后就能到达局部的最小值,这就类似于我们下山的过程。在这里插入图片描述

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 分子模拟软件amber_薛定谔 autodock 分子动力学模拟GROMACS软件「建议收藏」

    分子模拟软件amber_薛定谔 autodock 分子动力学模拟GROMACS软件「建议收藏」生物分子互作基础1.生物分子互作用研究方法1.1蛋白-小分子、蛋白-蛋白相互作用原理1.2分子对接研究生物分子相互作用1.3蛋白蛋白对接研究分子相互作用蛋白数据库1.PDB数据库介绍1.1PDB蛋白数据库功能1.2PDB蛋白数据可获取资源1.3PDB蛋白数据库对药物研发的重要性2.PDB数据库的使用2.1靶点蛋白结构类型、数据解读及下载2.2靶点蛋白结构序列下载2.3靶点…

  • [ Talk is Cheap Show me the CODE ] : jQuery Mobile工具栏

    [ Talk is Cheap Show me the CODE ] : jQuery Mobile工具栏

  • viewpager循环滚动_jq实现轮播图循环

    viewpager循环滚动_jq实现轮播图循环Viewpager图片自动轮播无限循环是Android开发中经常用到的功能,功能实现起来也比较简单。虽然如此,但是很多情况下做出来的效果并不太让人满意,甚至有些上线的项目自动轮播上也会出现一些bug。比如切换过程中出现空白页面,有些甚至在滑动过程中造成程序崩溃。本篇文章将实现ViewPager图片自动轮播无限循环,而且页面切换效果非常流畅。还是先看效果图:页面循环切换最容易出现问题的地方…

  • python列表中的所有值转换为字符串,以及列表拼接成一个字符串

    python列表中的所有值转换为字符串,以及列表拼接成一个字符串直接看代码:>>>ls1=[‘a’,1,’b’,2]>>>ls2=[str(i)foriinls1]>>>ls2[‘a’,’1′,’b’,’2′]>>>ls3=”.join(ls2)>>>ls3’a1b2′

  • 分布式缓存redis_rocksdb 分布式缓存

    分布式缓存redis_rocksdb 分布式缓存WindowsServerAppFabric首页http://msdn.microsoft.com/zh-cn/windowsserver/ee695849(en-us).aspx高可用性(WindowsServerAppFabric缓存)http://msdn.microsoft.com/zh-cn/library/ee790974.aspx www.nhibe…

    2022年10月16日
  • android的layout_android可拖拽layout

    android的layout_android可拖拽layoutViewGroup.LayoutParams介绍LayoutParams携带了子控件针对父控件的信息,告诉父控件如何放置自己LayoutParams类也只是简单的描述了宽高,宽和高都可以设置成三种值:1,一个确定的值;2,FILL_PARENT,即填满(和父容器一样大小);3,WRAP_CONTENT,即包裹住组件就好。每一个ViewGroup(例如LinearLayout,RelativeLa…

发表回复

您的电子邮箱地址不会被公开。

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