5

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

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

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

3)神经元的输出应该是什么?a) 介于 0 和 1 之间的值?b) 0 还是 1?c) 别的?一些 ANN 的神经元输出在 -1 和 1 之间吗(我想我已经看到了?)

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

5) 将标量输入值编码为二进制有缺点吗?看起来有点奇怪,一个大数可能有一个 1 作为最后一位,而那个数字+1 有一个 0 作为最后一位?是否有更连续的编码值的方法效果更好?

对不起,很多问题..感谢任何答案。谢谢!

4

1 回答 1

7
  1. 归一化值对训练有很大帮助,因此请确保您的输入在短范围内。范围应该是多少取决于任务:有时,变量自然是布尔值,但是当它们是实值时,您最好将它们缩放并将它们居中为零。否则,网络将花时间学习数据的均值和方差,这是一种浪费,因为有非常快速、非常简单的算法。

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

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

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

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

于 2013-09-12T08:39:11.673 回答