二次代价函数、交叉熵(cross-entropy)、对数似然代价函数(log-likelihood cost)

二次代价函数

$C = \frac{1} {2n} \sum_{x_1,...x_n} \|y(x)-a^L(x) \|^2$

其中,C表示代价函数,x表示样本,y表示实际值,a表示输出值,n表示样本的总数;整个的意思就是把n个y-a的平方累加起来,再除以2求一下均值。

为简单起见,先看下 一个样本 的情况,此时二次代价函数为:$C = \frac{(y-a)^2} {2}$

$a=\sigma(z), z=\sum w_j*x_j +b$  ,其中a就代表激活函数的输出值,这个符号$\sigma$代表sigmoid函数将变量映射到0-1的$S$型光滑的曲线,z是上一层神经元信号的总和

假如我们使用梯度下降发(Gradient descent)来调整权值参数的大小,权值w和权值b的梯度推到如下(求导数):

$\frac {\partial C} {\partial w} = (a-y)\sigma‘ (z)x$    $\frac {\partial C} {\partial b} = (a-y)\sigma‘ (z)$

其中,z表示神经元的输入,$\sigma$表示激活函数sigmoid。可以看出,w和b的梯度跟激活函数的梯度成正比,激活函数的梯度越大,w和b的大小调整越快,训练收敛的就越快。

假设我们激活函数输出的值目标是收敛到1,A点离目标较远,梯度较大,权值调整比较大。B点为0.98离目标比较近,梯度比较小,权值调整比较小,调整方案合理。

假设我们激活函数输出的值目标是收敛到0,A点离目标较远,梯度较大,权值调整比较大。B点为0.98离目标比较远,梯度比较小,权值调整比较小,调整方案不合理,B点要经过非常长的时间才会收敛到0,而且B点很可能成为不收敛的点。

交叉墒代价函数(cross-entropy)

由于上边的问题,我们换一种思路,我们不改变激活函数,而是改变代价函数,改用交叉墒代价函数:

$C = -\frac{1}{n} \sum_{x_1,,,x_n}, [y\ln a + (1-y) \ln(1-a)]$

其中,C表示代价函数,x表示样本,y表示实际值,a表示输出值,n表示样本的总数。

$a=\sigma(z), z=\sum w_j*x_j +b $ $ \sigma‘(z) = \sigma(z)(1-\sigma (x))$ sigmod函数的导数比较好求,这也是为什么大家用sigmoid做激活函数的原因,接下来我们看一下求导的过程

懒得敲了,直接贴个图过来,之后闲了在敲一遍,上边就是求导的推导过程,从最后的式子可以看出:权值w和偏执值b的调整与$\sigma ‘(z)$无关,另外,梯度公式中的$\sigma (z)-y$表示输出值与实际值放入误差。所以当误差越大时,梯度就越大,参数w和b的调整就越快,训练的速度也就越快。

总结:当输出神经元是线性的,那么二次代价函数就是一种合适的选择。如果输出神经元是S型函数,那么比较适合交叉墒代价函数。

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

对数似然函数常用来作为softmax回归的代价函数,如果输出层神经元是sigmoid函数,可以使用交叉墒代价函数。而深度学习中更普遍的做法是将softmax作为最后一层,此时常用的代价函数是对数似然代价函数。

对数似然代价函数与softmax的组合和交叉墒与sigmoid函数的组合非常相似。对数似然代价函数在二分类时可以化简为交叉墒代价函数的形式。

在TensorFlow中用:

tf.nn.sigmoid_cross_entropy_with_logits()来表示跟sigmoid搭配使用的交叉墒。

tf.nn.softmax_cross_entropy_with_logits()来表示跟softmax搭配使用的交叉墒。

原文地址:https://www.cnblogs.com/go-ahead-wsg/p/12346744.html

时间: 2024-10-10 12:02:05

二次代价函数、交叉熵(cross-entropy)、对数似然代价函数(log-likelihood cost)的相关文章

最大似然估计 (Maximum Likelihood Estimation), 交叉熵 (Cross Entropy) 与深度神经网络

最近在看深度学习的"花书" (也就是Ian Goodfellow那本了),第五章机器学习基础部分的解释很精华,对比PRML少了很多复杂的推理,比较适合闲暇的时候翻开看看.今天准备写一写很多童鞋们w未必完全理解的最大似然估计的部分. 单纯从原理上来说,最大似然估计并不是一个非常难以理解的东西.最大似然估计不过就是评估模型好坏的方式,它是很多种不同评估方式中的一种.未来准备写一写最大似然估计与它的好朋友们,比如说贝叶斯估计 (Beyasian Estimation), 最大后验估计(Max

深度学习中交叉熵和KL散度和最大似然估计之间的关系

机器学习的面试题中经常会被问到交叉熵(cross entropy)和最大似然估计(MLE)或者KL散度有什么关系,查了一些资料发现优化这3个东西其实是等价的. 熵和交叉熵 提到交叉熵就需要了解下信息论中熵的定义.信息论认为: 确定的事件没有信息,随机事件包含最多的信息. 事件信息的定义为:\(I(x)=-log(P(x))\):而熵就是描述信息量:\(H(x)=E_{x\sim P}[I(x)]\),也就是\(H(x)=E_{x\sim P}[-log(P(x))]=-\Sigma_xP(x)l

神经网络代价函数与交叉熵

在此我们以MSE作为代价函数: 其中, C表示代价 函数 ,x表示样本, y表示实际值, 表示实际值, 表示实际值, a表示输出值, 表示输出值, n表示样本的总数.为简单起见 表示样本的总数.为简单起见 表示样本的总数. a=σ(z), z=∑W j*X j+bσ() 是激活函数 使用梯度下降法(Gradient descent)来调整权值参数的大小,权值w和偏置b的梯度推导如下: 其中,z表示神经元的输入,σ表示激活函数.w和b的梯度跟激活函数的梯度成正比,激活函数的梯度越大,w和b的大小调

交叉熵 相关链接

TensorFlow四种Cross Entropy算法实现和应用 对比两个函数tf.nn.softmax_cross_entropy_with_logits和tf.nn.sparse_softmax_cross_entropy_with_logits 从神经网络视角看均方误差与交叉熵作为损失函数时的共同点 交叉熵代价函数 交叉熵代价函数(损失函数)及其求导推导 简单易懂的softmax交叉熵损失函数求导 如何通俗的解释交叉熵与相对熵? https://www.cnblogs.com/virede

为什么用交叉熵代替二次代价函数

交叉熵代价函数(Cross-entropy cost function)是用来衡量人工神经网络(ANN)的预测值与实际值的一种方式.与二次代价函数相比,它能更有效地促进ANN的训练.在介绍交叉熵代价函数之前,本文先简要介绍二次代价函数,以及其存在的不足. 1. 二次代价函数的不足 ANN的设计目的之一是为了使机器可以像人一样学习知识.人在学习分析新事物时,当发现自己犯的错误越大时,改正的力度就越大.比如投篮:当运动员发现自己的投篮方向离正确方向越远,那么他调整的投篮角度就应该越大,篮球就更容易投

交叉熵代价函数

本文是<Neural networks and deep learning>概览 中第三章的一部分,讲machine learning算法中用得很多的交叉熵代价函数. 1.从方差代价函数说起 代价函数经常用方差代价函数(即采用均方误差MSE),比如对于一个神经元(单输入单输出,sigmoid函数),定义其代价函数为: 其中y是我们期望的输出,a为神经元的实际输出[ a=σ(z), where z=wx+b ]. 在训练神经网络过程中,我们通过梯度下降算法来更新w和b,因此需要计算代价函数对w和

信息量,熵,交叉熵,相对熵与代价函数

本文将介绍信息量,熵,交叉熵,相对熵的定义,以及它们与机器学习算法中代价函数的定义的联系.转载请保留原文链接:http://www.cnblogs.com/llhthinker/p/7287029.html 1. 信息量 信息的量化计算: 解释如下: 信息量的大小应该可以衡量事件发生的“惊讶程度”或不确定性: 如果有?告诉我们?个相当不可能的事件发?了,我们收到的信息要多于我们被告知某个很可能发?的事件发?时收到的信息.如果我们知道某件事情?定会发?,那么我们就不会接收到信息. 也就是说,信息量

BP神经网络——交叉熵作代价函数

Sigmoid函数 当神经元的输出接近 1时,曲线变得相当平,即σ′(z)的值会很小,进而也就使?C/?w和?C/?b会非常小.造成学习缓慢,下面有一个二次代价函数的cost变化图,epoch从15到50变化很小. 引入交叉熵代价函数 针对上述问题,希望对输出层选择一个不包含sigmoid的权值更新,使得 由链式法则,得到 由σ′(z) = σ(z)(1? σ(z))以及σ(z)=a,可以将上式转换成 对方程进行关于a的积分,可得 对样本进行平均之后就是下面的交叉熵代价函数 对比之前的输出层de

交叉熵代价函数(作用及公式推导)

转自:http://blog.csdn.net/u014313009/article/details/51043064,感谢分享! 交叉熵代价函数(Cross-entropy cost function)是用来衡量人工神经网络(ANN)的预测值与实际值的一种方式.与二次代价函数相比,它能更有效地促进ANN的训练.在介绍交叉熵代价函数之前,本文先简要介绍二次代价函数,以及其存在的不足. 1. 二次代价函数的不足 ANN的设计目的之一是为了使机器可以像人一样学习知识.人在学习分析新事物时,当发现自己