一:损失函数,代价函数,目标函数定义

首先给出结论:

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

代价函数(Cost Function )是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。

目标函数(Object Function)定义为:最终需要优化的函数。等于经验风险+结构风险(也就是Cost Function + 正则化项)。

关于目标函数和代价函数的区别还有一种通俗的区别:

目标函数是最大化或者最小化,而代价函数是最小化

举个例子解释一下:(图片来自Andrew Ng Machine Learning公开课视频)

上面三个图的函数依次为 , , 。我们是想用这三个函数分别来拟合Price,Price的真实值记为

我们给定 ,这三个函数都会输出一个 ,这个输出的 与真实值 可能是相同的,也可能是不同的,为了表示我们拟合的好坏,我们就用一个函数来度量拟合的程度,比如:

,这个函数就称为损失函数(loss function),或者叫代价函数(cost function)(有的地方将损失函数和代价函数没有细分也就是两者等同的)。损失函数越小,就代表模型拟合的越好。

那是不是我们的目标就只是让loss function越小越好呢?还不是。

这个时候还有一个概念叫风险函数(risk function)。风险函数是损失函数的期望,这是由于我们输入输出的 遵循一个联合分布,但是这个联合分布是未知的,所以无法计算。但是我们是有历史数据的,就是我们的训练集, 关于训练集的平均损失称作经验风险(empirical risk),即 ,所以我们的目标就是最小化 ,称为经验风险最小化。

到这里完了吗?还没有。

如果到这一步就完了的话,那我们看上面的图,那肯定是最右面的 的经验风险函数最小了,因为它对历史的数据拟合的最好嘛。但是我们从图上来看肯定不是最好的,因为它过度学习历史数据,导致它在真正预测时效果会很不好,这种情况称为过拟合(over-fitting)。

为什么会造成这种结果?大白话说就是它的函数太复杂了,都有四次方了,这就引出了下面的概念,我们不仅要让经验风险尽量小,还要让结构风险尽量小。。这个时候就定义了一个函数 ,这个函数专门用来度量模型的复杂度,在机器学习中也叫正则化(regularization)。常用的有 , 范数。

到这一步我们就可以说我们最终的优化函数是: ,即最优化经验风险和结构风险,而这个函数就被称为目标函数。

结合上面的例子来分析:最左面的 结构风险最小(模型结构最简单),但是经验风险最大(对历史数据拟合的最差);最右面的 经验风险最小(对历史数据拟合的最好),但是结构风险最大(模型结构最复杂);而 达到了二者的良好平衡,最适合用来预测未知数据集。

二:详解代价函数

什么是代价函数


假设有训练样本(x, y),模型为h,参数为θ。h(θ) = θTx(θT表示θ的转置)。

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

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

(2)当我们确定了模型h,后面做的所有事情就是训练模型的参数θ。那么什么时候模型的训练才能结束呢?这时候也涉及到代价函数,由于代价函数是用来衡量模型好坏的,我们的目标当然是得到最好的模型(也就是最符合训练样本(x, y)的模型)。因此训练参数的过程就是不断改变θ,从而得到更小的J(θ)的过程。理想情况下,当我们取到代价函数J的最小值时,就得到了最优的参数θ,记为:

minθJ(θ)minθJ(θ)

例如,J(θ) = 0,表示我们的模型完美的拟合了观察的数据,没有任何误差。

(3)在优化参数θ的过程中,最常用的方法是梯度下降,这里的梯度就是代价函数J(θ)对θ1, θ2, ..., θn的偏导数。由于需要求偏导,我们可以得到另一个关于代价函数的性质:

  • 选择代价函数时,最好挑选对参数θ可微的函数(全微分存在,偏导数一定存在)

代价函数的常见形式


经过上面的描述,一个好的代价函数需要满足两个最基本的要求:能够评价模型的准确性,对参数θ可微。

(1)在线性回归中,最常用的是均方误差(Mean squared error),即

J(θ0,θ1)=12m∑i=1m(y^(i)−y(i))2=12m∑i=1m(hθ(x(i))−y(i))2J(θ0,θ1)=12m∑i=1m(y^(i)−y(i))2=12m∑i=1m(hθ(x(i))−y(i))2

m:训练样本的个数;

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

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

上角标(i):第i个样本

(2)在逻辑回归中,最常用的是代价函数是交叉熵(Cross Entropy),交叉熵是一个常见的代价函数,在神经网络中也会用到。

回到线性回归模型中,训练集和代价函数如下图

如果我们还用J(θ)函数做为逻辑回归模型的代价函数,用H(x) = g(θ^T * x),曲线如下图所示

发现J(θ)的曲线图是"非凸函数",存在多个局部最小值,不利于我们求解全局最小值

因此,上述的代价函数对于逻辑回归是不可行的,我们需要其他形式的代价函数来保证逻辑回归的代价函数是凸函数。

这里我们先对线性回归模型中的代价函数J(θ)进行简单的改写

用Cost(h(x), y) = 1/2(h(x) - y)^2 代替

在这里我们选择对数似然损失函数做为逻辑回归模型的代价函数,Cost函数可以表示如下

分析下这个代价函数

(1). 当y=1的时候,Cost(h(x), y) = -log(h(x))。h(x)的值域0~1,-log(h(x))的曲线图,如下

从图中可以看出

  1. h(x)的值趋近于1的时候,代价函数的值越小趋近于0,也就是说预测的值h(x)和训练集结果y=1越接近,预测错误的代价越来越接近于0,分类结果为1的概率为1
  2. 当h(x)的值趋近于0的时候,代价函数的值无穷大,也就说预测的值h(x)和训练集结果y=1越相反,预测错误的代价越来越趋于无穷大,分类结果为1的概率为0

(2). 当y=0的时候, Cost(h(x), y) = -log(1-h(x))。h(x)的值域0~1,-log(1-h(x))的曲线图,如下

从图中可以看出

  1. h(x)的值趋近于1的时候,代价函数的值趋于无穷大,也就是说预测的值h(x)和训练集结果y=0越相反,预测错误的代价越来越趋于无穷大,分类结果为0的概率为1-h(x)等于0
  2. 当h(x)的值趋近于0的时候,代价函数的值越小趋近于0,也就说预测的值h(x)和训练集结果y=0越接近,预测错误的代价越来越接近于0,分类结果为0的概率为1-h(x)等于1

为了统一表示,可以把Cost(h(x), y)表达成统一的式子,根据前面J(θ)的定义,J(θ)等于

特别说明:

1. 当y=1的时候,第二项(1-y)log(1-h(x))等于0

2. 当y=0的时候,ylog(h(x))等于0

从上面2点可以看出,J(θ)表达式符合前面定义

根据线性回归求代价函数的方法,可以用梯度下降算法求解参数θ

从上图可以看出,θj更新和线性回归中梯度下降算法的θj更新一致,差别的是假设函数h(x)不同

J(θ)=−1m[∑i=1m(y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]J(θ)=−1m[∑i=1m(y(i)log⁡hθ(x(i))+(1−y(i))log⁡(1−hθ(x(i)))]

符号说明同上

(3)学习过神经网络后,发现逻辑回归其实是神经网络的一种特例(没有隐藏层的神经网络)。因此神经网络中的代价函数与逻辑回归中的代价函数非常相似:

J(θ)=−1m[∑i=1m∑k=1K(y(i)kloghθ(x(i))+(1−y(i)k)log(1−(hθ(x(i)))k)]J(θ)=−1m[∑i=1m∑k=1K(yk(i)log⁡hθ(x(i))+(1−yk(i))log⁡(1−(hθ(x(i)))k)]
参考:https://www.zhihu.com/question/52398145
       :https://www.cnblogs.com/nowornever-L/p/6878210.html

:http://blog.csdn.net/chenguolinblog/article/details/52305257

【机器学习】代价函数,损失函数,目标函数区别相关推荐

  1. 代价函数,损失函数,目标函数区别

    代价函数,代价函数也被称为平方误差函数,有时也被称为平方误差代价函数,之所以要出误差的平方和,是因为误差平方代价函数对于大多数问题,特别是回归问题,都是一个合理的选择. 一:损失函数,代价函数,目标函 ...

  2. 目标函数和损失函数的区别

    损失函数(loss function)或代价函数(cost function)说人话就是:损失函数是用来表示预测值与真实值间的差异的函数. 目标函数f(x)说人话:目标函数是优化问题中的一个概念,在机 ...

  3. 损失函数(损失函数、代价函数、目标函数)、​​​​​​​MSE、0-1损失函数、绝对误差损失函数、分位数损失函数、Huber损失函数、感知损失函数、Hinge损失函数、指数损失函数、对数损失函数

    损失函数(损失函数.代价函数.目标函数).MSE.0-1损失函数.绝对误差损失函数.分位数损失函数.Huber损失函数.感知损失函数.Hinge损失函数.指数损失函数.对数损失函数 目录

  4. 损失函数、代价函数与目标函数

    定义 损失函数(Loss Function):是定义在单个样本上的,用来评价模型的预测值和真实值不一样的程度,指一个样本的误差. 代价函数(Cost Function):定义在整个训练集上的,是指所有 ...

  5. 【深度学习】一文读懂机器学习常用损失函数(Loss Function)

    [深度学习]一文读懂机器学习常用损失函数(Loss Function) 最近太忙已经好久没有写博客了,今天整理分享一篇关于损失函数的文章吧,以前对损失函数的理解不够深入,没有真正理解每个损失函数的特点 ...

  6. 关于机器学习和AI的区别最经典的解释

    关于机器学习和AI的区别最经典的解释 互联网和移动互联网兴起后,各种经典段子满天飞.很多段字反映出段子手很有才.这不,关于机器学习与人工智能(AI)的区别,最近有一个段字红爆业界: 翻译成中文就是,机 ...

  7. AI理论知识基础(26)-机器学习常见损失函数, 共轭梯度法(2)

    机器学习常见损失函数, 共轭梯度法(2)

  8. 机器学习(part3)--机器学习与数据挖掘的区别

    学习笔记,仅供参考,有错必纠 机器学习与数据挖掘的区别 机器学习的定义 目前被广泛采用的机器学习的定义是"利用经验来 改善计算机系统自身的性能".由于"经验"在 ...

  9. 机器学习-代价函数(单变量线性回归)

    机器学习-代价函数(单变量线性回归) 2.1函数表示 因为只含有一个特征/输入变量,所以这样的问题叫作单变量线性回归问题. 回归问题: 构建一个模型,也许是条直线,从这个数据模型上看,如果你朋友的房子 ...

最新文章

  1. 问题 B: 小鱼的搭配购物(并查集+01背包)
  2. 读书笔记——信息的表示与处理
  3. Vue.js项目去除url中的#/ - 解决篇
  4. 怎样用计算机kd求平均数,利用pandas和numpy计算表中每一列的均值
  5. Turbo码:3GPP TS 36.212
  6. javaweb功能模块如何合理设计_设计行业如何合理税筹
  7. 后台图片验证码功能是什么实现的
  8. mysql enterprise backup 使用_mysql enterprise backup入门使用
  9. 深度之眼_Week2 编程作业1_梯度下降
  10. MVC学习Day01
  11. 打开文件管理器_【教程】模组管理器3.1食用指南
  12. 第11期-通过斗鱼直播爬取弹幕
  13. LARGE SCALE IMAGE COMPLETION VIA CO-MODULATED
  14. spring mvc
  15. 饥荒服务器文档,建立饥荒服务器
  16. DiscuzX 数据字典 超详细
  17. 一代传奇SIFT算法专利到期
  18. Codevs 打鼹鼠
  19. Failed to start LSB: Bring up/down networking
  20. ubuntu16.04 源码安装gazebo8.2时显示SDF version >=5.0.0. Required for reading and writing SDF files 解决方法

热门文章

  1. Android集成百度人脸识别(一)基础版SDK
  2. 做了8年前端,感谢那些优秀的后端,陪伴我工作,教会我成长
  3. 实现高德地图签到签退(uniapp)
  4. 计算机科学着重于理论和算法,大学计算机-中国大学mooc-题库零氪
  5. 7-4 单链表基本操作
  6. 图像处理笔记4-霍夫变换直线检测、圆检测
  7. Graph Neural Networks with Generated Parameters for Relation Extraction
  8. 6张图!5G六大细分领域产业图谱
  9. 蓝桥杯_横向打印二叉树
  10. C++ 之 linux环境下路径操作