天天看点

神经网络和深度学习(6)-- 损失函数、代价函数和目标函数

神经网络和深度学习
上一篇 主目录 下一篇

文章结构

    • 1.损失函数,代价函数,目标函数
    • 2. 损失函数
    • 3. 代价函数
      • 3.1 为什么需要代价函数
      • 3.2 代价函数的形式
    • 4. 目标函数

【前言】

这下函数是算法好坏的评价标准之一。

所讨论的事件是数据实例的估计值和真值之间的差异的一些函数。简而言之,就是用来评估预测值相对于真实值的损失情况。在某种参数的取值情况下,使得某代价函数的取值最小,这些参数也就是我们进行神经网络训练的目标。

以下关于损失函数和代价函数等的函数形式只是个例,并不唯一。

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

函数名称 定义
损失函数(Loss Function ) 是定义在单个样本上的,算的是一个样本的误差
代价函数(Cost Function ) 是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均
目标函数(Object Function) 最终需要优化的函数。等于经验风险+结构风险(也就是Cost Function + 正则化项)
  • 关于目标函数和代价函数的区别还有一种通俗的区别:

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

2. 损失函数

损失函数又叫做误差函数,用来衡量算法的运行情况,Loss function:L(yhat,y).

我们通过这个 L称为的损失函数,来衡量预测输出值和实际值有多接近。一般我们用预 测值和实际值的平方差或者它们平方差的一半,但是通常在逻辑回归中我们不这么做,因为 当我们在学习逻辑回归参数的时候,会发现我们的优化目标不是凸优化,只能找到多个局部 最优值,梯度下降法很可能找不到全局最优值,虽然平方差是一个不错的损失函数,但是我 们在逻辑回归模型中会定义另外一个损失函数。 我们在逻辑回归中用到的损失函数是:

神经网络和深度学习(6)-- 损失函数、代价函数和目标函数

其中,

神经网络和深度学习(6)-- 损失函数、代价函数和目标函数

为什么要用这个函数作为逻辑损失函数?当我们使用平方误差作为损失函数的时候,你 会想要让这个误差尽可能地小,对于这个逻辑回归损失函数,我们也想让它尽可能地小,为 了更好地理解这个损失函数怎么起作用,我们举两个例子:

神经网络和深度学习(6)-- 损失函数、代价函数和目标函数
  • 从以上中我们知道,

    1)如果 y等于 1,为了使L变小,我们就通过调整参数(w,b等)尽可能让yhat变大,那么预测值yhat就越接近于真实值y;

    2)如果 y等于 0,为了使L变小,我们就通过调整参数(w,b等)尽可能让yhat变小,那么预测值yhat就越接近于真实值y

损失函数是在单个训练样本中定义的,它 衡量的是算法在单个训练样本中表现如何,为了衡量算法在全部训练样本上的表现如何,我 们需要定义一个算法的代价函数,算法的代价函数是对 ݉ 个样本的损失函数求和然后除以 ݉m,具体见代价函数部分。

3. 代价函数

3.1 为什么需要代价函数

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

注意:代价函数衡量的是算法在全部训练样本上的表现如何

3.2 代价函数的形式

我们知道,损失函数衡量的是算法在单个训练样本中表现,而代价函数衡量算法在全部训练样本上的表现。损失函数的形式在前面已经说明,相应的可以得到代价函数的形式:

神经网络和深度学习(6)-- 损失函数、代价函数和目标函数

损失函数只适用于像这样的单个训练样本,而代价函数是参数的总代价,所以在训练逻 辑回归模型时候,我们需要找到合适的 w和 ܾb,来让代价函数 J的总代价降到最低。

如何进行训练以找到合适的 w和 ܾb呢?这需要用到梯度下降算法,详情参见:《神经网络和深度学习(7)-- 梯度下降算法》

4. 目标函数

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

简单地说,目标函数中考虑的项不仅仅是包括了代价函数,还会考虑其他因素的影响,例如某目标函数的形式为:

神经网络和深度学习(6)-- 损失函数、代价函数和目标函数

在上式中,L是代价函数,属于经验风险;此外还有结构风险,定义的函数为J(f).

经验风险是基于训练使用的数据集的,可能会导致过度拟合的现象,这时我们就需要考虑结果上的风险,于是定义了一个叫做J(f)的函数来对所得到的函数的结构进行风险评估。目标函数就是综合考虑了以上的不同因素而得到的函数。进一步说,代价函数只是基于训练的数据集而进行的评估,而目标函数考虑了代价函数和代价函数模型结构而进行综合的评估。

以上均基于个人理解,如果不正确的地方欢迎指教,您可以通过邮箱或下方评论等方式与我取得联系,不胜感激。

神经网络和深度学习系列笔记: 传送门

继续阅读