为什么多层网络中的神经元需要多个输入连接?

人工智能 神经网络 反向传播 建筑学 致密层
2021-11-14 06:42:01

例如,如果我有以下架构:

3层神经网络

  • 隐藏层中的每个神经元与输入层中的每个神经元都有一个连接。
  • 3 x 1 输入矩阵和 4 x 3 权重矩阵(对于反向传播,我们当然有转换后的版本 3 x 4)

但直到现在,我仍然不明白神经元有 3 个输入(在示例的隐藏层中)的意义何在。如果我只调整 3 个连接中的一个权重,它会以同样的方式工作。

但在当前情况下,信息流只分布在几个“渠道”上,但有什么意义呢?

通过反向传播,在某些情况下,权重只是根据误差按比例调整。

还是只是这样做,因为这样你就可以更好地数学实现一切(使用矩阵乘法等)?

要么我的问题很愚蠢,要么我的想法有误并假设了错误的想法。有人可以帮我解释一下吗?

例如,在 tensorflow 操场上,我切断了连接(通过将权重设置为 0),它只是通过稍微改变另一个仍然存在的连接来补偿它: 张量流图像

3个回答

我能想到几个原因,尽管我还没有阅读过关于为什么这样做的明确描述。人们可能刚开始这样做是因为它最合乎逻辑,并且尝试尝试您减少连接的方法的人已经看到性能受到影响,因此没有进行任何更改。

第一个原因是,如果您允许一层的所有节点连接到下一层的所有其他节点,网络将优化不必要的连接。本质上,这些连接的权重将变为 0。然而,这并不意味着您可以修剪这些连接,因为在此局部最小值中忽略它们可能是最佳的,但稍后保留这些连接可能非常重要。因此,您永远无法真正知道一层和下一层之间的连接是否必要,因此最好保留它以防它有助于提高网络性能。

第二个原因是它在数学上更简单。网络是专门实现的,因此很容易应用一系列矩阵计算来执行所有计算。修剪连接意味着:

  • 矩阵必须包含 0 个值,浪费计算时间
  • 必须编写自定义脚本来计算此网络结构,这在现实世界中可能需要很长时间,因为它必须使用诸如 CUDA 之类的东西来实现(在 GPU 级别上,这使得它非常复杂)

总的来说,让所有节点在层之间连接要简单得多,而不是在每个节点上连接。

它没有。

这是否有用是另一回事,但是只需一个输入值就可以完成您拥有的神经网络。也许您选择照片的一个像素并根据该像素的强度进行分类(我想我假设是一张黑白照片),或者您有一些方法可以将整张照片压缩成一个值总结照片。那么隐藏层中的每个神经元只有一个输入连接。

同样,您可以决定隐藏层中的顶部神经元应该只有一个输入连接;只需放下另外两个。

同样,这可能不会给出有用的结果,但它们仍然是神经网络。

如果你采用稍微不同的观点,那么这种静态类型的神经网络只是一个带参数的大函数,是的=F(X,), 训练网络的任务是这个函数对数据集的非线性拟合。

也就是说,训练网络是为了减少所有的残差是的ķ-F(Xķ,)同时。这是一种平衡行为,只是调整一个权重来调整一个残差通常会使其他一些残差恶化。即使考虑到这一点,一次调整一个变量的方法通常比同时沿某个梯度或牛顿方向调整所有变量的方法慢得多。

通常的反向传播算法对残差平方和的梯度下降法进行序列化。更好的变体通过对该平方和的 Hessean 的某种估计或遵循 Gauß-Newton 方法的思想将其改进为类似牛顿的方法。