感知机

来源:互联网 发布:手机申请淘宝账号 编辑:程序博客网 时间:2024/05/01 09:42

感知机

  • 感知机
    • 简介
    • 感知机模型
      • 几何解释
      • 线性可分
    • 感知机的学习策略
    • 感知机学习算法
      • 感知机学习算法的原始形式
      • 感知机学习算法的对偶形式
    • 参考


机器学习的第一篇, 写给浮躁的自己


简介

感知机(perceptron)是二分类的线性分类模型,输入为实例的特征向量,输出为实例的类别,取 +1 和 -1 二值。感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。感知机学习算法具有简单而易于实现的优点,是神经网络与支持向量机的基础。

感知机模型

感知机的以一个实数值向量作为输入,计算这些输入的线性组合,如果结果大于某个阈值则输出 +1 否则输出 -1. 如 输入为 x1,x2,...,xn ,则输出为:

f(x)={1,ifw0+w1x1+...+wnxn>01,otherwise

其中 wi 是一个实数常量,称为权重(weight),用来表示 xi 对输出的贡献率。w0 又写作 b 称为偏置(bias). 在这里 w0 表示阈值. 为了简化表示, 我们给输入变量增加一个 x0=1 这样式子可以写成向量形式 w⃗ x⃗ >0 (x,wRn+1 ), 进一步引入 sign 函数, 上式化简为:

f(x)=sign(wx)

sign 函数:

sign(x)={1,ifx>01,otherwise

几何解释

为了方便说明, 这里将 w⃗ x⃗  (x,wRn+1 )写作 w⃗ x⃗ +b (x,wRn ).

对于线性方程:

w⃗ x⃗ +b=0

对应于 特征空间 Rn 中一个超平面 S, w 是超平面的法向量, b 是超平面的截距. 这个超平面将特征空间划分为两个部分: 一类为正, 感知器输出 1 ; 一类为负, 感知器输出 -1. 此时超平面 S 被称为 分离超平面(separating hyperplane) 又称为 超平面决策面. 如图 2.1 所示:

感知机模型

在数学中,超平面(Hyperplane)是 n 维欧氏空间中余维度等于 1 的线性子空间。这是平面中的直线、空间中的平面之推广。
F 为域(为初等起见,可考虑 F=Rn 维空间 Fn 中的超平面是由方程

a1x1++anxn=b

定义的子集,其中a1,,anF 是不全为零的常数。
超平面 - 维基百科

为什么这么费劲的引入几何解释, 超平面的概念? 因为这对下面的损失函数的推导很有帮助, 而且最重要的是这个概念的引入令我对 n 维空间的距离感变近了.

线性可分

应用感知机的数据集(训练样本集)必须完全线性可分, 线性可以指的是 给定的数据集 对所有的 yi=1 , 有 w⃗ x⃗ +b<0 , 对所有的 yi=1 , 有 w⃗ x⃗ +b>0 , 几何表示为 超平面 w⃗ x⃗ +b=0 能够完全将数据集中的正负实例点分开. 那什么是线性不可分的? 举个例子 异或逻辑(XOR).

既然提到异或逻辑, 感知机的一个应用就是用来表示原子布尔函数. 比如一个二输入的感知机就可以表示 AND 和 OR 逻辑. 感知机能表示 AND OR N 逻辑 这一点很重要, 如果我们将他们互联, 两层深度的感知机便可以表示所有布尔函数. 我们现在使用的电脑就是由这些逻辑组合起来的.

感知机的学习策略

为了找出超平面, 即 w,b 我们需要构造一个学习策略, 即定义经验损失函数并将其最小化.

损失函数的一个自然选择就是误分类的总数, 但是这样的损失函数不是参数 w,b 的连续可导函数, 不方便优化. 所以我们选择 误分类点到超平面 S 的距离.

做数学之美妙

下面我们来推导这个损失函数

首先, 写出输入空间中任一点 xi 到超平面的距离

1w|wxi+b|

wwL2 范数.

对于实数 p1, p 范数定义为

xp=(|x1|p+|x2|p++|xn|p)1p.

p=2 即为 L2 范数, 又称欧几里得范数.
x2=(x21+x22++x2n)12.

值得注意的是, p=0 时有两个定义. 一个是数学定义, 另一个是函数. 我们在机器学习中用到的是后者, 即非零元素的总数:
|x1|0+|x2|0++|xn|0.

Lp space: #The p-norm in finite dimensions - wikipedia

然后, 由于损失函数需要始终大于 0 , 对误分类的数据 (xi,yi)

yi(wxi+b)>0

wxi+b>0时, yi=1 , 当 wxi+b<0时, yi=1

这里的 yi 为输出结果(假设输出)

因此, 误分类点 xi 到超平面 S 的距离为

1wyi(wxi+b)

这样, 假设超平面的误分类点集合为 M, 那么所有误分类点到超平面的总距离为

1wxiMyi(wxi+b)

忽略 1w , 得到感知机学习的损失函数

L(w,b)=xiMyi(wxi+b)

损失函数 L(w,b) 是非负的.没有误分类点时值为 0, 误分类点越少, 误分类点离超平面越近, L(w,b) 越小. 对于一个样本点, 误分类时是参数 w,b 的线性函数, 正确分类时值为 0, 因此给定训练数据集 T, 损失函数 L(w,b)w,b 的连续可导函数.

感知机学习算法

分原始模式和对偶模式两种, 使用随机梯度下降方法.

感知机学习算法的原始形式

对参数 w,b 的求解转化为求解

minw,bL(w,b)=xiMyi(wxi+b)

极小化过程中不是一次使 M 所有误分类点的梯度下降, 二是一次随机选取一个误分类点使其梯度下降.

假设误分类点集合 M 是固定的, 那么损失函数 L(w,b) 梯度由

wL(w,b)=xiMyixi

bL(w,b)=xiMyi

给出.

随机选取一个误分类点(xi,yi), 对 w,b 进行更新

ww+ηyixi

bb+ηyi

η(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)}, 其中 xiX=Rn+1, yiY=+1,1,i=1,2,3,...,N 学习率 η(0<η1)
输出: w ; 感知机模型 f(x)=sign(wx)

(1) 选取初值 w

(2) 在训练集中选取数据 (xi,yi)

(3) 如果 yi(wxi)0

ww+ηyixi

(4) 转至 (2) ,直至训练集中没有误分类点

直观解释是 如果有了误分类则调整 w 的值,使分离超平面向该误分类点的一侧移动, 以减少该误分类点与超平面的距离, 直至超平面越过该误分类点使其被正确分类.

留坑, 将例题 2.1 可视化

感知机学习算法的对偶形式

对偶形式, 指的是从不同的形式去解答一个问题, 但问题的解释一样的.

对偶形式的基本想法是, 将 w 表示为实例 xi 和标记 yi 的线性组合的形式, 通过求解其系数而求得 w

在感知机学习算法的原始形式中, 对误分类点 (xi,yi) 逐步修改 w, 设修改了 n 次, 则 w 关于 (xi,yi) 的增量记作 αiyixi , 其中 αi=niη, 这样学习过程可以表示为

w=i=1Nαiyixi

算法 2.2 (简化版原始形式的对偶形式)

输入: 训练数据集 T={(x1,y1),(x1,y1),...,(xN,yN)}, 其中 xiX=Rn+1, yiY=+1,1,i=1,2,3,...,N 学习率 η(0<η1)
输出: α ; 感知机模型 f(x)=sign(Nj=1αjyjxjx) , 其中 α=(α1,α2,...,αN)T

(1) α0

(2) 在训练集中选取数据 (xi,yi)

(3) 如果 yi(Nj=1αjyjxjxi)0

αiαi+η

(4) 转至 (2) ,直至训练集中没有误分类点

可以看到对偶形式中训练实例仅以内积的形式出现, 引入 Gram 矩阵形式 储存实例间的内积

G=[xixj]N×N

比如现在有 3 个实例点 x1,x2,x3 对应 y1,y2,y3

G=x1x1x2x1x3x1x1x2x2x2x3x2x1x3x2x3x3x3

对算法第三步, 可以改写为

(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

原创粉丝点击