一、感知机
\quad
感知机是二分类线性分类模型,输入为实例的特征向量,输出为+1,或者-1.由输入到输出函数为f(x) = sign(w*x+b),w为权值(weight),b叫做偏置(bias)。sign为符号函数。(w是超平面的法向量,b是超平面的截距)。
\quad 感知机是通过确定一个超平面来将样本分成两类,也就是说我们通过不断调整w和b来确定这个超平面,直到找到这个超平面为止。简单来说,把他想成二维空间,就是平面上有一些点,这些点一类是+1,一类是-1,我们的目的就是找到一条直线可以将这二类点分开,这条直线的函数解析式w*x+b。我们通过调整斜率w和截距b来调整直线,直到其可以分成二类的点。
\quad 我们这里定义一个损失函数,就是衡量分类错误的多少的一个函数(我自己理解的)。那我们就是要使这个损失函数尽量小。
\quad 损失函数的自然选择是误分类点的总数,但是这样的损失函数不是参数w,b的可导函数,不容易优化。
\quad
(
x
0
x_0
x0,
y
0
y_0
y0)到直线Ax+By+C = 0的距离为:
d
=
∣
A
x
+
B
y
+
C
∣
A
2
+
B
2
d =\dfrac{|Ax+By+C|}{\sqrt{A^2+B^2}}
d=A2+B2∣Ax+By+C∣
\quad
所以我们来计算
x
0
x_0
x0到平面S的距离:
1
∣
∣
w
∣
∣
∣
w
∗
x
0
+
b
∣
\dfrac{1}{||w||}|w*x_0+b|
∣∣w∣∣1∣w∗x0+b∣
\quad
||w||是w的L2范数,
∣
∣
w
∣
∣
=
w
2
||w|| = \sqrt{w^2}
∣∣w∣∣=w2
\quad
而对于误分类的数据(
x
i
,
y
i
x_i,y_i
xi,yi)来说,
y
i
∗
(
w
∗
x
i
+
b
)
>
0
y_i*(w*x_i+b)>0
yi∗(w∗xi+b)>0,所以误分类点
x
i
x_i
xi到S的距离为:
−
1
∣
∣
w
∣
∣
∗
y
i
∣
w
∗
x
i
+
b
∣
-\dfrac{1}{||w||}*y_i|w*x_i+b|
−∣∣w∣∣1∗yi∣w∗xi+b∣
\quad 所以误分类点到S的总距离为(误分类的距离为M):
−
1
∣
∣
w
∣
∣
∑
x
i
∈
M
y
i
∣
w
∗
x
i
+
b
∣
-\dfrac{1}{||w||}\sum_{x_i\in M}y_i|w*x_i+b|
−∣∣w∣∣1xi∈M∑yi∣w∗xi+b∣
\quad
不考虑
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣∣w∣∣1,就是感知机学习的损失函数。
\quad
所以感知机sign(w*x+b)学习的损失函数为:
L
(
w
,
b
)
=
−
1
∣
∣
w
∣
∣
∑
x
i
∈
M
y
i
∣
w
∗
x
i
+
b
∣
L(w,b) = -\dfrac{1}{||w||}\sum_{x_i\in M}y_i|w*x_i+b|
L(w,b)=−∣∣w∣∣1xi∈M∑yi∣w∗xi+b∣
\quad
我们通过对这个损失函数进行梯度下降算法,即:
m
i
n
w
,
b
L
(
w
,
b
)
=
−
1
∣
∣
w
∣
∣
∑
x
i
∈
M
y
i
∣
w
∗
x
i
+
b
∣
min _{w,b} \quad L(w,b) = -\dfrac{1}{||w||}\sum_{x_i\in M}y_i|w*x_i+b|
minw,bL(w,b)=−∣∣w∣∣1xi∈M∑yi∣w∗xi+b∣
\quad
对这个损失函数分别对w和b求导,得到梯度,w的梯度为-
y
i
x
i
y_ix_i
yixi,b的梯度
−
y
i
-y_i
−yi,所以更新公式为:
w
←
w
+
η
y
i
x
i
w\leftarrow w + \eta y_ix_i
w←w+ηyixi
b
←
b
+
η
y
i
b\leftarrow b + \eta y_i
b←b+ηyi
\quad
η
\eta
η是步长,也称为学习率。然后不断更新直到符合某个停止条件,得到这个感知机模型。