神经网络中的交叉熵成本函数

机器算法验证 神经网络 错误传播
2022-03-16 15:30:15

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

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

我们到底在总结什么?当然,它超过,但不会随改变。所有的输入甚至在等式上方的段落中定义为所有之和的函数。xyaxxaawx

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


编辑:

我的想法是否正确

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

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

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

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

2个回答

下面是我如何表达交叉熵损失

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,并且输出激活通常通过使用逻辑 sigmoid限制在开区间 (0, 1) 内。例如,对于单层网络(相当于逻辑回归),激活将由,其中是权重矩阵,是偏置向量。对于多层,您可以将激活函数扩展为其中是第一层的权重矩阵和偏置,y(i)a(x)

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

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

我们到底在总结什么?

该教程实际上非常明确:

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

教程(Eqn. 57)中给出的原始单神经元成本函数在下标,应该暗示这一点。对于单个神经元的情况,除了训练示例外,没有什么可以求和的,因为我们在计算时已经对所有输入权重求和:xΣa

a=jwjxj.


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

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

在这种情况下,总和会在训练示例 ( 's)中的单个神经元上运行xj