algorithm - 当我们有两个输出时的反向传播算法

标签 algorithm neural-network

我有一个大问题,我想用 2 个神经元输出实现我的神经网络。诸如此类:

Example

而且我想使用反向传播算法,但我不知道如何计算误差,因为我有一个包含 2 个神经元的输出,而当我在输出上只有一个神经元时,很容易使用反向传播算法来自一个退出错误,但有两个神经元?我考虑单独计算每个输出的误差,但随后我必须分别计算 2 种情况的反向传播,我得到“两个不同的隐藏层”(对于隐藏层中的每个神经元,我有两种情况的权重)。也许有人知道一些更好的解决方案?

如有任何帮助,我将不胜感激。

最佳答案

从逻辑上讲,第一层权重应该为您提供对预测两个输出有用的表示(隐藏层)。因此,该层应该根据两个输出中的错误进行更新。但是下一层的权重对于每个输出节点都是分开的,所以应该得到单独的权重更新。

因此,在第二层权重上,将根据各自的输出单独计算权重更新。对于第一层权重,我会先计算从每个输出分别反向传播的误差导数,然后简单地将它们组合起来得到最终的误差导数。然后应用学习率来获得权重更新。

注意输出的动态范围。例如,如果一个输出产生范围 [0,10] 的某个实际值,而另一个输出产生范围 [-1000,1000] 的值,那么您的更新将由范围较大的那个主导。你可以

  • 添加一个预处理步骤,将您的数据集更改为在两个输出中具有相同的动态范围。此外,添加一个后处理步骤以恢复实际范围。
  • 为每个输出制定误差函数,以便它们产生相同动态范围的误差值。

关于algorithm - 当我们有两个输出时的反向传播算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22879726/

相关文章:

machine-learning - 微调具有更大输入尺寸的模型

python - 添加 Lambda 层后无法合并 keras 模型

r - R 中的 for 循环问题,复制 Gram-Schmidt 正交归一化算法

r - 制作突变瀑布图的算法(用 R 编码)

python - 修改 Levenshtein-Distance 以忽略顺序

deep-learning - Pytorch : different behaviours in GAN training with different, 但概念上等效,代码

neural-network - 如何使用权重在Keras神经网络中手动预测数据

java - 未知的递归算法

algorithm - 鲜为人知的字符串相似性指标

python - 为什么不这样训练 GAN?