神经网络中的交叉熵代价函数


10

我正在看本教程中发现的交叉熵成本函数:

C=1nx[ylna+(1y)ln(1a)]

我们到底要总结什么?当然,过,但和不改变。所有的的被输入到所述一个。 甚至在方程以上段落中,因为所有的和的函数来定义的和的。 xyaxxaawx

另外,定义为输入到该特定神经元的数量,对吗?它被表述为“训练数据项的总数”n


编辑:

我认为正确吗

C=1nx[ylna+(1y)ln(1a)]

将是整个网络的成本函数,而

C=[ylna+(1y)ln(1a)]

单个神经元的成本是多少?总和不应该超过每个输出神经元吗?

Answers:


14

这是我如何表示交叉熵损失

L(X,Y)=1ni=1ny(i)lna(x(i))+(1y(i))ln(1a(x(i)))

这里,是训练数据集中的输入示例集合,是这些输入示例的相应标签集。的表示的神经网络给定的输入的输出。X={x(1),,x(n)}Y={y(1),,y(n)}a(x)x

每一个都为0或1,并且通常通过使用logistic Sigmoid将输出激活限制为打开间隔(0,1)。例如,对于单层网络(等效于逻辑回归),激活将由,其中是a权重矩阵,是偏差向量。对于多层,可以将激活函数扩展为,其中和是第一层的权重矩阵和偏差,而y(i)a(x)

a(x)=11+eWxb
Wb
a(x)=11+eWz(x)bz(x)=11+eVxc
Vcz(x) 是网络中隐藏层的激活。

我使用(i)上标来表示示例,因为我发现它在Andrew Ng的机器学习课程中非常有效;有时人们将示例表示为矩阵中的列或行,但是想法仍然相同。


谢谢!因此,这将为我们提供所有样本中整个网络误差的一个数字。对于反向传播,我需要在最后一层中通过权重矩阵找到该函数的偏导数。我该怎么办?
Adam12344

进行反向传播是一整串蠕虫!您链接到的页面上有计算派生类等的描述,并且在stackoverflow和此站点上有很多关于backprop的问题。尝试环顾四周,然后发布一个专门关于反向传播的单独问题。
lmjohns3

这可能对您了解反向支撑很有用,它会通过带有四层神经网络的反向支撑穿过神经支撑,在细节上会产生交叉熵损失:) cooksashimi.wordpress.com/2017/05/06/…–
YellowPillow

5

我们到底要总结什么?

该教程实际上非常明确:

...是训练数据的总数,所有训​​练输入的总和...n

教程(公式57)中给出的原始单个神经元代价函数在下也带有下标,这可能暗示了这一点。对于单个神经元情况,除了训练示例外,没有其他要总结的内容,因为在计算时,我们已经对所有输入权重进行了求和:Σ xΣa

a=jwjxj.

在同一教程的稍后部分,尼尔森给出了多层,多神经元网络(方程63)的成本函数的表达式:

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

在这种情况下,总和遍历训练示例( 's)和输出层( 's)中的单个神经元。xj


感谢您提供的见解,其中一个问题是:您定义的后者不是绝对交叉熵,对吗?
Tommaso Guerrini

他在教程中还说过“ y有时可以取介于0到1之间的值”,但是他给出的函数全部在y上,并且没有激活输入。我们如何在st函数中实现中间值?
Feras

在Nielsen的教程中,该教程显示了一个单层感知器,a = \ sigma(\ sum_ {j} w_j x_j),因为您的输出层具有Sigmoid激活功能,而不是= \ sum_ {j} w_j x_j
ARAT
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.