感知机原理:
为了使线性回归能用于分类,引入了logistic函数映射成比率来进行分类。但是从人的直观视角来看,对于如上图所示的点,能否在空间中直接就找到一条分割线呢?感知机学习的目标就是求得一个能够将训练数据集中正负实例完全分开的分类超平面。那么如何找这个超平面?
首先可以得出感知机的模型:
f
(
x
)
=
s
i
g
n
(
W
⋅
x
+
b
)
f(x)=sign(W·x + b)
f(x)=sign(W⋅x+b)其中sign函数为:
s
i
g
n
(
x
)
=
{
+
1
,
x
⩾
0
−
1
,
x
<
0
sign(x) =\begin{cases}+1, & x \geqslant 0 \\[2ex]-1, & x \lt 0\end{cases}
sign(x)=⎩⎨⎧+1,−1,x⩾0x<0
即
w
⋅
x
+
b
w·x + b
w⋅x+b预测出的值的正例与反例,即可得到初步分割,将空间花费为两部分。
然后从机器学习的老套路来看,我们肯定需要一个损失函数,所以自然可以定义出损失函数的策略:误分类点到分隔超平面的总距离。
点到平面的几何距离为:
∣
w
⋅
x
i
+
b
∣
∣
∣
w
∣
∣
\frac{|w·x_i+b|}{||w||}
∣∣w∣∣∣w⋅xi+b∣其中||w||是L2范数,如果该点被误分:
−
y
i
(
w
⋅
x
i
+
b
)
∣
∣
w
∣
∣
\frac{-y_i(w·x_i+b)}{||w||}
∣∣w∣∣−yi(w⋅xi+b)
最终可得M个被误分点总的损失函数为:
J
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
J(w,b)=-\sum\limits_{x_i \in M} y_i(w·x_i+b)
J(w,b)=−xi∈M∑yi(w⋅xi+b)接下来就是对这个函数进行梯度下降求解了。
迭代的次数会不会很多?对偶优化问题
可以想到没有被误分的点参与迭代调整次数为0,而对于多次被误分的点就会参与多次的迭代,为了节省时间,将采用它的对偶形式来进行优化。即将w 和 b 表示为 xi和 yi的线性组合的形式来求解,计算时的样本内积形成的Gram矩阵将大大提高速度:
此时函数变为:
f
(
x
)
=
s
i
g
n
(
∑
j
=
1
N
α
i
y
i
x
j
⋅
x
i
+
b
)
f(x) = sign(\sum_{j=1}^N \alpha_iy_ix_j \cdot x_i +b)
f(x)=sign(j=1∑Nαiyixj⋅xi+b)是否误分类的判断条件变为:
y
i
(
∑
j
=
1
N
α
i
y
i
x
j
⋅
x
i
+
b
)
≤
0
y_i(\sum_{j=1}^N \alpha_i y_i x_j \cdot x_i +b)\le 0
yi(j=1∑Nαiyixj⋅xi+b)≤0
其他的就没什么的,不过值得注意的是感知机面向的特征空间必须是得线性可分的,而且满足条件的分割线会有多个。由此得来神经网络和支持向量机。
径向基函数(RBF)神经网络
RBF核如下:
K
(
x
,
x
′
)
=
e
x
p
(
−
∣
∣
x
−
x
′
∣
∣
2
2
2
σ
2
)
K(x,x')=exp(- \frac{||x-x'||_2^2}{2\sigma^2})
K(x,x′)=exp(−2σ2∣∣x−x′∣∣22)
x’为核函数中心,是一个自由参数,是函数的宽度参数 , 控制了函数的径向作用范围。而因为RBF核函数的值随距离减小,并介于0(极限)和1(当x = x’的时候)之间,所以其实是可以作为一种相似性度量的,但是这种非线性的映射似乎和感知机的sign函数很相似,也是可以用来构建神经网络的。
即用RBF作为隐单元的“基”构成隐含层空间,这样就可以将输入矢量直接映射到隐空间,而不需要通过权连接(普通神经网络需要),而当RBF的中心点确定以后,这种映射关系也就确定了。它与普通神经网络的区别在于:
- 局部逼近与全局逼近。神经元的输入离径向基函数中心越远,神经元的激活程度就越低,所以RBF是局部逼近,比起全局逼近,它的学习速度会更快。
- nn可以有多个隐层,而RBF只有一个
- RBF比nn更更好的逼近连续函数
为什么rbf高斯核函数就是映射到高维空间
因为它的幂级数展开是无限的,那么可以生成更多维度的多项式。