在人工神经网络(ANN)入门一中我们可以用单层的人工神经网络解决AND和OR的运算。但是很多问题例如异或运算(exclusive-or)不能使用单层的神经网络找到这样一个线性平面把训练集中的数据分开。下面表格中是一个异或运算
x_1 | x_2 | output |
---|---|---|
1 | 1 | -1 |
0 | 1 | 1 |
0 | 0 | -1 |
1 | 0 | 1 |
将点在平面直角坐标系中画出来如下图:
如图所示,黑色和灰色的点代表不同的分类,但是我们不能找到一个平面能将这两个分类分开,这时我们便需要多层人工神经网络。
首先我们来介绍下多层人工神经网络:
人工神经网络结构通常比感知器模型更近复杂,这些额外的复杂性来源与多个方面。
(1)网络的输入层和传输层之间可能包含多个中间层,这些中间层叫做隐藏层(hidden layer),隐藏层中间的节点称为隐藏节点(hedden node)。这种结构称为多层神经网络,如图所示。
在前向反馈(forward phase)中,1.每一层节点只和下一层节点相连,从前一次迭代中获得的权重用来计算每一个神经元的输出值。2.总是先计算l层,再计算l+1层。
(2)除了符号函数外,网络还可以使用其他激活函数,例如线性函数、S型(逻辑斯蒂)函数、双曲线正切函数等,如图所示。
这些激活函数允许隐藏节点和输出节点的输出值与输入参数呈非线性关系。
这些附加的复杂性使得多层神经网络可以对输入和输出变量间更复杂的关系建模。例如上面提到的异或问题,我们可以用两个超平面进行分类,这两个超平面把输入空间划分到各自的类,如图:
与人工神经网络(ANN)入门一中提到的计算方法类似,根据坐标系中画出的两条直线我们可以得到两组线性方程:
x2+x1−0.5=0
−x1−x2+0.5=0
和
x2+x1−1.5=0
−x1−x2+1.5=0
将表格中的数据带入到两组方程中,我们可以得到最终符合表格中输入与输出的两个线性方程为:
x2+x1−0.5=0