神经网络节点是否有标准输入,重量和输出值?

时间:2013-09-12 08:29:02

标签: neural-network

所以我开始学习神经网络,但我发现很难找出基础知识。感谢任何人提供的任何帮助..

1)是否有应输入神经元的标准值?例如,如果一个神经元有5个传入连接,那么每个连接是否应该提供a)0到1之间的连续值? b)0或1? c)还有别的吗?

2)如果你使用tanh的激活函数,这意味着如果点积输入达到约3(tanh(3)= .995),神经元将开始输出1。如果我有一个20个隐藏节点的层,这意味着权重需要很小 - 大约.05标记 - 如果我们要避免最大化激活功能?那么我们为什么要将起始权重设置在-1和1之间呢?最好从非常小的地方开始它们?

3)神经元的输出应该是多少? a)介于0和1之间的值? b)0或1? c)还有别的吗?有些神经网络的神经元输出介于-1和1之间(我想我已经看过了吗?)

4)似乎输入层和输出层的规则发生了变化?对于输入层,我猜你必须将输入数据编码为合适的格式。这总是意味着编码为0到1之间的值吗?同样对于输出层,大概你必须按下你的输出值到有用的东西?因此,如果您的ANN输出0到1之间的连续值,并且您想要YES或NO,那么您可以制定一个规则,即< 0.5为NO且> 0.5为YES。那是怎么回事?

5)将标量输入值编码为二进制是否有缺点?似乎有点奇怪,大数字可能有一个1作为最后一位,但是这个数字+ 1最后一位有0?是否有更连续的编码值更好的方法?

抱歉,很多问题..感谢任何答案。 谢谢!

1 个答案:

答案 0 :(得分:7)

  1. 标准化值有助于培训,因此请确保您的输入在短距离内。范围应该取决于任务:有时,变量是自然的布尔值,但是当它们是真值时,你最好将它们缩放并将它们置于零。否则,网络将花时间学习数据的均值和方差,这是浪费,因为有非常快速,非常简单的算法。

  2. 如果您开始使用较大的重量,训练行为是不可预测的。我从来没有听过有人说初始权重应该在[-1,1]中;常见的配方,AFAIK,是使用平均0和方差1的小随机高斯(你在Matlab或NumPy中从randn得到的)。

  3. 取决于激活功能。对于隐藏层神经元,tanh是一种常见的激活函数,它的范围为[-1,1]。对于输出层,适当的激活功能取决于任务。对于回归,您需要线性(无界)激活,而对于概率估计和分类,您需要使用范围(0,1)激活logistic或softmax。

  4. 这是问题1和3的重复。

  5. 我真的不明白你为什么要这样做。浮点数有什么问题吗?