感知机模型
感知机是一种属于判别模型的线性分类模型。形如:
f ( x ) = s i g n ( w x + b ) f(x)=sign(wx+b) f(x)=sign(wx+b)
其中
s i g n ( x ) = { 1 x>=0 − 1 x<0 sign(x)= \begin{cases} 1& \text{x>=0}\\ -1& \text{x<0} \end{cases} sign(x)={ 1−1x>=0x<0
感知机的几何意义实际上是找到一个超平面将两类样本分开,应用的前提是样本本身是线性可分的。
感知机学习策略
损失函数:所有误分类的点到超平面的距离之和:
− 1 ∣ ∣ w ∣ ∣ ∑ x i , y i ∈ T y i ( w x i + b ) -\frac{1}{||w||}\sum_{x_i,y_i \in T} {y_i(wx_i+b)} −∣∣w∣∣1xi,yi∈T∑yi(wxi+b)
不考虑 − 1 ∣ ∣ w ∣ ∣ -\frac{1}{||w||} −∣∣w∣∣1,就得到了感知机的损失函数:
L ( w , b ) = − ∑ x i , y i ∈ T y i ( w x i + b ) L(w,b)=-\sum_{x_i,y_i \in T} {y_i(wx_i+b)} L(w,b)=−xi,yi∈T∑yi(wxi+b)
备注:点面的距离公式,不了解的同学请自行百度。
感知机的算法
感知机的算法一般是随机梯度下降
感知机算法伪代码
输入:数据集T{ ( x i , y i ) {(x_i,y_i)} (xi,yi)}其中 x i ∈ R , y i ∈ { 1 , − 1 } x_i \in R,y_i \in \{1,-1\} xi∈R,yi∈{ 1,−1};学习率 η ∈ ( 0 , 1 ] \eta \in (0,1] η∈(0,1]
输出: w , b w,b w,b;感知机模型 f ( x ) = s i g n ( w x + b ) f(x)=sign(wx+b) f(x)=sign(wx+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 ) y_i(wx_i+b) yi(wxi+b)<=0,
w ← w + η y i x i w\leftarrow w+\eta y_ix_i w←w+ηyixi
b ← w + η y i b\leftarrow w+\eta y_i b←w+ηyi
(4)转至(2),直至训练集中没有误分类的点
算法收敛性
定理2.1(Novikoff)
设数据集T{ ( x i , y i ) {(x_i,y_i)} (xi,yi)}其中 x i ∈ R , y i ∈ { 1 , − 1 } x_i \in R,y_i \in \{1,-1\} xi∈R,yi∈{ 1,−1}是线性可分的,则有如下结论:
(1)存在满足条件 ∣ ∣ w o p t ∣ ∣ = 1 ||w_{opt}||=1 ∣∣wopt∣∣=1的超平面 w o p t x + b = 0 w_{opt}x+b=0 woptx+b=0将数据集完全正确分开;且存在 γ > 0 \gamma>0 γ>0,对所有i=1,2,3…n有:
y i ( w o p t x i ) > = γ y_i(w_{opt}x_i)>=\gamma yi(woptxi)>=γ
翻译成中文意思就是,对于线性可分数据集,存在一个超平面,使得训练集中的点到此平面的距离有最小值;换言之即是点到面的距离有下界。
(2)令 R = max ∣ ∣ x i ∣ ∣ R=\max||x_i|| R=max∣∣xi∣∣, 1 ≤ i ≤ N 1 \leq i\leq N 1≤i≤N;则在训练集上的误分类次数k满足不等式
k ≤ R γ k \leq \frac{R}{\gamma} k≤γR
证明:(1)训练集线性可分,则有 y i ( w x i ) > 0 y_i(wx_i)>0 yi(wxi)>0,对于有限个样本;
γ = m i n { y i ( w o p t x i ) } \gamma =min\{y_i(w_{opt}x_i)\} γ=min{ yi(woptxi)}
证毕
(2)关于(2)的证明,过程较长,此处不做详细推导。此式的证明用到了(1)的结论,用到了递推的思想,总的来说并不难,有兴趣的朋友可看看书中是如何证明的。下面给出另一个版本的证明。
定理2的证明
感知机算法的对偶形式
输入:训练数据集T={(x1,y1),(x2,y2),…,(xN,yN)},其中xi∈X=Rn,yi∈Y={−1,+1}, i=1,2,…,N; 学习率η(0<η⩽1);
输出:α,b;感知机模型 f ( x ) = s i g n ( ∑ j = 1 N α j y j x j ⋅ x + b ) f(x)=sign(\sum^N_{j=1} α_jy_jx_j⋅x+b) f(x)=sign(∑j=1Nαjyjxj⋅x+b)
(1) α ← 0 , b ← 0 α←0,b←0 α←0,b←0
(2)在训练集中选取数据 ( x i , y i ) (x_i,y_i) (xi,yi)
(3)如果 y i ( ∑ j = 1 N α j y j x j ⋅ x + b ) ⩽ 0 y_i(\sum^N_{j=1}α_jy_jx_j⋅x+b)⩽0 yi(∑j=1Nαjyjxj⋅x+b)⩽0
α i ← α i + η b ← b + η y i \alpha_i \leftarrow \alpha_i + \eta \\ b\leftarrow b + \eta y_i αi←αi+ηb←b+ηyi
(4)转至(2),直至训练集中没有误分类点。
课后习题
2.1:感知机是线性模型,所以不能表示复杂的函数,如异或(XOR)。验证感知机为什么不能表示异或。
解:
首先讲一下啥叫异或,异或是一种逻辑运算:
即“两个输入相同时为0,不同则为1”
对感知机用时我们稍作修改,输入相同时为-1
百度百科——异或
下面开始证明感知机不能表示异或。解题思路,我们需要证明感知机无法表示某个逻辑,或是映射,我们自然的会想到去证明在此种映射下的数据是线下不可分的,从而不满足感知机的先决条件,而我们在证明某个结论不成立的时候,最好用的其实是反证法,举个反例就可以了。自然而然的就可以得到该题的证明。下面给出证明。
证:存在四个满足异或运算的点 x i ∈ { ( 1 , 1 ) , ( 1 , − 1 ) , ( − 1 , 1 ) , ( − 1 , − 1 ) } x_i \in \{(1,1),(1,-1),(-1,1),(-1,-1)\} xi∈{ (1,1),(1,−1),(−1,1),(−1,−1)}
假设存在一个平面 w x + b = 0 wx+b=0 wx+b=0能将 x i x_i xi分开,则根据感知机原理,显然有:
y i ( w x + b ) > 0 ( 1 ) y_i(wx+b)>0 (1) yi(wx+b)>0(1)
下面将四个点带入(1)式,可得:
− 1 ( w 1 + w 2 + b ) > 0 ( 2 ) 1 ( − w 1 + w 2 + b ) > 0 ( 3 ) 1 ( w 1 − w 2 + b ) > 0 ( 4 ) − 1 ( − w 1 − w 2 + b ) > 0 ( 5 ) -1(w_1+w_2+b)>0 \ \ (2) \\1(-w_1+w_2+b)>0 \ \ (3) \\ 1(w_1-w_2+b)>0 \ \ (4)\\ -1(-w_1-w_2+b)>0 \ \ (5) −1(w1+w2+b)>0 (2)1(−w1+w2+b)>0 (3)1(w1−w2+b)>0 (4)−1(−w1−w2+b)>0 (5)
( 2 ) + ( 5 ) → b < 0 ( 3 ) + ( 4 ) → b > 0 (2)+(5) \rightarrow b<0\\ (3)+(4) \rightarrow b>0 (2)+(5)→b<0(3)+(4)→b>0
矛盾,证毕。
2.2 略,根据还一下数据跟着例题自己算一边即可,此处不做展示。
这里给出我写的另一个系列的博文手撕算法系列_感知机
2.3证明以下定理:样本集线性可分的充要条件是正实例点集所构成的凸壳与负实例点集所构成的凸壳互不相交。
证明:
充分性证明:
已知正实例点集构成的凸壳与负实例点集构成的凸壳互不相交。。。。条件(1)
则有对任意 x j ∈ { 正 实 例 点 集 } x_j \in \{正实例点集\} xj∈{ 正实例点集}
由凸壳定义:有 取 λ i = 1 , i = j ; e l s e 0 \lambda_i =1,i=j;else 0 λi=1,i=j;else0, ∑ i k λ i x j ∈ c o n v ( 正 实 例 点 ) \sum_i^k{\lambda_ix_j}\in conv(正实例点) ∑ikλixj∈conv(正实例点)
同理可得,对任意 x j ∈ { 负 实 例 点 集 } x_j \in \{负实例点集\} xj∈{ 负实例点集} , x j ∈ c o n v ( 负 实 例 点 ) x_j \in conv(负实例点) xj∈conv(负实例点)又两个凸集不相交;则存在一个超平面将正实例点与负实例点完全分开。
必要性:
已知正实例点与负实例点线性可分;则 存 在 一 个 超 平 面 w x + b = 0 ; 且 ∑ w = 1 , 使 得 w x + b > 0 , x ∈ { 正 实 例 点 } ; w x + b < 0 , x ∈ { 负 实 例 点 } 存在一个超平面 wx+b=0;且\sum{w}=1 ,使得wx+b>0,x \in \{正实例点\};wx+b<0,x \in \{负实例点\} 存在一个超平面wx+b=0;且∑w=1,使得wx+b>0,x∈{ 正实例点};wx+b<0,x∈{ 负实例点}
则对于任意 x j ∈ c o n v ( 正 实 例 点 ) x_j \in conv(正实例点) xj∈conv(正实例点)都有 x j = ∑ i = 1 k λ i x i x_j=\sum_{i=1}^k\lambda_ix_i xj=∑i=1kλixi
立得 w x j = ∑ i = 1 k λ i w x i > − b wx_j=\sum_{i=1}^k\lambda_iwx_i>-b wxj=i=1∑kλiwxi>−b
同理可得:
则对于任意 x j ∈ c o n v ( 负 实 例 点 ) x_j \in conv(负实例点) xj∈conv(负实例点)都有 w x j = ∑ i = 1 k λ i w x i < − b wx_j=\sum_{i=1}^k\lambda_iwx_i<-b wxj=i=1∑kλiwxi<−b
综上可知,正负实例点生成的凸壳集是线性可分的。
综上,充要性证毕。