def2.1(感知机):假设输入空间(特征空间)是 X \mathcal{X} X⊆Rn,输出空间 Y \mathcal{Y} Y={+1,-1}。输入x∈ X \mathcal{X} X表示实例的特征向量,对应于输入空间的点;输出y∈ Y \mathcal{Y} Y表示实例的类别。由输入空间到输出空间的如下函数:
称为感知机。其中,w和b为感知机的模型参数,w∈Rn叫做权重(weight)或权值向量,b∈Rn叫做偏置(bias),w·x表示w和x的内积。sign是符号函数,即
s i g n ( x ) = { + 1 , x ≥ 1 − 1 , x < 0 sign(x)=\left\{ \begin{array}{c} +1,x≥1 \\ -1, x<0 \\ \end{array}\right. sign(x)={+1,x≥1−1,x<0
感知机是一种线性分类模型,属于判别模型。
def2.2(数据集的线性可分型) 给定一个数据集
T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) T= {(x_1,y_1),(x_2,y_2),...,(x_N,y_N)} T=(x1,y1),(x2,y2),...,(xN,yN)
其中,xi∈ X \mathcal{X} X=Rn,yi Y \mathcal{Y} Y={+1,-1},i=1,2,…N,如果存在某个超平面S:
w ⋅ x + b = 0 w·x+b=0 w⋅x+b=0
可以将数据集中的正实例点和负实例点完全正确的划分到超平面两侧,则称数据集T为线性可分数据集,反之为线性不可分数据集。
若数据集是线性可分的,那我们就要找到这个可以分离出两类的超平面,为了找到这个超平面即确定模型参数w和b,我们需要制定一个学习策略,即定义损失函数并极小化这个损失函数。
这里我们选择误分类点到超平面S的总距离的损失函数。首先我们写出输入空间Rn中任一点到超平面S的距离:
1 ∣ ∣ w ∣ ∣ ∣ w ⋅ x 0 + b ∣ \frac{1}{||w||}|w·x_0+b| ∣∣w∣∣1∣w⋅x0+b∣
这里,||w||是w的L2范数。
其次,对于误分类的数据(xi,yi)来说,
− y i ( w ⋅ x i ) + b > 0 -y_i(w·x_i)+b>0 −yi(w⋅xi)+b>0
一定成立,所以xi到超平面的距离是
− 1 ∣ ∣ w ∣ ∣ y i ( w ⋅ x i + b ) -\frac{1}{||w||}y_i(w·x_i+b) −∣∣w∣∣1yi(w⋅xi+b)
这样,假设超平面S的误分类点集合为M,那么所有误分类点到S的总距离为:
− 1 ∣ ∣ w ∣ ∣ ∑ x i ∈ M y i ( w ⋅ x i + b ) -\frac{1}{||w||}\sum_{x_i\in{M}}y_i(w·x_i+b) −∣∣w∣∣1xi∈M∑yi(w⋅xi+b)
不考虑1/||w||,就得到感知机学习的损失函数。(因为1/||w||就是一个常数,对于衡量损失的大小没有影响)
给定训练数据集 T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) T= {(x_1,y_1),(x_2,y_2),...,(x_N,y_N)} T=(x1,y1),(x2,y2),...,(xN,yN)其中,xi∈ X \mathcal{X} X=Rn, yi∈ Y \mathcal{Y} Y={+1,-1}, i=1,2,…N,感知机sign(w·x+b)学习的损失函数定义为:
L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) ( 2.4 ) L(w,b)=-\sum_{x_i\in M}y_i(w·x_i+b) (2.4) L(w,b)=−xi∈M∑yi(w⋅xi+b)(2.4)
这里M是误分类点的集合,这个损失函数就是**感知机学习的经验风险函数**。
感知机问题转化为对损失函数的最优化问题,最优化方法为随机梯度下降法。本节叙述感知机学习的具体算法,并证明在训练数据线性可分条件下感知机学习算法的收敛性。
感知机算法是对一下最优化问题的算法。首先给定一个数据集:
T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) T= {(x_1,y_1),(x_2,y_2),...,(x_N,y_N)} T=(x1,y1),(x2,y2),...,(xN,yN)其中,xi∈ X \mathcal{X} X=Rn, yi∈ Y \mathcal{Y} Y={+1,-1}, i=1,2,…N,求参数 w, b,使其为以下损失函数极小化问题的解:
m i n w , b L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) min_{w,b}L(w,b)=-\sum_{x_i\in{M}}y_i(w·x_i+b) minw,bL(w,b)=−xi∈M∑yi(w⋅xi+b)
M是误分类点的集合。
感知机算法是误分类驱动的,具体采用随机梯度下降法(stochastic gradient descent)。具体的方法首先选取一个超平面w0,b0,然后用梯度下降法不断极小化目标函数。这个极小化过程不是一次使M中所有误分类点的梯度下降,而是一次选取一个误分类点使其梯度下降。
设M是固定的,那么损失函数 L ( w , b ) L(w,b) L(w,b)的梯度由
∇ w L ( w , b ) = − ∑ x i ∈ M y i x i \nabla_wL(w,b)=-\sum_{x_i\in{M}}y_ix_i ∇wL(w,b)=−xi∈M∑yixi
∇ b L ( w , b ) = − ∑ x i ∈ M y i \nabla_bL(w,b)=-\sum_{x_i\in{M}}y_i ∇bL(w,b)=−xi∈M∑yi
给出
然后随机选取一个误分类点,对 w , b w,b w,b进行更新:
w ← w + η y i x i w\leftarrow w+\eta y_ix_i w←w+ηyixi
b ← b + η y i b\leftarrow b+\eta y_i b←b+ηyi
式中的 η ( 0 ≤ η ≤ 1 ) \eta(0\leq\eta\leq1) η(0≤η≤1)是步长,在统计学习中又被称作学习率(learing rate)。这样,通过迭代可以期待损失函数不断减小,直到为0.综上所述,得到下面的算法:
算法2.1(感知机学习算法的原始形式)
输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\lbrace{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)}\rbrace T={(x1,y1),(x2,y2),...,(xN,yN)}其中,xi∈ X \mathcal{X} X=Rn, yi∈ Y \mathcal{Y} Y={+1,-1}, i=1,2,…N;学习率 η ( 0 ≤ η ≤ 1 ) \eta(0\leq\eta\leq1) η(0≤η≤1);
输出: w , b w,b w,b;感知机模型 f ( x ) = s i g n ( w ⋅ x + b ) f(x)=sign(w·x+b) f(x)=sign(w⋅x+b).
(1)选取初值 w 0 , b 0 w_0,b_0 w0,b0;
(2)在训练集中选取数据 ( x i , y i ) (x_i,y_i) (xi,yi)
(3)如果 y i ( w ⋅ x i + b ) ≤ 0 y_i(w·x_i+b)\leq0 yi(w⋅xi+b)≤0,
w ← w + η y i x i w\leftarrow w+\eta y_ix_i w←w+ηyixi b ← b + η y i b\leftarrow b+ \eta y_i b←b+ηyi
(4)转至(2),直至训练集中没有误分类点。
这种学习算法有如下的直观的解释:当一个实例点被误分类,即位于分离超平面的错误的一侧,则调整 w , b w,b w,b的值,使分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面的距离,直至超平面越过该误分类点使其被正确分类。
本节证明对于线性可分数据集感知机学习算法原始形式收敛,即经过有限次迭代可以得到一个将训练数据集完全正确划分的分离超平面和感知机模型。
为了便于叙述与推导,将偏置 b b b并入权重向量 w w w,记做 w ^ = ( w T , b ) T \hat w=(w^T,b)^T w^=(wT,b)T,同样也将输入向量加以扩充,加进常数1,记做 x ^ = ( x T , 1 ) T \hat x=(x^T,1)^T x^=(xT,1)T.这样, x ^ ∈ R n + 1 \hat x \in{R^{n+1}} x^∈Rn+1, w ^ ∈ R n + 1 \hat w \in{R^{n+1}} w^∈Rn+1,显然, w ^ ⋅ x ^ = w ⋅ x + b \hat w·\hat x = w·x+b w^⋅x^=w⋅x+b.
**定理2.1(Novikoff)**设训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\lbrace{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)}\rbrace T={(x1,y1),(x2,y2),...,(xN,yN)}其中,xi∈ X \mathcal{X} X=Rn, yi∈ Y \mathcal{Y} Y={+1,-1}, i=1,2,…N,则
(1)存在满足条件 ∣ ∣ w ^ o p t ∣ ∣ = 1 ||\hat w_{opt}||=1 ∣∣w^opt∣∣=1的超平面 w ^ o p t ⋅ x ^ = w o p t ⋅ x + b o p t = 0 \hat w_{opt}·\hat{x}=w_{opt}·x+b_{opt}=0 w^opt⋅x^=wopt⋅x+bopt=0将数据集完全正确分开,且存在 γ > 0 \gamma>0 γ>0,对所有 i = 1 , 2 , . . . , N i=1,2,...,N i=1,2,...,N
y i ( w ^ o p t ⋅ x ^ i ) = y i ( w o p t ⋅ x + b o p t ) ≥ γ y_i(\hat w_{opt}·\hat{x }_i)=y_i(w_{opt}·x+b_{opt})\geq\gamma yi(w^opt⋅x^i)=yi(wopt⋅x+bopt)≥γ
(2)令 R = m a x 1 ≥ i ≥ N ∣ ∣ x ^ i ∣ ∣ R=max_{1 \geq i \geq N}||\hat{x}_i|| R=max1≥i≥N∣∣x^i∣∣,则感知机算法在训练数据集上对误分类次数 k k k满足不等式:
k ≤ ( R γ ) 2 k\leq(\frac{R}{\gamma})^2 k≤(γR)2
Proof:(1)因为训练集线性可分,那就一定存在一个超平面将数据集完全正确的分开,取该超平面为 w ^ o p t ⋅ x ^ = w o p t ⋅ x + b o p t = 0 \hat w_{opt}·\hat{x}=w_{opt}·x+b_{opt}=0 w^opt⋅x^=wopt⋅x+bopt=0, ∣ ∣ w ^ o p t ∣ ∣ = 1 ||\hat w_{opt}||=1 ∣∣w^opt∣∣=1,对于 i = 1 , 2... , N i=1,2...,N i=1,2...,N,均有
y i ( w ^ o p t ⋅ x ^ i ) = y i ( w o p t ⋅ x + b o p t ) > 0 y_i(\hat w_{opt}·\hat{x }_i)=y_i(w_{opt}·x+b_{opt})>0 yi(w^opt⋅x^i)=yi(wopt⋅x+bopt)>0
所以存在
γ = m i n i { y i ( w o p t ⋅ x + b o p t ) } \gamma=min_i \lbrace{y_i(w_{opt}·x+b_{opt})\rbrace} γ=mini{yi(wopt⋅x+bopt)}
使得
y i ( w ^ o p t ⋅ x ^ i ) = y i ( w o p t ⋅ x + b o p t ) ≥ γ y_i(\hat w_{opt}·\hat{x }_i)=y_i(w_{opt}·x+b_{opt})\geq\gamma yi(w^opt⋅x^i)=yi(wopt⋅x+bopt)≥γ
(2)我们令感知机算法从 w ^ 0 = 0 \hat{w}_0=0 w^0=0开始更新权重,令 w ^ k − 1 \hat{w}_{k-1} w^k−1为第 k − 1 k-1 k−1次更新完权重,即
w ^ k − 1 = ( w k − 1 T , b k − 1 ) T \hat{w}_{k-1}=(w_{k-1}^T,b_{k-1})^T w^k−1=(wk−1T,bk−1)T
所以还存在误分类实例 ( x i , y i ) (x_i,y_i) (xi,yi),这个误分类实例在 k − 1 k-1 k−1次更新后的条件下,满足下式:
y i ( w ^ k − 1 ⋅ x ^ i ) = y i ( w k − 1 ⋅ x + b k − 1 ) ≤ 0 y_i(\hat w_{k-1}·\hat{x }_i)=y_i(w_{k-1}·x+b_{k-1})\leq0 yi(w^k−1⋅x^i)=yi(wk−1⋅x+bk−1)≤0
则 w , b w,b w,b将经过第K次更新
w k ← w k − 1 + η x i y i w_k\leftarrow w_{k-1}+\eta x_iy_i wk←wk−1+ηxiyi
b k ← b k − 1 + η y i b_k\leftarrow b_{k-1}+\eta y_i bk←bk−1+ηyi
即
w ^ k ← w ^ k − 1 + η y i x ^ i \hat{w}_k\leftarrow \hat{w}_{k-1}+\eta y_i\hat{x}_i w^k←w^k−1+ηyix^i
因为
w ^ k ⋅ w ^ o p t = ( w ^ k − 1 + η y i x ^ i ) w ^ o p t = w ^ k − 1 ⋅ w ^ o p t + η y i x ^ i w ^ o p t ≥ w ^ k − 1 ⋅ w ^ o p t + η γ \begin{aligned} \hat{w}_k·\hat{w}_{opt} &= (\hat{w}_{k-1}+\eta y_i\hat{x}_i) \hat{w}_{opt}\\ &=\hat{w}_{k-1}·\hat{w}_{opt}+\eta y_i\hat{x}_i\hat{w}_{opt}\\ &\geq\hat{w}_{k-1}·\hat{w}_{opt}+\eta\gamma \end{aligned} w^k⋅w^opt=(w^k−1+ηyix^i)w^opt=w^k−1⋅w^opt+ηyix^iw^opt≥w^k−1⋅w^opt+ηγ
这样我们可以通过递推得到
w ^ k ⋅ w ^ o p t ≥ w ^ k − 1 ⋅ w ^ o p t + η γ ≥ w ^ k − 2 ⋅ w ^ o p t + η γ ≥ . . . ≥ k η γ ( 因 为 w ^ 0 = 0 ) \begin{aligned} \hat{w}_k·\hat{w}_{opt} &\geq\hat{w}_{k-1}·\hat{w}_{opt}+\eta\gamma\\ &\geq\hat{w}_{k-2}·\hat{w}_{opt}+\eta\gamma\\ &\geq...\\ &\geq k\eta\gamma(因为\hat{w}_0=0) \end{aligned} w^k⋅w^opt≥w^k−1⋅w^opt+ηγ≥w^k−2⋅w^opt+ηγ≥...≥kηγ(因为w^0=0)
接下来再证明:
∣ ∣ w ^ k ∣ ∣ 2 ≤ k η 2 γ 2 ||\hat{w}_k||^2 \leq k\eta^2\gamma^2 ∣∣w^k∣∣2≤kη2γ2
因为 w ^ k = w ^ k − 1 + η y i x ^ i \hat{w}_k=\hat{w}_{k-1}+\eta y_i\hat{x}_i w^k=w^k−1+ηyix^i
所以我们有
∣ ∣ w ^ k ∣ ∣ 2 = ∣ ∣ w ^ k − 1 ∣ ∣ 2 + 2 η y i w ^ k − 1 ⋅ x ^ i + η 2 ∣ ∣ x ^ i ∣ ∣ 2 ≤ ∣ ∣ w ^ k − 1 ∣ ∣ 2 + η 2 ∣ ∣ x ^ i ∣ ∣ 2 ≤ ∣ ∣ w ^ k − 1 ∣ ∣ 2 + η 2 R 2 ≤ ∣ ∣ w ^ k − 2 ∣ ∣ 2 + 2 η 2 R 2 ≤ . . . ≤ ∣ ∣ w ^ 0 ∣ ∣ 2 + k η 2 R 2 = k η 2 R 2 \begin{aligned} ||\hat{w}_k||^2 &=||\hat{w}_{k-1}||^2+2\eta y_i\hat{w}_{k-1}·\hat{x}_i+\eta^2||\hat{x}_i||^2\\ &\leq||\hat{w}_{k-1}||^2+\eta^2||\hat{x}_i||^2\\ &\leq||\hat{w}_{k-1}||^2+\eta^2R^2\\ &\leq||\hat{w}_{k-2}||^2+2\eta^2R^2\\ &\leq...\\ &\leq||\hat{w}_{0}||^2+k\eta^2R^2\\ &=k\eta^2R^2 \end{aligned} ∣∣w^k∣∣2=∣∣w^k−1∣∣2+2ηyiw^k−1⋅x^i+η2∣∣x^i∣∣2≤∣∣w^k−1∣∣2+η2∣∣x^i∣∣2≤∣∣w^k−1∣∣2+η2R2≤∣∣w^k−2∣∣2+2η2R2≤...≤∣∣w^0∣∣2+kη2R2=kη2R2
根据上面两个结论我们有:
k η γ ≤ w ^ k ⋅ w ^ o p t ≤ ∣ ∣ w ^ k ∣ ∣ ⋅ ∣ ∣ w ^ o p t ∣ ∣ ≤ k η γ k\eta\gamma\leq\hat{w}_k·\hat{w}_{opt}\leq||\hat{w}_k||·||\hat{w}_{opt}||\leq\sqrt{k}\eta\gamma kηγ≤w^k⋅w^opt≤∣∣w^k∣∣⋅∣∣w^opt∣∣≤kηγ
所以
k ≤ ( R γ ) 2 k\leq(\frac{R}{\gamma})^2 k≤(γR)2
上面这个证明说明了如果数据集是线性可分的那么一定可以通过有限次迭代来使得算法收敛。