本课程来自深度之眼,部分截图来自课程视频以及李航老师的《统计学习方法》第二版。
公式输入请参考:在线Latex公式
原始形式回顾
输入:训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
N
,
y
N
)
}
T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}
T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中
x
i
∈
X
=
R
n
,
y
i
∈
Y
=
{
−
1
,
1
}
,
i
=
1
,
2
,
⋯
,
N
x_i\in X=R^n,y_i\in Y=\{-1,1\},i=1,2,\cdots,N
xi∈X=Rn,yi∈Y={−1,1},i=1,2,⋯,N;学习率
η
(
0
<
η
≤
1
)
\eta(0<\eta\leq1)
η(0<η≤1);
输出:
w
,
b
w,b
w,b;感知机模型
f
(
x
)
=
s
i
g
n
(
w
⋅
x
+
b
)
(1)
f(x)=sign(w\cdot x+b)\tag 1
f(x)=sign(w⋅x+b)(1)
步骤:
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)\leq 0
yi(w⋅xi+b)≤0(原误分类条件是:
−
y
i
(
w
⋅
x
i
+
b
)
>
0
-y_i(w\cdot x_i+b)>0
−yi(w⋅xi+b)>0),更新
w
,
b
w,b
w,b
w
←
w
+
η
y
i
x
i
b
←
b
+
η
y
i
(2)
w\leftarrow w+\eta y_ix_i\\ b\leftarrow b+\eta y_i\tag2
w←w+ηyixib←b+ηyi(2)
4.跳转到2,直到训练集中没有误分类点。
思考:
假如数据集中有一个样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi),在第1轮的时候被模型误分类了,然后就用公式2更新一次,就是
w
w
w增加了
η
y
i
x
i
\eta y_ix_i
ηyixi,然后模型继续迭代下一轮,然后
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)又被模型误分类了,
w
w
w又增加
η
y
i
x
i
\eta y_ix_i
ηyixi,如果这个样本被误分类
n
i
n_i
ni次,那么最后
w
w
w增加了
n
i
η
y
i
x
i
n_i\eta y_ix_i
niηyixi,如果记
α
i
=
n
i
η
\alpha_i = n_i\eta
αi=niη,那么样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的两个参数增量就可以写为:
α
i
y
i
x
i
α
i
x
i
\alpha_i y_ix_i\\ \alpha_i x_i
αiyixiαixi
对于数据集中有
N
N
N个点,则总的参数更新就是N个点进行累加,最后学习到的参数写为:
w
=
∑
i
=
1
N
α
i
y
i
x
i
b
=
∑
i
=
1
N
α
i
y
i
(3)
w=\sum_{i=1}^N \alpha_i y_ix_i\\ b=\sum_{i=1}^N \alpha_i y_i\tag3
w=i=1∑Nαiyixib=i=1∑Nαiyi(3)
这里注意初始值
w
0
,
b
0
w_0,b_0
w0,b0均为0,不然上面的式子还要加初始值。
α
i
≥
0
\alpha_i\ge0
αi≥0,当步长
η
\eta
η为1时,
α
i
\alpha_i
αi表示第
i
i
i个样本被模型误分类的次数,也是该样本更新的次数。
样本更新次数越多,它距离分离超平面越近,也就越难正确分类。这样的样本对学习结果影响最大。
现在把公式3代入感知机原始公式1中就可以得到感知机的对偶形式(这里只代入
w
w
w,因为代入
b
b
b没啥改进)。
感知机的对偶形式
输入:训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
N
,
y
N
)
}
T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}
T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中
x
i
∈
X
=
R
n
,
y
i
∈
Y
=
{
−
1
,
1
}
,
i
=
1
,
2
,
⋯
,
N
x_i\in X=R^n,y_i\in Y=\{-1,1\},i=1,2,\cdots,N
xi∈X=Rn,yi∈Y={−1,1},i=1,2,⋯,N;学习率
η
(
0
<
η
≤
1
)
\eta(0<\eta\leq1)
η(0<η≤1);
输出:
α
,
b
\alpha,b
α,b;感知机模型为:
f
(
x
)
=
s
i
g
n
(
∑
j
=
1
N
α
j
y
j
x
j
⋅
x
+
b
)
(4)
f(x)=sign(\sum_{j=1}^N \alpha_j y_jx_j\cdot x+b)\tag4
f(x)=sign(j=1∑Nαjyjxj⋅x+b)(4)
其中
α
=
(
α
1
,
α
2
,
⋯
,
α
N
)
\alpha = (\alpha_1,\alpha_2,\cdots,\alpha_N)
α=(α1,α2,⋯,αN),这里虽然也有b,但是这里的b和公式1中的b不一样了,这里的
b
=
∑
j
=
1
N
α
j
y
j
b=\sum_{j=1}^N \alpha_j y_j
b=∑j=1Nαjyj,这里为了和本身的x下标区别,这里用了新的下标j
1.开始的时候,还没有开始对样本进行判别,因此样本更新次数为0,也就是
α
=
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
α
j
y
j
x
j
⋅
x
i
+
b
)
≤
0
y_i(\sum_{j=1}^N \alpha_j y_jx_j\cdot x_i+b)\leq0
yi(∑j=1Nαjyjxj⋅xi+b)≤0(就是出现误分类),更新参数
α
,
b
\alpha,b
α,b:
α
i
=
α
i
+
η
b
=
b
+
η
y
i
\alpha_i=\alpha_i+\eta\\ b=b+\eta y_i
αi=αi+ηb=b+ηyi
4.跳转到2,直到训练集中没有误分类点。
可以看到模型的对偶形式中,参数的更新只和样本的内积
x
j
⋅
x
i
x_j\cdot x_i
xj⋅xi相关(
α
j
y
j
\alpha_j y_j
αjyj都是常数),因此,我们可以提前把样本的两两内积计算出来,存储到矩阵里面,这个矩阵叫Gram矩阵:
G
=
[
x
i
⋅
x
j
]
N
×
N
=
[
x
1
⋅
x
1
x
1
⋅
x
2
⋯
x
1
⋅
x
N
x
2
⋅
x
1
x
2
⋅
x
2
⋯
x
2
⋅
x
N
⋮
⋮
⋱
⋮
x
N
⋅
x
1
x
N
⋅
x
2
⋯
x
N
⋅
x
N
]
G=[x_i\cdot x_j]_{N\times N}=\begin{bmatrix} x_1\cdot x_1 & x_1\cdot x_2 & \cdots & x_1\cdot x_N\\ x_2\cdot x_1 & x_2\cdot x_2 & \cdots&x_2\cdot x_N \\ \vdots & \vdots & \ddots &\vdots \\ x_N\cdot x_1 & x_N\cdot x_2 & \cdots & x_N\cdot x_N \end{bmatrix}
G=[xi⋅xj]N×N=⎣⎢⎢⎢⎡x1⋅x1x2⋅x1⋮xN⋅x1x1⋅x2x2⋅x2⋮xN⋅x2⋯⋯⋱⋯x1⋅xNx2⋅xN⋮xN⋅xN⎦⎥⎥⎥⎤
可以看到对偶形式的参数更新只有加法,比之前一般形式要简单。而且内积可以提前计算,判断点是否误分类的时间复杂度变成
O
(
1
)
O(1)
O(1)
总结
1.掌握感知机原始形式
2.原始形式到对偶形式的转换:转换为求解系数
3.对偶形式的意义:减少了运算量(空间复杂度、时间复杂度、无法求解变可以求解)