Answers:
的交叉熵公式考虑在两个分布,,真实分布,和,所估计的分布,在离散的变量定义和由下式给出
对于神经网络,计算独立于以下内容:
使用了哪种层。
使用哪种类型的激活-尽管许多激活将与计算不兼容,因为它们的输出不能解释为概率(即,它们的输出为负,大于1或不等于1)。Softmax通常用于多类分类,因为它可以保证良好的概率分布函数。
对于神经网络,通常会看到以是地面真实向量,而(或直接从最后一层输出直接获取的其他值)形式写的方程式为估计。仅举一个例子,它看起来像这样:ÿ
其中是矢量点积。
您的示例地面真理赋予第一个值所有概率,而其他值均为零,因此我们可以忽略它们,而仅使用估算值中的匹配项ÿ
评论要点
这就是说,无论预测为还是?损失都是相同的。
是的,这是多类对数损失的关键功能,它仅奖励/惩罚正确类别的概率。该值与剩余概率在不正确类别之间的分配方式无关。
您经常会看到在所有示例中平均的该方程式是成本函数。在描述中并不总是严格遵循它,但是损失函数通常是较低级别,描述单个实例或组件如何确定错误值,而成本函数是较高级别,并且描述了如何评估整个系统的优化性。基于大小为数据集的多类日志丢失的成本函数可能看起来像这样:
许多实现都需要将基本真理值进行一次热编码(使用单个true类),因为这样可以进行一些额外的优化。但是,原则上,如果不是这种情况,则可以计算并优化交叉熵损失。
尼尔的答案是正确的。但是,我认为重要的是要指出,尽管损失不取决于不正确类别之间的分布(仅取决于正确类别与其余类别之间的分布),但是此损失函数的梯度确实会根据不同方式对不正确类别产生不同的影响他们错了。因此,当您在机器学习中使用交叉输入时,您将为[0.1 0.5 0.1 0.1 0.2]和[0.1 0.6 0.1 0.1 0.1]改变权重。这是因为正确类别的分数被所有其他类别的分数归一化以将其变为概率。
让我们从理解信息论中的熵开始:假设您想传达一串字母“ aaaaaaaa”。您可以轻松地将其设置为8 *“ a”。现在,使用另一个字符串“ jteikfqa”。是否有压缩的方式来传达这个字串?没有那里。我们可以说第二个字符串的熵更大,因为要传达它,我们需要更多的“位”信息。
这个类比也适用于概率。如果您有一组项目(例如水果),则这些水果的二进制编码为,其中n是水果的数量。对于8个水果,您需要3位,依此类推。看待这个另一种方法是,给定某人随机选择一个水果的概率是1/8,则减少不确定性,如果选择了水果是,其为3。更具体地,
顾名思义,在“交叉”熵中,我们关注于解释两个不同概率分布中的差异所需的位数。最好的情况是两个分布都是相同的,在这种情况下,需要的位数最少,即简单的熵。用数学术语来说
底线:用外行的话来说,可以将交叉熵视为两个概率分布之间的距离,以解释该距离所需的信息量(位)为单位。这是定义损失的一种好方法,这种损失随着概率向量彼此越来越接近而降低。
问题在于概率来自“复杂”函数,该函数将其他输出合并到给定值中。结果是相互关联的,因此通过这种方式,我们不是针对实际结果而推导,而是针对每个结果,根据最后激活函数(softmax)的所有输入推导。
我在deepnotes.io/softmax-crossentropy上找到了一个很好的描述,其中作者表明实际的导数是。
在gombru.github.io/2018/05/23/cross_entropy_loss上的其他简洁描述。
我认为使用简单的S形作为最后一个激活层将导致批准答案,但是使用softmax表示不同的答案。