交叉熵损失函数的不同定义不等效?

机器算法验证 机器学习 神经网络 损失函数 交叉熵
2022-03-22 23:55:30

在这个问题:不同定义的交叉熵损失函数中,提出了两种不同的交叉熵损失函数定义:

C=1nxj(yjlnajL)
C=1nxj(yjlnajL+(1yj)ln(1ajL)).

我提到的问题的答案中的分析表明,对于二元分类(j=2),假设并且是一个单热向量,它认为: jaj=1y

C=1nxj=12(yjlnaj)=1nxy1lna1+y2lna2=1nxy1lna1+(1y1)ln(1a1).

但是,我看不出这个分析如何表明这两个定义在假设的情况下是等价的,因为在第二个定义中,如果我们取,它会产生:j=2

C=1nx[y1lna1L+(1y1)ln(1a1L)+y2lna2L+(1y2)ln(1a2L)].

此外,我想证明这些定义对于任意数量的输出神经元都是等价的,而不仅仅是 2 个神经元。

1个回答

您对二分类定义的扩展需要一点小心。如果有两个以上的类,我们必须规定在这种情况下,并且即预测的类成员都是正的并且总和为 1。那么 one-hot encoding 提供了中的一个,其余的是ai=1ai0i,yi=10

然后我们可以将多类交叉熵写为

C=1nxiyiln(ai)

请注意,one-hot 编码方案使除一个之外的所有产品都为 0 。向量中的每一个进行一次评估在 one-hot 编码下恰好具有一个非零值。结果是您的表达式产生的结果是(由于对的限制)。这可以直接使用满足我们要求aiyyi2Caiyi,ai

基本上没有任何后果,因为相同的参数值会出现最优值,但我建议使用与标准实践一致的定义。