学习日志(四):单层感知机+激活函数

                                  感知机与多层网络

声明:在阅读本文时,手里最好配备一本《机器学习》,以做好前期的一些理论知识铺垫。

在阅读书中(《机器学习》,周志华)的第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条不等式,会推导出式子之间互相矛盾),因此,这是一个非线性可分的问题,下面将进行进一步阐述。

                                                          

                                                                                             图1

1. 单层感知机不能解决非线性问题的可视化

以下,先由简单的单层感知机开始,其结构如下图所示:

                                                                     

                                                                                        图2

上图的输出层包含一个激活函数,以及有一个偏置量θ 没有标出来。我们令权重w1和w2都为1,偏置θ 为-0.5,则得到一个单层感知机表达式:y1=f(x1+x2-0.5) ,f代表阶跃函数,起到激活作用,当没加激活和有加激活函数时,y1分别所代表的模型超平面如下图3 a,b所示。

     

                                                   图3a                                                                                   图3b

从图3a,b可以看出,单层感知机加上激活函数后的确起到了非线性整流的作用,模型从一个平面变成了一个曲面,但作用有限,整流后也只把3个样本点预测准确了(这3个点落在曲面上),其中(1,1)这个样本点就预测错误了,真实label应该是0,而y1模型预测为1。

同理,如果我们令w1和w2都为-1,偏置θ 为1.5,得到另一个单层感知机y2=f(-x1-x2+1.5) ,当没加激活和有加激活函数时,y2分别所代表的模型超平面如下图4 a,b所示。

          

                                                    图4a                                                                             图4b

从上图4b可以看出也有3个样本点预测正确了(有3个点落在曲面上),但是这次预测错误的样本是(0,0),真实label应该是0,但y2模型预测为1。

因此,这上面的可视化工作进一步证明了,我们找不到一个平面可以使红色样本点和蓝色样本点同时落在该平面上,也即单层感知机不能解决异或这种非线性可分的问题。

2. 两层感知机能解决异或问题的可视化

由上述可知,上面两个的单层感知机都不能解决异或问题,但通过观察上面两幅图3b和4b,就想到可不可以将这两个单层感知机的优点进行互补起来?然后接下来试试搭建一个两层感知机,具体是将y1模型和y2模型的输出作为第三个单层感知机y3的输入,如下图所示。

                                                              

                                                                                             图5

同理,如果我们令第三个感知机y3的参数w1和w2都为1,偏置θ 为-1.5,用数学形式表达就是:y3=f(f1+f2-1.5) ,当没加激活和有加激活函数时,y3分别所代表的模型超平面如下图6 a,b所示。

          

                                                 图6a                                                                                       图6b

神奇了,由图6b可以看到,4个样本点全落在了y3模型所对应的曲面上,也就是两层感知机可以解决异或这类非线性可分问题,同时可以看到这个两层感知机的曲面形状是“鞍形”这种独特的形状。

3. 实验分析

       通过上述实验,可以看出单层感知机是非线性模型,但其主要结构是线性的,其非线性是激活函数带来的,但这种非线性的作用主要是整流,也即为模型分类增加确信度,那么可以认为,激活函数没带来所需的非线性作用。那么,什么是所需的非线性作用?通过对两层感知机的可视化(图6 a,b)的“鞍形”曲面的观察,我们发现,对于异或问题,我们所需的非线性作用是模型函数的单调性可变,这其中涉及了多元函数的单调性问题,我们先来看看二元函数的单调性定义:

                                     

从图3a和4a可清晰地观察到,并可证明,没加激活函数的单层感知机所表示的二元函数z=f(x1,x2) ,总是能在xoy面找到一个\underset{AB}{\rightarrow}  方向,使z在\underset{AB}{\rightarrow} 单调增加,反之,在\underset{BA}{\rightarrow} 上单调减少。进一步观察图3b和4b,并可证明,加了激活函数也并没有严格改变模型的单调性。也即我们可以给出一个观点:单层感知机不能解决非线性可分问题的原因是(1)其主要模型结构是线性的,(2)激活函数作用是局限的,导致其表示的多元函数单调性是确定的,不可变。

对于两层感知机的单调性,它可以做到某个方向上不固定,可变的(图6b是先增后减),其单调性可变的原因也很简单:由于两层的结构,它将两个单层感知机的输出作为自身输入进行加权求和,其中一个感知机是在\underset{AB}{\rightarrow} 方向上是单调增函数,另一个感知机在​​​​\underset{AB}{\rightarrow} 方向上是单调减函数,根据函数单调性的性质,则得到了先增后减的这种异或问题所需的“非线性”性质。也即我们可以给出一个观点:两层感知机能解决非线性可分问题的原因是其两层连接结构,使其整个模型所表示的多元函数单调性是不确定的,是可变的。

参考资料:

  1. https://wenku.baidu.com/view/2d687e45de80d4d8d15a4f85.html
  2. https://blog.csdn.net/qq_25353433/article/details/82467936
  3. https://blog.csdn.net/uncle_gy/article/details/78890302?utm_source=blogxgwz7
  4. https://www.zhihu.com/question/263676843
  5. https://blog.csdn.net/dcrmg/article/details/79165976
  6. 《机器学习》,周志华,清华大学出版社,2015.

                                  感知机与多层网络

猜你喜欢

转载自blog.csdn.net/weixin_44825185/article/details/106488472