《统计学习方法》学习笔记 chapater2——感知机

感知机

    • 简介
    • 模型
    • 策略
    • 算法
      • 原始形式
      • 对偶形式

简介

感知机(perceptron)是二分类线性分类模型,简单理解为一个超平面把两个类别的数据切成两半。

它是SVM、神经网络的基础,相当于加减乘除,所以必须学一下,最好理解透彻。

按照统计学习方法三要素来学习:模型、策略、算法。

模型

定义比较冗长,自己去看,只说核心点,模型函数:
f ( x ) = s i g n ( w T ⋅ x + b ) f(x)=sign(w^T \cdot x+b) f(x)=sign(wTx+b)
其中 w w w是权值向量, b b b是偏置。

用人话来说, w T x + b w^Tx+b wTx+b就是个多项式,展开就是 b + w 1 x 1 + w 2 x 2 + ⋯ b+w_1x_1+w_2x_2+\cdots b+w1x1+w2x2+

上面的 w = ( w 1 , w 2 , ⋯   ) T w=(w_1,w_2,\cdots)^T w=(w1,w2,)T x = ( x 1 , x 2 , ⋯   ) T x=(x_1,x_2,\cdots)^T x=(x1,x2,)T,至于为什么把 w w w x x x规定成列向量,我想到一个点,就是在线性代数方程组的情况下,输出 y y y是一列的,然后这样把 x x x规定成列向量,好看一点。

比如,这样排列:
b + ( w 1 w 2 ⋮ ) T ( x 1 x 2 ⋮ ) = ( y 1 y 2 ⋮ ) b + \begin {pmatrix} w_1 \\ w_2 \\ \vdots \end {pmatrix} ^T \begin {pmatrix} x_1 \\ x_2 \\ \vdots \end {pmatrix}= \begin {pmatrix} y_1 \\ y_2 \\ \vdots \end {pmatrix} b+w1w2Tx1x2=y1y2
这样一一对应,感觉就很棒。

s i g n sign sign函数:
s i g n ( x ) = { + 1 , x ≥ 0 − 1 , x < 0 sign(x)= \begin {cases} +1, & x \ge 0\\[2ex] -1, & x \lt 0 \end {cases} sign(x)=+1,1,x0x<0
这个函数过于简单,不再赘述。

策略

策略就是学习策略,说人话就是找到最合适的 w w w b b b,怎么定义这个最合适,就是策略。

感知机使用损失函数作为学习策略,使损失函数降到最低。

感知机在样本空间里是一个超平面,很容易想到的损失函数就是被误分类的点到这个超平面的距离之和,这个和等于0的时候,就是没有误分类点了。

那么对于样本空间任意一点 x 0 x_0 x0,到超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0的距离,由初中数学知识可得:
1 ∣ ∣ w ∣ ∣ ∣ w T ⋅ x 0 + b ∣ \frac 1 {||w||} |w^T\cdot x_0 + b| w1wTx0+b
其中, ∣ ∣ w ∣ ∣ ||w|| w w w w L 2 L_2 L2范数, ∣ ∣ w ∣ ∣ = w 1 2 + w 2 2 + ⋯ ||w||=\sqrt {w_1^2+w_2^2+ \cdots} w=w12+w22+

由模型的定义知,对于正确分类点来说, w T x i + b ≥ 0 w^Tx_i+b\ge0 wTxi+b0时, y i = + 1 y_i=+1 yi=+1;当 w T x i + b < 0 w^Tx_i+b\lt0 wTxi+b<0时, y i = − 1 y_i=-1 yi=1。那么对于误分类点来说,情况就是反的,即 w T x i + b ≥ 0 w^Tx_i+b\ge0 wTxi+b0时, y i = − 1 y_i=-1 yi=1;当 w T x i + b < 0 w^Tx_i+b\lt0 wTxi+b<0时, y i = + 1 y_i=+1 yi=+1,因此,在误分类点的距离公式中加入 y y y,就得到误分类点 ( x i , y i ) (x_i, y_i) (xi,yi)到超平面的距离:
− 1 ∣ ∣ w ∣ ∣ y i ( w T ⋅ x i + b ) -\frac 1 {||w||} y_i(w^T\cdot x_i + b) w1yi(wTxi+b)
误分类点的集合为 M M M,则所有误分类点到超平面的距离之和为:
− 1 ∣ ∣ w ∣ ∣ ∑ x i ∈ M y i ( w T ⋅ x i + b ) -\frac 1 {||w||} \sum_{x_i \in M} y_i(w^T\cdot x_i + b) w1xiMyi(wTxi+b)
在计算损失函数的时候,可以忽略掉这里的 1 ∣ ∣ w ∣ ∣ \frac 1 {||w||} w1,可以忽略的原因我在CSDN、百度、知乎、其他博客都找了一下,原因大致归为两点:

1 ∣ ∣ w ∣ ∣ \frac 1 {||w||} w1的符号一直为正数,而这里的loss function是误分类点驱动的,即正分类点对于loss function没有影响,可以认为这里的loss function和 1 ∣ ∣ w ∣ ∣ \frac 1 {||w||} w1不相关,直接忽略掉。

② 基本和第一点一致,就是算法的终止条件是距离之和为0,和分母没有关系。

按照我自己的理解,那个分母,会影响超平面的位置,但是不会影响到超平面正确将数据点分割开,即可认为对模型的结果没有影响,而且可以简化运算,就直接忽略了。

于是损失函数就变为:
L ( w , b ) = − ∑ x i ∈ M y i ( w T x + b ) L(w,b) = -\sum_{x_i \in M} y_i(w^T x + b) L(w,b)=xiMyi(wTx+b)
其中 M M M代表所有误分类点的集合。

那么现在模型的求解,转变成了最优化 L ( w , b ) L(w,b) L(w,b)函数。

算法

书中给的最优的方法是梯度下降法,这里不介绍梯度下降法的具体过程,只进行使用。

原始形式

L ( w , b ) L(w,b) L(w,b) w w w b b b分别求偏导得到:
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲\begin{split} &…
根据梯度下降法,随机选取一个误分类点 ( x i , y i ) (x_i, y_i) (xi,yi),对 ( w , b ) (w,b) (w,b)进行更新:
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲\begin{split} w…
其中 η ( 0 < η ≤ 1 ) \eta(0\lt \eta \le 1) η(0<η1)为步长,在机器学习里叫学习率,可以自己设定。

综上所述,算法步骤描述如下:

  1. 选取初值 w 0 w_0 w0 b 0 b_0 b0
  2. 在训练集中选取数据 ( x i , y i ) (x_i,y_i) (xi,yi)
  3. 如果 y i ( w T x i + b ) ≤ 0 y_i(w^Tx_i+b)\le0 yi(wTxi+b)0,使用公式KaTeX parse error: Undefined control sequence: \eqref at position 1: \̲e̲q̲r̲e̲f̲{1}来更新 w w w b b b的值
  4. 跳回到第2步,直至训练集中没有误分类点

然后自己去动手做一遍《统计学习方法》的例2.1,基本上就彻底就闹明白感知机怎么玩的了。

对偶形式

先说为什么会有对偶形式:方便计算,真的很方便计算,手推一遍例2.2,就知道这玩意有多方便计算了,不管是手推还是计算机来算,对偶形式的计算量比原始形式小的多的多,就是比原始形式稍微难以理解一点。

在原始形式里,由公式KaTeX parse error: Undefined control sequence: \eqref at position 1: \̲e̲q̲r̲e̲f̲{1},每一次迭代, w w w b b b都会有一个增量,假设模型一共迭代 n n n次,设 α i = n η \alpha_i=n\eta αi=nη,则最后的学习到的参数可以表示为:
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲\begin{split} w…
则模型转换为:
f ( x ) = s i g n ( ∑ j = 1 N α j x j y j ⋅ x + b ) f(x)=sign(\sum_{j=1}^{N}\alpha_jx_jy_j\cdot x+b) f(x)=sign(j=1Nαjxjyjx+b)
其中 α = ( α 1 , α 2 , ⋯   , α N ) T \alpha = (\alpha_1,\alpha_2,\cdots,\alpha_N)^T α=(α1,α2,,αN)T

算法也转换为:

  1. 令初始值 α = 0 , b = 0 \alpha=0,b=0 α=0,b=0

  2. 在训练集中选取数据 ( x i , y i ) (x_i,y_i) (xi,yi)

  3. 如果 y i ( ∑ j = 1 N α j x j y j ⋅ x i + b ) ≤ 0 y_i(\sum_{j=1}^{N}\alpha_jx_jy_j\cdot x_i+b)\le0 yi(j=1Nαjxjyjxi+b)0,用下列公式更新参数:
    KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲\begin{split} \…

  4. 跳回到第2步,直至训练集中没有误分类点

一定一定要去手动推一遍例2.1和例2.2,不行就推两遍,肯定会懂的。

你可能感兴趣的:(机器学习,机器学习)