神经元矩阵计算示例

  • 2019 年 10 月 4 日
  • 笔记

神经网络训练过程:

神经网络训练过程:

输入—>输出:前向馈送新型号

输出—>输入:反向误差传播把输入前馈计算得到输出,

计算误差,误差反向传播修正链接权重输入层与隐藏层之间的链接权重

  1. 输入层与隐藏层之间的链接权重”与“输入信号”加权求和,“和值”通过神经元函数(比如,阶跃函数,Relu函数,Sigmoid函数等)运算得到隐藏层的结果。
  2. 用与第一步相同的过程计算出输出层的结果。
  3. 目标值-输出值=误差。
  4. 将误差按权重反向传播给隐藏层。
  5. 用梯度下降法最小化误差,计算出误差调整值,初始误差+误差调整值=训练结果。

输入向输出传送叫前向馈送信号过程

首先看一个3*3的神经元:

3*3神经元

首先构造输入矩阵:

输入值矩阵

权重矩阵(输入层1到隐藏层2的权重矩阵,其中,每一列代表输入层的某一个节点到下一层的所有节点的权重值,每一行代表下一层中某个节点接收到的权重,这样计算的时候就是权重矩阵点乘输入矩阵,得到的结果也是一个矩阵shape和上一个输入矩阵的一样,也是一个n*1的矩阵代表下一层的输入):

输入层1到隐藏层2的权重矩阵

进行点乘运算可以看得一个新的和输入shape一样的矩阵(n*1)

权重点乘输入

这里折后还不是最终的隐藏层的输入,因为,我们知道,在神经元中必须要达到激活函数之后才能往下传输,这里使用sigmoid函数来描述,也就是,将上一步得到的矩阵中的每一个值都进行一下sigmoid运算才是真正的隐藏层2的输入:

sigmoid函数
最终的结果

所以经过第一步的运算之后盛景网络就抽象成为下图,隐藏层2的输出作为输出层的输入,然后重复之前的额操作进行权重系数和输入之间的运算就可以得到输出层三的最终输出了:

经过神经元运算后的图的抽象

反向误差传播修正链接权重

2*2的神经元

反向传播示例

计算公式:

误差计算公式

训练样本数据只告诉我们最终输出节点的输出应该为多少,而没有告 诉我们任何其他层节点的输出应该是多少。这是这道谜题的核心。

我们可以使用先前所看到的误差反向传播,为链接重组分割的误差。 因此,第一个隐藏层节点的误差是与这个节点前向连接所有链接中分割误 差的和。在上图中,我们得到了在权重为w1,1 的链接上的输出误差eoutput,1 的一部分,同时也得到了在权重为w1,2 的链接上第二个输出节点的输出误 差einput,1 的一部分这样每一个节点的误差都能计算出来了。

矩阵乘法计算反向传播

计算的起始点是在神经网络最终输出层中出现的误差。此时,在输出 层,神经网络只有两个节点,因此误差只有e1 和e2 。

输出误差

这里也使用点乘的方式

隐藏层误差计算公式

简化公式,去掉分母,因为有没有分母没什么影响:

简化后的误差计算公式