概述
感知机(perceptron) 是二分类的线性分类模型。
- 输入:特征向量
- 输出:类别,+1,-1,二值
- 感知机是特征空间中的超平面,属于判别模型
分为原始形式和对偶形式,是神经网络和svm的基础。
模型
定义:假设输入空间(特征空间)是X⊆RnX \subseteq R^nX⊆Rn,输出空间是y={+1,−1}y=\{+1,-1\}y={+1,−1}
f(x)=sign(wx+b)f(x)=sign(wx+b)f(x)=sign(wx+b)称为感知机模型。www为权重或权值向量,bbb为偏置(bias),sign为符号函数,即sign(x)={+1,x≥1−1,x<0sign(x)=\begin{cases}
+1 ,x \geq 1 \\
-1 ,x<0
\end{cases}sign(x)={+1,x≥1−1,x<0
感知机模型的假设空间是定义在特征空间中所有的线性分类模型,即函数集合{f∣f(x)=wx+b}\{f|f(x)=wx+b\}{f∣f(x)=wx+b}
模型时要学习得到的函数,而空间是所有可能的函数的集合。
策略
- 线性可分
对于给定的数据集,存在某个超平面将数据集的正负样本完全正确的划分到超平面的两侧,则称数据集为线性可分数据集。 - 感知机学习策略
定义经验损失函数并将损失函数极小化。
- 若损失函数定义为误分类点的个数,如下,不易优化
- ∑xi∈M1\sum_{x_i\in M}1∑xi∈M1 ,M为误分类点集合
- 损失函数定义为误分类点到超平面的总距离。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) M为误分类点集合。该损失是感知机学习的经验风险函数。
感知机模型学习的策略是在假设空间中选取使损失函数最小的模型参数w,bw,bw,b。
算法
感知机学习算法转化为求解损失函数的最优化问题。
- 感知机算法的原始形式
给定训练集T,求参数w,bw,bw,b,使其成为以下损失函数极小化问题的解。minw,bL(w,b)=−∑xi∈Myi(wxi+b)min_{w,b}L(w,b)=-\sum_{x_i \in M}y_i(wx_i+b)minw,bL(w,b)=−xi∈M∑yi(wxi+b)其中M为误分类点集合。
感知机学习算法是误分类驱动的,采用随机梯度下降(stochastic gradient descent)。初始化w0,b0w_0,b_0w0,b0,每次选取一个误分类的点进行梯度下架(不是所有误分类点)。
假设误分类集是固定的,那么损失函数L(w,b)L(w,b)L(w,b)的梯度是∇wL(w,b)=−∑xi∈Myixi\nabla_wL(w,b)=-\sum_{x_i\in M}y_ix_i∇wL(w,b)=−xi∈M∑yixi ∇bL(w,b)=−∑xi∈Myi\nabla_bL(w,b)=-\sum_{x_i\in M}y_i∇bL(w,b)=−xi∈M∑yi
x选取一个误分类点,进行更新
w←w+ηyixiw\leftarrow w+\eta y_i x_iw←w+ηyixi b←b+ηyib \leftarrow b+\eta y_ib←b+ηyi
其中η\etaη是学习率。
综上,可得如下算法
感知机学习算法原始形式
- 输入:训练数据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),学习率η\etaη (0<η≤1)(0<\eta\leq 1 )(0<η≤1) ,
- 输出:w,bw,bw,b;感知机模型f(x)=sign(wx+b)f(x)=sign(wx+b)f(x)=sign(wx+b)
(1) 选取初值w0,b0w_0,b_0w0,b0
(2) 在训练集上选取数据(xi,yi)(x_i,y_i)(xi,yi)
(3) 如果yi(wxi+b)≤0y_i(wx_i+b)\leq 0yi(wxi+b)≤0,w←w+ηyixiw\leftarrow w+\eta y_i x_iw←w+ηyixi b←b+ηyib \leftarrow b+\eta y_ib←b+ηyi
(4) 转至2,知道没有误分类点
- 算法收敛性
对于线性可分数据集感知机学习原始算法收敛,即经过有限次迭代,可以训练出一个将数据集完全正确分类的感知机模型。
感知机学习算法有很多解,依赖于初值和选择误分类点的顺序。
当训练数据集线性不可分时,算法不收敛,迭代结果会震荡
3.对偶形式
基本想法为:将w,bw,bw,b表示为实例xix_ixi和标记yiy_iyi的线性组合的形式,通过求解其系数求得w,bw,bw,b。将w0,b0w_0,b_0w0,b0设为0,对误分类点通过w←w+ηyixiw\leftarrow w+\eta y_i x_iw←w+ηyixi b←b+ηyib \leftarrow b+\eta y_ib←b+ηyi修改w,bw,bw,b。不难看出,最后学习到的w,bw,bw,b可以表示为w=∑i=1Naiyixiw=\sum^N_{i=1} a_iy_ix_iw=i=1∑Naiyixi b=∑i=1Naiyib=\sum^N_{i=1} a_iy_ib=i=1∑Naiyi ai=niηa_i=n_i \etaai=niη,当η=1\eta=1η=1时,aia_iai表示第i个点由于误分类而更新的次数
感知机学习算法对偶形式
- 输入:训练数据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),学习率η\etaη (0<η≤1)(0<\eta\leq 1 )(0<η≤1) ,
- 输出:a,ba,ba,b;感知机模型f(x)=sign(∑j=1Najyjxjx+b)f(x)=sign(\sum^N_{j=1}a_jy_jx_jx+b)f(x)=sign(∑j=1Najyjxjx+b),其中a=(a1,a2,...aN)Ta=(a_1,a_2,...a_N)^Ta=(a1,a2,...aN)T
(1) a←0,b←0a\leftarrow0,b\leftarrow0a←0,b←0
(2) 在训练集上选取数据(xi,yi)(x_i,y_i)(xi,yi)
(3) 如果yi(∑j=1Najyjxjxi+b)≤0y_i(\sum^N_{j=1}a_jy_jx_jx_i+b)\leq 0yi(∑j=1Najyjxjxi+b)≤0,a←ai+ηa\leftarrow a_i+\eta a←ai+η b←b+ηyib \leftarrow b+\eta y_ib←b+ηyi
(4) 转至2,知道没有误分类点