统计学习方法——感知机模型

0. 写在前面

在这一节,我们将要正式介绍第一个机器学习方法,感知机。在机器学习课程中,我们在神经网络的课程中,第一次接触到了感知机。不过那时候,我们更多的是关注,感知机如何进行训练,包括随机梯度下降法和批梯度下降。但是对于其数学原理和正确性没有具体的深究,只是对于其表现形式和具体运行步骤有了一定的了解。在这一节中,我们将对感知机的相关问题进行讨论。

1. 感知机的定义

对于我们要讨论的感知机,首先要明确什么是感知机。感知机是二分类的线性分类模型,其输入为实例的特征向量,输出为实力的类别,取+1和-1两个值。
感知机对应于输入空间中将实例划分为正负两类的分离超平面,属于判别模型。其策略就是使损失函数最小化来进行求解,而具体算法通常使用的是梯度下降法。这样统计学习方法的三个要素模型、策略、算法都大概清楚了。
那么感知机的具体表现形式是什么呢?具体见下:

f(x)=sign(wx+b)

就是这么简单的一个函数,构成了神经网络和支持向量机的基本单元。不过其中x是向量表示的是输入空间,w是参数向量,表示的是输入空间中每一维度的权重,b是标量,表示的是偏置,w·x是内积。
其实感知机模型是由缺陷的,首先它的前提是整个训练空间是线性可分的,也就是说会找到一个超平面,可以把正负样本分开。另一方面,它是线性的,因此对于非线性模型它就没有办法去学习。不过线性可分的约束条件也可以让它胜任很多问题了。

2.损失函数的选取

在经过基本的概念学习后,进入到了感知机学习策略的讨论。在这一部分,讨论的集中点在于损失函数的选取问题。到底是选取误分类点数目作为衡量标准,还是选取误分类点样本到超平面S的总距离作为衡量标准,有一定的争议。
这里之所以存在争议,有可能基于以下几个认知上的不同。首先,这个损失函数是一个动态变化的过程,它的存在并不是为了衡量最终模型的好坏,而是指导整个模型的演化方向。换言之,损失函数一定要是连续可导,这样就可以指导每次迭代的方向。另一个,由于感知机模型默认为训练样本线性可分,那么经过有限次的迭代后,一定可以找到一个超平面,可以把正负样本分开。这点我们在接下来的部分会讲到。
对于感知机的损失函数,最终选取的是误分类点样本到超平面S的总距离作为其衡量标准。而点到面的距离公式我们高中就学过了:

d=1||w|||wx0+b|

其中||w||说玄乎点是w的 L2 范式,说直白点,就是内积平方和开根号。
这样,再配合我们的样本标记 yi 的+1、-1,就能够写出所有误差的距离总和:
1||w||xiMyi(wxi+b)

如果不考虑系数,则损失函数为:
L(w,b)=xiMyi(wxi+b)

由于最终一定会得到一个误分类点为0的超平面,那么损失函数值最终会变为0,

3. 感知机学习算法的原始形式

既然损失函数都确定下来了,那么我们就知道我们的目标最终是使得损失函数极小化,这里我们称为梯度下降法。之所以称为梯度下降,这就关系到我们在高数里学到的一个名词,梯度。在标量场中某一点的梯度指向标量场增长最快的方向,而梯度的长度是这个最大的变化率。在单变量的实值函数中,梯度和导数是一样的,但是在线性函数中,则为线的斜率。这个在机器学习的课程中已经讲过,就不在细说,样例里使用的随机梯度下降法。
具体做法是取损失函数L(w,b)的梯度为:

wL(w,b)=xiMyixi

bL(w,b)=xiMyi

而对于每一个误分类点 (xi,yi) ,对w,b进行更新的算法为:
ww+ηyixi

bb+ηyi

其中 η 为学习速率,表示的是每一步改变的值的步长。该值越大,学习速度越快,但是有可能误差越大。这就好比你走向一个珍珠,你每一步走的越大,你离珍珠近的速度越快,但是你错过珍珠的可能性也就越大。
好了,下面给出具体的感知机原始算法:
算法2.1 感知机学习算法的原始形式
输入:训练集T{( xi,yi )},其中,i∈(0,N), yi ∈{+1,-1}, 0<η1
输入w,b;也就是感知器模型
(1)选取初值 w0,b0
(2)在训练集中选取数据 xi,yi
(3)如果 yi(wxi+b)0
ww+ηyixi

bb+ηyi

(4)转至(2),直至训练集中没有误分类点。

这个感知机的原始算法,真正的意义是,对于每一个误分类样本,当发现误分类点时,就根据误分类点的位置来调整整个超平面。如果知道了这个意思,那么后面的对偶形式也就理解了。

4. 感知机学习算法的对偶形式

对于这个改进后的算法形式,我们首先要知道什么是对偶,就具体而言,感知机算法的对偶形式,指的是和感知机算法的原始形式一一对应,在步骤和最终结果上都能够对应起来,但是是从不同角度来计算问题。通常我之前称之为映射计算。但是和映射计算不同的是,对偶计算的两个对应之间,没有谁优谁劣之分,基本上是在同一表现形式下的不同运算手段而已。映射计算多半是由于原计算实在是过于复杂或无法计算,这时候才采用映射计算来进行解决。
好了,言归正传,我们来看一看对偶形式。由原始算法,我们可以得出,假设修改了n次w和b,那么,记 αi=niη ,则:

w=i=1Nαiyixi

b=i=1Nαiyi

这看起来好像没啥区别,也就是把迭代w和b转换为迭代 α 了。实际上是一一对应的。那么对偶形式又具有什么先进性呢?
算法2.2 感知机算法的对偶形式
输入:训练集T{( xi,yi )},其中,i∈(0,N), yi ∈{+1,-1}, 0<η1
输入 α ,b;也就是感知器模型 f(x)=sign(j=1Nαjyjxjx+b)
(1)选取初值 α0,b0
(2)在训练集中选取数据 xi,yi
(3)如果 yi(j=1Nαjyjxjxi+b)0
αiαi+η

bb+ηyi

(4)转至(2),直至训练集中没有误分类点。
粗看起来,是没有什么特别的地方,但是仔细管卡可以看到,对偶形式中训练实力仅以内积的形式出现。可以使用Gram矩阵来现进行存储,这样,在每次训练时,就不用再算一次了,样本量少的时候,可能你不觉得什么,如果样本数据十分庞大的时候,这样可以大大节省时间。
所谓的Gram矩阵,就是格拉姆矩阵G= [Gij],由函数的标准内积给出:
G=[xixj]NN

这样就会方便许多了。

5.算法的收敛性

对于感知机的算法的收敛性,我们放到最后来讲。在这一点上,仍然有人存有疑问,其最大的疑问在于,既然感知机的前提条件是样本集线性可分,那么肯定能够找到这么一条超平面,可以分开正负类样本。
但是,算法的收敛性并不是证明它能不能分,而是证明我们现在这个算法是不是正确的,也就是说,最终的结果是不是通过有限次的迭代,能够找到这么一条超平面,可以分开正负类样本。
具体的公式大家可以看一下定理2.1(Novikoff定理),我这里简要介绍一下它的思想过程,主要证明的是 wk wopt 的上下界,然后推导出k的上界的。
它用的是数学归纳法,有人说,这跟说白话不是一样么。其实不然,在数学归纳法中最重要的是要带入你要证明的定律,这里对于w和b的推广时,就用到了梯度下降,因此才能证明,梯度下降法是正确的。

6. 习题解答

该习题由3题,真正需要解答的只有1题。
第一题是要验证感知机为什么不能表示异或。其实,感知机是线性模型,而且它的前提是训练集是线性可分的,然而异或的训练样本集是线性不可分的,因此所有的线性模型都没有办法表示异或。不过幸运的是,2层感知器模型就可以很好的表示出异或,准确来讲,两层感知器模型可以表示出所有的逻辑运算符。
第二题是个验证题,我们也不讲了,自己可以动手试试看,其实我们在机器学习的课程中就已经学习过并且考试考过了。
第三题是要证明一下定理:样本集线性可分的充分必要条件是正实力点集所构成的凸壳与负实例点集所构成的凸壳不相交。
大家可以参考http://blog.csdn.net/y954877035/article/details/52210734给出的答案。
具体来讲就是通过必要性和充分性两个方面来对定理给出证明。在证明的时候,尤其是知道充要条件正确的情况下,我们通常采用的反证法,即假设前提是正确的,推出矛盾,从而证明原假设错误。

7. 小结

通过以上的讨论,我们对于感知机模型有了更为深刻的了解,对于统计机器学习也有了一定的认识,在接下来的讨论中,我们将对k近邻算法进行相关讨论。好了,下期见。

刘炫320 CSDN认证博客专家 博客专家 内容合伙人 首页内容推荐官
计算机科学与技术专业博士,主要研究方向为人工智能、自然语言处理、篇章分析。曾与微软小冰、微软小娜共同工作。兴趣广泛,包括并不限于人工智能,心理学,认知科学,语言学,数学,天文学等。让我们一起和AI,改进世界!
相关推荐
<p> <b><span style="font-size:14px;"></span><span style="font-size:14px;background-color:#FFE500;">【Java面试宝典】</span></b><br /> <span style="font-size:14px;">1、68讲视频课,500道大厂Java常见面试题+100个Java面试技巧与答题公式+10万字核心知识解析+授课老师1对1面试指导+无限次回放</span><br /> <span style="font-size:14px;">2、这门课程基于胡书敏老师8年Java面试经验,调研近百家互联网公司及面试官的问题打造而成,从筛选简历和面试官角度,给出能帮助候选人能面试成功的面试技巧。</span><br /> <span style="font-size:14px;">3、通过学习这门课程,你能系统掌握Java核心、数据库、Java框架、分布式组件、Java简历准备、面试实战技巧等面试必考知识点。</span><br /> <span style="font-size:14px;">4、知识点+项目经验案例,每一个都能做为面试的作品展现。</span><br /> <span style="font-size:14px;">5、本课程已经在线下的培训课程中经过实际检验,老师每次培训结束后,都能帮助同学们运用面试技巧,成功找到更好的工作。</span><br /> <br /> <span style="font-size:14px;background-color:#FFE500;"><b>【超人气讲师】</b></span><br /> <span style="font-size:14px;">胡书敏 | 10年大厂工作经验,8年Java面试官经验,5年线下Java职业培训经验,5年架构师经验</span><br /> <br /> <span style="font-size:14px;background-color:#FFE500;"><b>【报名须知】</b></span><br /> <span style="font-size:14px;">上课模式是什么?</span><br /> <span style="font-size:14px;">课程采取录播模式,课程永久有效,可无限次观看</span><br /> <span style="font-size:14px;">课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化</span><br /> <br /> <br /> <span style="font-size:14px;background-color:#FFE500;"><strong>如何开始学习?</strong></span><br /> <span style="font-size:14px;">PC端:报名成功后可以直接进入课程学习</span><br /> <span style="font-size:14px;">移动端:<span style="font-family:Helvetica;font-size:14px;background-color:#FFFFFF;">CSDN 学院APP(注意不是CSDN APP哦)</span></span> </p>
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页