ch02:感知机
- 感知机(perceptron)是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1 和–1 二值.
- 感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型.
- 感知机学习旨在求出将训练数据进行线性划分的分离超平面,为此,导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型 .
1. 感知机模型
- 定义:
f ( x ) = s i g n ( w ⋅ x + b ) f(x)=sign(w·x+b) f(x)=sign(w⋅x+b)
其中,w 和 b 为感知机模型参数。w 叫做权值(weight)或权值向量(weight vector),b 叫做偏置(bias)。w·x 表示 w 和 x 的内积,sign 是符号函数,即
s i g n ( x ) = { + 1 , x > = 0 − 1 , x < 0 sign(x)=\begin{cases} +1,&x>=0\\ -1,&x<0 \end{cases} sign(x)={+1,−1,x>=0x<0 - 感知机的几何解释:线性方程
w ⋅ x + b = 0 w·x+b=0 w⋅x+b=0
对应于特征空间中的一个超平面 S,其中 w 是超平面的法向量,b 是超平面的截距.这个超平面将特征空间划分为两个部分.位于两部分的点(特征向量)分别被分为正、负两类.因此,超平面 S 称为分离超平面(separating hyperplane)
2. 感知机学习策略
数据集的线性可分性
如果存在某个超平面S能够将数据集的正实例点和负实例点完全正确地划分到超平面的两侧,则称数据集T 为线性可分数据集(linearly separable data set)
感知机学习策略
假设训练数据集是线性可分的,感知机学习的目标是求得一个能够将训练集正实例点和负实例点完全正确分开的分离超平面.为了找出这样的超平面,即确定感知机模型参数 w , b ,需要确定一个学习策略,即定义(经验)损失函数并将损失函数极小化.
- 损失函数的一个自然选择是误分类点的总数.但是,这样的损失函数不是参数 w , b 的连续可导函数,不易优化.
- 损失函数的另一个选择是误分类点到超平面S 的总距离,这是感知机所采用的.
- 损失函数的推导过程:
- 首先写出输入空间中任一点x0到超平面S的距离,||w||表示w的L2范数
1 ∣ ∣ w ∣ ∣ ∣ w ⋅ x 0 + b ∣ \frac1{||w||}|w·x_0+b| ∣∣w∣∣1∣w⋅x0+b∣ - 对于误分类的数据(xi,yi)来说
− y i ( w ⋅ x i + b ) > 0 -y_i(w·x_i+b)>0 −yi(w⋅xi+b)>0
成立,因为
- 因此,误分类点到超平面 S 的距离是:
− 1 ∣ ∣ w ∣ ∣ y i ( w ⋅ x + b ) -\frac1{||w||}y_i(w·x+b) −∣∣w∣∣1yi(w⋅x+b) - 假设超平面S的误分类点集合为M,那么所有误分类点到超平面S的总距离就是:
− 1 ∣ ∣ w ∣ ∣ ∑ x i ∈ M y i ( w ⋅ x + b ) -\frac1{||w||}\sum_{x_i\in M} y_i(w·x+b) −∣∣w∣∣1xi∈M∑yi(w⋅x+b) - 不考虑范数的倒数,就得到感知机学习的损失函数:
L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x + b ) L(w,b)=-\sum_{x_i\in M}y_i(w·x+b) L(w,b)=−xi∈M∑yi(w⋅x+b)
- 首先写出输入空间中任一点x0到超平面S的距离,||w||表示w的L2范数
- 这个损失函数就是感知机学习的经验风险函数
3. 感知机学习
- 感知机学习问题转化为求解损失函数的最优化问题,最优化的方法是随机梯度下降法
- 随机梯度下降法:每次随机选取一个误分类点
感知机学习算法的原始形式
感知机学习算法是求参数w,b,使其为损失函数极小化问题的解
-
输入: 训练数据集 T,学习率 η(步长)
-
输出: 参数 w,b;感知机模型 f ( x ) = s i g n ( w ⋅ x + b ) f(x)=sign(w·x+b) f(x)=sign(w⋅x+b)
-
步骤:
(1)选取初值 w0,b0
(2)在训练集中选取数据(xi,yi)
(3)如果 y i ( w ⋅ x i + b ) ≤ 0 y_i(w·x_i+b)≤0 yi(w⋅xi+b)≤0 ,也就是说该点是误分类点,参数更新:
w ← w + η y i x i b ← b + η y i w\gets w+\eta y_ix_i\\b\gets b+\eta y_i w←w+ηyixib←b+ηyi(4)转至(2),直到训练集中没有误分类点 -
直观解释:
当一个实例点被误分类,即位于分离超平面的错误一侧时,则调整 w , b 的值,使分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面间的距离,直至超平面越过该误分类点使其被正确分类
算法的收敛性
现证明,对于线性可分数据集感知机学习算法原始形式收敛,即经过有限次迭代可以得到一个将训练数据集完全正确划分的分离超平面及感知机模型
-
为便于推导,将将偏置b 并入权重向量w,将输入向量加以扩充,加进常数 1
w ^ = ( w T , b ) T x ^ = ( x T , 1 ) T w ^ ⋅ x ^ = w ⋅ x + b \hat w=(w^T,b)^T\\\hat x=(x^T,1)^T\\\hat w·\hat x=w·x+b w^=(wT,b)Tx^=(xT,1)Tw^⋅x^=w⋅x+b -
定理(Novikoff):设训练数据集T是线性可分的,其中输出只有1和-1,则
-
存在满足条件 ∣ ∣ w ^ o p t ∣ ∣ = 1 ||{\hat w}_{opt}||=1 ∣∣w^opt∣∣=1 的超平面 w ^ o p t ⋅ x ^ = 0 \hat w_{opt}·\hat x=0 w^opt⋅x^=0 可将T完全正确分开,且存在 γ>0,对所有的实例都有
y i ( w ^ o p t ⋅ x ^ i ) ≥ γ y_i(\hat w_{opt}·\hat x_i)\ge γ yi(w^opt⋅x^i)≥γ这里γ表示的一个正的下限,代表着计算精度
-
令 R = m a x 1 ≤ i ≤ N ∣ ∣ x ^ i ∣ ∣ R=\underset{1≤i≤N}{max}||\hat x_i|| R=1≤i≤Nmax∣∣x^i∣∣ ,则感知机算法 f ( x ) = s i g n ( w ⋅ x + b ) f(x)=sign(w·x+b) f(x)=sign(w⋅x+b) 在训练数据集上的误分类次数k满足不等式
k ≤ ( R γ ) 2 k\le(\frac Rγ)^2 k≤(γR)2即我们通过有限次的迭代就可以得到正确结果
-
-
证明:(先跳过了。。。)
感知机学习算法的对偶形式
对偶形式的基本想法是,将w和b表示为实例 xi 和标记 yi 的线性组合的形式,通过求解其系数而求得 w 和 b
-
在原始形式中,是逐步修改 w 和 b ,设每个实例点修改了 ni 次,那么对于 w 来说,它的增量是 ni·η·yi·xi,b 的增量就是 ni·η·yi,我们设 α=ni·η,那么,最后学习到的 w 和 b 可以分别表示为:
w = ∑ i = 1 N α i y i x i b = ∑ i = 1 N α i y i w=\sum^N_{i=1}α_iy_ix_i\\b=\sum^N_{i=1}α_iy_i w=i=1∑Nαiyixib=i=1∑Nαiyi可以发现,实例点更新次数越多,意味着它离分离超平面越近,也就越难被正确分类,换句话说,这样的实例对学习结果影响最大
-
输入: 训练数据集 T,学习率 η(步长)
-
输出: α,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)选取初值 α,b 为0
(2)在训练集中选取数据(xi,yi)
(3)如果 y i ( ∑ j = 1 N α j y j x j ⋅ x i + b ) ≤ 0 y_i(\sum^N_{j=1}α_jy_jx_j·x_i+b)≤0 yi(∑j=1Nαjyjxj⋅xi+b)≤0 ,也就是说该点是误分类点,参数更新:
α i ← α i + η b ← b + η y i α_i\gets α_i+\eta\\b\gets b+\eta y_i αi←αi+ηb←b+ηyi(4)转至(2),直到训练集中没有误分类点 -
观察(3)中的迭代条件,可以发现训练实例仅以内积的形式出现.为了方便,可以预先将训练集中实例间的内积计算出来并以矩阵的形式存储,这个矩阵就是所谓的 Gram 矩阵(Gram matrix)
G = [ x i , x j ] N × N G=[x_i,x_j]_{N\times N} G=[xi,xj]N×N