感知机定义
感知机是一个经典的二分类问题。假设我们有一系列的数据集
T={(x0,y0),(x1,y1),⋯,(xm,ym)}
其中, x∈Rn, y∈{−1,1}
假设存在一个参数向量 w∈Rn 和一个参数 b∈R,可以使得y=wTx+b 构造出的超平面能恰好分开数据集中点。那么,我们的目标,就是求解出参数向量 w 和偏置项 b
注意,我们提到的所有向量都是列向量
我们需要定义一个损失函数,最直观的方式是,假设M表示误分类的点集,则误分类点数个数最小是我们的求解目标;不过这种方式得出的函数不可导,不容易计算。因此,我们选择一个等价的方式,计算所有误分类点到平面的距离总和,距离总和最小则说明超平面拟合越好。
先给出,空间 Rn 中的点到超平面的距离公式:
d=∥w∥2∣wTx+b∣
∥w∥2 表示向量 w的L2范数。
因此,如果一个点xi被误分类了,则−yi(wTxi+b)>0
结合距离公式,我们可以得出误分类点到超平面的距离是:
−∥w∥2yi(wTxi+b)
对于所有的误分类点来说,距离总和应该是:
−∥w∥21xi∈M∑yi(wTxi+b)
如果我们不考虑系数,那么等价的最小距离总和应该是:
L(w,b)=xi∈M∑yi(wTxi+b)
我们需要一个算法,来根据上述条件,求出w 和 b
训练方法
梯度下降方法
根据上面的距离公式,我们应该最小化L(w,b),分别对w和b求解偏导:
∇wL(w,b)=∂w∂L(w,b)=xi∈M∑yixi
∇bL(w,b)=∂b∂L(w,b)=xi∈M∑yi
上面这种方式为批梯度下降,即每次要对全部的数据执行一个计算,然后更新梯度:
w=w−η∇bL(w,b)
b=b−η∇bL(w,b)
其中0<η<1表示学习速率。上述用到了向量求解偏导的方式,具体参考这篇文档
为了加快计算速度,我们可以使用随机梯度下降(SGD)的方式,即每次随机选择一个数据点进行跟新,则最终的更新方式为:
w=w−ηyixi
b=b−ηyi
算法会一直迭代,直到M=∅,或者L(w,b)≤ϵ,这里ϵ表示我们可以忍受的最小值。
对偶方法
未完待续 ......