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

Machine learning 神经网络如何计算权重之和?,machine-learning,neural-network,Machine Learning,Neural Network,我一直在阅读有关神经网络的一般书籍,并试图理解其背后的基本理论。我有点困惑,想知道是否有人能帮我 我对神经网络的理解如下: 输入层+隐藏层+输出层,每个层都有节点或神经元。每个神经元从上一层的所有神经元获得输入,并发送到下一层的每个神经元。然后,据说神经元计算权重之和,然后利用激活函数来触发或不触发(或发送一个介于0和1之间的数字) 让我困惑的是它是如何计算权重之和的 在上面的图中,我创建了一个简单的神经网络,并在Andrew Ng的讲课中调用输入(YouTube)。 以第1层的神经元a1为例

我一直在阅读有关神经网络的一般书籍,并试图理解其背后的基本理论。我有点困惑,想知道是否有人能帮我

我对神经网络的理解如下:

输入层+隐藏层+输出层,每个层都有节点或神经元。每个神经元从上一层的所有神经元获得输入,并发送到下一层的每个神经元。然后,据说神经元计算权重之和,然后利用激活函数来触发或不触发(或发送一个介于0和1之间的数字)

让我困惑的是它是如何计算权重之和的

在上面的图中,我创建了一个简单的神经网络,并在Andrew Ng的讲课中调用输入(YouTube)。 以第1层的神经元a1为例: 这将从第0层获得值a1和a2,以及相应的权重和偏差,这些将在第1层的向量b1和w1中收集

那么,总和是否根据以下公式计算? z=w1*x+b?这通常适用于所有神经网络,还是这只是一种单一类型的神经网络?第1层中的z1也是矢量吗?是激活函数使它成为标量吗

我知道有不同的激活函数来计算最终的标量值,并将其与权重和偏差一起发送到下一层神经元。但我想我对权重和偏差以及它们的来源/计算方法等感到非常困惑


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

看看这个播放列表。您将学习如何在nn上实现

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

我认为这个符号有点混乱。层1中a1的值是一个标量,要得到这个值,需要将激活函数应用于另一个标量z1,可以计算出z1=w1*x+b。这里,w1不是矩阵,而是传递给神经元a1的权重向量


然而,这不是进行计算的通常方法,因为这没有利用矢量化的优势。一般来说,你需要做z=W*x+b,其中W是所有权重的矩阵,z是一个向量,然后应用激活函数元素,获得该层的激活向量a。

你可以把权重看作是连接神经元的箭头。对于一层中的每个神经元,下一层中的每个神经元都有一个权重。这意味着您可以在两个层之间使用一个矩阵来存储权重

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

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

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

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

让我们把这里所有的数看作矩阵。您的输入a[0]是一个1x3矩阵,即一个列向量。现在,如您所述,如果没有层的激活函数,层输出将是a[1]=a[0].w[01]+b[1],其中w[01]的权重介于第0层和第1层之间。类似地,b[1]是添加到第一层的偏置

因此,对于矩阵乘法,w[01]将是一个3x4矩阵,偏差将是一个1x4矩阵。 如果您稍后对此进行了sigmoid激活,在本例中,sigmoid函数将应用于您的a[1],以获得该层的最终输出。 使用矩阵总是更容易理解NN的运算!
希望有帮助

好的,那么z1是一个标量,这很有帮助!如果我把前面的神经元称为x1,x2和x3,下一层的第一个神经元会这样做吗:z1=(w1*x1)+(w1*x2)+(w1*x3)+b1?所以它总结了所有的贡献,并有一个偏差?有点,但不准确:表达式应该是z1=(w1*x1)+(w2*x2)+(w3*x3)+b,其中w1,w2和w3是从x1,x2和x3到z1的权重。但是这个想法是对的:把贡献加起来,加上一个偏差。我回答了你的问题吗?是的,非常感谢!这一切只是有点混乱。所以,这种方法只包括完全连接的神经网络,对吗?确切地说,还有其他的体系结构,比如CNN和RNN(递归神经网络),但是它们都有一些完全连接的层,所以希望理解这一点,你也能帮助你理解其他的体系结构。你能给我的答案贴上问题答案的标签吗?