定义
感知机(Perceptron)在1957年由Rosenblatt提出,是神经网络和支持向量机的基础。
感知机是一种二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,+1代表正类,-1代表负类。感知机属于判别模型,它的目标是要将输入实例通过分离超平面将正负二类分离。
数学表示1
输入
x
∈
R
d
或
x
=
(
x
1
,
x
2
,
.
.
.
.
,
x
n
)
T
x∈R^d或x = (x_1,x_2,....,x_n)^T
x∈Rd或x=(x1,x2,....,xn)T
输出
y
∈
{
+
1
,
−
1
}
y∈\{+1,-1\}
y∈{+1,−1}
函数表示
f
(
x
)
=
s
i
g
n
(
w
T
x
+
b
)
f(x)=sign(w^Tx+b)
f(x)=sign(wTx+b)
分离超平面表示 w T x + b = 0 w^Tx+b=0 wTx+b=0权值表示 w ∈ R d 或 w = ( w 1 , w 2 , . . . . , w n ) T w∈R^d或w= (w_1,w_2,....,w_n)^T w∈Rd或w=(w1,w2,....,wn)T ,截距表示为 b ∈ R b∈R b∈R
学习
我们给定数据集:
D
=
{
(
x
(
1
)
,
y
(
1
)
)
,
(
x
(
2
)
,
y
(
2
)
)
,
.
.
.
.
,
(
x
(
n
)
,
y
(
n
)
)
}
D=\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),....,(x^{(n)},y^{(n)})\}
D={(x(1),y(1)),(x(2),y(2)),....,(x(n),y(n))}
我们知道
x
(
i
)
x^{(i)}
x(i) 到超平面的距离可以表示为:
1
∣
∣
w
∣
∣
(
w
T
x
(
i
)
+
b
)
(1)
\frac {1} {||w||} (w^Tx^{(i)}+b) \tag{1}
∣∣w∣∣1(wTx(i)+b)(1)
其
中
∣
∣
w
∣
∣
=
(
w
1
2
+
w
2
2
+
.
.
.
+
w
n
2
)
其中||w||=\sqrt{(w_1^2+w_2^2+...+w_n^2)}
其中∣∣w∣∣=(w12+w22+...+wn2)
对于误分类点,因为他们的输出为-1,所以我们可以将公式(1)转换为:
−
1
∣
∣
w
∣
∣
y
(
i
)
(
w
T
x
(
i
)
+
b
)
(2)
-\frac {1} {||w||} y^{(i)}(w^Tx^{(i)}+b) \tag{2}
−∣∣w∣∣1y(i)(wTx(i)+b)(2)
那么误分类点到
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0 总距离为:
−
1
∣
∣
w
∣
∣
∑
x
(
i
)
∈
M
y
(
i
)
(
w
T
x
(
i
)
+
b
)
(3)
-\frac {1} {||w||} \sum_{x^{(i)}∈M}^{} y^{(i)}(w^Tx^{(i)}+b) \tag{3}
−∣∣w∣∣1x(i)∈M∑y(i)(wTx(i)+b)(3)
其中M表示误分类点的集合。
不考虑
1
∣
∣
w
∣
∣
\frac {1} {||w||}
∣∣w∣∣1,则得到感知机的损失函数为:
E
(
w
,
b
)
=
−
∑
x
(
i
)
∈
M
y
(
i
)
(
w
T
x
(
i
)
+
b
)
E_{(w,b)}=- \sum_{x^{(i)}∈M}^{} y^{(i)}(w^Tx^{(i)}+b)
E(w,b)=−x(i)∈M∑y(i)(wTx(i)+b)
那么我们的目的便是:
w
,
b
←
a
r
g
m
i
n
E
(
w
,
b
)
w,b\leftarrow argminE_{(w,b)}
w,b←argminE(w,b)
为什么可以不考虑 1 ∣ ∣ w ∣ ∣ \frac {1} {||w||} ∣∣w∣∣1?
1.确定分离超平面是通过法向量w和截距b来确定的, ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣的大小对w的方向没有任何影响,所以可以固定 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣为1或不考虑 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣。
2.感知机是误分类驱动的,而判断样本点是否为误分类点只需要判断 − y ( i ) ( w T x ( i ) + b ) -y^{(i)}(w^Tx^{(i)}+b) −y(i)(wTx(i)+b)的正负即可,而 1 ∣ ∣ w ∣ ∣ \frac {1} {||w||} ∣∣w∣∣1不影响正负的判断,即它不影响算法学习的中间过程。
3.这样做反而还有好处,可以简化运算(分母为w求导会比较麻烦)。2
随机梯度进行优化
分别对
w
w
w和
b
b
b进行求导
∇
w
E
(
w
,
b
)
=
−
∑
x
(
i
)
∈
M
y
(
i
)
x
(
i
)
\nabla_wE_{(w,b)}=- \sum_{x^{(i)}∈M}^{} y^{(i)}x^{(i)}
∇wE(w,b)=−x(i)∈M∑y(i)x(i)
∇
b
E
(
w
,
b
)
=
−
∑
x
(
i
)
∈
M
y
(
i
)
\nabla_bE_{(w,b)}=- \sum_{x^{(i)}∈M}^{} y^{(i)}
∇bE(w,b)=−x(i)∈M∑y(i)
随机选择一个误分类点,则有
∇
w
E
(
w
,
b
)
=
−
y
(
i
)
x
(
i
)
\nabla_wE_{(w,b)}=- y^{(i)}x^{(i)}
∇wE(w,b)=−y(i)x(i)
∇
b
E
(
w
,
b
)
=
−
y
(
i
)
\nabla_bE_{(w,b)}=- y^{(i)}
∇bE(w,b)=−y(i)
我们的目的
- 输入 D D D和学习率 η ( 0 < η < 1 ) \eta{(0<\eta<1)} η(0<η<1)
- 输出 w w w和 b b b
由此我们可以采用下列步骤
- 赋初值 w ( 0 ) w^{(0)} w(0)和 b ( 0 ) b^{(0)} b(0)
- 从 D D D中随机选取 ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i))
- 若
−
y
(
i
)
(
w
T
x
(
i
)
+
b
)
≤
0
-y^{(i)}(w^Tx^{(i)}+b)≤0
−y(i)(wTx(i)+b)≤0更新
w
w
w和
b
b
b
w ← w − η ∇ w E ( w , b ) = w + η y ( i ) x ( i ) w \leftarrow w-\eta\nabla_wE_{(w,b)}=w+\eta y^{(i)}x^{(i)} w←w−η∇wE(w,b)=w+ηy(i)x(i)
b ← b − η ∇ b E ( w , b ) = b + η y ( i ) b \leftarrow b-\eta\nabla_bE_{(w,b)}=b+ \eta y^{(i)} b←b−η∇bE(w,b)=b+ηy(i) - 转到2步骤,直到 D D D没有误分点