机器学习--感知机理论知识(一)

文章转自(有图)http://burningcloud.cn/article/106/index.html

机器学习 | 感知机理论知识(一)

各位读者大家好!今天我们一起来学习感知机方法的理论知识。

感知机(perceptron)是用于二分类的线性分类模型,它是神经网络与支持向量机的基础。它的输入是实例的特征向量,输出为实例的类别,用-1和1表示。感知机属于判别模型,它对应于特征空间中将实例划分为正负两类的分离超平面,感知机学习的目的就是找出这一分离超平面。

感知机模型

感知机定义:

由输入空间到输出空间的如下函数
f ( x ) = s i g n ( w ⋅ x + b ) f(x) = sign(w · x + b) f(x)=sign(wx+b)
即为感知机。其中,w和b为感知机模型参数,w∈Rn叫做权值(weight)或权值向量(weight vector),b∈R叫做偏置(bias),w · x表示w和x的内积。sign是符号函数,即
s i g n ( x ) = x ≥ 0 ? 1 : − 1 sign(x) = x\ge0?1:-1 sign(x)=x0?1:1
感知机模型的几何解释如下图所示[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qHWsAVFo-1602304748363)(感知机模型.PNG)]

由图可以看出,有线性方程w · x + b = 0对应于特征空间Rn中的一个超平面S,其中w是超平面的法向量,b是超平面的截距。这个超平面将特征空间划分为两个部分,位于两部分的点分别为正负两类。因此,超平面S被称为分离超平面。

感知机策略

对于一个数据集,如果存在一个超平面能够将数据集的正负实例点完全正确地划分到超平面的两侧,则称该数据集是线性可分的,否则其为线性不可分。

假设训练集是线性可分的,为了找出将正负实例点完全正确分开的超平面,需要一个学习策略,即定义经验损失函数并将损失函数极小化。

感知机方法的损失函数选择为所有误分类点到超平面S的总距离

先说输入空间中任意一点x0到超平面S的距离:
1 ∣ ∣ w ∣ ∣ ∣ w ⋅ x 0 + b ∣ \frac{1}{||w||}|w·x_0 + b| w1wx0+b
其中||w||是w的L2范数。

对于误分类点(xi,yi)来说,有-yi(w · xi + b) > 0,因此,误分类点到超平面S的距离为:
− 1 ∣ ∣ w ∣ ∣ y i ( w ⋅ x i + b ) -\frac{1}{||w||}y_i(w·x_i + b) w1yi(wxi+b)
那么所有的误分类点到超平面S的总距离为:
− 1 ∣ ∣ w ∣ ∣ ∑ x i ∈ M y i ( w ⋅ x i + b ) -\frac{1}{||w||}\sum_{x_i\in M}y_i(w·x_i + b) w1xiMyi(wxi+b)
不考虑 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} w1,即得到感知机的损失函数:
L ( x , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) L(x,b) = -\sum_{x_i\in M}y_i(w·x_i + b) L(x,b)=xiMyi(wxi+b)
对于一个特定点来说,正确分类则损失值为0,否则,误分类点离超平面越近,损失函数值就越小。L(x, b)是连续可导函数,所以可以用下面的算法进行优化。

感知机算法

感知机学习问题转化为求解损失函数的最优化问题,采取的方法是随机梯度下降法。在本文中我们仅阐述原始形式,在下一篇文章中,我们将讲解对偶形式并证明感知机学习算法的收敛性。

原始形式

感知机算法采取随机梯度下降法来求解损失函数的最优化问题。首先,任意选取一个超平面,参数为w0和b0,然后用梯度下降法不断极小化损失函数。极小化过程中一次随机选取一个误分类点使其梯度下降。

假设分类点集合M固定,则损失函数梯度如下:
∇ w L ( w , b ) = − ∑ x i ∈ M y i x i \nabla_wL(w,b) = -\sum_{x_i\in M}y_ix_i wL(w,b)=xiMyixi

∇ b L ( w , b ) = − ∑ x i ∈ M y i \nabla_bL(w,b) = -\sum_{x_i\in M}y_i bL(w,b)=xiMyi

随机选取一个误分类点(xi,yi),则对w,b进行更新如下:
w ← w + η y i x i w\leftarrow w+\eta y_ix_i ww+ηyixi

b ← b + η y i b\leftarrow b+\eta y_i bb+ηyi

其中 η \eta η(0 < η \eta η <= 1)是步长,又叫做学习率(learning rate)。

感知机算法循环从训练集中选取数据点,如果为误分类点,则执行以上的更新步骤,知道训练集中没有误分类点时停止算法。

这里举个例子:

给出一训练集,其中正实例点为x1 = (3, 3)T,x2 = (4, 3)T,负实例点为x3 = (1, 1)T.试用感知机学习算法求解感知机模型。

在这道题中,首先观察数据为二维,故w为(w(1), w(2))T,数据点x为 (x(1), x(2))T。我们设置学习率 η \eta η为1,这是w和b初始值均为0,故我们得到以下的迭代过程(具体计算不再展示,大家可以自行练习,并将结果与下示表格对照,看看大家是否掌握。不知道表头的字母为什么不能小写,大家明白即可)

迭代次数 误分类点 w b w · x + b
0 0 0 0
1 x1 (3, 3)T 1 3x(1) + 3x(2) + 1
2 x3 (2, 2)T 0 2x(1) + 2x(2)
3 x3 (1, 1)T -1 x(1) + x(2) - 1
4 x3 (0, 0)T -2 -2
5 x1 (3, 3)T -1 3x(1) + 3x(2) - 1
6 x3 (2, 2)T -2 2x(1) + 2x(2) - 2
7 x3 (1, 1)T -3 x(1) + x(2) - 3
8 0 (1, 1)T -3 x(1) + x(2) - 3

8 | 0 | (1, 1)T | -3 | x(1) + x(2) - 3 |

以上就是我今天要跟大家一起学习的内容,下周我们将把剩余的部分讲完,谢谢大家的观看!

猜你喜欢

转载自blog.csdn.net/weixin_43800131/article/details/108994772