介绍感知机模型之前我想介绍一下什么是线性可分,以及训练机器学习模型的大体步骤,什么是感知机,感知机模型的形式。
数据集的线性可分:给定一组数据集T,T={(x1,y1),(x2,y2),...,(xn,yn)},x属于Rn,y属于{-1,+1},i=1,2,3,4,..,n,如果存在一个超平面S且该超平面能够将数据集中的正负实例点完全正确的划分到超平面的两侧,则称该数据集线性可分。
机器学习的模型的大体步骤:(1)选取适合数据的分类模型(2)结合模型确定损失函数(3)利用数学知识进行模型损失函数的进行极小化处理(4)选出最优超参数(5)根据模型参数训练数据(6)利用模型对未知数据进行预测。
什么是感知机(Perceptron):感知机是1957年由Rosenblatt提出的,是神经网络与支持向量的基础。它是二分类的线性分类模型。
感知机模型的形式:f(x)=sign(wx+b),w为权向量(weight),b为偏置(bias)。
好了,在介绍了上面这些基本概念之后,那我们开始学习感知机模型吧。
对于感知机模型,如果数据集线性可分,那么它能够在有限次后将训练数据全部正确划分。
训练数据之前,我们定义感知机的损失函数(Loss Function)。对于损失函数,我们选取的要求是其要方便优化及可导。对于感知机模型,我们使用误分类点到超平面的距离和为我们定义为我们的损失函数。如下给出:其中(xi,yi)为误分类点的集合:
有了上面定义的损失函数,我们利用训练数据,对其进行优化,为了使误分类点减少,转化在损失函数上为求损失函数的极小值。在此我们利用梯度下降法对其进行优化。
对上面损失函数分别对w,b求偏导数。得。
由于极小化过程不是一次使所有误分类的点梯度下降,而是一次随机选取一个误分类的点进行梯度下降。则:,eta 为学习率且大于0小于等于1。最后不断优化直到所有训练数据点完全分类正确。
至此我对感知机的原始学习算法做如下总结:
输入:训练数据T={(x1,y1),(x2,y2),...,(xN,yN)},其中xi输入Rn,yi属于{-1,+1},0<eta<=1;
输出:w,b;感知机模型为f(x)=sign(wx+b)
(1):选取初值:w0.b0
(2):在训练数据集中选取(xi,yi)
(3):如果yi(wxi*yi+b)<=0,执行下面更新:
w = w+eta*yi*xi,b = b+eta*yi
(4)转到(2),直到训练集中没有误分类的点。
最后学的感知机模型为:f(x) = sign(wx+b),分离超平面为:wx+b=0
下次本人分享感知机的对偶算法,谢谢大家,欢迎指正和评论。