使用 SGD 的神经网络能否仅更改许多具有反向传播的输出中的一个?

Can a Neural Network using SGD change only one output of many with backprop?

假设我有一个具有以下结构的神经网络:network([256, 100, 4]),其中有 256 个输入神经元、100 个隐藏神经元和 4 个输出神经元。该网络使用 sigmoid 函数作为它的激活函数,输出神经元 return 一个在 [0:1].

范围内的值

对于每个 epoch,我都可以知道四个输出中的一个是对还是错。例如,如果网络给我 [1, 0, 1, 0],但我知道第一个输出应该是 0 并且我知道 nothing 其他三个输出。

有没有一种方法可以训练网络,以便只有第一个输出受到影响?

我的直觉告诉我,使用目标设置为 [0,0,1,0] 的反向传播可以解决我的问题,但我也很好奇 [0, .5, .5, .5]更有意义。

是的,您可以定义一个训练集来提供 [0, 0, 1, 0] 的输出,但是,神经网络可能会在看不见的集合中产生错误。反向传播算法可以为您做到这一点,您可以使用验证集生成验证神经网络(提供结果的概括)来最小化此错误,正如我在 上解释的那样。

问题是(实际上这不是什么大问题但是)它不会提供您想要的准确结果,您必须解释它并定义正确的输出。假设您正在等待 [0, 0, 1, 0] 这样的结果,神经网络为您提供 [0.1278, 0.1315, 0.981554, 0.2102]。如您所见,第三个输出比另一个更接近 1,因此您可以转换输出。

既然你把01之间的集合归一化,把以后的信息归一化在神经网络上测试,应该不会有问题。您可以将低于 .5 的输出值视为 0,将低于 0.5 的 greater/equals 视为 1。在其他情况下,您可以将更大的值视为 1.

My intuition tells me that using backprop with the target set as [0,0,1,0] will solve my problem, but I'm also curious if [0, .5, .5, .5] makes more sense.

您可以使用正切双曲线作为神经网络的激活函数,并对 -11 之间的数据进行归一化,因此搜索 space 输出值可以更多spaced 比 sigmoid。

如果你的结果接近 [0, 0, 1, 0],你仍然会比这个值更接近,因为如果你为神经网络传递一个新模式,模型可以改变以搜索这个新模式并且它仍然会有更接近的值。也许,您可以使用 prunning methods.

为您的神经网络模型搜索新架构并获得更好的结果

你应该做的是在反向传播阶段将未知输出的梯度设置为零。您不应将标签本身设置为任何值,因为如果带有未知标签的样本数量很大,您将使网络输出偏向于该数字。例如,如果您设置 [0, .5, .5, .5] 并且未知与已知的比率可能是 20:1,则网络可能会简单地输出一个常量 [.5,.5,.5, .5]