【问题标题】:How neural net extract features神经网络如何提取特征
【发布时间】:2016-11-29 10:22:19
【问题描述】:

我是神经网络的新手。我在很多平台上都遵循了一些教程,但有一件事我不明白。

在一个简单的多层感知器中: 我们有输入层、本例的隐藏层(与输入层具有相同数量的神经元)和一个具有一个单元的输出层。

我们随机初始化隐藏层中单元的权重,但在一个较小的值范围内。 现在,输入层与隐藏层完全连接。 所以隐藏层中的每个单元都将接收相同的参数。他们将如何从彼此中提取不同的特征?

感谢解释!

【问题讨论】:

  • 当使用反向传播时,节点的对称性被破坏(因为随机初始化)并且它们获得不同的梯度。
  • 感谢您的回答!但是,我没有得到的是:在我阅读的不同论文中,init 的随机范围似乎非常小。 (0 到 0,05) 真的足以打破对称性吗?并且是否存在比反向传播使 2 个或更多单位权重再次对称的风险?再次感谢!
  • 够了,但始终取决于您的数据和架构。这是一个调整参数。查看反向传播以了解重新创建对称性的概率。也许两个权重会在某个时候分享他们的权重,但他们很可能在未来再次发生变化。
  • 好的,非常感谢!这非常有帮助!我要检查反向传播概率! :) 再次感谢,祝您有美好的一天! :)

标签: machine-learning neural-network tensorflow deep-learning keras


【解决方案1】:

我们随机初始化隐藏层中单元的权重,但在 一系列小值。现在,输入层与 隐藏层。所以隐藏层中的每个单元都会收到 相同的参数。他们将如何提取不同的特征 彼此?

实际上每个神经元不会有相同的值。要获得隐藏层的激活,您使用矩阵方程Wx + b 在这种情况下,W 是形状的权重矩阵(隐藏大小,输入大小)。 x 是形状隐藏层的输入向量(Input Size),b 是形状的偏差(Hidden Size)。这会激活形状(隐藏大小)。因此,虽然每个隐藏的神经元都会“看到”相同的 x 向量,但它会将 x 的点积与自己的随机行向量相加,并添加自己的随机偏差,这将赋予该神经元不同的值。 W矩阵和b向量中包含的值是经过训练和优化的。由于他们有不同的起点,他们最终会通过梯度体面学习不同的特征。

【讨论】:

  • 嗨!那么,偏见也在改变吗?根据我阅读的内容,我一直认为它保持为 1 。如果偏差会改变,为什么不将其初始化为 0 而不是 1 ?如果它发生了变化,那么与第一次迭代相比,偏差 == 0 不重要吗?我猜这也是改变它的反向传播? (而且由于我使用的是 Keras,所以我不必玩弄偏见,因为它被隐藏起来以专注于模型......)
  • 如果它没有改变,那么有偏见没有多大意义。然而,由于权重矩阵是随机的,因此它可以是常数初始化。你只需要一些东西来打破对称性。
  • 谢谢!只是最后一个问题.. 那么,偏差的初始值是 1 还是 0 还是随机的都没有关系?因为在所有示例中,它都被初始化为 1。这有什么原因吗?
  • 从理论上来说没有。初始化实际上很重要,因为它们会影响速度/训练能力。假设您将偏差设为 1000 并使用了 sigmoid 激活。无论输入如何,这都会使所有激活饱和,并迫使梯度非常接近于零。由于浮点数的精度有限,这可能永远不会优化。查看权重初始化部分。 cs231n.github.io/neural-networks-2
  • 这真是太棒了!再次感谢!
猜你喜欢
  • 2012-07-10
  • 2017-04-22
  • 1970-01-01
  • 2018-01-22
  • 2017-05-30
  • 2012-01-12
  • 1970-01-01
  • 2011-07-30
  • 2020-04-29
相关资源
最近更新 更多