多层感知机的理解"/>
【机器学习】多层感知机的理解
上篇说到感知机模型实现了逻辑或问题,在另一个问题上感知机确存在巨大漏洞!
异或问题
1957年,罗森布拉特提出了感知机模型。随后,他的好朋友明斯基发现了一个问题——感知机不能解决异或问题。
我们尝试使用MATLAB求解感知机关于异或问题的解:
从左到右依次是初始状态,迭代500次的状态,残差曲线。由图可以看出模型是没有收敛的,陷入了无限迭代。
从原理上分析,异或问题本身是线性不可分的问题,所以用线性的感知机模型无法解决。
我们发现异或问题有这样的解:
这两个分类面都可以用感知机模型实现,那么整个模型怎么实现呢?
答案就是用多层感知机。
这个模型表示第一层有2个神经元,第二层有一个神经元。根据上图,第一层实现的是两个单独的分类面,第二层实现的是“与”操作。这样就得到了异或问题的解。
可以证明,具有一个隐藏层(隐藏节点个数不限)的MLP可以学习输入的任意非线性函数。其内在原理可以大致理解为泰勒展开。
同感知机一样,接下来就是如何确定模型参数的问题。
1974年,哈佛大学的Hinton等人提出了大名鼎鼎的反向传播算法,即backpropagation,BP算法。
这里我从一个角度简单理解一下BP算法:
这是一个示意图,他用了一个三层的模型作为例子。初始权值都随机给定了,t为已知的标签。
这里可以看到,与感知机不同的是,它的目标函数采用了均方误差,原理是最小二乘法。
我们先不管误差怎么传递,同感知机模型一样,整体还是采用最速下降法求解:
重点在于求偏导数,用w3和w1举例如下:
对w3的偏导数,求得的式子中都为已知值(第一次正向算出)。同样对于w1,式子中都为已知值。这样便可以求出更新后的权值了。通过观察发现红框的部分满足反向的加权和的形式,故而猜想,由于这种关系,人们把这部分叫做残差,这个方法叫做误差反向传播算法。
浅层模型
浅层模型:含有一个隐层的叫做多层感知机,又叫BP神经网络。
20世纪90年代,出现了各种浅层学习模型,包括:SVM、Boosting、最大熵方法(LR)。它们都可以看做只有一层隐层或没有隐层的神经网络。
浅层模型的问题是:
1.特征的提取与选择。
2.表达能力差。
因为只有底层的特征,很难识别出不同目标,高层的特征依靠手工设计很难得到。而根据经验来说,一般网络神经元和层数越多,表达能力越强。
更多推荐
【机器学习】多层感知机的理解
发布评论