简介
感知机是二分类的线性分类模型,在特征空间中将实例划分为正负两类的分离超平面,属于判别式模型。
模型
假设输入空间是x⊆Rx\subseteq Rx⊆R,输出空间是Y={−1,+1}Y=\lbrace-1,+1\rbraceY={−1,+1}。由输入空间到输出空间的如下函数:
f(x)=sign(wx+b)f(x)=sign(wx+b)f(x)=sign(wx+b)
sign(x)=1,x>=0sign(x)=1, x>=0sign(x)=1,x>=0
sign(x)=−1,x<0sign(x)=-1, x<0sign(x)=−1,x<0
线性方程wx+b=0wx+b=0wx+b=0对应于输入空间的一个超平面sss,其中www是其法向量,bbb是截距。这个超平面将空间划分为正负2个部分。
损失函数的一个自然选择是误分类点的总数,但是这样的损失函数不是参数www,bbb的连续可导函数,不易优化。损失函数的另一个选择是误分类点到超平面sss的总距离。
推导:点x0x_0x0到超平面sss距离ddd
设x0x_0x0在平面sss上的投影为x1x_1x1,则w∗x1+b=0w*x1+b=0w∗x1+b=0
由于向量x0x1→\overrightarrow{x_0x_1}x0x1与法向量www平行,所以
∣w∗x0x1→∣=∣w∣∣x0x1→∣=w12+w22+...+wn2∗d=∣∣w∣∣d|w*\overrightarrow{x_0x_1}|=|w||\overrightarrow{x_0x_1}|=\sqrt{{w_1}^2+{w_2}^2+...+{w_n}^2}*d=||w||d∣w∗x0x1∣=∣w∣∣x0x1∣=w12+w22+...+wn2∗d=∣∣w∣∣d
又因为w∗x0x1→=w1(x01−x11)+w2(x02−x12)+...+wN(x0N−x1N)w*\overrightarrow{x_0x_1}=w_1({x_0}^1-{x_1}^1)+w_2({x_0}^2-{x_1}^2)+...+w_N({x_0}^N-{x_1}^N)w∗x0x1=w1(x01−x11)+w2(x02−x12)+...+wN(x0N−x1N)
=w1x01+w2x02+...+wNx0N−(w1x01+w2x12+...+wNx1N)=w_1{x_0}^1+w_2{x_0}^2+...+w_N{x_0}^N-(w_1{x_0}^1+w_2{x_1}^2+...+w_N{x_1}^N)=w1x01+w2x02+...+wNx0N−(w1x01+w2x12+...+wNx1N)
=w1x01+w2x02+...+wNx0N+b=∣wx0+b∣=w_1{x_0}^1+w_2{x_0}^2+...+w_N{x_0}^N+b
=|wx_0+b|=w1x01+w2x02+...+wNx0N+b=∣wx0+b∣
所以
∣∣w∣∣d=∣wx0+b∣||w||d=|wx_0+b|∣∣w∣∣d=∣wx0+b∣
d=1∣∣w∣∣∣wx0+b∣d=\frac{1}{||w||}|wx_0+b|d=∣∣w∣∣1∣wx0+b∣
其次对于误分类数据(xi,yi)(x_i, y_i)(xi,yi)来说,−yi(wxi+b)>0-y_i(wx_i+b)>0−yi(wxi+b)>0,到超平面sss的距离为−1∣∣w∣∣yi(wxi+b)-\frac{1}{||w||}y_i(wx_i+b)−∣∣w∣∣1yi(wxi+b),假设误分类点集合为M,那么所有误分类点到sss的总距离为:−1∣∣w∣∣∑xi∈Myi(wxi+b)-\frac{1}{||w||}\sum_{x_i\in{M}}y_i(wx_i+b)−∣∣w∣∣1∑xi∈Myi(wxi+b),在这里不考虑1∣∣w∣∣\frac{1}{||w||}∣∣w∣∣1,可以得到损失函数:
L(w,b)=−∑xi∈Myi(wxi+b)L(w,b)=-\sum_{x_i\in{M}}y_i(wx_i+b)L(w,b)=−xi∈M∑yi(wxi+b)
显然,损失函数是www,bbb的连续可导函数。因为如果没有误分类点,损失函数值是0,而且,误分类点越少,误分类点离超平面越近,损失函数值就越小。
算法
采用随机梯度下降法来解决minL(w,b)minL(w,b)minL(w,b)。
首先任意选取一个超平面w0,b0w_0, b_0w0,b0,然后用梯度下降法不断地极小化目标函数。极小化过程中不是一次使MMM中所有误分类点的梯度下降,而是一次随机采取一个误分类点使其梯度下降。
损失函数的梯度:∇wL(w,b)=−∑xi∈Myixi\nabla_wL(w,b)=-\sum_{x_i\in{M}}y_ix_i∇wL(w,b)=−∑xi∈Myixi,∇wL(w,b)=−∑xi∈Myi\nabla_wL(w,b)=-\sum_{x_i\in{M}}y_i∇wL(w,b)=−∑xi∈Myi
具体算法:
输入:训练数据集T=(x1,y1),(x2,y2),...,(xN,yN)T={(x_1, y_1), (x_2, y_2), ...,(x_N,y_N)}T=(x1,y1),(x2,y2),...,(xN,yN),其中x∈RN,y∈{−1,+1}x\in{R^N}, y\in{\{-1,+1\}}x∈RN,y∈{−1,+1},学习率η\etaη
输出:w,bw,bw,b;感知机模型f(x)=sign(wx+b)f(x)=sign(wx+b)f(x)=sign(wx+b)
step1. 选取初值w0,b0w_0,b_0w0,b0
step2. 在训练集中选取数据(xi,yi)(x_i, y_i)(xi,yi)
step3. 如果yi(wxi+b)<0y_i(wx_i+b)<0yi(wxi+b)<0,更新:
w←w+ηyixiw\leftarrow{w+\eta{y_ix_i}}w←w+ηyixi
b←b+ηyib\leftarrow{b+\eta{y_i}}b←b+ηyi
step4. 转至step2,直至训练集中没有误分类点
直观解释:当一个实例点被误分类,即位于分离超平面的错误一侧时,则调整w,bw,bw,b的值,使分离超平面越过该误分类点,使其被正确分类。
参考文献
《统计学习方法》 李航
本文深入解析感知机这一经典的二分类线性模型,探讨其作为判别式模型的工作原理,详细阐述了感知机的数学表达、损失函数的定义与优化过程,并介绍了随机梯度下降法在感知机算法中的应用。

9663

被折叠的 条评论
为什么被折叠?



