2016.3.24 交叉熵

交叉熵

俗话说,千里之行,始于足下,在我踢球的时候,教练总是让我们练习基本功,其实感觉基本功才是重点,如果基本功不好,那么再怎么厉害的战术都不能够执行出来,基本功是发挥的基本和关键,对于网络来说,基本的感觉或者说基本的对于网络的数学感觉也是基本功。

那么对于一个简单的feedforward的普通的全链接的神经网络什么是基本功呢?我认为首先需要对激活函数有一个感觉,尤其是对于sigmoid,这是非线性的一个里程碑式的函数。对于这个重要问题,一定要深入理解各项基本特性。简单描述一下,这个函数再0附近的时候具有较大的导数,在+-4.6外面就基本上是一个恒定的0或者1,导数也接近0.

在网络中训练时会遇到这么一个问题,就是训练慢的情况,为什么慢是个问题呢?对于人类来说,如果错误越大,那么印象越深刻,学习就越快,但是对于我们这个神经元来说,如果错误非常大,产生的一个结果就是偏导数非常小,这会导致的结果就是我们的算法在反向传播的时候进行偏导数的计算的时候乘上一个非常小的数,学习就会逐渐变慢。这当然是我们不想要的,因为我错得那么厉害,那么纯粹,居然降低了学习得速度,这反直觉得东西肯定是可以修改的。

所以简单的使用sigmoid+quad loss可能得修改一下。

所以这么一条逻辑链条就是 学习的效果是对于wb的更新速度,wb的更新速度是根据损失函数c对于w和b求偏导数来决定的,偏导数会乘上一个sigmoid的导函数,这个函数在远离0的地方会变得非常接近0,导致反向传播的时候导函数逐渐变小。

所以我们引出这么个交叉熵,交叉熵有两个很好的性质,满足我们对于损失函数的要求,第一个就是损失是大于0的,第二个就是结果越正确,损失越小。有了这么个东西,那我们来看看能干啥吧。很神奇的东西是这个东西在反向传播的时候居然能够把万恶之源,sigmoid导函数消除掉。这是为什么呢?

实际上在我们使用的时候会有个导函数这一项,我们假设自己想要的是a-y这一项,但是多了一个sigmoid ’,于是我们打算去掉这个东西,然后就让我们的算法能够去掉这个,就能够看到代数的结果很自然的就会产生交叉熵的结果。

这个东西只能够二分类吗?因为我们最早是在二分类中推导出了这个东西,实际上不尽然,用推导出的结果来计算可以发现,如果我们想要回归的结果也是在0-1中,通过求导可以得到,当神经网络输出相同结果的时候损失最小。

通过公式推导出的这个东西在信息论中有理论的支持。

在minist数据集中的应用会发现能够显著降低错误率。

不过有这么一点需要注意的就是,交叉熵配套的是sigmoid激活函数,这样能够消除掉反向传播中产生的不想要的sigmoid ‘,对于激活函数是relu等,还是用比较纯粹的quad loss比较好。

所以对于不同的激活函数要用不同的loss来进行计算。

和这个很类似的还有一个东西,叫做softmax,为什么需要这个东西呢?对于二分类问题,我们一个小神经元的0和1就能代表,但是对于多个分类的问题呢,我们必须要用一个向量来代表分类的结果。那么对于这个分类向量,分类的结果应该可以表示成一个概率分布。所以这时候这一层的激活就不再是sigmoid,也就是对于神经元的输入进行一个确定的输出值得函数计算,而是求一个分布。通过归一化求一个分布。而对应的损失函数就是一个log-likelihood loss。

使用这个loss的目的也是为了使得反向传播的过程当中能够最后一层的loss很纯粹的变成a-y。

所以总的来说,就是不同的激活使用不同的loss能保证最后一层的错误都是a-y,这样就避免了最后一层的反向传播受到激活函数的影响。

如果y和x是线性关系,那么可以采用quad
loss;如果是sigmoid,那么采用交叉熵;如果是softmax ,那么采用log-likelihood函数。为一个目的就是最后一层的delta变成a-y。这样能够保证错误在最后一层是正确的向前传播的。

那么接下来的三个问题:

1.    对于sigmoid函数,在反向传播的时候会出现saturate neural的现象,然后把原来的quad loss换成cross-entropy loss之后就能够在计算中消除掉sigmoid ‘求导这一项,但是只是在最后一层啊,前面怎么办?

2.    为啥softmax要用一个指数函数,而不是采用sigmoid的函数值求分布啊?

3.    对于不同的分类来说,分类的序号有没有什么要求使得网络能够尽可能的效果比较好,因为毕竟网络是数值上计算的,有三个样本,如果(1,1)(2,2)(3,3),那么训练这个网络要比(1,1)(2,3)(3,2)要容易,所以有没有什么对于这个相关的结论啊,感觉标序号会不会也有黑科技可以研究啊

时间: 2024-07-30 17:22:52

2016.3.24 交叉熵的相关文章

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

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

【机器学习基础】熵、KL散度、交叉熵

熵(entropy).KL 散度(Kullback-Leibler (KL) divergence)和交叉熵(cross-entropy)在机器学习的很多地方会用到.比如在决策树模型使用信息增益来选择一个最佳的划分,使得熵下降最大:深度学习模型最后一层使用 softmax 激活函数后,我们也常使用交叉熵来计算两个分布的"距离".KL散度和交叉熵很像,都可以衡量两个分布之间的差异,相互之间可以转化. 1. 如何量化信息? 信息论是应用数学的一个分支,主要研究的是对一个信号包含信息的多少进

Kaldi的交叉熵正则化

xent_regularize, Cross Entropy Regularize nnet3/nnet-discriminative-trainning.cc:109 void NnetDiscriminativeTrainer::ProcessOutputs() 交叉熵正则化,即帧平滑 <解读深度学习:语音识别实践>8.2.3 帧平滑 当正确地进行词图补偿后,进行几次序列鉴别性训练的迭代后,就会很快出现过拟合.即,几次鉴别性训练迭代后,模型计算出的帧准确率(帧的后验概率)显著变差(比原模型

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

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

交叉熵

http://www.cnblogs.com/ljy2013/p/6432269.html 作者:Noriko Oshima链接:https://www.zhihu.com/question/41252833/answer/108777563来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 熵的本质是香农信息量()的期望. 现有关于样本集的2个概率分布p和q,其中p为真实分布,q非真实分布.按照真实分布p来衡量识别一个样本的所需要的编码长度的期望(即平均编码长度)为

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

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

如何通俗的解释交叉熵与相对熵

[From] https://www.zhihu.com/question/41252833/answer/108777563 熵的本质是香农信息量()的期望. 现有关于样本集的2个概率分布p和q,其中p为真实分布,q非真实分布.按照真实分布p来衡量识别一个样本的所需要的编码长度的期望(即平均编码长度)为:H(p)=.如果使用错误分布q来表示来自真实分布p的平均编码长度,则应该是:H(p,q)=.因为用q来编码的样本来自分布p,所以期望H(p,q)中概率是p(i).H(p,q)我们称之为"交叉熵

交叉熵代价函数

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

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

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