感知机(perceptron)是二类分类的线性分类模型,输入为实例的的特征向量,输出为实例的类别,取+1和-1二值。
感知机模型对应于输入空间(特征空间)中将训练数据进行线性划分的分离超平面,属于判别模型。感知机学习旨在求出将训练数据进行线性划分的超平面,为此导入误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型。
感知机算法简单而易于实现,分为原始形式和对偶形式。
感知机是神经网络与支持向量机的基础。
输入空间 X⊆Rn ,输出空间 Y={+1,−1} 。由输入空间到输出空间的函数:
感知机模型是一种线性分类模型,属于判别模型。感知机模型的假设空间是定义在特征空间的所有线性分类模型(linear classification model)或线性分类器(linear classifier),即函数集合 {f|f(x)=w⋅x+b} 。
感知机的几何解释:线性方程
给定一个数据集,如果存在某个超平面S能够将数据集的正实例点和负实例点完全正确的划分到超平面的两侧,那么称数据集为线性可分数据集(linear separable data set),否则,称为线性不可分。
假设训练集线性可分,感知机学习的目标是求得一个能够将训练集正实例点和负实例点完全正确分开的分离超平面。为了找出这样的超平面,确定参数w,b,需要确定一个学习策略,即定义loss function并将其最小化。
损失函数的一个自然地选择是误分类点的总数,但是这样的损失函数不是参数w,b的连续可导函数,不易于优化。感知机采用的是误分类点到超平面S的总距离来作为损失函数。
数学知识告诉我们,任一点 x0 到超平面S的距离:
对于我们的模型,考虑误分类点,必定有 −yi(w⋅xi+b)>0 成立(注意 yi 取值为 ±1 )。因此误分类点到超平面的距离为:
这样,所有误分类点到超平面的总距离为:
给定训练集 T={(x1,y1),(x2,y2),...,(xN,yN)} ,其中, xi∈Rn , y∈{+1,−1} 。感知机sign(w·x +b) 学习的损失函数定义为:
经过上面讨论,感知机学习问题现在变为损失函数最优化问题,最优化的方法是随机梯度下降法。
现在要求参数w,b,使其为以下损失函数极小化问题的解:
感知机学习是误分类推动的,具体采用随机梯度下降法(stocastic gradient descent,SGD)。首先,选取初始值 w0,b0 ,然后采用梯度下降法不断地极小化目标函数,极小化过程不是一次使M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。
以上损失函数L(w,b)对w和b求偏导可得:
随机选择一个误分类点 (xi,yi) ,对w,b进行更新:
算法:感知机学习算法的原始形式:
输入:线性可分的训练数据集 T={(x1,y1),(x2,y2),...,(xN,yN)} ,其中 xi∈Rn , yi∈{+1,−1} ,i = 1, 2, … , N ; 学习率 η(0<η≤1)
输出:w,b;感知机学习模型 f(x)=sign(w⋅x+b)
(1)选取初值 w0,b0
(2)在训练集中选取数据 (xi,yi)
(3)如果 yi(w⋅xi+b)≤0
算法直观上的解释:当一个点被误分类,则调整w,b的值,使分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面之间的距离,直至超平面越过该误分类点使其被正确分类。
值得注意的是,感知机学习算法由于采用不同的初值或选取不同的误分类点,解可以不同。
可以证明,对于线性可分数据集,感知机学习算法原始形式收敛,即经过有限次迭代可以得到一个将训练集完全正确划分的分离超平面及感知机模型。
感知机(perceptron)学习算法的原始形式和对偶形式与支持向量机(SVM)的原始形式和对偶形式相对应。
对偶形式基本思想:将w,b 表示为 xi,yi 的线性组合的形式,通过求解系数而得到w和b。
假设 w0,b0 初值均为0,对于误分类点 (xi,yi) 通过
算法:感知机学习算法的对偶形式
输入:线性可分的训练数据集 T={(x1,y1),(x2,y2),...,(xN,yN)} ,其中 xi∈Rn , yi∈{+1,−1} ,i = 1, 2, … , N ; 学习率 η(0<η≤1)
输出: α ,b;感知机学习模型 f(x)=sign(∑j=1N(αjyjxj⋅x)+b) ,其中 α=(α1,α2,...,αN)T
(1) α=0,b=0
(2)在训练集中选取数据 (xi,yi)
(3)如果 yi(∑j=1N(αjyjxj⋅xi)+b)≤0
对偶形式中的训练实例仅以内积形式出现,为了方便,可以预先将训练集中实例间的内积计算出来并以矩阵的形式存储,这个矩阵就是所谓的Gram矩阵:
一些理解上的提示: