声明:声明:该文章为作者整理和简略的,非原创,是多方资料的整合,为方便所以标注的原创,有错别字欢迎指正
一、初始感知机(perceptron)
感知机(perceptron)是二类分类的线性分类模型,感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。(关于生成模型和判别模型可见博客统计机器学习【1】- 入门机器学习(一))。感知机学习旨在求出将训练数据进行线性划分的分离超平面。
二、感知机
1、什么是感知机
假设输入空间(特征空间)是
χ
⊆
R
n
\chi \subseteq R^n
χ⊆Rn,输出空间是
γ
=
{
+
1
,
−
1
}
\gamma = \lbrace +1, -1 \rbrace
γ={+1,−1}. 输入
x
∈
χ
x \in \chi
x∈χ表示实例的特征向量,对应于输入空间(特征空间)的点;输出
y
∈
γ
y \in \gamma
y∈γ表示实例的类别。由输入空间到输出空间的如下函数:
f
(
x
)
=
s
i
g
n
(
w
⋅
x
+
b
)
(1)
f(x) = sign(w ·x + b)\tag{1}
f(x)=sign(w⋅x+b)(1)
称为感知机。其中, w w w 和 b b b为感知机模型参数, w ∈ R n w \in R^n w∈Rn叫作权值(weight)或者权值向量(weight vector), b ∈ R b \in R b∈R叫作偏置(bias), w ⋅ x w ·x w⋅x表示 w w w和 x x x的内积。sign是符号函数。
感知机模型的假设空间(hypothesis space)定义在特征空间中的所有线性分类模型或者线性分类器,即函数集合 { f ∣ f ( x ) = w ⋅ x + b } \lbrace f | f(x) = w·x + b \rbrace {f∣f(x)=w⋅x+b}。
2、感知机的几何解释
线性方程
w
⋅
x
+
b
=
0
(2)
w · x + b = 0\tag{2}
w⋅x+b=0(2)
对应于特征空间
R
n
R^n
Rn中的一个超平面S,其中
w
w
w是超平面的法向量,
b
b
b是超平面的截距。这个超平面将特征空间划分为两个部分,位于两部分的点(特征向量)分别被分为正、负两类,因此,超平面S称为分离超平面(separating hyperplane)。
三、感知机学习策略
1、数据集的线性可分性
给定一个数据集
τ
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
N
,
y
N
)
,
\tau = {(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)},
τ=(x1,y1),(x2,y2),...,(xN,yN),
其中,
x
i
∈
χ
=
R
n
,
y
1
∈
γ
=
{
+
1
,
−
1
}
,
i
=
1
,
2
,
3
,
.
.
.
,
N
x_i \in \chi = R^n, y_1 \in \gamma = \lbrace +1, -1 \rbrace, i = 1, 2, 3, ..., N
xi∈χ=Rn,y1∈γ={+1,−1},i=1,2,3,...,N,如果存在某个超平面S
w
⋅
x
+
b
=
0
w·x + b = 0
w⋅x+b=0
能够将数据集的正实例点和负实例点完全地划分到超平面的两侧,即对所有
y
i
y_i
yi = + 1的实例
i
i
i,有
w
⋅
x
i
+
b
>
0
w · x_i + b > 0
w⋅xi+b>0,对所有
y
i
=
−
1
y_i = -1
yi=−1的实例
i
i
i,有
w
⋅
x
i
+
b
<
0
w·x_i + b < 0
w⋅xi+b<0,则称数据集
T
T
T为线性可分数据集;否则。称数据集
T
T
T线性不可分。
2、感知机学习策略
假设训练数据集是线性可分的,感知机学习的目标是求得一个能够将训练集正实例点和负实例点完全分开的超平面。为了找出这样的超平面,即确定感知机模型参数 w , b w, b w,b,需要确定一个学习策略,即定义(经验)损失函数并将损失函数最小化。
损失函数的一个自然选择是误分类点的总数,但是,这样的损失函数不是参数
w
,
b
w, b
w,b的连续可导函数,不易优化。损失函数的另一个选择是误分类点到超平面S的总距离,为此,首先写出输入空间
R
n
R^n
Rn中任一点
x
0
x_0
x0到超平面
S
S
S的距离:
1
∣
∣
w
∣
∣
∣
w
⋅
x
0
+
b
∣
\frac{1}{||w||}|w·x_0 + b|
∣∣w∣∣1∣w⋅x0+b∣
这里,
∣
∣
w
∣
∣
||w||
∣∣w∣∣是
w
w
w的
L
2
L_2
L2范数。
其次,对于误分类的数据
(
x
i
,
y
i
)
(x_i, y_i)
(xi,yi)来说,
−
y
i
(
w
⋅
x
i
+
b
)
>
0
-y_i(w·x_i + b) > 0
−yi(w⋅xi+b)>0
成立。
因此,误分类点x_i到超平面S的距离是
−
1
∣
∣
w
∣
∣
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
-\frac{1}{||w||}\sum _{x_i \in M}y_i(w·x_i + b)
−∣∣w∣∣1xi∈M∑yi(w⋅xi+b)
不考虑 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1,就得到感知机学习的损失函数。
给定训练数据集
τ
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
N
,
y
N
)
\tau = {(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)}
τ=(x1,y1),(x2,y2),...,(xN,yN)
其中,
x
i
∈
χ
=
R
n
,
y
i
∈
γ
=
+
1
,
−
1
,
i
=
1
,
2
,
.
.
,
N
x_i \in \chi = R^n, y_i \in \gamma = {+1, -1}, i = 1, 2, .., N
xi∈χ=Rn,yi∈γ=+1,−1,i=1,2,..,N,感知机
s
i
g
n
(
w
⋅
x
+
b
)
sign(w·x+b)
sign(w⋅x+b)学习的损失函数定义为
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
(3)
L(w, b) = -\sum_{x_i \in M}y_i(w·x_i + b)\tag{3}
L(w,b)=−xi∈M∑yi(w⋅xi+b)(3)
其中, M为误分类点的集合,这个损失函数就是经验风险函数。
感知机学习的策略是在假设空间中选取使损失函数式(3)最小的模型参数 w , b w, b w,b,即感知机模型。
四、感知机学习算法
感知机学习问题转化为求解损失函数(3)的最优化问题,最优化的方法是随机梯度下降法。(感知机学习的具体算法,包括原始形式和对偶形式)
1、感知机学习算法的原始形式
对要优化的目标函数
m
i
n
w
,
b
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
(4)
min_{w,b} L(w, b) = -\sum_{x_i \in M}y_i(w·x_i +b)\tag{4}
minw,bL(w,b)=−xi∈M∑yi(w⋅xi+b)(4)
要求参数
w
,
b
w, b
w,b,使其最小化。
感知机学习算法使误分类驱动的,具体采用随机梯度下降(stochastic gradient descent)。首先,任意选取一个超平面
w
0
,
b
0
w_0, b_0
w0,b0,然后用梯度下降法不断地极小化目标函数(4).极小化过程不是一次使
M
M
M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。
步骤1: 假设误分类点集合
M
M
M是固定的,那么损失函数
L
(
w
,
b
)
L(w, b)
L(w,b)的梯度由
∇
w
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
x
i
\nabla_wL(w, b) = -\sum_{x_i \in M}y_ix_i
∇wL(w,b)=−xi∈M∑yixi
∇ b L ( w , b ) = − ∑ x i ∈ M y i \nabla_bL(w, b) = -\sum_{x_i \in M}y_i ∇bL(w,b)=−xi∈M∑yi
给出。
随机选取一个误分类点
(
x
i
,
y
i
)
(x_i, y_i)
(xi,yi),对
w
,
b
w, b
w,b进行更新:
w
←
w
+
η
y
i
x
i
w\leftarrow w + \eta y_ix_i
w←w+ηyixi
b ← b + η y i b \leftarrow b + \eta y_i b←b+ηyi
式中 η ( 0 < η ≤ 1 ) \eta(0<\eta \leq 1) η(0<η≤1)是步长,在统计学习中称为学习率(learning rate)。这样,通过迭代可以期待损失函数 L ( w , b ) L(w, b) L(w,b)不断减少,直到为0。
具体算法如下
输入:训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
N
,
y
N
)
}
T=\lbrace (x_1, y_1), (x_2, y_2), ..., (x_N, y_N)\rbrace
T={(x1,y1),(x2,y2),...,(xN,yN)},学习率
η
(
0
<
η
≤
1
)
\eta(0 < \eta \leq 1)
η(0<η≤1);
输出:
w
,
b
w, b
w,b: 感知机模型
f
(
x
)
=
s
i
g
n
(
w
⋅
x
+
b
)
f(x) = sign(w·x + b)
f(x)=sign(w⋅x+b).
(1)选取初值
w
0
,
b
0
w_0, b_0
w0,b0;
(2)在训练集中选取数据
(
x
i
,
y
i
)
(x_i, y_i)
(xi,yi)
(3)如果
y
i
(
w
⋅
x
i
+
b
)
≤
0
y_i(w·x_i + b) \leq0
yi(w⋅xi+b)≤0
w
←
w
+
η
y
i
x
i
w \leftarrow w + \eta y_ix_i
w←w+ηyixi
b
←
b
+
η
y
i
b \leftarrow b + \eta y_i
b←b+ηyi
(4)转至(2),直至训练集中没有误分类点。
这种学习算法直观上有如下解释:当一个实例点被误分类,即位于分离超平面的错误一侧,则调整 w , b w, b w,b的值,使分离超平面向该误分类点的一侧移动,以减少分类点与超平面之间的距离,直至超平面超越该误分类点使其被正确分离。
3、感知机学习算法的对偶形式
对偶形式的基本想法是,将
w
w
w和
b
b
b表示为实例
x
i
x_i
xi和标记
y
i
y_i
yi的线性组合的形式,通过求解器系数而求得
w
w
w和
b
b
b. 不失一般性,在前一个算法中假设初始值
w
0
,
b
0
w_0, b_0
w0,b0均为0,对误分类点
(
x
i
,
y
i
)
(x_i, y_i)
(xi,yi)通过
w
←
w
+
η
y
i
x
i
w \leftarrow w + \eta y_i x_i
w←w+ηyixi
b
←
b
+
η
y
i
b \leftarrow b + \eta y_i
b←b+ηyi
逐步修改
w
,
b
w, b
w,b,设修改n次,则
w
,
b
w, b
w,b关于
(
x
i
,
y
i
)
(x_i, y_i)
(xi,yi)的增量为
α
i
y
i
x
i
\alpha_i y_i x_i
αiyixi和
α
i
y
i
\alpha_i y_i
αiyi,这里
α
i
=
n
i
η
\alpha_i = n_i\eta
αi=niη。这样。从学习过程不断看出,最后学习到的
w
,
b
w, b
w,b可以分别表示为
w
=
∑
i
=
1
N
α
i
y
i
x
i
w = \sum_{i=1}^{N}\alpha_iy_ix_i
w=i=1∑Nαiyixi
b = ∑ 1 N α i y i b = \sum_{1}^{N}\alpha_iy_i b=1∑Nαiyi
具体算法如下
输入:线性可分的数据集
τ
=
{
(
x
1
,
y
1
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
N
,
y
N
)
)
\tau = \lbrace(x_1, y_1, (x_2, y_2), ..., (x_N, y_N))
τ={(x1,y1,(x2,y2),...,(xN,yN)),学习率
η
(
0
<
η
≤
1
)
\eta(0 < \eta \leq 1)
η(0<η≤1);
输出:
α
,
b
\alpha, b
α,b: 感知机模型
f
(
x
)
=
s
i
g
n
(
∑
j
=
1
N
α
i
y
i
⋅
x
+
b
)
f(x) =sign(\sum_{j = 1}^{N} \alpha_iy_i·x + b)
f(x)=sign(∑j=1Nαiyi⋅x+b).
其中
α
=
(
α
1
,
α
2
,
.
.
.
,
α
N
)
T
\alpha = (\alpha_1, \alpha_2, ..., \alpha_N)^T
α=(α1,α2,...,αN)T
(1)
α
←
0
,
b
←
0
\alpha \leftarrow0, b\leftarrow0
α←0,b←0
(2)在训练集中选取数据
(
x
i
,
y
i
)
(x_i, y_i)
(xi,yi)
(3)如果
y
i
(
∑
j
=
1
N
α
j
y
j
x
j
⋅
x
i
+
b
)
≤
0
y_i(\sum_{j = 1}^{N}\alpha_jy_jx_j·x_i + b) \leq 0
yi(∑j=1Nαjyjxj⋅xi+b)≤0
α
i
←
α
i
+
η
\alpha_i \leftarrow \alpha_i + \eta
αi←αi+η
b
←
b
+
η
y
i
b \leftarrow b + \eta y_i
b←b+ηyi
(4)转至(2)直至没有误分类数据
参考文献:
【1】统计学习方法-李航