林轩田-机器学习基石 课堂笔记(二)Learning to Answer Yes/No

1.Perceptron Hypothesis Set

Perceptrons=linear (binary) classifiers

这里介绍了常用的感知机模型,其本质是一个线性分类器。

运用银行是否同意客户申请办理信用卡为例


有训练样本D,包括用户的基本信息(年龄,性别,年收入)等以及是否同意了用户办理信用卡的申请。


输入中每个x代表一个用户,x的每一维表示用户的某一属性,设有d个属性,每个属性分别赋予权重w表示该特征对输出y(是否同意办理信用卡)的影响。

目标函数h(x):设定一个阈值threshold,将所有属性的加权和与阈值比较,从而对结果进行分类。大于阈值输出+1(同意申请),小于阈值输出-1(拒绝申请)。

进一步简化,将阈值作为一个值为负的权值w0,令x0=1,则有h(x)变换如下:


在二维空间上

可知w0+w1x1+w2x2=0为二维平面上一条直线方程(我们知道此直线下方的点代入直线方程结果小于0,上方的点代入方程大于0),由于训练集已知,所以学习结果是找到一条直线使得所有训练集的点正确排在这条直线的上方或下方(即找到正确的权值w0,w1,w2,如下图:



那么我们所说的感知机,在这个模型上就是一条直线。同理,在3维空间中,感知机用平面表示,在更高纬度,感知机用超平面表示。


2.Perceptron Learning Algorithm(PLA)

在上节中我们知道了假设集H(hypothesis set)如何表示,这节我们的目的就是利用PLA算法的迭代求解过程,从H中找到一个最好的g,能将平面上所有的点正确分类。

①g的判定条件:如果对于已知的所有输入,我们能够通过g使得所有输出与已知输出一致,我们就认为这样的g是不错的,越接近fg越好。

由于f是未知的,我们只能尽量找到更优的g,如何找到呢?我们可以使用逐点修正的思想:

在平面上任意取一条初始直线,开始对错误点一个一个进行修正,变换直线的位置使得错误点变成分类正确的点。不断修正直到所有的点都分类正确了,就得到了最优的直线。这种逐步修正,知错能改”,就是PLA思想所在。

PS:每次修正直线,可能使之前分类正确的点变成错误点,这是可能发生的。但是没关系,不断迭代,不断修正,最终会将所有点完全正确分类。

PS2:PLA前提是线性可分的(linear separable),如果线性不可分,PLA迭代就不会停下来


②用 \vec {w_0} 作为初始直线,不断迭代使得直线一次比一次更好

\vec w_t = \begin{pmatrix} w_0 \\ w_1 \\ w_2 \end{pmatrix} \ \vec x = \begin{pmatrix} 1 \\ x_1 \\ x_2 \end{pmatrix}

迭代次数 t = 0,1,2...直到没有错误

\vec w_0代入训练集,找到一个 (x_{n(t)},y_{n(t)}) 使得 sign(\vec w_t^T\vec x_{n(t)}) \ne y_{n(t)} ,然后开始修正 \vec w_0(注:此处用到向量数量积的几何意义,当w与x的夹角小于90度,则数量积为正,则sign值>0;当w与x的夹角大于90度,则数量积为负,则sign值<0)

即:角度>90 则修正为<90;反之亦然。 \vec w_{t=1} \leftarrow \vec w_t +y_{n(t)}\vec x_{n(t)}


③PLA修正过程:













3.Guarantee of PLA

①我们要证明在线性可分的情况下,权值向量的修正次数有一个上限。

首先,对于线性可分的情况,假设存在一条目标直线可以将平面上的点正确分类,此时目标权重为Wf。有

PLA会对每次错误的点进行修正,更新权重wt+1的值。在数学上,两向量内积越大,说明两向量越接近。如果
wt+1wf的内积大于wt与wf的内积,那表示wt+1是在接近目标权重wf,证明PLA是有学习效果的。所以,我们来计算wt+1wf的内积:


可知,wt+1wf的内积跟wtwf的内积相比更大了,似乎说明了wt+1更接近wf,但是内积更大,可能是向量长度更大了,不一定是向量间角度更小

②因此我们需要求解的是这两个向量做归一化之后的内积,这时它们的内积有了上界1

PS:该式成立是由于等式两边异号。

PS:yn为灰色是由于yn的值为1或-1,在这里对式子没有影响。

如果令初始权值w0=0,那么经过T次错误修正后,有如下结论:

                                       

由于等式左边<=1,因此等式右边<=1,也就是说,迭代次数T是有上限的。

根据以上证明,我们最终得到的结论是:wt+1wf的是随着迭代次数增加,逐渐接近的。而且,PLA最终会停下来(因为T有上界),实现对线性可分的数据集的完全分类。


4.Non-Separable Data

上一节阐述的PLA这个算法一定会停下来这一结论,是建立在存在一个目标函数,可以将所有的数据点都线性分开这个假设的基础之上的。但对于线性不可分情况,Wf可能不存在,因此也就没有PLA算法一定会停下来这一结论了。对于一堆复杂的数据,一个PLA算法运行了很长时间仍然没有停止,存在两种可能性,一是该数据集是线性可分的,但是还没有运行结束;另一种,根本不存在一条直线可以将数据集分开,就是这个算法并不会终止。

①对于线性不可分的情况,我们可以把它当成是数据集D中掺杂了noise(即容忍数据中含有错误点)。实际上,大多数情况下我们得到的数据集,或多或少地都掺杂了noise。此时,ML的流程是这样的:


noise在数据集中占的比例并不会太大,如下是存在噪音时数据线性不可分的情况:

这种情况下,我们取noise的个数最少时的权重w。

PS:[[ ]]代表布尔运算
这个公式在数学上是NP-hard问题,我们无法直接求解,因此我们需要找出一种近似的算法来求解这个问题。

我们对在线性可分类型中表现很好的PLA做个修改,把它应用到非线性可分类型中,获得近似最好的g。

修改后的PLA称为口袋算法(Packet Algorithm)。它的算法流程与PLA基本类似:

a.首先初始化权重向量w0

b.随机使用n个点中的一个点去发现是否有错误(此处与cyclic PLA使用的循环方式有所不同,不是按顺序一个一个的查看是否符合条件,而是在n个点中随机的抽取,这种方式可以增加其寻找最优解的速度)

c.PLA一样对权值向量进行修正

d.得到一条新的直线,计算其对应的分类错误的点的个数,并与之前权值向量对应的错误点的个数进行比较,取个数较小的直线作为我们当前选择的分类直线

e.再经过n次迭代,不断比较当前分类错误点个数与之前最少的错误点个数,选择最少错误点时的权值保存。直到迭代次数完成后,选取错误个数最少的直线对应的w,即为我们最终想要得到的权值

PS:一般情况下,Pocket Algorithm会花费比PLA更多的时间。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值