05 | 前馈网络与反向传播:模型的自我学习(下)

前馈网络
前馈神经网络(Feedforward Neural Network,FNN),简称前馈网络,它是一种单向的多层结构,也是最简单的神经网络,其简化结构图如下所示:

在这个网络中,蓝色的层是第 0 层,我们称为输入层,这里将接受模型的输入数据,即向量 x;
中间黄色的层,分别是有 5 个神经元的第 1 层和有 3 个神经元的第 2 层,它们是模型的内部环节,我们称为隐藏层(实际的网络中,隐藏层可以有很多层,不仅限于 2 个);
绿色的层,是网络的最后一层,我们称为输出层
神经元之间的单向箭头连线,就是两个节点之间的权重

既然叫前馈神经网络,那我们理解了“前馈”就相当于理解了这个网络。前馈是指这个网络中的每一层神经元,产生信号之后会传递到下一层,而下一层的神经元产生的信号无法反传递给上一层,即数据是单向流动的

那输入的数据最后是怎么变成输出的呢?为了方便起见,咱们把上图进一步简化,来看看它的具体计算过程。

这个简单的网络中,有一个输入层(a、b 节点),一个隐藏层(c、d 节点)和一个输出层(e 节点)。

在开始具体计算之前,咱们先明确几个变量。

1.输入数据 x:

2.权重 Wij,表示从节点 i 和 j 之间的权重,方向由 j 到 i。在上图中,我们假设 Wcb=0.7,Wda=0.3,Wec=0.4

3.权重矩阵 Wj,表示第 j 层的权重矩阵,在这里有两个权重矩阵,W1 和 W2:

4.**函数,这节课我选择 Sigmoid 函数作为**函数,其公式化表示为:

**函数实际上是一个将线性计算过程进行非线性变换的函数。目前可以单纯地理解为:**函数是一个对输入数据进行变化的函数

节点 c 的输入,就是 x1 和 x2 沿着各自的路径与对应的权重相乘后求和,即:

同理,节点 d 的输入就是:

模型在计算的过程中是使用矩阵的方式,所以得到的结果也是以层为单位的,计算过程如下:(权重矩阵*输入x

现在,输入的数据走到了 c 和 d 两个节点,这里还有一层Sigmoid**函数。因此,第一层的输出是:

也就是节点 c 的输出为 0.6479,节点 d 的输出为 0.5769。

这样,咱们就完成了隐藏层的计算了。咱们可以用同样的方式求到最后节点 e 的输出,过程如下: