02_感知机【机器学习基石】

感知机是一种用于二分类问题的机器学习模型,通过对输入向量的加权线性组合来判断正例或反例。PLA算法是感知机的学习策略,通过不断修正权重以正确分类所有样本。当数据线性可分时,PLA能收敛。pocket-PLA则保留每次迭代中分类效果最好的模型,以应对可能存在的噪声。在实际应用中,pocket-PLA在确保分类效果的同时,增加了对错误分类点的处理灵活性。
摘要由CSDN通过智能技术生成

02_感知机

一、概念

最终要得到的输出是(Y/N)正例或反例,这种对样本二分类的问题,通常用感知机解决。感知机就是通过对输入向量的各个元素进行加权线性组合,根据得到的分数来判定是正例还是反例。在假设空间中,选取 w \pmb w www 作为对目标 w ∗ \pmb w^* www 的近似。 X X X 为样本输入矩阵。
h ( X ) = s i g n ( w T X ) h(X) =sign(\pmb w^TX) h(X)=sign(wwwTX)

二、策略

假设空间 H H H 是一个无限大的集合,里面是无穷无尽的对所有样本进行二分的空间平面(或二维直线)采取“不断修正”的方法来试探到一个在数据集上表现不错的 w \pmb w www

我们先设定一个初始的 w 0 \pmb w_0 www0 ,用它去对每个样本进行二分;对于某个样本点,如果分类正确,那么就看下一个,如果分类不正确,那就说明需要修正 w \pmb w www ,具体的做法是:

满足 h ( x ) = s i g n ( ∑ i = 1 n w i x i ) ≠ y i h(x) = sign(\sum_{i=1}^{n} w_ix_i) \neq y_i h(x)=sign(i=1nwixi)=yi 的样本 ( x , y ) (\pmb x,y) (xxx,y) ,视为误分类点;在物理意义上,是内积 w ⋅ x i \pmb w \cdot \pmb x_i wwwxxxi 的结果的正负性和标记 y i ∈ { + 1 , − 1 } y_i \in \{+1,-1\} yi{+1,1}正负性不一致;因此我们用正确的方向对 w \pmb w www 进行修正,即 w : = w + y i x i \pmb w := \pmb w +y_i\pmb x_i www:=www+yixxxi ,让 w \pmb w www x i \pmb x_i xxxi 的方向靠拢,这就会使 w \pmb w www 的平面将 x i \pmb x_i xxxi 划入正确的范围,就能让新的 w \pmb w www x i \pmb x_i xxxi 做内积的正负性与 y i y_i yi 一致。这样就更新了 w \pmb w www ,再看下一个点。

三、算法
1. PLA

我们将策略部分的内容总结为一个算法,叫作PLA (Perceptron Linear Algorithm)。

算法描述

对于所有样本点 ( x i , y i ) (\pmb x_i,y_i) (xxxi,yi) 迭代执行,对于第 t t t 次迭代:

  • h ( x i ) = s i g n ( w T x i ) = ∑ j = 0 d s i g n ( w j x i j ) h(\pmb x_i) = sign(\pmb w^T \pmb x_i)=\sum_{j=0}^{d}sign(w_j\pmb x_{ij}) h(xxxi)=sign(wwwTxxxi)=j=0dsign(wjxxxij)

  • 判断 h ( x i ) h(\pmb x_i) h(xxxi) ,如果 h ( x i ) ≠ y i h(x_i) \neq y_i h(xi)=yi,则 w t + 1 = w t + y i x i \pmb w_{t+1} = \pmb w_t + y_i\pmb x_i wwwt+1=wwwt+yixxxi 修正 w \pmb w www 。然后重新迭代看所有样本点。

最终所有点都能够正确分类为止。

2. pocket PLA

线性可分是PLA收敛的必要条件,线性可分的充要条件就是存在一个 w f \pmb w_f wwwf 能够使得对于所有 x \pmb x xxx 都能分类正确。

PLA的迭代过程实际上就是让 w \pmb w www 不断向 w f \pmb w_f wwwf 靠拢的过程,从直觉上来讲,这两个向量的内积会不断增大。

当迭代次数达到 T T T 次时,
w f T w T = w f T ( w t + y i x i ) = w f T w t + y i w f T x i ≥ w f T w t + min ⁡ i y i w f T x i > w f T w t + 0 \pmb w_f^T \pmb w_T = \pmb w_f^T(\pmb w_t+y_i\pmb x_i)\\ =\pmb w_f^T\pmb w_t+y_i \pmb w_f^T \pmb x_i\\ \ge \pmb w_f^T\pmb w_t + \min_{i}y_i \pmb w_f^T \pmb x_i \\ \gt \pmb w_f^T\pmb w_t + 0 wwwfTwwwT=wwwfT(wwwt+yixxxi)=wwwfTwwwt+yiwwwfTxxxiwwwfTwwwt+iminyiwwwfTxxxi>wwwfTwwwt+0
将它从现在的迭代式变为通项式
w f T w T = w f T ( w t + y i x i ) = w f T w t + y i w f T x i ≥ w f T w 0 + T ∗ min ⁡ i y i w f T x i ≥ T ∗ min ⁡ y i w f T x i \pmb w_f^T \pmb w_T = \pmb w_f^T(\pmb w_t+y_i\pmb x_i) \\ = \pmb w_f^T\pmb w_t+y_i \pmb w_f^T \pmb x_i\\ \ge \pmb w_f^T\pmb w_0 + T*\min_{i} y_i \pmb w_f^T \pmb x_i \\ \ge T*\min y_i\pmb w_f^T \pmb x_i wwwfTwwwT=wwwfT(wwwt+yixxxi)=wwwfTwwwt+yiwwwfTxxxiwwwfTwww0+TiminyiwwwfTxxxiTminyiwwwfTxxxi
同时,对于 w T \pmb w_T wwwT
∣ ∣ w T ∣ ∣ 2 = ∣ ∣ w t + y i x i ∣ ∣ 2 = ∣ ∣ w t ∣ ∣ 2 + 2 y i w t T x i + ∣ ∣ y i x i ∣ ∣ 2 ≤ ∣ ∣ w t ∣ ∣ 2 + 0 + ∣ ∣ y i x i ∣ ∣ 2 ≤ ∣ ∣ w t ∣ ∣ 2 + max ⁡ i ∣ ∣ x i ∣ ∣ 2 ||\pmb w_T ||^2 = ||\pmb w_t + y_i \pmb x_i||^2 \\ =||\pmb w_t||^2+2y_i\pmb w_t^T \pmb x_i+||y_i \pmb x_i||^2 \\ \le ||\pmb w_t||^2 + 0 + ||y_i \pmb x_i||^2 \\ \le ||\pmb w_t||^2 + \max_i|| \pmb x_i||^2 wwwT2=wwwt+yixxxi2=wwwt2+2yiwwwtTxxxi+yixxxi2wwwt2+0+yixxxi2wwwt2+imaxxxxi2
因为所有引起 w \pmb w www x \pmb x xxx 都是分类错误的点,所以 2 y i w t T x i ≤ 0 2y_i\pmb w_t^T \pmb x_i \le 0 2yiwwwtTxxxi0 成立。再将右边放大到最大值的情况后得到。

将它从现在的迭代式变为通项式
∣ ∣ w T ∣ ∣ 2 = ∣ ∣ w t + y i x i ∣ ∣ 2 ≤ ∣ ∣ w t ∣ ∣ 2 + max ⁡ i ∣ ∣ y i x i ∣ ∣ 2 ≤ ∣ ∣ w 0 ∣ ∣ 2 + T ∗ max ⁡ i ∣ ∣ y i x i ∣ ∣ 2 ≤ T ∗ max ⁡ i ∣ ∣ x i ∣ ∣ 2 ||\pmb w_T ||^2 = ||\pmb w_t + y_i \pmb x_i||^2 \\ \le ||\pmb w_t||^2+ \max_i||y_i \pmb x_i||^2 \\ \le ||\pmb w_0||^2+ T*\max_i||y_i \pmb x_i||^2 \\ \le T*\max_i|| \pmb x_i||^2 wwwT2=wwwt+yixxxi2wwwt2+imaxyixxxi2www02+Timaxyixxxi2Timaxxxxi2

推导迭代次数的极限

我们将 w f \pmb w_f wwwf w T \pmb w_T wwwT 做标准化后,得到的内积结果就是单纯的 cos ⁡ \cos cos 值,这个值慢慢变大并趋近于1则说明迭代的 w \pmb w www 越来越接近目标。
w f T w T ∣ ∣ w f ∣ ∣ ⋅ ∣ ∣ w T ∣ ∣ ≥ T ⋅ c o n s t a n t \frac{\pmb w_f^T \pmb w_T}{||\pmb w_f|| \cdot ||\pmb w_T||} \ge \sqrt T \cdot constant wwwfwwwTwwwfTwwwTT constant
由前面的通项式可以得到
1 ∣ ∣ w T ∣ ∣ 2 ≥ 1 T ∗ max ⁡ i ∣ ∣ x i ∣ ∣ 2 1 ∣ ∣ w T ∣ ∣ ≥ 1 T ∗ max ⁡ i ∣ ∣ x i ∣ ∣ \frac{1}{||\pmb w_T||^2} \ge \frac{1}{T*\max_i||\pmb x_i||^2}\\ \frac{1}{||\pmb w_T||} \ge \frac{1}{\sqrt T*\max_i||\pmb x_i||} wwwT21Tmaxixxxi21wwwT1T maxixxxi1
于是有
1 ≥ w f T w T ∣ ∣ w f ∣ ∣ ⋅ ∣ ∣ w T ∣ ∣ ≥ T ∗ min ⁡ y i w f T x i ∣ ∣ w f ∣ ∣ ∗ T ∗ max ⁡ i ∣ ∣ x i ∣ ∣ ≥ T ∗ min ⁡ y i w f T x i ∣ ∣ w f ∣ ∣ ∗ max ⁡ i ∣ ∣ x i ∣ ∣ 1 \ge\frac{\pmb w_f^T \pmb w_T}{||\pmb w_f|| \cdot ||\pmb w_T||} \ge \frac{T*\min y_i\pmb w_f^T \pmb x_i}{||\pmb w_f|| * \sqrt T*\max_i||\pmb x_i||}\\ \ge \frac{\sqrt T* \min y_i\pmb w_f^T \pmb x_i}{||\pmb w_f||*\max_i||\pmb x_i||} 1wwwfwwwTwwwfTwwwTwwwfT maxixxxiTminyiwwwfTxxxiwwwfmaxixxxiT minyiwwwfTxxxi
可以计算出迭代次数 T T T 的极限满足
T ≤ ∣ ∣ w f ∣ ∣ ∗ max ⁡ i ∣ ∣ x i ∣ ∣ min ⁡ y i w f T x i \sqrt T \le \frac{||\pmb w_f||*\max_i||\pmb x_i||}{\min y_i\pmb w_f^T \pmb x_i} T minyiwwwfTxxxiwwwfmaxixxxi
如果
ρ = min ⁡ y i w f T ∣ ∣ w f ∣ ∣ x i R 2 = max ⁡ i ∣ ∣ x i ∣ ∣ 2 \rho = \min y_i\frac{\pmb w_f^T}{||\pmb w_f||}\pmb x_i \\ R^2 = \max_i ||\pmb x_i||^2 ρ=minyiwwwfwwwfTxxxiR2=imaxxxxi2
就可以得出迭代极限
T ≤ ∣ ∣ w f ∣ ∣ 2 ∗ max ⁡ i ∣ ∣ x i ∣ ∣ 2 ( min ⁡ y i w f T x i ) 2 = R 2 ρ 2 T \le \frac{||\pmb w_f||^2*\max_i||\pmb x_i||^2}{(\min y_i\pmb w_f^T \pmb x_i)^2} \\ = \frac{R^2}{\rho^2} T(minyiwwwfTxxxi)2wwwf2maxixxxi2=ρ2R2
这是在线性可分的情况下,但我们预先并不知道数据集是不是线性可分的。 所以我们在一种不知道PLA不会不停,多久会停的情况下。

在实际情况中(考虑噪声)我们期待得到的是一个能够使错误分类点达到最小的 w g \pmb w_g wwwg 作为对目标的近似。但从茫茫人海的假设空间 H H H 中要找到这么一个精确的 w g \pmb w_g wwwg 是一个NP-hard问题;所以我们采用一些方法来近似这个 w g \pmb w_g wwwgpocket-PLA就是一种,我们只保留从当前看最好的那个 w \pmb w www

算法描述

和PLA类似,迭代对每个点都有:

  • 如果在该点犯错误,则更新 w t + 1 = w t + y i x i \pmb w_{t+1} = \pmb w_t+y_i \pmb x_i wwwt+1=wwwt+yixxxi

  • 然后再和当前的 w t \pmb w_t wwwt 在所有样本点的效果上进行对比,即比较各自的
    ∑ i = 1 M [ s i g n ( h ( x i ) ) ≠ y i ] M 为 误 分 类 点 的 数 量 \sum_{i=1}^{M}[sign(h(\pmb x_i)) \neq y_i] \quad M为误分类点的数量 i=1M[sign(h(xxxi))=yi]M
    取能够让上式较小的那个(就是犯错误少的那个)作为 w t + 1 \pmb w_{t+1} wwwt+1 ,也就是说,如果 w t \pmb w_t wwwt 犯的错误反而少的话,就保留它而不更新。

通过这个算法,能够得到一个还不错的perceptron。

不难发现,如果最终发现数据集确实线性可分,相比于直接使用PLA,pocket-PLA由于每碰到一个错误分类点都要重新遍历一遍数据集以对比分类效果,耗时就要长一些;所以对于线性可分的数据集来说,pocket-PLA要比PLA慢一些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值