线性判别--感知机算法(perceptron algorithm)

  感知器算法是一种线性判别算法,它适用于二分类模型。在这个模型中,输入向量 x \mathbf{x} x首先使用一个固定的非线性变换得到一个特征向量 ϕ ( x ) \phi(\mathbf{x}) ϕ(x),接着用这个特征向量构造一个线性模型:
(1) y ( x ) = f ( w T ϕ ( x ) ) y(x) = f(w^{T}\phi(x)) \tag{1} y(x)=f(wTϕ(x))(1)其中非线性激活函数 f ( . ) f(.) f(.)是一个阶梯函数,形式为:
(2) f ( a ) = { + 1 , if   a  > 0 − 1 , if   a  < 0 f(a) = \begin{cases} +1, & \text{if \ $a$ > 0} \\ -1, & \text{if \ $a$ < 0} \end{cases} \tag{2} f(a)={+1,1,if  a > 0if  a < 0(2)这里使用 t = + 1 t=+1 t=+1表示第一类 C 1 \mathcal{C}_{1} C1 t = − 1 t=-1 t=1表示第二类 C 2 \mathcal{C}_{2} C2
  训练参数 w w w算法可通过最小化目标函数得到。一种自然的目标函数为错误分类的样本的总数。但是这就是的目标函数变为 w w w的分段常函数,在使用梯度下降算法时,几乎所有地方梯度都是0。
  因此考虑另一个误差函数,即感知器准则(perceptron criterion)。因为我们的目标是得到一个权重 w w w,使得对于类别 C 1 \mathcal{C}_{1} C1中的所有样本 x n x_{n} xn都有 w T ϕ ( x n ) > 0 w^{T}\phi(x_{n}) > 0 wTϕ(xn)>0,对于类别 C 2 \mathcal{C}_{2} C2中的所有样本 x n x_{n} xn都有 w T ϕ ( x n ) < 0 w^{T}\phi(x_{n}) < 0 wTϕ(xn)<0。对于使用 t ∈ + 1 , − 1 t \in{+1, -1} t+1,1这种目标变量的表示方法,即让所有的样本均满足 w T ϕ ( x n ) t n > 0 w^{T}\phi(x_{n})t_{n} > 0 wTϕ(xn)tn>0。对于被正确分类的样本,感知机赋予零误差,对于分类错误的样本 x n x_{n} xn,最小化 − w T ϕ ( x n ) t n -w^{T}\phi(x_{n})t_{n} wTϕ(xn)tn。因此感知机准则为:
(3) E P ( w ) = − ∑ n ∈ M w T ϕ n t n E_{P(w)} = -\sum_{n\in M}w^{T}\phi_{n}t_{n} \tag{3} EP(w)=nMwTϕntn(3)

其中 M M M表示所有错误分类样本的集合。某个特定的错误的分类的样本对误差函数的贡献为样本被错误分类的区域中 w w w的线性函数,正确分类的误差函数为零。因此,总的误差函数是分段线性的。
  现在对误差函数使用随机梯度下降算法。得到权重 w w w的变化为:
w τ + 1 = w τ − η ∇ E P ( w ) = w τ + η ϕ n t n w^{\tau + 1} = w^{\tau} - \eta\nabla E_{P(w)} = w^{\tau} + \eta \phi_{n}t_{n} wτ+1=wτηEP(w)=wτ+ηϕntn

其中 η \eta η为学习率, τ \tau τ是一个整数,表示迭代次数。如果我们将 w w w乘上一个常数,则感知器函数 y ( x , w ) y(x, w) y(x,w)不变,因此我们可以令学习率 η = 1 \eta=1 η=1而不失一般性。
  如果数据是线性可分的,则感知机收敛定理可保证一定会找到一个解,但是可能需要相当长的迭代次数。所以在到达收敛状态前,我们无法判断数据是线性不可分还是收敛缓慢。即使是线性可分,也可能有多个解。最终找到的解依赖于初始化和数据点出现的顺序。
  除了训练的困难外,感知机无法提供概率化的输出,同时也无法直接推广到多类别状态。另外,它是基于固定基函数的线性组合,具有线性模型的局限性。

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