林轩田《机器学习基石》(二)——Learning to answer yes or no

本次介绍课程的第一个机器学习算法:Perceptron Learning Algorithm(PLA)

注:感知机= 感知器,噪声= 杂屑,阈值= 门槛值

一、感知机模型

机器要不要发信用卡?即,机器学习如何做“是非题”。

输入:x \in X(顾客资料)

输出:y \in Y(引用卡记录好坏)

实际的规则(但是我们不知道):f:X\rightarrow Y 

资料:D=\left \{ (x_1,y_1),(x_2,y_2),...,(x_n,y_n) \right \}

有一个学习算法A,A要从hypothesis set(假说) H中找到一个g出来,使得gf越来越接近,可以用g去衡量是否可以贷款给顾客。

顾客x有很多个特征,如“年龄”、“职业”等,这些都影响我们是否要给它信用卡。我们可以对每个特征进行打分,然后得到一个总分,看它是否超过了某个“门槛”,如果超过了我们可以给信用卡,没有超过则不给。

我们今天介绍的感知机模型h(x)由权重(打分)和阈值(门槛)决定,我们找感知机模型也就是找权重和阈值。

通常,我们可以将权重和阈值合并,写成向量的形式从而简化代码。w表示合并后的向量。

顾客特征x:为了方便可视化,我们假设顾客特征是二维的,可以在图中表示为一个点。

标签y:正类(o +1),负类(× -1)

感知机:h(x)=sign(w_0+w_1x_1+w_2x_2) ,其实是一条分割直线 w_0+w_1x_1+w_2x_2=0,将正类和负类分割在直线的两遍。

hypothesis set(假说) H:就是所有可能的线或者是高维分割平面。

二、如何从hypothesis set(假说) H中选一个更好的h

首先我们知道什么?答:现存的数据(资料)。

所以我们可以要求我们找到的g在看过的资料上表现都很好,使得g(x_n)=f(x_n)=y.(接近,最好一模一样)

思路:在空间中我们可以先找到一条线,然后不停地修正它。

我们首先复习一下点法式直线的确定:

已知直线经过点P(a_0,b_0),且已知法向量\vec{n}=\left \{A,B \right \}(可以看出这里的法向量是权重w),则直线方程为

A(x_1-a_0)+B(x_2-b_0)=0

所以给一个权重w和点,我们就可以确定一条直线,通常我们把经过的点设为原点(0,0)

现在我们讨论如何修正这条直线:

首先,我们要有一个初始的直线,w^T_{0} x=0由初始权重w_0确定。

之后我们来看如何修正:

(1)我要正,它给我负,说明w^Tx< 0,角度太大,所以做修正w+x,让角度变小

(2)我要负,它给我正,说明w^Tx> 0,角度太小,所以做修正w-x,让角度变大

综上,我们所做的修正为w_{t+1}= w_t+y_{n(t)} x_{n(t)}

我们从顾客1...一直将所有顾客x轮一遍,看看有没有犯错。步骤如下:

图解:

step1:我们设point 1为原点,红色为权重(也是确定直线的法向量),看到正点x_g被分错了,所以我们更新

w(t+1)= w(t)+1* x_g

w(t)= w(t+1),可以看到分割直线垂直于w(t)

对PLA,存在两个问题:

  • PLA迭代一定会停下来吗?

  • 为什么一定会停下来/不会停下来?

三、PLA的收敛理论

当资料(数据)线性可分的时候,PLA会停。

对于线性可分的情况,如果有这样一条直线,能够将正类和负类完全分开,令这时候的目标权重为w_f(我们假设这是最终的完美结果),则对每个点,必然满足y_n= sign(w_f^{T} x_n),故对任一点:y_{n(t)} \mathbf{w}_{f}^{T} \mathbf{x}_{n(t)} \geq \min _{n} y_{n} \mathbf{w}_{f}^{T} \mathbf{x}_{n}>0

我们希望w_fw_t无限接近,两个向量内积越大,则两个向量越来越接近,直到两个向量相等达到上界(相等或者很接近时候的w_t就是我们要找的权重)。为了去除scale的影响,我们除以两个向量的模(其实就是计算两个向量的夹角)。

我们接下来证明以下公式,则可证明随着T的增大,两个向量越来越接近:

证明:

\begin{aligned} w_{f}^{T} w_{t} &=w_{f}^{T}\left(w_{t-1}+y_{n(t-1)} x_{n(t-1)}\right) \\ & \geq w_{f}^{T} w_{t-1}+\min _{n} y_{n} w_{f}^{T} x_{n} \\ & \geq w_{0}+t \cdot \min _{n} y_{n} w_{f}^{T} x_{n} \\ & \geq t \cdot \min _{n} y_{n} w_{f}^{T} x_{n} \end{aligned}

另一方面,我们直到当符号判断错误时,才会更新w_t,所以有

sign\left(w_{t}^{T} x_{n(t)}\right) \neq y_{n(t)} \Leftrightarrow y_{n(t)} w_{t}^{T} x_{n(t)} \leq 0

\begin{aligned} \left\|w_{t}\right\|^{2} &=\left\|w_{t-1}+y_{n(t-1)} x_{n(t-1)}\right\|^{2} \\ &=\left\|w_{t-1}\right\|^{2}+2 y_{n(t-1)} w_{t}^{T} x_{n(t-1)}+\left\|y_{n(t-1)} x_{n(t-1)}\right\|^{2} \\ & \leq\left\|w_{t-1}\right\|^{2}+0+\left\|y_{n(t-1)} x_{n(t-1)}\right\|^{2} \\ & \leq\left\|w_{t-1}\right\|^{2}+\max _{n}\left\|x_{n}\right\|^{2} \\ & \leq\left\|w_{0}\right\|+t \cdot \max _{n}\left\|x_{n}\right\|^{2}\\ &=t \cdot \max _{n}\left\|x_{n}\right\|^{2} \end{aligned}

故可得\frac{w_{f}^{T}}{\left\|w_{f}\right\|} \frac{w_{T}}{\left\|w_{T}\right\|} \geq \sqrt{T} \cdot \frac{ \min _{n} y_{n} w_{f}^{T} x_{n}}{\left\|w_{f}^{T}\right\| \cdot \max _{n}\left\|x_{n}\right\|}

可知线性可分的情况下,PLA是可以停下来并正确分类的。

四、线性不可分数据

对于非线性可分的情况,w_f实际上并不存在,那么之前的推导并不成立,PLA不一定会停下来。

我们把新问题看做原来问题上的一点改动:

输入:x \in X(顾客资料)

输出:y \in Y(引用卡记录好坏)

实际的规则(但是我们不知道):f:X\rightarrow Y 加一些噪声(但少)

资料:D=\left \{ (x_1,y_1),(x_2,y_2),...,(x_n,y_n) \right \}

我们是否可以找到一个线犯的错(分类错误)最少?即求解下列问题:

上述问题被证明了是NP-hard问题。所以我们的目标是找到一个差不多好的线:我们每次都把当前最好的线放到“口袋”。这种方法我们称为Pocket Algorithm。

算法用一些随机的方式,使其能够尽可能找到多一点的线进行比较。我们每次找到一条新的线,就比较他和我现在“口袋里的线”哪一条比较好(分类的错少)。直到跑了足够多的线,我们就让它停止,算法如下:

一般情况下,由于要存储原来的而且要进行比较,所以Pocket Algorithm要比PLA速度慢一些。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值