03使用矩阵实现神经网络数据加工链

矩阵运算的应用:

矩阵输入python 矩阵输入神经网络_神经网络

网络中第一层的两个节点分别把信号传送给第二层的两个节点,信号传送时需要经过权重的乘积运算,上图中总共有四个权重。我们可以把四个权重组成一个两行两列的矩阵(放在左边),第一层又接受两个输入信号(input_1,input_2)这两个信号可以形成一个两行一列的矩阵(放在右边),于是第二层的两个节点所接收到的信号值可以通过下面的矩阵运算获得。

由此,依靠矩阵,我们就能从数学上简明的去描述信号的传递和处理过程:

  • 我们用符号X表示当前一层神经元节点要接收到的信号量
  • 用W对应上一层节点相对于当前节点的权重
  • 用I表示上一层神经元接收的信号量

注意:大写字母通常表示矩阵。也就是一维或者二维张量而不是一个简单的数字

python

python 对矩阵点乘及相关运算提供了很好的支持,这就是为何python被广泛的应用与人工智能应用的开发

import numpy as np
W = np.array([
   [0.9,0.3],
   [0.2,0.8]
])
I = np.array([1.0,0.5])

X = W.dot(I)
print(X)

输出:[1.05 0.6 ]

依靠矩阵运算我们可以得到每层神经元所要接收到的信号量,也就是上面式子中的X,接着我们再将X中的每个值输入激活函数,这样就能够得到该层神经元输出给下层的信号量:

O = sigmoid (X)

注意到上面等式中的O是大写,也就是它是一个向量而不是单个数值。

练习

根据当前掌握的理论,我们看看如何计算一个三层,每层含有三个神经元的网络。该网络的结构图如下:

第一层为输入层:他的职责很简单,只需要接受信号后将其分解后传递给下一层。

矩阵输入python 矩阵输入神经网络_信号量_02

第二层为隐藏层:

矩阵输入python 矩阵输入神经网络_人工智能_03

第三层为输出层:

矩阵输入python 矩阵输入神经网络_python_04

此时得到的是最终结果

接下来我们就需要将计算结果与给定的正确结果进行比较,得出偏差 (basis),根据偏差去调整模型的参数,以便让下次计算你的结果与给定正确结果间的偏差越来越小,进而改进模型对数据进行预测的精确度。