Cross Entropy


1.交叉熵(Cross entropy)

这里 是p的熵,是KL散度(Kullback–Leibler divergence)。

特别的,在信息论中,D(P||Q)表示当用概率分布Q来拟合真实分布P时,产生的信息损耗,其中P表示真实分布,Q表示P的拟合分布。

KL散度定义:

交叉熵定义:

推导:

KL

2.二次代价函数

二次代价函数的形式如下:

其中,C代表代价,x代表样本,y表示实际值,a表示输出值,n表示样本的总数。为了简单说明,以一个样本为例:

其中是激活函数,。对于w和b的梯度推导如下:

从上式可以看出,w和b的梯度和激活函数的梯度成正比,激活函数的梯度越大,w和b的大小调整的就越快,训练收敛的就越快。而神经网络常用的激活函数为sigmoid函数,该激活函数的曲线图下图所示: sigmoid

这明显有悖于我们的初衷,这使得z的值比较大或者比较小的时候,w和b的更新速度回非常的慢。

3.交叉熵代价函数

由于sigmoid激活函数有许多优点,所以我们打算把二次代价函数换成交叉熵代价函数:

其中,x表示样本,n表示样本的总数,y为期望的输出,a为神经元实际输出[是激活函数,]。那么,重新计算参数w的梯度:

w的梯度公式中原来的被消掉了;另外该梯度公式中的表示输出值与真实值之间的误差。因此,当误差越大,梯度就越大,参数w调整的越快。同理可得,b的梯度为:

3.log-likelihood cost

对数似然函数也常用来作为softmax回归的代价函数。如果最后一层(也就是输出)是通过sigmoid函数,就采用交叉熵代价函数。

而再深度学习中更普遍的做法是将softmax作为最后一层,此时常用的代价函数式log-likelihood cost。

In fact, it’s useful to think of a softmax output layer with log-likelihood cost as being quite similar to a sigmoid output layer with cross-entropy cost。

其实这两者是一致的,logistic回归用的就是sigmoid函数,softmax回归是logistic回归的多类别推广。log-likelihood代价函数在二类别时就可以化简为交叉熵代价函数的形式。具体可以参考UFLDL教程

以上内容来自于以下几个网站:

维基百科

博客1

博客2

知乎1