我有一个神经网络,我需要估计它的平均超平面,它表示所有训练示例的平均误差。培训示例可以一次全部展示。例如,如果我有一个可变函数,那么我需要找到代表函数平均值的线。对于我的应用程序,不需要精确的平均值,启发式方法也可以。

在所有训练示例中,每个输出神经元的平均输出。哪里:

t_j' = sum_i_1_to_N (t_i_j)/N


训练示例的每个输出神经元的平均输出(如上计算)与每个示例的实际目标输出之间的平方差之和:

Avg Error = 1/2 * sum_i_1_to_N (sum_j_1_C (t_j' - t_i_j))^2)


这是一种启发式方法,但是我想知道如何在特定的训练集上保持Avg Error不变。

这样有效吗?有没有更好的方法来找到固定训练集的神经网络的平均值(种类)?

最佳答案

在不了解您的问题的情况下,我会拒绝。


平均错误= 1/2 * sum_i_1_to_N(sum_j_1_C(t_j'-t_i_j))^ 2)


以上看起来更像是标准偏差而不是平均值。那不会告诉你太多,考虑一下:

Error = sum_i_1_to_N (sum_j_1_C ( ABS(c_j' - t_i_j) ))

(其中c_j是j的正确输出)

现在,您正在寻找具有计算平均值目的的廉价计算(您可以将所有数字除以N以获得实际平均值,但是为什么要打扰呢?)。 RMS如下所示:

ErrorRMS = sum_i_1_to_N (sum_j_1_C ( ABS(e_j' - t_i_j)^2 ))

是否需要均方根值或平均值取决于您的问题,但通常不那么重要(均方根值较低的集合的均值通常会较低,因此您大多在发展同一件事) 。

请注意,ErrorErrorRMS实际上不是平均值或RMS值,但它们的排名相同,而且价格便宜。

除此之外,假设您有一个具有多个输出的神经网络,并且需要经过多个步骤才能运行(从而产生您正在谈论的错误超平面),那么我首先要提出的问题结构建议也有所不同。

您的神经网络应具有多个输出的唯一原因是,如果只能相互理解输出。否则,您应该训练N神经网络,而不是1个具有N输出的神经网络。话虽如此,如果您无法在一个步骤中产生一个错误来描述一个网络的所有输出,也许您应该将其划分为多个网络?然后,您可以简单地对测试网络的样本进行RMS或误差的直接平均值。

这有意义吗?

关于neural-network - 估计神经网络的平均误差超平面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15113660/

10-12 17:08