感知机
机器学习的第一篇, 写给浮躁的自己
简介
感知机(perceptron)是二分类的线性分类模型,输入为实例的特征向量,输出为实例的类别,取 +1 和 -1 二值。感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。感知机学习算法具有简单而易于实现的优点,是神经网络与支持向量机的基础。
感知机模型
感知机的以一个实数值向量作为输入,计算这些输入的线性组合,如果结果大于某个阈值则输出 +1 否则输出 -1. 如 输入为 x1,x2,...,xn ,则输出为:
其中
wi
是一个实数常量,称为权重(weight),用来表示
xi
对输出的贡献率。
w0
又写作
b
称为偏置(bias). 在这里
sign 函数:
sign(x)={1,ifx>0−1,otherwise
几何解释
为了方便说明, 这里将 w⃗ ⋅x⃗ ( x,w∈Rn+1 )写作 w⃗ ⋅x⃗ +b ( x,w∈Rn ).
对于线性方程:
对应于 特征空间
Rn
中一个超平面
S
,
在数学中,超平面(Hyperplane)是 n 维欧氏空间中余维度等于
1 的线性子空间。这是平面中的直线、空间中的平面之推广。
设 F 为域(为初等起见,可考虑F=R) 。 n 维空间Fn 中的超平面是由方程
a1x1+⋯+anxn=b
定义的子集,其中 a1,…,an∈F 是不全为零的常数。
超平面 - 维基百科
为什么这么费劲的引入几何解释, 超平面的概念? 因为这对下面的损失函数的推导很有帮助, 而且最重要的是这个概念的引入令我对 n 维空间的距离感变近了.
线性可分
应用感知机的数据集(训练样本集)必须完全线性可分, 线性可以指的是 给定的数据集 对所有的
既然提到异或逻辑, 感知机的一个应用就是用来表示原子布尔函数. 比如一个二输入的感知机就可以表示 AND 和 OR 逻辑. 感知机能表示 AND OR N 逻辑 这一点很重要, 如果我们将他们互联, 两层深度的感知机便可以表示所有布尔函数. 我们现在使用的电脑就是由这些逻辑组合起来的.
感知机的学习策略
为了找出超平面, 即 w,b 我们需要构造一个学习策略, 即定义经验损失函数并将其最小化.
损失函数的一个自然选择就是误分类的总数, 但是这样的损失函数不是参数 w,b 的连续可导函数, 不方便优化. 所以我们选择 误分类点到超平面 S 的距离.
做数学之美妙
下面我们来推导这个损失函数
首先, 写出输入空间中任一点
∥w∥
是
w
的
对于实数 p≥1 , p 范数定义为
∥x∥p=(|x1|p+|x2|p+⋯+|xn|p)1p.
当 p=2 即为 L2 范数, 又称欧几里得范数.
∥x∥2=(x21+x22+⋯+x2n)12.
值得注意的是, p=0 时有两个定义. 一个是数学定义, 另一个是函数. 我们在机器学习中用到的是后者, 即非零元素的总数:
|x1|0+|x2|0+⋯+|xn|0.
Lp space: #The p-norm in finite dimensions - wikipedia
然后, 由于损失函数需要始终大于 0 , 对误分类的数据 (xi,yi) 有
当 w⋅xi+b>0 时, yi=−1 , 当 w⋅xi+b<0 时, yi=1
这里的 yi 为输出结果(假设输出)
因此, 误分类点 xi 到超平面 S 的距离为
这样, 假设超平面的误分类点集合为 M , 那么所有误分类点到超平面的总距离为
忽略 1∥w∥ , 得到感知机学习的损失函数
损失函数
L(w,b)
是非负的.没有误分类点时值为
0
, 误分类点越少, 误分类点离超平面越近,
感知机学习算法
分原始模式和对偶模式两种, 使用随机梯度下降方法.
感知机学习算法的原始形式
对参数 w,b 的求解转化为求解
极小化过程中不是一次使 M 所有误分类点的梯度下降, 二是一次随机选取一个误分类点使其梯度下降.
假设误分类点集合
给出.
随机选取一个误分类点 (xi,yi) , 对 w,b 进行更新
η(0<η≤1) 是步长, 又称学习率(leaning rate). 这样, 通过迭代可以使损失函数 L(w,b) 不断减少, 直到为 0 .
关于 delta 法则, 梯度下降, 随机梯度下降 将会另起另一篇
用最开始讲到的简化后的模型简化后的<统计学习方法>算法2.1:
xi=(1,x(1),x(2),...,x(n))T
wi=(w(0),w(1),w(2),...,w(n))T
输入: 训练数据集
T={(x1,y1),(x1,y1),...,(xN,yN)}
, 其中
xi∈X=Rn+1
,
yi∈Y=+1,−1,i=1,2,3,...,N
学习率
η(0<η≤1)
输出:
w
; 感知机模型
(1) 选取初值 w
(2) 在训练集中选取数据
(3) 如果 yi(w⋅xi)≤0
(4) 转至 (2) ,直至训练集中没有误分类点
直观解释是 如果有了误分类则调整 w 的值,使分离超平面向该误分类点的一侧移动, 以减少该误分类点与超平面的距离, 直至超平面越过该误分类点使其被正确分类.
留坑, 将例题 2.1 可视化
感知机学习算法的对偶形式
对偶形式, 指的是从不同的形式去解答一个问题, 但问题的解释一样的.
对偶形式的基本想法是, 将
在感知机学习算法的原始形式中, 对误分类点
算法 2.2 (简化版原始形式的对偶形式)
输入: 训练数据集
T={(x1,y1),(x1,y1),...,(xN,yN)}
, 其中
xi∈X=Rn+1
,
yi∈Y=+1,−1,i=1,2,3,...,N
学习率
η(0<η≤1)
输出:
α
; 感知机模型
f(x)=sign(∑Nj=1αjyjxj⋅x)
, 其中
α=(α1,α2,...,αN)T
(1) α←0
(2) 在训练集中选取数据 (xi,yi)
(3) 如果 yi(∑Nj=1αjyjxj⋅xi)≤0
(4) 转至 (2) ,直至训练集中没有误分类点
可以看到对偶形式中训练实例仅以内积的形式出现, 引入 Gram 矩阵形式 储存实例间的内积
比如现在有 3 个实例点 x1,x2,x3 对应 y1,y2,y3
对算法第三步, 可以改写为
(3) 如果 yi(∑Nj=1αjyjGji)≤0
αi←αi+η
参考
[1] 李航. 《统计学习方法》[M]. 北京:清华大学出版社,2012:25-35
[2] Tom M. Mitchell. 《机器学习》[M] 曾华军,张银奎等译. 北京:机械工业出版社,2015:63-69
[3] 超平面 - 维基百科
[4] Lp space: #The p-norm in finite dimensions - wikipedia