感知机模型
本内容为《统计学习方法》学习笔记,会不定时更新
1、感知机学习策略
统计学习方法的策略即寻找一个损失函数进行建模。因为感知机的目标是将给定的样本划分为两个类,因此可以使用每个样本到超平面的距离作为度量标准。如果给定一个样本点 x i = ( x i ( 1 ) , x i ( 2 ) , . . . ) x_i=(x_i^{(1)},x_i^{(2)},…) xi=(xi(1),xi(2),...),距离函数定义为 1 ∣ ∣ w ∣ ∣ ∣ w x i + b ∣ \frac{1}{||w||}|wx_i+b| ∣∣w∣∣1∣wxi+b∣。
如果假设样本被错误分类,可知感知机 f ( x i ) f(x_i) f(xi)与实际类 y i ∈ { − 1 , + 1 } y_i\in\{-1,+1\} yi∈{
−1,+1}的值恰好相反,即 − y i f ( x i ) = 1 -y_if(x_i)=1 −yif(xi)=1,如果去掉符号函数来定量的描述错误样本与超平面的距离,则有 − y i ( w x i + b ) > 0 -y_i(wx_i+b)>0 −yi(wxi+b)>0。事实上,如果样本被正确的分类,我们大可不必要去度量它与超平面距离,所以感知机分类时,我们只关心那些错误分类的样本。自然,在初始化某一个 w 0 , b 0 w_0,b_0 w0,b0时,感知机模型即可判断有多少样本点被错误分类,这些样本组成一个动态的集合 M M M。经验损失函数则为:
L = − 1 ∣ ∣ w ∣ ∣ ∑ x i ∈ M y i ( w x i + b ) L = -\frac{1}{||w||}\sum_{x_i\in M}y_i(wx_i+b) L=−∣∣w∣∣1xi∈M∑yi(wxi+b)
其中 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣是二范式,一般来说,损失函数可去掉这个二范式,即 L = − ∑ x i ∈ M y i ( w x i + b ) L = -\sum_{x_i\in M}y_i(wx_i+b) L=−∑xi∈Myi(wxi+b)
2、感知机算法
感知机算法的目标就是最小化损失函数,每一次迭代过程中,更新被误分类的样本集合 M M M,采用随机梯度下降法,每次从集合中挑选一个样本来进行参数更新。算法为:

因为对于所有误分类的样本,损失函数是一个大于0的连续函数,即具有可微可导性质。对某一个样本产生的损失函数 L = − y i ( w x i + b ) L=-y_i(wx_i+b) L=−yi(wxi+b)对参数 w , b w,b w,b分别求导:
∂ L ∂ w = − y i x i \frac{\partial L}{\partial w} = -y_ix_i ∂w∂L=−yixi
∂ L ∂ b = − y i \frac{\partial L}{\partial b} = -y_i ∂b∂L=−yi
因此梯度下降更新公式 w = w − η Δ w = w + η y i x i w=w-\eta\Delta w=w+\eta y_ix_i w=w−ηΔw=w+ηyixi, b = b − η Δ b = w + η y i b=b-\eta\Delta b=w+\eta y_i b=b−ηΔb=w+ηyi。由算法可知,当集合 M M M为空时,算法结束。
另外感知机的对偶形式如下所示:

另外,感知机是否可以来表示异或问题呢?先考虑一下异或关系:对于一个二元数 a , b a,b a,b,如果 a = 1 , b = 1 a=1,b=1 a=1,b=1,则异或的结果为0,如果 a = 1 , b = 0 a=1,b=0 a=1,b=0则异或的结果为1,因此以二元 ( 0 , 0 ) , ( 0 , 1 ) , ( 1 , 0 ) , ( 1 , 1 ) (0,0),(0,1),(1,0),(1,1) (0,0),(0,1),(1,0),(1,1)为例,其异或分别为0,1,1,0,可发现这四个点并不是线性可分的。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176608.html原文链接:https://javaforall.net
