感知机的学习

    感知机(perceptron),是一个二分类的线性分类模型。输入空间为欧式空间,输出空间为{1,-1}, 属于判别模型,得到的决策函数,决策函数的物理模型是一个分离超平面,将欧式空间划分为+1,-1二个平面。

     模型的表示:F(x) = sign(w*x+b)

   假设空间:分离超平面的集合;{f|f(x)=sign(w*x+b)}  ,其中w*x+b=0对应于超平面S(分离超平面Separating hyperplane),其中w为法向量,b为截距,,点到直接的距离 (w*x+b)/||w||,也就是集合间隔,而w*x+b,也可以说是函数间隔。

     策略:损失函数为基于误分类的损失函数;L(w, b) = M中的点求和(-yi(w*xi+b))

    经验风险函数非负,在没有误分类点的时候,L(w, b)=0

     算法:随机梯度下降法(stochastic gradient descent)对损失函数(经验风险函数)极小化。minL(w, b)

     对于梯度,就是求偏导的过程,是一个导数,对应于斜率,此时加入了更新的步长(学习率a),对应于x轴,参数的更新对应于y轴,也就是我们求变化之后的y。随机梯度下降,也就是我们只利用随机一个误分类点来进行更新操作,不断的迭代,知道L(w, b)=0为止。 w = w + a*yi+xi   ,   b = b + a*yi ,在选用不同的初值,不同的误分类点的情况下,我们得到的分离超平面的解可能不同。

      感知机学习中,处理的数据为线性可分的数据,也就是存在这么一个线性超平面S可以完全正确的数据进行划分。我们选用损失函数的时候,自然的想法就是将误分类点的总数作为损失函数来进行优化,但因为不连续可导,我们最终采用了误分类点到分离超平面的距离来作为损失函数来进行优化,不管怎么说,损失函数是基于误分类的点,对于分类正确的点不予考虑,仅考虑误分类的点的集合M,而且感知机分离的目标仅仅是对数据正确的划分就行,没有其他要求,所以不唯一。。

      感知机算法的收敛性。证明收敛性,也就是证明说有限次迭代之后会找到这样一个超平面S将训练数据完全正确分离。而对于线性可分的数据,肯定是存在这样一个平面,能够将数据完全正确的分开。我们设这样的一个平面,然后证明有限步可得即可。迭代次数与数据的离散程度和数据与平面的最近距离之间的关系有关。如果数据集不是线性可分,使用感知机的时候不收敛,迭代结果会产生震荡。收敛性是在数据线性可分的前提之下,才存在的。

      感知机的对偶形式,对偶是指思路不同,但问题的解是相通的。对偶形式为什么会出现,我之前一直不明白,也不清楚为什么出现的原因,经过查找资料,现在整理如下:对偶形式的目的是为了减少运算量,但并不是任何情况下,都会降低运算量,而是在特征空间的维度很高的情况下才起作用。从n维的特征空间的比较变为了N个训练数据的规模之下。模型:f(x) = sign(对N求和(aiyixi)*x +b)。预先将实例间的内积计算出来并以矩阵的形式存储,这个矩阵即为Gram矩阵。

猜你喜欢

转载自blog.csdn.net/angela2016/article/details/80653758