感知机与多层网络
声明:在阅读本文时,手里最好配备一本《机器学习》,以做好前期的一些理论知识铺垫。
在阅读书中(《机器学习》,周志华)的第5章时,文中主要以逻辑与、或、非,以及异或运算为例子,指出单层感知机可以处理线性可分的问题,而解决非线性可分问题,需考虑使用多层感知机,看到这里,我进行了思考:为什么含有非线性激活函数的单层感知机只可以解决线性可分的问题,而对异或这种问题却无能为力?而仅仅多了一层隐含层的两层感知机则可以解决此类非线性可分的问题?对此,我以书中(《机器学习》,周志华)图5.5为例子,对单层感知机和两层感知机应用于异或问题进行了一些可视化工作,并且进行了分析。
首先来回顾一下什么是异或运算:
表1
由表1可知,输入的x1和x2都∈{0,1},若两者相同则输出0,两者相异则输出1,那如果我们要学习到一个模型y=F(x1,x2) 能正确预测这些样本,也即意味着上述4个异或样本点都会落在模型y在三维坐标系对应的超平面中(三维情况下是一个平面或曲面)。如下图1所示,是4个异或的样本点的分布情况,红色点代表x1,x2输入相异而输出为1的两个点,蓝色点代表x1,x2输入相同而输出为0的两个点,X,Y轴分别代表输入x1和x2,Z轴代表输出。通过对4个样本点的分布进行观察,我们发现,找不到一个平面可以使红色样本点和蓝色样本点同时落在该平面上,(数学上也可以严格证明,只需将4个样本点代入单层感知机(不带激活函数)的函数表达式,得到4条不等式,会推导出式子之间互相矛盾),因此,这是一个非线性可分的问题,下面将进行进一步阐述。