神经元的不同权重函数

时间:2017-05-16 07:59:52

标签: machine-learning tensorflow neural-network keras activation-function

我一直在TensorFlow玩弄并制作了一个通用的完全连接模型。

在每一层我都在申请

sigmoid(WX + B)
每个人都知道,效果很好。

然后我开始搞乱在每一层应用的功能,并发现

等功能
sigmoid(U(X^2) + WX + B)

在优化时也能正常工作。

改变这种内在功能有什么作用?是否有一个功能应用程序,其中更改内部函数将改善模型的学习,或者任何组合输入和一些权重的函数都具有相同的学习能力,无论学习什么数据?

我知道许多其他模型的神经网络(例如卷积网,循环网,残留网等)所以我不是在寻找不同类型网的解释(除非当然,某种类型网直接应用我所说的)。对一个简单的完全连接场景非常感兴趣。

2 个答案:

答案 0 :(得分:1)

理论上,两种方法具有完全相同的潜力,并且在给定足够的层和训练时间/数据的情况下可以达到任何连续目标函数。使用sigmoid(U(X^2) + WX + B)可以使每一层更智能,但也更难学习(特别是没有过度拟合),因此如果您使用它,您应该在网络中放置更少的图层以避免过度拟合。

总的来说,在第一种方法或第二种方法之间选择较少的层次主要是基于经验:对于你的问题,一个人可能比另一个更好,但理论上不可能知道哪个。如果你的目标函数几乎是多项式的,那么第二种解决方案可能更好。在其他情况下,如果您不想训练具有不同网络规模的两个版本,我会选择第一个解决方案,原因如下:

  • 涉及更多线性函数,这使得计算渐变更容易,因此可能更快
  • 最近几年的研究似乎表明,深层网络通常比实际上层次更大的浅层网络更好(尽管并非在所有情况下)
  • 这是常见的做法

就总运行时间而言,我不知道哪个会更好(考虑到您在第二个选项中使用较少的图层)。

答案 1 :(得分:1)

所以基本上考虑你的问题有三个重要因素:

  1. 计算复杂性和稳定性计算您的功能(理论上)应该花费更多时间,因为至少还需要两个操作。我认为在这种情况下,它不是问题,而是例如比较sigmoid你需要计算exp和除法的方法比计算relu更加昂贵 - 这是relu变得如此受欢迎的原因之一。此外 - 由于平方函数发散得非常快,而sigmoid的饱和度是众所周知的问题 - 您可能也会因消失梯度和计算上/下溢而受到更严重的影响。
  2. 参数数量:在第二种方法中,每个单元都有一个额外的设置参数。如果您的模型很小 - 这不是一个大问题 - 但只要神经网络用于真正的内存和耗时的任务 - 这可能是第二次激活的巨大缺点。这也部分是为什么一个非常简单的函数更适合用于深度学习的原因。
  3. 表达能力 - 这是您的第二个功能实际可以提供帮助的地方。不仅因为square使您的功能更加复杂。这也是因为实际上你的函数是渐近钟形的,这可以使它更好地捕捉本地的依赖性。这可能是sigmoidrelu的巨大缺点,因为这两个函数都会使每个单元在预测中具有全局性,而钟形函数倾向于支持更多本地依赖项而不影响位于兴趣区域之外的数据点。在实践中 - 通常通过应用真正深度和广泛的拓扑来解决这个问题 - 在巨大的数据集的情况下 - 通常平衡单个单元的影响。