深度学习基础之代价函数

深度学习基础之代价函数在机器学习和深度学习中,代价函数非常重要。所以十分有必要弄个清楚代价函数相关的概念和性质。本文介绍了什么是代价函数,然后列举了常用的三种代价函数,并对其中的二次代价函数和交叉熵代价函数进行了比较。

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



在机器学习和深度学习中,经常听到代价函数这个词,到底什么是代价函数?

一、代价函数概述

机器学习的模型分为能量模型和概率模型,知道概率分布的可以直接用概率模型进行建模,比如贝叶斯分类器,不知道的就用能量模型,比如支持向量机。因为一个系统稳定的过程就是能量逐渐减小的过程。

简单理解,代价函数也就是通常建立的能量方程的一种,在机器学习中用来衡量预测值和真实值之间的误差,越小越好。一般来说一个函数有解析解和数值解,解析解就是我们数学上可以用公式算出来的解,数值解是一种近似解,在解析解不存在或者工程实现比较复杂的时候,用例如梯度下降这些方法,迭代得到一个效果还可以接受的解。所以要求代价函数对参数可微。

代价函数、损失函数、目标函数并不一样,这一点后边再介绍,这篇文章就先只介绍代价函数。

损失函数:计算的是一个样本的误差

代价函数:是整个训练集上所有样本误差的平均

目标函数:代价函数 + 正则化项

在实际中,损失函数和代价函数是同一个东西,目标函数是一个与他们相关但更广的概念。

代价函数(Cost Function):在机器学习中,代价函数作用于整个训练集,是整个样本集的平均误差,对所有损失函数值的平均。

代价函数的作用:

  • 1.为了得到训练逻辑回归模型的参数,需要一个代价函数,通过训练代价函数来得到参数。
  • 2.用于找到最优解的目标函数。

二、代价函数的原理

在回归问题中,通过代价函数来求解最优解,常用的是平方误差代价函数。有如下假设函数:
h ( x ) = A + B x h(x)=A+Bx h(x)=A+Bx
假设函数中有A和B两个参数,当参数发生变化时,假设函数状态也会随着变化。 如下图所示
在这里插入图片描述
想要拟合图中的离散点,我们需要尽可能找到最优的 A A A B B B来使这条直线更能代表所有数据。如何找到最优解呢,这就需要使用代价函数来求解,以平方误差代价函数为例,假设函数为 h ( x ) = θ 0 x h(x)=\theta_0x h(x)=θ0x

平方误差代价函数的主要思想就是将实际数据给出的值与拟合出的线的对应值做差,求出拟合出的直线与实际的差距。在实际应用中,为了避免因个别极端数据产生的影响,采用类似方差再取二分之一的方式来减小个别数据的影响。因此,引出代价函数:

J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 J(\theta _0,\theta _1)=\frac{1}{2m}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})^2 J(θ0,θ1)=2m1i=1m(h(x(i))y(i))2

最优解即为代价函数的最小值 m i n J ( θ 0 , θ 1 ) minJ(\theta _0,\theta _1) minJ(θ0,θ1)。如果是 1 个参数,代价函数一般通过二维曲线便可直观看出。如果是 2 个参数,代价函数通过三维图像可看出效果,参数越多,越复杂。

当参数为 2 个时,代价函数是三维图像。

在这里插入图片描述
代价函数的要求:

  • 1.非负性,所以目标就是最小化代价函数。
  • 2.当真实输出 a a a与期望输出 y y y接近的时候,代价函数接近于0。(比如 y = 0 y=0 y=0 a ~ 0 a~0 a0 y = 1 y=1 y=1,a~1时,代价函数都接近0)。

代价函数非负的原因:

  • 目标函数存在一个下界,在优化过程当中,如果优化算法能够使目标函数不断减小,根据单调有界准则,这个优化算法就能证明是收敛有效的。
  • 只要设计的目标函数有下界,基本上都可以,代价函数非负更为方便。

三、常见的代价函数

1. 二次代价函数(quadratic cost)

J = 1 2 n ∑ i = 1 ∣ ∣ y ( x ) − a L ( x ) ∣ ∣ 2 J=\frac{1}{2n}\sum_{i=1}\left | \right |y(x)-a^{L}(x)\left | \right |^2 J=2n1i=1y(x)aL(x)2

其中, J J J 表示代价函数, x x x表示样本, y y y表示实际值, a a a表示输出值, n n n表示样本的总数。 使用一个样本为例简单说明,此时二次代价函数为:

J = ( y − a ) 2 2 J=\frac{(y-a)^2}{2} J=2(ya)2

假如使用梯度下降法来调整权值参数的大小,权值 w w w和偏置 b b b的梯度推 导如下:

∂ J ∂ w = ( a − y ) δ ′ ( z ) x \frac{\partial J}{\partial w}=(a-y){\delta }'(z)x wJ=(ay)δ(z)x
∂ J ∂ b = ( a − y ) δ ′ ( z ) \frac{\partial J}{\partial b}=(a-y){\delta }'(z) bJ=(ay)δ(z)

其中, z z z表示神经元的输入, δ \delta δ 表示激活函数。权值 w w w和偏置 b b b的梯度跟激活函数的梯度成正比,激活函数的梯度越大,权值 w w w和偏置 b b b的大小调整得越快,训练收敛得就越快。

2. 交叉熵代价函数(cross-entropy)

交叉熵代价函数:

J = − 1 n ∑ i = 1 [ y l n a + ( 1 − y ) l n ( 1 − a ) ] J=-\frac{1}{n}\sum_{i=1}[ ylna+(1-y)ln(1-a)] J=n1i=1[ylna+(1y)ln(1a)]

其中, J J J 表示代价函数, x x x表示样本, y y y 表示实际值, a a a表示输出值, n n n表示样本的总数。 权值 w w w和偏置 b b b的梯度推导如下:
∂ J ∂ w j = 1 n ∑ x x j ( δ ( x ) − y ) \frac{\partial J}{\partial w_j}=\frac{1}{n}\sum_{x}x_j(\delta(x)-y) wjJ=n1xxj(δ(x)y)
∂ J ∂ b = 1 n ∑ x ( δ ( x ) − y ) \frac{\partial J}{\partial b}=\frac{1}{n}\sum_{x}(\delta(x)-y) bJ=n1x(δ(x)y)

当误差越大时,梯度就越大,权值 w w w和偏置 b b b调整就越快,训练的速度也就越快。 二次代价函数适合输出神经元是线性的情况,交叉熵代价函数适合输出神经元是 S S S 型函 数的情况。

3. 对数似然代价函数(log-likelihood cost)

对数释然函数常用来作为 softmax 回归的代价函数。深度学习中普遍的做法是将 softmax 作为最后一层,此时常用的代价函数是对数释然代价函数。

Softmax回归中将x分类为类别j的概率为:
在这里插入图片描述
或者:
在这里插入图片描述
对数似然代价函数与 softmax 的组合和交叉熵与 sigmoid 函数的组合非常相似。对数释然 代价函数在二分类时可以化简为交叉熵代价函数的形式:
在这里插入图片描述
其中, y k y_k yk表示第 k k k个神经元的输出值, a k a_k ak表示第 k k k个神经元对应的真实值,取值为 0 0 0 1 1 1

简单理解一下这个代价函数的含义:在网络中输入一个样本,那么只有一个神经元对应了该样本的正确类别;若这个神经元输出的概率值越高,则按照以上的代价函数公式,其产生的代价就越小;反之,则产生的代价就越高。

四、二次代价函数与交叉熵代价函数比较

1.当我们用sigmoid函数作为神经元的激活函数时,最好使用交叉熵代价函数来替代方差代价函数。

  • 因为使用二次代价函数时,偏导数受激活函数的导数影响,sigmoid 函数导数在输出接近 0 和 1 时非常小,会导致一 些实例在刚开始训练时学习得非常慢。而使用交叉熵代价函数时,,权重学习的速度受到 ( δ ( z ) − y ) (\delta(z)-y) (δ(z)y)的影响,更大的误差,就有更快的学习速度,避免了二次代价函数方程中因 δ ′ ( z ) {\delta }'(z) δ(z)
    导致的学习缓慢的情况。

2.交叉熵函数的形式是 − [ y l n a + ( 1 − y ) l n ( 1 − a ) ] −[ylna+(1−y)ln(1−a)] [ylna+(1y)ln(1a)]。而不是 − [ a l n y + ( 1 − a ) l n ( 1 − y ) ] −[alny+(1−a)ln(1−y)] [alny+(1a)ln(1y)]
是因为当期望输出的 y = 0 y=0 y=0时, l n y lny lny没有意义;当期望 y = 1 y=1 y=1时, l n ( 1 − y ) ln(1-y) ln(1y)没有意义。而因为a是sigmoid函数的实际输出,永远不会等于0或1,只会无限接近于0或者1,因此不存在这个问题。

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

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

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

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

(0)
blank

相关推荐

  • 谷歌chrome浏览器被hao123 360等劫持问题解决方案

    谷歌chrome浏览器被hao123 360等劫持问题解决方案1.先chrome://version能看到下面这一串“C:\ProgramFiles\Google\Chrome\Application\chrome.exe”–flag-switches-begin–flag-switches-end–origin-trial-disabled-features=SecurePaymentConfirmationhttp://hao.360.com/?src=lm&ls=n4e1d7e8c992.复制上面这一串3.打开4.在标记处粘贴刚

  • 高亮显示代码编辑器控件【转】

    高亮显示代码编辑器控件【转】http://www.cnblogs.com/wudingfeng/archive/2009/09/11/1564903.htmlhttps://github.com/icsharpcode/SharpDevelop可以实现像VisualStudio的窗口停靠、拖拽等功能。Mono.Cecil.dll这个文件是用来反编译.NET生产的IL的。icsharpcode.texteditor….

  • hashmap or array

    hashmap or array

  • 平稳和非平稳信号_非平稳信号处理

    平稳和非平稳信号_非平稳信号处理平稳和非平稳都是针对随机信号说的。平稳信号是指分布参数或者分布律随时间不发生变化的信号。非平稳信号是指分布参数或者分布律随时间发生变化的信号。常见的平稳信号:一段短的语音信号(10~30ms)常见的非平稳信号:一段长的语音信号,一首歌等给出一个信号(可以随意选取一个.mp3文件,命名为m.mp3),对其进行平稳性分析:%信号的平稳性分析clc,clear;fs=44100;s=a…

    2022年10月28日
  • 智慧职教云Java题库_云课堂智慧职教java职业证书题库答案

    智慧职教云Java题库_云课堂智慧职教java职业证书题库答案云课堂智慧职教java职业证书题库答案更多相关问题老子说“我有一颗愚人之心”,“若婴儿未孩”。下面哪一个选项最近此义:“大多数人都认为X是真的,所以X是真的。”属于()的论证方式。“大学语文”课程的前身是“大一国文”课程。()权益法下核算的长期股权投资,会导致投资企业投资收益发生增减变动的是( )“大众创业,万众创新”号召是在哪一年提出的?“大弦嘈嘈如急雨,小弦切切如私语。嘈嘈切切错杂弹,大珠小…

  • svn里update以后还是有红色的感叹号怎么办

    svn里update以后还是有红色的感叹号怎么办

    2021年10月31日

发表回复

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

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