直到知道我只使用神经网络对单个输出进行分类之前,我为每个类设置了一个输出神经元,并检查哪个神经元具有最高/最低的激活率。
我要做的是检测一个模式,而不是输出单个值(类或激活值),而是输出多个值。例如,
[0,5 0,5 0,5] -> [0,5 0,5 0,5]
[1 1 1] -> [1 1 1]
[2 2 2] -> [-1 -1 -1]所以,我想知道的是,我是否可以使用一个具有3个输出的网络,而不是检查激活,而是使用所有的输出作为输出模式?
发布于 2014-10-20 21:59:12
是的,你可以使用具有多个输出的神经网络。基本上,你有两种可能这样做:
同样,以下是三个输出的基本过程:
然而,如前所述,这只是多种优化方法中的一种可能性。
编辑:以上是简单的一维反向传播过程的扩展.这里的自由度是
(i)输入的处理顺序和误差项的计算,及
(ii)隐藏神经元的更新。
上面描述的变体将tha数据转换为[x_1, ..., x_N, y_1, ..., y_N, z_1, ..., z_N],并在每一步之后进行更新(这种更新方案通常称为Gauss)。另一个极端是存储错误项,并在处理完完整集后只更新一次。(Gauss版本的收敛速度通常要快一些)。
另一个变体--可能与标准反向传播最相似--是处理每个数据点的三个维度,即[x_1, y_1, z_1, ..., x_N, y_N, z_N],并在每个数据池之后更新(即每第三次迭代之后)。实际上,一个是进行一个三维梯度更新(由于梯度的线性性质,它可以做三次一维误差评估)。
总之,我们可以看到有很多种可能的优化方案,它们都是非常相似的,并且都可能导致相当相似的结果。
作为另一种选择,您也可以考虑使用极限学习机器。在这里,你必须只训练输出权重,而你却随机选择输入权重。由此,多响应问题自然分解为三个一维优化问题.
https://stackoverflow.com/questions/26474500
复制相似问题