感知器模型 Perceptron
现实生活中,存在大量的"二分类问题",比如该不该给客户发信用卡。对于"二分类问题",最简单的模型就是"感知器模型"。
01
感知器模型
features: X = (x1, x2, ..., xd)
if ∑wixi > threshhold(Yes)
if ∑wixi < threshhold(No)
02
感知器模型的Hypothesis Set
h(x) = sign( ∑wixi - threshhold )
利用矩阵的知识,不难进一步推导:
h(x) 就是Perceptron的Hypothesis Set。下一步就是设计机器学习演算法来选择"最优"的Hypothesis,具体而言,就是求解w的过程。
03
Perceptrons in R^2
为了便于理解,给出 R^2 的Perceptrons。
h(x) = sign(w0 + w1·x1 + w2·x2)
可以看出R^2中,特征(features)对应平面中的一个点,Hypothesis set就是平面中的所有直线。推广开来,R^d中Hypothesis set 就是高维空间的超平面。
通常而言,Perceptrons等价于线性分类器(linear classifiers)。
PLA
下一步的目标就是在Perceptron Set中选择一个最优的Perceptron g,使得 g ≈ f。
难点:Perceptrons Hypothesis Set 是一个无穷集合。
思路:虽然无从得知目标函数f,但可以保证g和f在数据集D上表现一致,即为 g(xn) = f(xn) = yn。思路就是初始化一个g0, 利用数据集D,不断修正(修正w)
01
PLA
“A fault confessed in half redressed” - 知错能改
下面正式介绍 Perceptron Learning Alogrithm, PLA。不妨初始w0=0,然后修正它在数据集D上的表现。
修正策略:
下面正式介绍 Perceptron Learning Alogrithm, PLA。不妨初始w0=0,然后修正它。
不难看出,错误就两种:
其一,label y =+1,但此时w、x反方向,即 w·x<0。则 w=w+(+1)·x (靠近)。
其二,label y =-1,但此时w、x同方向,即 w·x>0。则 w=w+(-1)·x (远离)。
综上,均可表示为: w = w + yn·xn。
02
PLA的具体实现
经典的实现称为"Cyclic PLA"。
Cyclic:对于一个规模为N的数据集D,事先准备一个1~N的序列,可以是自然序(1, ..., N),也可以是随机的,保证是1-N的一个全排列即可。
Cyclic PLA 停止的条件:不断地循环这个指定的Cycle, 直到一个完整Cycle(一轮),在数据集D上,均不出错,则停止。
执行过程:
几点解释:
initially:原点在图像中央。初始化 w = 0(注意:需要将特征值即x值设置大一点,这样就可以保证 w0≈0)。
update1:开始肯定出错,修正后 w = x1。w为直线的法向量, 所以update 2 中的分割线垂直于w。 update2~finally: 不断发现一个误分类的点,采用PLA算法公式进行修正,直到完全整个Cycle不出错为止。
代入可知:
说明每次修正后,有效果。
PLA的保证
还剩下两个问题需要解决。
PLA 一定会停下来(halt on D)?
g = f on D, outside D g 是否等于 f?
Linear Separability
回答第一个问题之前,先解释一下什么是线性可分。如下图所示。
证明第一个问题,如果在数据集D是线性可分的,那么PLA一定会halt。
证明思路:
因为线性可分,只要证明“修正”越来越好。数学上,即为向量夹角越来越小。
有上界,确保有限步算法可以停止。
一些细节说明:
wf 是存在的,因为数据集可分的前提。
xn(t)、yn(t) 就是t步需要修正的点。
定义 R 和 ρ,则 T ≤ R^2/ρ^2。
T 依然无法估计,因为 Wf 未知。
不可分数据集
01
PLA问题
优点:PLA很容易实现。
缺点:需要数据集D线性可分;即便D可分也无法确定什么时候halt。
重温下机器学习模型。只不过数据集D中有噪声数据。
02
Pocket Algorithm
当数据中有噪音时,目标是让g能尽可能分开数据集。 不幸地是,这是一个 NP-hard 问题。
需要设计一个近似算法。比较典型的就是 Pocket Algorithm。
算法思想:执行PLA算法中,保留当前最优的wf。
转自:机器学习小蜜蜂
↓↓↓ 点击"阅读原文" 【查看更多信息】