【机器学习】多层感知机的理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dzkd1768/article/details/64129498

上篇说到感知机模型实现了逻辑或问题,在另一个问题上感知机确存在巨大漏洞!

异或问题

1957年,罗森布拉特提出了感知机模型。随后,他的好朋友明斯基发现了一个问题——感知机不能解决异或问题。

我们尝试使用MATLAB求解感知机关于异或问题的解:

               

从左到右依次是初始状态,迭代500次的状态,残差曲线。由图可以看出模型是没有收敛的,陷入了无限迭代。

从原理上分析,异或问题本身是线性不可分的问题,所以用线性的感知机模型无法解决。

我们发现异或问题有这样的解:

                                                                  

这两个分类面都可以用感知机模型实现,那么整个模型怎么实现呢?

答案就是用多层感知机。

                                                     

这个模型表示第一层有2个神经元,第二层有一个神经元。根据上图,第一层实现的是两个单独的分类面,第二层实现的是“与”操作。这样就得到了异或问题的解。

可以证明,具有一个隐藏层(隐藏节点个数不限)的MLP可以学习输入的任意非线性函数。其内在原理可以大致理解为泰勒展开。

同感知机一样,接下来就是如何确定模型参数的问题。

1974年,哈佛大学的Hinton等人提出了大名鼎鼎的反向传播算法,即backpropagation,BP算法。

这里我从一个角度简单理解一下BP算法:

               

这是一个示意图,他用了一个三层的模型作为例子。初始权值都随机给定了,t为已知的标签。

这里可以看到,与感知机不同的是,它的目标函数采用了均方误差,原理是最小二乘法。

我们先不管误差怎么传递,同感知机模型一样,整体还是采用最速下降法求解:

                                                                             

重点在于求偏导数,用w3和w1举例如下:

                                           

对w3的偏导数,求得的式子中都为已知值(第一次正向算出)。同样对于w1,式子中都为已知值。这样便可以求出更新后的权值了。通过观察发现红框的部分满足反向的加权和的形式,故而猜想,由于这种关系,人们把这部分叫做残差,这个方法叫做误差反向传播算法。


浅层模型

浅层模型:含有一个隐层的叫做多层感知机,又叫BP神经网络。
20世纪90年代,出现了各种浅层学习模型,包括:SVM、Boosting、最大熵方法(LR)。它们都可以看做只有一层隐层或没有隐层的神经网络。

浅层模型的问题是:

1.特征的提取与选择。

2.表达能力差。

因为只有底层的特征,很难识别出不同目标,高层的特征依靠手工设计很难得到。而根据经验来说,一般网络神经元和层数越多,表达能力越强。

展开阅读全文

没有更多推荐了,返回首页