本课程来自深度之眼,部分截图来自课程视频以及李航老师的《统计学习方法》第二版。
公式输入请参考:在线Latex公式
前言
理解感知机模型解决的问题,模型形式、学习策略和求解算法。
详细说明:第2章讲了在数据线性可分的情况下的感知机模型。通过阅读2.1节,理解感知机模型的基本思想和模型形式;通过阅读2.2节了解感知机模型对应的优化问题的原始形式和对偶形式;2.3节对感知机的收敛性进行了证明。
学习目标:
0.导读视频。
1.掌握感知机的模型形式、损失函数及对应的优化问题。
3.理解感知机模型中随机梯度算法的收敛性。
4.掌握感知机的算法实现。
红豆与绿豆
假设有如下图分布的红豆(点)和绿豆(点),那么如果我们肉眼来划分这两类点,很简单
但是如何能让计算机学会划分这两类点呢?这里可以看到黄色线,或者说处于第二四象限的无数条直线都可以划分好这两类点,如果平面上没有直线能够划分这些点,如何找到一个能够划分大部分点的直线?也就是要完成以下两个任务:
1.找到一个好的直线(能够完全划分所有点)
2.量化直线分类的效果
对于第2点,我们可以把所有分错的点和直线的距离求和,让这段求和的距离最小,这条直线就是我们要找的。
小结一下就是以下四点:
1.一条直线不分错一个点,这就是好的直线。
2.模型要尽可能找到好的直线。
3.如果没有好的直线,在差的直线中找到较好的直线。
4.判断直线多差的方式:分错的点到直线的距离求和(越小越好)。
感知机模型
通过上面的例子我们知道,我们需要找到一个模型(函数)
f
(
x
)
f(x)
f(x),吃一个输入(豆子),然后模型给出输出(豆子的类型是红豆还是绿豆)
这个函数可以写为:
f
(
x
)
=
s
i
g
n
(
w
x
+
b
)
f(x)=sign(wx+b)
f(x)=sign(wx+b)
其中
s
i
g
n
(
x
)
=
{
+
1
,
if
x
≥
0
−
1
,
if
x
<
0
sign(x)=\begin{cases} &+1, \text{ if } x\ge 0 \\ &-1, \text{ if } x<0 \end{cases}
sign(x)={+1, if x≥0−1, if x<0
w
x
+
b
wx+b
wx+b则可以看做是超平面,在二维平面中是一条直线,在三维空间是一个面,在四维空间是一个三维空间,在五维空间是一个思维空间。
例如,考虑不同维度的豆子的特征:
直径:
(
x
1
)
→
(
w
1
)
⋅
(
x
1
)
(x_1)→(w_1)·(x_1)
(x1)→(w1)⋅(x1)
直径-质量:
(
x
1
,
x
2
)
→
(
w
1
,
w
2
)
⋅
(
x
1
,
x
2
)
(x_1,x_2)→(w_1,w_2)·(x_1,x_2)
(x1,x2)→(w1,w2)⋅(x1,x2)
直径-质量-光滑度:
(
x
1
,
x
2
,
x
3
)
→
(
w
1
,
w
2
,
w
3
)
⋅
(
x
1
,
x
2
,
x
3
)
(x_1,x_2,x_3)→(w_1,w_2,w_3)·(x_1,x_2,x_3)
(x1,x2,x3)→(w1,w2,w3)⋅(x1,x2,x3)
这个时候w和x可认为是向量。
下面是正式定义:
w
⋅
x
+
b
w·x+b
w⋅x+b是一个
n
n
n维空间中的超平面
S
S
S,其中
w
w
w是超平面的法向量,
b
b
b是超平面的截距,这个超平面将特征空间划分成两部分,位于两部分的点分别被分为正负两类,所以,超平面
S
S
S称为分离超平面。
其中
w
w
w是超平面的法向量;
b
b
b是超平面的截距;
特征空间也就是整个
n
n
n维空间,样本的每个属性都叫一个特征,特征空间的意思是在这个空间中可以找到样本所有的属性组合。
感知机的学习策略
既然前面说了判断直线多差的方法。方法中提到了要计算点到超平面的距离,这里看下这个矩阵如何度量比较稳妥
一种是函数间距,
x
0
x_0
x0到超平面的公式为:
∣
w
⋅
x
0
+
b
∣
|w\cdot x_0+b|
∣w⋅x0+b∣
模型目标就是要最小化:
∑
i
=
1
n
∣
w
⋅
x
i
+
b
∣
\sum_{i=1}^n|w\cdot x_i+b|
i=1∑n∣w⋅xi+b∣
点在线的两侧,其中一侧的值为负,而距离是不能为负数,所以外面套上绝对值,这个距离实际上就是
∣
w
⋅
x
0
+
b
∣
=
∣
y
∣
|w\cdot x_0+b|=|y|
∣w⋅x0+b∣=∣y∣
如果将这个超平面的系数进行缩放,超平面是不变的,例如:
1
2
w
x
+
1
2
b
=
0
\cfrac{1}{2}wx+\cfrac{1}{2}b=0
21wx+21b=0,
2
w
x
+
2
b
=
0
2wx+2b=0
2wx+2b=0,这两个直线和
w
x
+
b
=
0
wx+b=0
wx+b=0是同一条,没有任何变化,但是如果用缩放后的直线去求函数间距,会发现间距有变化,
1
2
w
x
+
1
2
b
=
1
2
y
\cfrac{1}{2}wx+\cfrac{1}{2}b=\cfrac{1}{2}y
21wx+21b=21y,
2
w
x
+
2
b
=
2
y
2wx+2b=2y
2wx+2b=2y,也就是说模型就不用优化参数了,作弊直接把w和b等比例弄小,模型目标就实现了。
另外一种是几何间距,
x
0
x_0
x0到超平面的公式为:
1
∣
∣
w
∣
∣
2
∣
w
⋅
x
0
+
b
∣
\cfrac{1}{||w||_2}|w\cdot x_0+b|
∣∣w∣∣21∣w⋅x0+b∣
就是整体除以L2-norm,即(有时候2不写):
∣
∣
w
∣
∣
2
=
∑
i
=
1
N
w
i
2
||w||_2=\sqrt{\sum_{i=1}^N}w_i^2
∣∣w∣∣2=i=1∑Nwi2
再看下放大系数会发生什么:
1
∣
∣
2
w
∣
∣
2
∣
2
w
x
0
+
2
b
∣
=
1
(
2
w
)
2
∣
2
w
x
0
+
2
b
∣
=
1
w
2
∣
w
⋅
x
0
+
b
∣
\cfrac{1}{||2w||_2}|2wx_0+2b|=\cfrac{1}{\sqrt{(2w)^2}}|2wx_0+2b|=\cfrac{1}{\sqrt{w^2}}|w\cdot x_0+b|
∣∣2w∣∣21∣2wx0+2b∣=(2w)21∣2wx0+2b∣=w21∣w⋅x0+b∣
不变。
原始形式
对于误分类数据而言:
−
y
i
(
w
⋅
x
i
+
b
)
>
0
-y_i(w\cdot x_i+b)>0
−yi(w⋅xi+b)>0
上式的推导,以红绿豆为例:
假设模型用
w
⋅
x
i
+
b
>
0
w\cdot x_i+b>0
w⋅xi+b>0表示红豆;
w
⋅
x
i
+
b
<
0
w\cdot x_i+b<0
w⋅xi+b<0表示绿豆。同样的,对于标签而言,
y
=
1
y=1
y=1表示红豆;
y
=
−
1
y=-1
y=−1表示绿豆。
当模型预测为绿豆,实际上也是绿豆的时候:
−
y
i
(
w
⋅
x
i
+
b
)
=
−
(
−
1
)
(
w
⋅
x
i
+
b
)
=
w
⋅
x
i
+
b
<
0
-y_i(w\cdot x_i+b)=-(-1)(w\cdot x_i+b)=w\cdot x_i+b<0
−yi(w⋅xi+b)=−(−1)(w⋅xi+b)=w⋅xi+b<0
当模型预测为红豆,实际上也是红豆的时候:
−
y
i
(
w
⋅
x
i
+
b
)
=
−
(
1
)
(
w
⋅
x
i
+
b
)
=
−
(
w
⋅
x
i
+
b
)
<
0
-y_i(w\cdot x_i+b)=-(1)(w\cdot x_i+b)=-(w\cdot x_i+b)<0
−yi(w⋅xi+b)=−(1)(w⋅xi+b)=−(w⋅xi+b)<0
以上是正确分类的情况,下面看误分类的情况:
当模型预测为绿豆,实际上是红豆的时候:
−
y
i
(
w
⋅
x
i
+
b
)
=
−
(
1
)
(
w
⋅
x
i
+
b
)
=
−
(
w
⋅
x
i
+
b
)
>
0
-y_i(w\cdot x_i+b)=-(1)(w\cdot x_i+b)=-(w\cdot x_i+b)>0
−yi(w⋅xi+b)=−(1)(w⋅xi+b)=−(w⋅xi+b)>0
当模型预测为红豆,实际上是绿豆的时候:
−
y
i
(
w
⋅
x
i
+
b
)
=
−
(
−
1
)
(
w
⋅
x
i
+
b
)
=
w
⋅
x
i
+
b
>
0
-y_i(w\cdot x_i+b)=-(-1)(w\cdot x_i+b)=w\cdot x_i+b>0
−yi(w⋅xi+b)=−(−1)(w⋅xi+b)=w⋅xi+b>0
误分类点
x
i
x_i
xi到超平面
S
S
S的距离(几何间距):
−
1
∣
∣
w
∣
∣
2
y
i
(
w
⋅
x
i
+
b
)
-\cfrac{1}{||w||_2}y_i(w\cdot x_i+b)
−∣∣w∣∣21yi(w⋅xi+b)
因此,所有误分类点到超平面
S
S
S的距离为(
M
M
M为误分类点的集合):
−
1
∣
∣
w
∣
∣
2
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
-\cfrac{1}{||w||_2}\sum_{x_i \in M}y_i(w\cdot x_i+b)
−∣∣w∣∣21xi∈M∑yi(w⋅xi+b)
损失函数可以写为(这里由于感知机是误分类驱动的,目标是没有分错的点,因此可以使用函数间隔来简化计算,因为没有分错的点也不会存在距离的计算了):
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
(1)
L(w,b)=-\sum_{x_i \in M}y_i(w\cdot x_i+b)\tag 1
L(w,b)=−xi∈M∑yi(w⋅xi+b)(1)
算法步骤
1.任意选取超平面
w
0
,
b
0
w_0,b_0
w0,b0
2.使用梯度下降法最小化损失函数(公式1),就是分别对
w
,
b
w,b
w,b求偏导
∂
L
(
w
,
b
)
∂
w
=
−
∑
x
i
∈
M
y
i
x
i
\cfrac{\partial L(w,b)}{\partial w} = -\sum_{x_i \in M}y_ix_i
∂w∂L(w,b)=−xi∈M∑yixi
∂
L
(
w
,
b
)
∂
b
=
−
∑
x
i
∈
M
y
i
\cfrac{\partial L(w,b)}{\partial b} = -\sum_{x_i \in M}y_i
∂b∂L(w,b)=−xi∈M∑yi
3.令上面的偏导等于0,求解后更新
w
,
b
w,b
w,b(注意,这里如果对所有误分类点进行遍历求和就是普通梯度下降,如果每次更新只随机取一个误分类点进行处理那么就是SGD,就是把求和符号去掉)
w
←
w
+
η
∑
x
i
∈
M
y
i
x
i
b
←
b
+
η
∑
x
i
∈
M
y
i
w\leftarrow w+\eta \sum_{x_i \in M}y_ix_i\\ b\leftarrow b+\eta \sum_{x_i \in M}y_i
w←w+ηxi∈M∑yixib←b+ηxi∈M∑yi
例2.1
训练数据集中,正例点为
x
1
=
(
3
,
3
)
T
,
x
2
=
(
4
,
3
)
T
x_1=(3,3)^T,x_2=(4,3)^T
x1=(3,3)T,x2=(4,3)T,负例点为
x
3
=
(
1
,
1
)
T
x_3=(1,1)^T
x3=(1,1)T求解感知机模型
f
(
x
)
=
s
i
g
n
(
w
⋅
x
+
b
)
f(x)=sign(w·x+b)
f(x)=sign(w⋅x+b).其中
w
=
(
w
(
1
)
,
w
(
2
)
)
T
,
x
=
(
x
(
1
)
,
x
(
2
)
)
T
w=(w^{(1)},w^{(2)})^T,x=(x^{(1)},x^{(2)})^T
w=(w(1),w(2))T,x=(x(1),x(2))T
解:
- 构建目标函数
min L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) \min L(w,b)=-\sum_{x_i \in M}y_i(w\cdot x_i+b) minL(w,b)=−xi∈M∑yi(w⋅xi+b) - 梯度下降法求解
w
,
b
w,b
w,b,假设步长为1
1)取初始值 w 0 = 0 , b 0 = 0 w_0=0,b_0=0 w0=0,b0=0
2)对于 x 1 x_1 x1, y 1 ( w 0 ⋅ x 1 + b 0 ) = 0 y_1(w_0\cdot x_1+b_0)=0 y1(w0⋅x1+b0)=0未被正确分类,更新 w , b w,b w,b(用上面第3步的公式)
w 1 = w 0 + η y 1 x 1 = 0 + 1 × 1 × ( 3 , 3 ) T = ( 3 , 3 ) T b 1 = b 0 + η y 1 = 0 + 1 × 1 = 1 w_1=w_0+\eta y_1x_1=0+1\times 1\times (3,3)^T=(3,3)^T\\ b_1 = b_0+\eta y_1=0+1\times1=1 w1=w0+ηy1x1=0+1×1×(3,3)T=(3,3)Tb1=b0+ηy1=0+1×1=1
更新后的模型为:
w 1 ⋅ x + b 1 = 3 x ( 1 ) + 3 x ( 2 ) + 1 w_1\cdot x +b_1=3x^{(1)}+3x^{(2)}+1 w1⋅x+b1=3x(1)+3x(2)+1 - 对于
x
1
,
x
2
x_1,x_2
x1,x2,
−
y
i
(
w
1
⋅
x
i
+
b
)
<
0
-y_i(w_1\cdot x_i+b)<0
−yi(w1⋅xi+b)<0,说明是正确分类,对于
x
3
x_3
x3,
y
3
(
w
1
⋅
x
3
+
b
1
)
<
0
y_3(w_1\cdot x_3+b1)<0
y3(w1⋅x3+b1)<0,说明是误分类,更新
w
,
b
w,b
w,b
w 2 = w 1 + η y 3 x 3 = ( 3 , 3 ) T + 1 × ( − 1 ) × ( 1 , 1 ) T = ( 2 , 2 ) T b 2 = b 1 + η y 3 = 1 + 1 × ( − 1 ) = 0 w_2=w_1+\eta y_3x_3=(3,3)^T+1\times (-1)\times (1,1)^T=(2,2)^T\\ b_2 = b_1+\eta y_3=1+1\times (-1)=0 w2=w1+ηy3x3=(3,3)T+1×(−1)×(1,1)T=(2,2)Tb2=b1+ηy3=1+1×(−1)=0
更新后的模型为:
w 2 ⋅ x + b 2 = 2 x ( 1 ) + 2 x ( 2 ) w_2\cdot x +b_2=2x^{(1)}+2x^{(2)} w2⋅x+b2=2x(1)+2x(2) - 以此往复,直到没有误分类点,损失函数达到极小。
小结
1.感知机通过构造超平面的形式划分不同类的点。(单个感知机只能做二分类)
2.感知机属于线性判别模型,因为它的判别边界是线性的。
3.函数间隔和几何间隔的区别。要知道为什么感知机为什么能用函数间隔?
4.这里的梯度更新一般用随机梯度下降(每次随机取一个误分类点更新模型梯度)