闲谈:感知器学习算法(The perceptron learning algorithm)

这一节我们简单地介绍历史上的著名算法——感知器算法,这在后面的学习理论中也会有所提及。设想我们改变逻辑回归算法,“迫使”它只能输出-1或1抑或其他定值。在这种情况下,之前的逻辑函数 g g g就会变成阈值函数 s i g n sign sign

s i g n ( z ) = { 1 if  z ≥ 0 − 1 if  z < 0 sign(z) = \begin{cases} 1 & \quad \text{if}\ z \ge 0 \\ -1 & \quad \text{if}\ z \lt 0 \\ \end{cases} sign(z)={11if z0if z<0

如果我们令假设为 h θ ( x ) = g ( θ T x ) h_\theta(x) = g(\theta^T x) hθ(x)=g(θTx),将其带入之前的迭代法中:

θ j : = θ j + α ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) . \theta_j := \theta_j + \alpha(y^{(i)} - h_\theta(x^{(i)}))x^{(i)}_j. θj:=θj+α(y(i)hθ(x(i)))xj(i).

至此我们就得出了感知器学习算法。在19世纪60年代,感知器被认为是大脑中神经元工作的初步模型。需要注意的是虽然感知器模型和我们之前的算法形式上很相似,但它实际上和线性回归等算法是完全不同类型的算法。尤其你很难像线性回归一样给感知器概率论上的有效阐述或极大似然估计的推导。

###感知器模型的另一种阐述

数据集的线性可分性

给定一个数据集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} T={(x1,y1),(x2,y2),...,(xN,yN)}
其中, x i ∈ X ∈ R n , y i ∈ Y = { + 1 , − 1 } , i = 1 , 2 , . . . , N x_i\in\mathcal{X}\in R^n,\quad y_i\in\mathcal{Y}=\{+1,-1\},\quad i=1,2,...,N xiXRn,yiY={+1,1},i=1,2,...,N,如果存在某个超平面S
w ⋅ x + b = 0 w\cdot x + b =0 wx+b=0
能够将数据集的正实例点和负实例点完全正确地划分到超平面的两侧,则称数据集T为线性可分数据集。

感知机学习策略

假设数据集是线性可分的,感知机学习的目标是求得一个能够将训练集正负实例点完全分开的超平面。为了找出这样的超平面,即确定感知机的模型参数 w 、 b w、b wb,需要定义一个损失函数(成本函数)并将损失函数极小化。

损失函数的一个自然选择是误分类点的个数。但这样的损失函数不是参数 w 、 b w、b wb的连续可到函数,不易优化。损失函数的另一个选择是误分类点到超平面的距离,这时感知机所采用的。
首先写出空间 R n R^n Rn中任一点 x 0 x_0 x0到超平面S的距离:
1 ∥ w ∥ ∣ w ⋅ x 0 + b ∣ \frac{1}{\Vert w \Vert}\vert w \cdot x_0 + b \vert w1wx0+b
这里 ∥ w ∥ \Vert w \Vert w w w w L 2 L_2 L2范数。对于误分类点则有:
− y i ( w ⋅ x i + b ) > 0 -y_i(w \cdot x_i + b) \gt 0 yi(wxi+b)>0
所以误分类点到超平面的距离是
− 1 ∥ w ∥ y i ( w ⋅ x i + b ) -\frac{1}{\Vert w\Vert}y_i(w \cdot x_i + b) w1yi(wxi+b)
那么所有误分类点到超平面的距离为
− 1 ∥ w ∥ ∑ x i ∈ M y i ( w ⋅ x i + b ) -\frac{1}{\Vert w\Vert}\sum_{x_i \in M} y_i(w \cdot x_i + b) w1xiMyi(wxi+b)
不考虑 1 ∥ w ∥ \frac{1}{\Vert w\Vert} w1,就得到感知机学习的损失函数。感知机 s i g n ( w ⋅ x + b ) sign(w \cdot x + b) sign(wx+b)学习的损失函数定义为

L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) L(w,b)=-\sum_{x_i \in M} y_i(w \cdot x_i + b) L(w,b)=xiMyi(wxi+b)

使用随机梯度下降法优化模型,则有:

∇ w L ( w , b ) = − ∑ x i ∈ M y i x i ∇ b L ( w , b ) = − ∑ x i ∈ M y i \begin{aligned} \nabla_w L(w,b) & = -\sum_{x_i \in M} y_i x_i \\ \nabla_b L(w,b) & = -\sum_{x_i \in M} y_i \end{aligned} wL(w,b)bL(w,b)=xiMyixi=xiMyi

每碰到一个误分类点 ( x i , y i ) (x_i, y_i) (xi,yi),对 w , b w,b w,b进行更新:

w : = w + η y i x i b : = b + η y i \begin{aligned} w &:= w + \eta y_i x_i \\ b & := b + \eta y_i \end{aligned} wb:=w+ηyixi:=b+ηyi

本文主要内容来自吴恩达老师网易公开课机器学习中的课件,本人自行翻译并重新对文章进行编辑排版,转载请注明出处

你可能感兴趣的:(闲谈:感知器学习算法(The perceptron learning algorithm))