《神经网络和深度学习》系列文章二十二:交叉熵的意义是什么?它又是怎么来的?

文章出处: Michael Nielsen的《Neural Network and Deep Learning》,本节译者:哈工大SCIR本科生 袁建华。


目录

1、使用神经网络识别手写数字

2、反向传播算法是如何工作的

3、改进神经网络的学习方法

  • 改进神经网络的学习方式
  • 交叉熵损失函数
  • 使用交叉熵损失来分类MNIST数字集
  • 交叉熵意味着什么?它从哪里来?
  • Softmax
  • 过拟合和正则化
  • 正则化
  • 为什么正则化能够降低过拟合?
  • 其他正则化技术
  • 参数初始化
  • 重温手写数字识别:代码
  • 如何选择神经网络的超参数
  • 其他技术

4、神经网络能够计算任意函数的视觉证明

5、为什么深度神经网络的训练是困难的

6、深度学习


我们之前对交叉熵的讨论集中在代数分析和实际实现。这些工作看起来是足够了,但也留下一些待回答的更宽泛的概念问题,比如:交叉熵的意义是什么?有没有直观方式去思考交叉熵?还有,我们怎么才能在一开始的时候就想到交叉熵?


我们从最后一个问题入手:什么会促使我们在第一时间想到交叉熵?假设我们发现了之前描述过的学习减缓问题,并且明白根源是公式(55)和公式(56)中的项。在仔细观察了这两个公式之后,我们可能会猜想——是否可以通过选择一个代价函数使得项消失。那样的话,一个单一训练样本的代价就会满足:


(71) 

(72) 


如果我们能选择某个代价函数使得这个等式成立,那么它们将会直接使得如下直觉成立:一开始的错误越大,神经元学习得越快。同时它们也消除了学习减缓的问题。实际上,如果我们从这些等式着手,凭借我们的数学嗅觉,就能够推导出交叉熵的公式。注意由链式法则,我们有:


(73) 


运用最后一个等式变成:


(74) 


和等式(72)对比,我们得到:


(75) 


将这个表达式对求积分有:


(76) 


常数部分为某个值。这是单个训练样本对代价的贡献。想得到完整的代价函数,我们必须在所有样本上平均一下,得到:


(77) 


其中,常数部分是每个训练样本各自常数的平均值。因而我们可以看出,公式(71)和(72)唯一确定了交叉熵的形式,以及一个整体的常数项。交叉熵不是奇迹般凭空产生的,而是我们能够以一种简单自然的方式发现的。


那交叉熵的直观意义是什么?我们又该如何理解它呢?深入地解释这个问题会扯得很远,我就不细说了。但值得一提的是,在信息论领域是有一种标准方式来解释交叉熵的。大致说来,想法就是:交叉熵是对惊讶的测度。特别地,我们的神经元尝试去计算函数。但是,取而代之的是,它计算函数。假设我们把当作时神经元估计的概率,的正确值为时估计的概率。然后,交叉熵衡量的是我们在了解的真实值时的平均「惊讶」程度。当输出是我们期望的值,我们得到低程度的惊讶;当输出不是我们期望的,我们得到高程度的惊讶。当然,我还没准确说明「惊讶」是什么意思,所以这个措辞听起来很空洞。但事实上是有一种精确的信息理论方法来阐述惊讶所表达的意思的。不幸的是,我并不知晓网络上是否能够找到有关该主题的出色、简短、内自含的讨论。但是如果你想深究下去,维基百科上有一个能让你正确入门的简要概述。细节部分可通过研读有关Kraft不等式的材料来补充,这些材料在Cover and Thomas所写的有关信息论的书籍的第五章中可以找到。

问题

我们已经详尽地讨论了当我们使用平方代价来训练的神经网络时,会产生输出神经元饱和、学习速率下降的问题。另一个会妨碍学习的因素是等式(61)中项。因为该项的存在,当输入接近于0时,对应的权重会学习得很慢。解释一下,为什么我们不能通过选择一个好的代价函数来消除项。


本文来源于哈工大SCIR

原文链接点击即可跳转

入门
暂无评论
暂无评论~
返回顶部