感知机模型:
1 判别模型,
2 旨在学习出一个线性划分的超平面
输入 T= {(x1,y1),(x2,y2)……(xN,yN)}xi 是一n维的特征向量,yi属于{+1,-1}。
通俗来讲就是。(假设T是线性可分的)
输出 函数f(x) = sign(w·x + b)
sign表示符号函数。是一n维的向量。
(w,b)可以确定一个超平面。
首先,我们要使用梯度下降来求解。就得确定损失函数。
分类错误的情况 下
定义M是被(w,b)确定的超平面分错的点。那么
至于为什么这么定义。是因为这么定义方便求导,当然你也可以定义其他类型的loss function。
采用随机梯度下降。
β是学习率
当然你也可以用批梯度下降,也就是一次性把所有误分类点的梯度累加,不过效果和效率应该还是SGD比较好。
学习过程:
(1)选取初始值w0
,b0
(2)在训练集合中选取一个数据(xi,yi)
(3)如果yi(w·xi +b)<0
算法的直观解释,当一个实例点被误分类时,即位于分类超平面的错误一侧的时候,调整w,b使分离超平面,向该误分类点一侧移动,以减少距离,知道越过这个点,使其被正确分类为止。
接下来说说对偶问题。这个很重要,对以后学习SVM也很有帮助。
对偶算法的基本思想是,将w,b表示为实例xi和标记yi的线性组合的形式,通过求解其系数而求得w和b。由上面的公式可知,w,b初始都为0,而他两又是由下面公式一步一步迭代出来的。
所以 wb可以写成下面的形式
αi=niβ 表示在i这个分类点 修改过ni次。也就是把超平面移动过ni次才使得i这个点被分对。
由此代入原公式。
要求的公式为,我们只需要求出 α,b即可
f(x)=sign(∑Ni=1αiyixi⋅x+b)
(1)
所以迭代过程就变为了
αi=αi+β
b=b+β
这个地方我刚开始有点迷惑,当我把公式(1)对 αi,b求导时,并不能得到上面的结果。后面才发现,这里不能对这两个参数求导,只需要把
代入到
代入前面的迭代过程即可。
转化为对偶问题的好处:
转换为内积形式。需要多次计算xi · xj 所以可以预先计算并保存结果,提高效率。