这里引用一张康奈尔大学老师的课件图片,如图所示,感知机的目的就是找寻一条直线(蓝色),可以把正样本集(绿色)、负样本集(红色)分开
1、什么是符号函数 s i g n ( x ) sign(x) sign(x)
s i g n ( x ) = { + 1 , x ⩾ 0 − 1 , x < 0 sign(x)=\left\{\begin{matrix} +1, x\geqslant 0 \\ -1, x<0 \end{matrix}\right. sign(x)={+1,x⩾0−1,x<0
2、感知机的损失函数
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)=−xi∈M∑yi(w⋅xi+b)
其中
w
,
b
w,b
w,b是感知机的参数,
w
∈
R
n
w\in \bold R^n
w∈Rn是权重,
b
∈
R
b\in \bold R
b∈R是偏置量,
M
M
M为误分类点的集合,当没有误分类点时,损失函数为
0
0
0;误分类点越少,误分类点离超平面越近,损失函数越小。
3、感知机的学习算法(即调参的方法)
我们的目标是想建立线性函数,将正样本集与负样本集进行合理的区分,根据损失函数,当损失函数为0是,调参结束,即转换为求损失函数极小化问题: m i n w , b = − ∑ x i ∈ M y i ( w ⋅ x i + b ) \underset{w,b}{min}=-\sum_{x_i\in M}{y_i(w\cdot x_i+b)} w,bmin=−xi∈M∑yi(w⋅xi+b)这里可以采用**随机梯度下降法(SGD)**计算:
感知机学习算法的原始形式:
输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) , . . . , ( x N , y N ) } T=\{(x_1, y_1),(x_2, y_2),(x_3,y_3),...,(x_N,y_N)\} T={(x1,y1),(x2,y2),(x3,y3),...,(xN,yN)},其中 x i ∈ X = R n , y i ∈ Y = { − 1 , + 1 } , i = 1 , 2 , . . . , N x_i\in X=\bold R^n,y_i\in Y=\{-1,+1\}, i=1,2,...,N xi∈X=Rn,yi∈Y={−1,+1},i=1,2,...,N;学习率 η ( 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(w\cdot 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\cdot x_i+b)\leqslant 0 yi(w⋅xi+b)⩽0, w ← w + η y i x i w\gets w+\eta y_ix_i w←w+ηyixi b ← b + η y i b\gets b+\eta y_i b←b+ηyi
(4) 转至(2),直到训练集中没有误分类点。
上述计算 w , b w,b w,b的过程是通过 w , b w,b 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
4、已知正样本集 X + = { ( 3 , 4 ) T , ( 4 , 3 ) T } \bold X_+=\{(3,4)^T,(4,3)^T\} X+={(3,4)T,(4,3)T}负样本集 X − = { ( 1 , 2 ) T } \bold X_-=\{(1,2)^T\} X−={(1,2)T},适用感知机学习算法的原始形式求感知机模型?
构建最优化问题:
m
i
n
w
,
b
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
\underset{w,b}{min}L(w,b)=-\sum_{x_i\in M}{y_i(w\cdot x_i+b)}
w,bminL(w,b)=−xi∈M∑yi(w⋅xi+b)
可以按照上述的原始感知机学习算法求解上述公式:
(1) 取初始值
w
0
=
0
,
b
0
=
0
,
η
=
1
w_0=0, b_0=0, \eta=1
w0=0,b0=0,η=1
(2) 将样本集分别代入公式,发现
x
1
=
(
3
,
4
)
T
x_1=(3,4)^T
x1=(3,4)T代入公式
y
(
w
⋅
x
i
+
b
)
y(w\cdot x_i+b)
y(w⋅xi+b)后结果为0,不满足正样本定义,需要更新
w
,
b
w,b
w,b
w
1
=
w
0
+
y
1
x
1
=
(
3
,
4
)
T
w_1=w_0+y_1x_1=(3,4)^T
w1=w0+y1x1=(3,4)T
b
1
=
b
0
+
y
1
=
1
b_1=b_0+y_1=1
b1=b0+y1=1注:因为
x
1
x_1
x1是正样本,所以
y
1
=
1
y_1=1
y1=1,同理,
y
2
=
1
,
y
3
=
−
1
y_2=1, y_3=-1
y2=1,y3=−1
(3) 再次计算,发现
x
1
,
x
2
x_1,x_2
x1,x2均满足
y
(
w
⋅
x
i
+
b
)
>
0
y(w\cdot x_i+b)>0
y(w⋅xi+b)>0,但是
x
3
x_3
x3不满足这个条件,需要再次更新
w
,
b
w,b
w,b,得:
w
2
=
w
1
+
y
3
x
3
=
(
2
,
2
)
T
w_2=w_1+y_3x_3=(2,2)^T
w2=w1+y3x3=(2,2)T
b
2
=
b
0
+
y
3
=
0
b_2=b_0+y_3=0
b2=b0+y3=0由此迭代下去,直到对于
x
1
,
x
2
,
x
3
x_1,x_2,x_3
x1,x2,x3均满足
y
(
w
⋅
x
i
+
b
)
>
0
y(w\cdot x_i+b)>0
y(w⋅xi+b)>0为止
迭代次数 | 误分类点 | w w w | b b b | w x + b wx+b wx+b |
---|---|---|---|---|
0 | 0 | 0 | 0 | |
1 | x 1 x_1 x1 | ( 3 , 4 ) T (3,4)^T (3,4)T | 1 | 3 x ( 1 ) + 4 x ( 2 ) + 1 3x^{(1)}+4x^{(2)}+1 3x(1)+4x(2)+1 |
2 | x 3 x_3 x3 | ( 2 , 2 ) T (2,2)^T (2,2)T | 0 | 2 x ( 1 ) + 2 x ( 2 ) 2x^{(1)}+2x^{(2)} 2x(1)+2x(2) |
3 | x 3 x_3 x3 | ( 1 , 0 ) T (1,0)^T (1,0)T | -1 | x ( 1 ) − 1 x^{(1)}-1 x(1)−1 |
4 | x 3 x_3 x3 | ( 0 , − 2 ) T (0,-2)^T (0,−2)T | -2 | − 2 x ( 2 ) − 2 -2x^{(2)}-2 −2x(2)−2 |
5 | x 1 x_1 x1 | ( 3 , 2 ) T (3,2)^T (3,2)T | -1 | 3 x ( 1 ) + 2 x ( 2 ) − 1 3x^{(1)}+2x^{(2)}-1 3x(1)+2x(2)−1 |
6 | x 3 x_3 x3 | ( 2 , 0 ) T (2,0)^T (2,0)T | -2 | 2 x ( 1 ) − 2 2x^{(1)}-2 2x(1)−2 |
7 | x 3 x_3 x3 | ( 1 , − 2 ) T (1,-2)^T (1,−2)T | -3 | x ( 1 ) − 2 x ( 2 ) − 3 x^{(1)}-2x^{(2)}-3 x(1)−2x(2)−3 |
8 | x 1 x_1 x1 | ( 4 , 2 ) T (4,2)^T (4,2)T | -2 | 4 x ( 1 ) + 2 x ( 2 ) − 2 4x^{(1)}+2x^{(2)}-2 4x(1)+2x(2)−2 |
9 | x 3 x_3 x3 | ( 3 , 0 ) T (3,0)^T (3,0)T | -3 | 3 x ( 1 ) − 3 3x^{(1)}-3 3x(1)−3 |
10 | x 3 x_3 x3 | ( 2 , − 2 ) T (2,-2)^T (2,−2)T | -4 | 2 x ( 1 ) − 2 x ( 2 ) − 4 2x^{(1)}-2x^{(2)}-4 2x(1)−2x(2)−4 |
11 | x 1 x_1 x1 | ( 5 , 2 ) T (5,2)^T (5,2)T | -3 | 5 x ( 1 ) + 2 x ( 2 ) − 3 5x^{(1)}+2x^{(2)}-3 5x(1)+2x(2)−3 |
12 | x 3 x_3 x3 | ( 4 , 0 ) T (4,0)^T (4,0)T | -4 | 4 x ( 1 ) − 4 4x^{(1)}-4 4x(1)−4 |
13 | x 3 x_3 x3 | ( 3 , − 2 ) T (3,-2)^T (3,−2)T | -5 | 3 x ( 1 ) − 2 x ( 2 ) − 5 3x^{(1)}-2x^{(2)}-5 3x(1)−2x(2)−5 |
14 | x 1 x_1 x1 | ( 6 , 2 ) T (6,2)^T (6,2)T | -4 | 6 x ( 1 ) + 2 x ( 2 ) − 4 6x^{(1)}+2x^{(2)}-4 6x(1)+2x(2)−4 |
15 | x 3 x_3 x3 | ( 5 , 0 ) T (5,0)^T (5,0)T | -5 | 5 x ( 1 ) − 5 5x^{(1)}-5 5x(1)−5 |
16 | x 3 x_3 x3 | ( 4 , − 2 ) T (4,-2)^T (4,−2)T | -6 | 4 x ( 1 ) − 2 x ( 2 ) − 6 4x^{(1)}-2x^{(2)}-6 4x(1)−2x(2)−6 |
17 | x 1 x_1 x1 | ( 7 , 2 ) T (7,2)^T (7,2)T | -5 | 7 x ( 1 ) + 2 x ( 2 ) − 5 7x^{(1)}+2x^{(2)}-5 7x(1)+2x(2)−5 |
18 | x 3 x_3 x3 | ( 6 , 0 ) T (6,0)^T (6,0)T | -6 | 6 x ( 1 ) − 6 6x^{(1)}-6 6x(1)−6 |
19 | x 3 x_3 x3 | ( 5 , − 2 ) T (5,-2)^T (5,−2)T | -7 | 5 x ( 1 ) − 2 x ( 2 ) − 7 5x^{(1)}-2x^{(2)}-7 5x(1)−2x(2)−7 |
20 | x 1 x_1 x1 | ( 8 , 2 ) T (8,2)^T (8,2)T | -6 | 8 x ( 1 ) + 2 x ( 2 ) − 6 8x^{(1)}+2x^{(2)}-6 8x(1)+2x(2)−6 |
21 | x 3 x_3 x3 | ( 7 , 0 ) T (7,0)^T (7,0)T | -7 | 7 x ( 1 ) − 7 7x^{(1)}-7 7x(1)−7 |
22 | x 3 x_3 x3 | ( 6 , − 2 ) T (6,-2)^T (6,−2)T | -8 | 6 x ( 1 ) − 2 x ( 2 ) − 8 6x^{(1)}-2x^{(2)}-8 6x(1)−2x(2)−8 |
注:想不到和书上的例子不同差距居然这么大,收敛的好慢~
当迭代到22次时,
x
1
,
x
2
,
x
3
x_1,x_2,x_3
x1,x2,x3均满足
y
(
w
⋅
x
i
+
b
)
>
0
y(w\cdot x_i+b)>0
y(w⋅xi+b)>0,所以得到:
- 分离超平面: 6 x ( 1 ) − 2 x ( 2 ) − 8 = 0 6x^{(1)}-2x^{(2)}-8=0 6x(1)−2x(2)−8=0
- 感知机模型为: f ( x ) = s i g n ( 6 x ( 1 ) − 2 x ( 2 ) − 8 ) f(x)=sign(6x^{(1)}-2x^{(2)}-8) f(x)=sign(6x(1)−2x(2)−8)
5、验证感知机算法的收敛性
6、什么是对偶形式?简述感知机学习算法的对偶形式
7、验证感知机为什么不能表示异或函数(XOR)?
8、什么是凸壳函数?
设集合 S ⊂ R n S\subset \bold R^n S⊂Rn是由 R n \bold R^n Rn中的 k k k个点所组成的集合,即 S = { x 1 , x 2 , . . . , x k } . S=\{x_1,x_2,...,x_k\}. S={x1,x2,...,xk}.定义 S S S的凸壳 c o n v ( S ) conv(S) conv(S)为 c o n v ( S ) = { x = ∑ i = 1 k λ i x i ∣ ∑ i = 1 k λ i = 1 , λ i ⩾ 0 , i = 1 , 2 , . . . , k } conv(S)=\bigg\{x=\sum_{i=1}^{k}{\lambda_ix_i}\bigg|\sum_{i=1}^k{\lambda_i=1, \lambda_i \geqslant0,i=1,2,...,k}\bigg\} conv(S)={x=i=1∑kλixi∣∣∣∣i=1∑kλi=1,λi⩾0,i=1,2,...,k}