首页 文章

神经网络如何计算权重之和?

提问于
浏览
1

我一直在阅读神经网络,并试图理解它背后的基本理论 . 我有点困惑,想知道是否有人可以帮助我 .

我理解神经网络的方式如下:

输入层隐藏层输出图层,其中每个图层都有节点或神经元 . 每个神经元从前一层中的所有神经元获得输入,并且还发送到下一层中的每个神经元 . 然后据说神经元计算权重之和,然后利用激活函数来激发与否(或发送0到1之间的数字) .

令我困惑的是它如何计算权重的总和?

Simple Neural Network with one hidden layer

在上图中,我创建了一个简单的神经网络,并在他的讲座(Youtube)中称为Andrew Ng .

因此,在第1层中取神经元a1:这将从第0层获得值a1和a2,以及相应的权重和偏差,它们将在第1层的向量b1和w1中收集 .

然后总和是从下面的公式计算出来的吗? z = w1 * x b?这通常适用于所有神经网络,还是只有一种类型的NN?第1层中的z1也是矢量吗?是激活函数使它成为标量吗?

我知道有不同的激活函数可以计算最终的标量值,它会与权重和偏差一起发送到下一层神经元 . 但我想我对重量和偏差非常困惑,它们来自何处/被计算等 .

我希望我的解释不会太混乱,因为我很困惑 .

4 回答

  • 0

    操作z1 = w1 * x b仅适用于完全连接的层 . 例如,Convolutional Neural Networks使用不同的操作 .

    我认为这种符号有点混乱 . 第1层中a1的值是标量,为此,您需要将激活函数应用于另一个标量z1,可以计算z1 = w1 * x b . 这里,w1不是矩阵,而是去神经元a1的权重向量 .

    但是,这不是通常的计算方法,因为这不利用矢量化 . 一般来说,你想做z = W * x b,其中W是所有权重的矩阵,z是一个向量,然后按元素方式应用激活函数,获得该层的激活向量,a .

  • 0

    看这个播放列表 . 您将学习如何实现您的nn .

    Shiffmann Coding Train Neurol NetworkFeedforward Algorithm Part 1

  • 0

    您可以将权重视为连接神经元的箭头 . 对于图层中的每个神经元,您对下一层中的每个神经元都有一个权重 . 这意味着您可以在两个图层之间使用一个矩阵来存储权重 .

    要计算下一层神经元的值,请执行以下操作:

    对于第二层中的每个节点,计算 z1[0] = w1*a1[0] + w2*a2[0] + w3*a3[0] . 这将是一个标量值 . 现在你可以应用sigmoid函数来压缩标量(但它仍然是一个标量) .

    我们可以使用矢量化实现并一次计算整个图层的所有值,而不是为每个神经元执行此操作:

    z[1] = a[0] * layer1_weights
    a[1] = sigmoid(z[1])
    
  • 2

    让我们将这里的所有数字都视为矩阵 . 您的输入a [0]是1x3矩阵,即列向量 . 现在,正如您所提到的,没有图层的激活功能,图层输出将是[1] = a [0] .w [01] b [1],其中w [01]权重介于第0层和第1层之间层 . 类似地,b [1]是添加到第一层的偏差 .

    因此,对于矩阵乘法,您的w [01]将是3x4矩阵,偏差将是1x4矩阵 . 如果让我们说你之后有一个sigmoid激活,在这种情况下,sigmoid函数将应用于你的a [1]以获得该层的最终输出 . 使用矩阵来理解NN的操作总是更容易!希望有所帮助!

相关问题