1. 感知机模型
假设 x x x 表示 n n n 维的向量, x x x 待划分的类别 y ∈ { + 1 , − 1 } y \in \{+1,-1 \} y∈{+1,−1} ,则感知机可以表示为如下函数: f ( x ) = s i g n ( w x + b ) f(x)=sign(wx+b) f(x)=sign(wx+b)其中 w , b w,b w,b 称之为感知机模型参数, w w w 成为权值向量,其维度与 x x x ,即输入向量的维度相同, b b b 称为偏置, s i g n sign sign 函数为符号函数,表示如下: s i g n ( x ) = { + 1 , x ≥ 0 − 1 , x < 0 sign(x)=\left\{ \begin{aligned} +1 & , x \geq 0 \\ -1& , x < 0 \end{aligned} \right. sign(x)={+1−1,x≥0,x<0须知,感知机划分的平面不一定是二维的,划分的平面是几维取决于输入数据的维度。
2. 感知机损失函数
损失函数度量着我们对训练集划分准确性,在感知机模型中,很自然的一个是使用误分类点的个数来作为损失函数,但是,这样的函数并不是参数 w , b w,b w,b 的可导函数,即使知道了误分类的点的个数,也不能使用更有效的方法来改进参数使得划分更加正确,故我们选取各点到所划分的平面的距离作为损失函数,这样就能够使用最小二乘法或者随机梯度下降法来对参数进行优化,使划分一步步优化。
输入空间任一点
x
0
x_0
x0 到划分的平面
w
x
+
b
=
0
wx+b=0
wx+b=0 的距离如下:
s
=
1
∥
w
∥
∣
w
⋅
x
0
+
b
∣
s=\frac{1}{\Vert w \Vert} \vert w \cdot x_0 +b \vert
s=∥w∥1∣w⋅x0+b∣对于误分类的点来说,其一定满足
−
y
i
(
w
⋅
x
i
+
b
)
>
0
-y_i(w \cdot x_i+b)>0
−yi(w⋅xi+b)>0又因为
y
i
∈
{
+
1
,
−
1
}
y_i \in \{+1,-1\}
yi∈{+1,−1},所以,误分类点到平面的距离为
−
1
∥
w
∥
y
i
(
w
⋅
x
0
+
b
)
-\frac{1}{\Vert w \Vert}y_i ( w \cdot x_0 +b )
−∥w∥1yi(w⋅x0+b)
∥
w
∥
{\Vert w \Vert}
∥w∥ 是个常数,在优化时可以不考虑,这样,将所有误分类点到平面的距离加起来,就得到了感知机的损失函数:
L
(
w
,
b
)
=
−
∑
i
=
1
N
y
i
(
w
⋅
x
0
+
b
)
L(w,b)=-\sum_{i=1}^N y_i ( w \cdot x_0 +b )
L(w,b)=−i=1∑Nyi(w⋅x0+b)
3. 感知机学习算法
对于一个数据集
X
=
{
x
1
,
x
2
,
⋯
,
x
n
}
X=\{x_1,x_2, \cdots,x_n \}
X={x1,x2,⋯,xn},求其感知机模型就相当于将其损失函数最小化即可,故感知机模型的求解就变为了参数估计问题
m
i
n
w
,
b
L
(
w
,
b
)
=
−
∑
i
=
1
N
y
i
(
w
⋅
x
0
+
b
)
\mathop{min}\limits_{w,b}L(w,b)=-\sum_{i=1}^N y_i ( w \cdot x_0 +b )
w,bminL(w,b)=−i=1∑Nyi(w⋅x0+b)解决该参数估计问题即可用最小二乘法,也可用随机梯度下降法,最小二乘法解方程太过麻烦,所以我在这介绍随机梯度下降法求解模型参数。
首先求
w
,
b
w,b
w,b 两个参数的梯度,即其导数,求得如下:
∇
w
L
(
w
,
b
)
=
−
∑
x
i
∈
X
y
i
x
i
∇
b
L
(
w
,
b
)
=
−
∑
x
i
∈
X
y
i
\begin{align} \nabla_wL(w,b) &= -\sum_{x_i \in X}y_ix_i \notag \\ \nabla_bL(w,b) &= -\sum_{x_i \in X}y_i \notag \end{align}
∇wL(w,b)∇bL(w,b)=−xi∈X∑yixi=−xi∈X∑yi随机选取一个误分类点,确定一个学习率
η
\eta
η ,对
w
,
b
w,b
w,b进行相反方向的梯度更新:
w
←
w
+
η
y
i
x
i
b
←
b
+
η
y
i
\begin{align} w & \leftarrow w + \eta y_i x_i \notag \\ b & \leftarrow b+ \eta y_i \notag \end{align}
wb←w+ηyixi←b+ηyi通过这样不断的迭代,最终能够将线性可分的数据集的损失函数逐渐减小, 直至为
0
0
0 。
具体例子在这里截取李航老师的《统计学习方法》来做理解: