定义
感知机模型是一种要求训练样本线性可分的二分类模型。
线性可分
对于训练样本集 T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) , y i = { − 1 , 1 } T={(x_1,y_1),(x_2,y_2),...,(x_n,y_n)},y_i=\{-1,1\} T=(x1,y1),(x2,y2),...,(xn,yn),yi={−1,1},如果存在一个超平面 w x + b = 0 wx+b=0 wx+b=0,使得样本被正确分类,即当 y i = 1 y_i=1 yi=1时, w x i + b > 0 wx_i+b>0 wxi+b>0;而 y i = − 1 y_i=-1 yi=−1时, w x i + b < 0 wx_i+b<0 wxi+b<0,则称训练样本集为线性可分的,否则线性不可分。
感知机模型的定义
《统计学习方法》中,其定义为:
假设输入空间(特征空间)是
χ
∈
R
n
χ∈R^n
χ∈Rn,输出空间是
γ
=
{
−
1
,
+
1
}
γ=\{-1,+1\}
γ={−1,+1}。输入
x
∈
χ
x∈χ
x∈χ表示实例的特征向量,对应于输入空间的点;输出
y
∈
γ
y∈γ
y∈γ表示实例的类别。由输入空间到输出空间的如下函数:
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叫权重(weight),
b
b
b叫偏置(bias)。
感知机模型的假设空间是定义在特征空间的所有线性分类模型,即函数集合 { f ∣ f ( x ) = w x + b } \{f|f(x)=wx+b\} {f∣f(x)=wx+b}。
(所以在假设空间中,必然有的模型对训练集的分类性能很好,即对所有训练样本均可以正确分类;而有的模型则性能欠佳,会对一些样本误分类。如何在大量模型中找到那些性能很好的感知机模型?除了能正确分类外肯定有其它共性,比如 w , b w,b w,b的范围?那通过对训练集样本的学习进行了解。)
感知机的学习,是由训练数据集 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)}求得感知机模型的参数 w , b w,b w,b,其中 x i ∈ χ = R n x_i∈χ=R^n xi∈χ=Rn, y i ∈ γ = { − 1 , + 1 } y_i∈γ=\{-1,+1\} yi∈γ={−1,+1}。感知机的预测,是通过学习得到的感知机模型,对于新的输入实例判断其对应的输出类别。
感知机的几何解释:线性方程 w x + b = 0 wx+b=0 wx+b=0对应于特征空间中的一个超平面S,其中 w w w是超平面的法向量, b b b是超平面的截距,这个超平面将特征空间划分为两部分。位于两部分的点分别被分为正、负两类。因此超平面S称为分离超平面。
感知机模型的学习
损失函数
如果给出的训练集是线性可分的,感知机学习的目标是求得一个超平面
w
x
+
b
=
0
wx+b=0
wx+b=0,能将正实例和负实例样本完全分开。
为了求出这样一个超平面,需要在学习过程中对训练集中每个样本点的分类情况进行量化,即引入损失函数度量样本输出值和真实值的差异程度并最小化损失函数以使分类错误的样本数最小。一个自然的想法是使用误分类点的总数
∑
i
I
(
y
i
≠
f
(
x
)
)
\sum_iI(y_i≠f(x))
∑iI(yi=f(x))作为损失函数,而因为此损失函数不连续不可导,不容易进行优化求解,所以不采用。另一个选择是误分类的点到超平面的总距离。
对于样本空间的任意样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi),到超平面
S
S
S的距离
d
=
∣
w
x
i
+
b
∣
∣
∣
w
∣
∣
d=\frac{|wx_i+b|}{||w||}
d=∣∣w∣∣∣wxi+b∣
对于误分类的数据样本来说,有
−
y
i
(
w
x
i
+
b
)
>
0
-y_i(wx_i+b)>0
−yi(wxi+b)>0,因此误分类点到超平面
S
S
S的距离可以写为
d
=
−
y
i
(
w
x
i
+
b
)
∣
∣
w
∣
∣
d=\frac{-y_i(wx_i+b)}{||w||}
d=∣∣w∣∣−yi(wxi+b)
假设超平面
S
S
S的误分类点的集合为M,则所有误分类点到超平面总距离是
−
∑
x
i
∈
M
y
i
(
w
x
i
+
b
)
∣
∣
w
∣
∣
\frac{\displaystyle-\sum_{x_i∈M}y_i(wx_i+b)}{||w||}
∣∣w∣∣−xi∈M∑yi(wxi+b)
不考虑
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣∣w∣∣1,就得到感知及学习的损失函数。
上面是统计学习方法上感知机损失函数的由来,之前看到这里觉得能想到使用误分类点到超平面的距离的概念不要太机智,但没想通为什么到最后一步要不考虑
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣∣w∣∣1。后来貌似想通了,简单记录一下自己的思考。
对于感知机模型来说,既然最终所有样本都会被正确分类,即损失为0,那么在这里对损失函数的要求无非两点,一来要能记录误分类点,二来要求对这些误分类点好优化。使用误分类点总数作为损失函数满足第一点,但是不好优化(不可导不连续的即使知道它被误分了也没有方向去优化它)。
那么就想一个既能记录误分类点的总数又可导的损失函数?
对于样本空间
T
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
n
,
y
n
)
,
y
i
=
{
−
1
,
1
}
T={(x_1,y_1),(x_2,y_2),...,(x_n,y_n)},y_i=\{-1,1\}
T=(x1,y1),(x2,y2),...,(xn,yn),yi={−1,1}内的任意样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi),对于误分类的数据样本来说,有
−
y
i
(
w
x
i
+
b
)
>
0
-y_i(wx_i+b)>0
−yi(wxi+b)>0,是
w
和
b
w和b
w和b在定义域内的连续可导函数,那么对所有分类的点损失函数就可记为
L
(
w
,
b
)
=
{
−
∑
i
n
y
i
(
w
x
i
+
b
)
,
误分类
0
,
正确分类
L(w,b)=\begin{cases} \displaystyle-\sum_{i}^{n}y_i(wx_i+b),& \text{误分类}\\ 0,& \text{正确分类} \end{cases}
L(w,b)=⎩⎪⎨⎪⎧−i∑nyi(wxi+b),0,误分类正确分类
不考虑正确分类的样本,对所有误分类的点损失函数
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
(
w
x
i
+
b
)
L(w,b)=\displaystyle-\sum_{x_i∈M}y_i(wx_i+b)
L(w,b)=−xi∈M∑yi(wxi+b)
和不考虑
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣∣w∣∣1的误分类点到超平面总距离的损失函数一样的。
就我对感知机的理解,觉得损失函数这么解释更简单一些。用误分类点到超平面的距离作为损失函数更适合从支持向量机损失函数优化的角度来考虑。
学习算法
原始形式
感知机通过优化损失函进行学习,即通过求损失函数的极小化的解获得
w
,
b
w,b
w,b。
min
w
,
b
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
(
w
x
i
+
b
)
\displaystyle\min_{w,b}L(w,b)=\displaystyle-\sum_{x_i∈M}y_i(wx_i+b)
w,bminL(w,b)=−xi∈M∑yi(wxi+b)
使用随机梯度下降法求解损失函数。
首先,任意选取一个超平面
w
0
,
b
0
w_0,b_0
w0,b0,然后用梯度下降法不断极小化目标损失函数。极小化过程中不是一次使用M中所有误分类点的梯度下降,而是一次随机选择一个误分类点使其梯度下降。
假设误分类点集合M是固定的,则损失函数的梯度由
∂
L
(
w
,
b
)
∂
w
=
−
∑
x
i
∈
M
y
i
x
i
,
∂
L
(
w
,
b
)
∂
b
=
−
∑
x
i
∈
M
y
i
\frac{\partial L(w,b)}{\partial w}=-\displaystyle\sum_{x_i∈M}y_ix_i, \frac{\partial L(w,b)}{\partial b}=\displaystyle-\sum_{x_i∈M}y_i
∂w∂L(w,b)=−xi∈M∑yixi,∂b∂L(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←w+\eta y_ix_i
w←w+ηyixi
b
←
b
+
η
y
i
b←b+\eta y_i
b←b+ηyi
式中
η
\eta
η是步长,又称学习率。这样,通过迭代可以期待损失函数
L
(
w
,
b
)
L(w,b)
L(w,b)不断减小直到为0。但当训练集线性不可分时,感知机算法不收敛迭代结果会发生震荡。
感知机学习算法采用不同的初始值或选取不同的误分类点可以得到许多不同的解。
算法步骤 |
---|
输入: 训练集 T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) , y i = { − 1 , 1 } T={(x_1,y_1),(x_2,y_2),...,(x_n,y_n)},y_i=\{-1,1\} T=(x1,y1),(x2,y2),...,(xn,yn),yi={−1,1}, x i ∈ χ = R n x_i∈χ=R^n xi∈χ=Rn, y i ∈ γ = { − 1 , + 1 } y_i∈γ=\{-1,+1\} yi∈γ={−1,+1}。学习率 η ( 0 < η ≤ 1 ) \eta (0< \eta≤1) η(0<η≤1) |
输出: w , b w,b w,b,感知机模型 f ( x ) = s i g n ( w x + b ) f(x)=sign(wx+b) f(x)=sign(wx+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(wx_i+b)>0 −yi(wxi+b)>0, w ← w + η y i x i , b ← b + η y i w←w+\eta y_ix_i ,b←b+\eta y_i w←w+ηyixi,b←b+ηyi |
(4)转至(2),直到训练集中没有误分类点 |
对偶形式
对偶形式将
w
和
b
w和b
w和b表示为实例
x
i
和
标
记
y
i
x_i和标记y_i
xi和标记yi的线性组合形式,通过求解其系数而求得
w
和
b
w和b
w和b。对误分类点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi),通过
w
←
w
+
η
y
i
x
i
,
b
←
b
+
η
y
i
w←w+\eta y_ix_i ,b←b+\eta y_i
w←w+ηyixi,b←b+ηyi逐步修改
w
和
b
w和b
w和b。设对误分类点修改次数为
n
n
n,则
w
,
b
w,b
w,b关于
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的增量分别是
α
i
y
i
x
i
和
α
i
y
i
\alpha_iy_ix_i和\alpha_iy_i
αiyixi和αiyi,这里
α
i
=
n
i
η
\alpha_i=n_i\eta
αi=niη。这样最后学习到的
w
,
b
w,b
w,b分别表示为
w
←
∑
n
i
η
y
i
x
i
,
b
←
∑
n
i
η
y
i
w←\sum n_i\eta y_ix_i ,b←\sum n_i\eta y_i
w←∑niηyixi,b←∑niηyi
当
η
=
1
\eta=1
η=1时,
α
i
=
n
i
\alpha_i=n_i
αi=ni就是第
i
i
i个实例点由于被误分而进行更新的次数。
( α \alpha α本质上就是在记录样本学习率的更新次数)
算法步骤 |
---|
输入: 训练集 T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) , y i = { − 1 , 1 } T={(x_1,y_1),(x_2,y_2),...,(x_n,y_n)},y_i=\{-1,1\} T=(x1,y1),(x2,y2),...,(xn,yn),yi={−1,1}, x i ∈ χ = R n x_i∈χ=R^n xi∈χ=Rn, y i ∈ γ = { − 1 , + 1 } y_i∈γ=\{-1,+1\} yi∈γ={−1,+1}。学习率 η ( 0 < η ≤ 1 ) \eta (0< \eta≤1) η(0<η≤1) |
输出: α , b \alpha,b α,b,感知机模型 f ( x ) = s i g n ( ∑ j = 1 n α j y j x j . x + b ) f(x)=sign(\displaystyle\sum_{j=1}^{n}\alpha_j y_jx_j.x+b) f(x)=sign(j=1∑nαjyjxj.x+b),其中 α = ( α 1 , α 2 , . . , α n ) T \alpha=(\alpha_1,\alpha_2,..,\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 α i y i x i + b ) > 0 -y_i(\displaystyle\sum_{j=1}^{n} \alpha_i y_ix_i+b)>0 −yi(j=1∑nαiyixi+b)>0, α i ← α i + η , b ← b + η y i \alpha_i←\alpha_i+\eta ,b←b+\eta y_i αi←αi+η,b←b+ηyi |
(4)转至(2),直到训练集中没有误分类点 |
梯度下降法
知乎里关于梯度下降法的回答