我对人工神经网络(ANN)非常感兴趣,并对其进行了深入研究。但有一件事我似乎无法弄明白。
在评估应调整多少重量以减少ANN所考虑的误差时:
*
*
但最后一点怎么回事呢?我知道它应该代表人工神经网络对这个特定重量有多大的信心,但错误不应该是重量应该调整多少的关键?如果输出错误,为什么我会关心我的ANN对这个重量的信心?
我从this帖子中得到了我的见解(以及我的困惑)。
答案 0 :(得分:1)
关于某些事情如何运作的直觉总的来说是正确的,但具体而言,它们可能并不正确。这是你对错误函数的直觉的情况,这是不正确的。让我们记住错误是如何构建的,单个神经元的输出是:
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@TableGenerator(name = "my_sequence", initialValue = 1000, allocationSize = 10)
private long id;
delta是激活函数。误差,假设均方误差,只是神经元输出和标签之间的平方差的总和:
o(x, w) = delta(sum w_j x_j + b)
要使用渐变下降,您可以得到误差的导数,即:
e(w) = sum (o(x, w) - l)^2
这取决于o的导数,而链规则是:
e'(w) = sum 2 * (o(x, w) - l) * o'(x, w)
汇总错误的衍生物:
o'(x, w) = delta'(sum w_j x_j + b) * x_j
因此,当我们得到误差(差异)时,在神经元输出(减去激活)时评估的激活的导数是神经元输入的倍。 请注意,我可能犯了一两个错误,但整体结构是正确的。最后,由于链规则的应用,出现了案例中激活(sigmoid)的导数。