本文公式较多,由于简书不支持公式渲染,公式完整版请移步个人博客
1.模型
感知机的模型如下图所示:
![7241055-cd48b8b662e12b84.png](https://i-blog.csdnimg.cn/blog_migrate/6ba61b04d47ce82789859eb140578640.webp?x-image-process=image/format,png)
公式表示如下所示:
$$
f(x) = sign(w \cdot x + b) \
sign(x) = \begin{cases} +1 & x \geq 0 \
-1 & x < 0
\end{cases}
$$
对于该分类器,其假设空间为特征空间的所有线性分类器,从几何学的角度可以理解为是特征空间中所有的超平面。那么,只要样本在特征空间中是线性可分的(可以被一个超平面完美划分),由感知机的假设空间,那么这个超平面一定在假设空间内,所以感知机是可以用于区分所有线性可分的样本。
2.学习策略
2.1.代价函数
感知机的目标是为了找到那个能完美划分线性可分样本的超平面。为了达到这个目标,我们需要定义代价函数。代价函数的意思是该函数刻画的是模型的性能,通常需要满足以下条件:
- 条件一:模型性能越好,代价函数越小,模型性能越差,代价函数越大
- 条件二:连续可导
条件一是使代价函数可以刻画模型性能,条件二是为了该模型可以使用梯度下降的方法优化
2.2.感知机代价函数选择
对于感知机,选取代价函数为:
$$
L(w,b) = - \sum\limits_{x_i \in M}y_i(w \cdot x_i + b)
$$
其中M为分类错误的样本集合。对于该代价函数,显而易见是连续可导的,且当分类错误的时候$y_i$和$w \cdot x_i + b$异号,代价为正。则当模型性能好时,M中样本少,代价较小;模型性能差时,M中样本多,代价较大。
该代价函数还可以从几何学角度解释,空间中任意一点$x_0$到超平面的距离为:
$$
\cfrac{1}{||w||} \cdot |w \cdot x_0 + b|
$$
由此,错误分类的样本$y_i$和$w \cdot x_i + b$异号,由此有以下:
$$
\cfrac{1}{||w||} \cdot |w \cdot x_i + b| = \cfrac{1}{||w||} \cdot (w \cdot x_i + b) \cdot y_i
$$
取M为分类错误样本集合,则所有分类错误的样本到超平面距离如下:
$$
- \cfrac{1}{||w||} \sum\limits_{x_i \in M} y_i(w \cdot x_i + b)
$$
不考虑常数$\cfrac{1}{||w||}$,则可以获得感知机代价函数$L(w,b) = - \sum\limits_{x_i \in M}y_i(w \cdot x_i + b)$
3.学习算法
3.1.基本算法
感知机算法是错误驱动的,由以上的代价函数,感知机的学习算法变为:
$$
argmin_{w,b}(-\sum\limits_{x_i \in M}y_i \cdot (w \cdot x_i + b))
$$
为了使代价函数下降最快,向代价函数的负梯度方向优化w和b。对代价函数取w和b的梯度:
$$
\nabla_wL(w,b) = - \sum\limits_{x_i \in M}y_i \cdot x_i \
\nabla_bL(w,b) = - \sum\limits_{x_i \in M}y_i
$$
由此可获得更新方法:
$$
w^{n} = w^{n-1} - \eta \cdot \nabla_wL(w{n-1},b{n-1}) \
b^{n} = b^{n-1} - \eta \cdot \nabla_bL(w{n-1},b{n-1})
$$
其中,$\eta$为学习率,表示每一次更新的步长,学习率越大更新越明显。由此,每次选择一批错误分类的点,进行上述的优化,多次循环即可学得可以正确分类的感知机模型
3.2.对偶算法
将梯度表达式带入更新公式:
$$
w^{n} = w^{n-1} +\eta \cdot \sum\limits_{x_i \in M}y_i \cdot x_i \
b^{n} = b^{n-1} +\eta \cdot \sum\limits_{x_i \in M}y_i
$$
若w和b的初始值都是0,$\eta = 1$,则可以认为w是错误样本的$y_i \cdot x_i$的和,b是错误样本标签的和,由此可以得到以下公式:
$$
w = \sum\limits_{x_i \in M} a_i \cdot y_i \cdot x_i \
b = \sum\limits_{x_i \in M} a_i \cdot y_i
$$
其中$a_i$是该样本被错误分类的次数,可以发现,分类错次数越多的样本在参数中所占的比例越大。则每次选择一批数据输入,将分类错误的样本按更新公式计入参数,重复多次直到无错误样本即可。
4.延伸
4.1.感知机与支持向量机
感知机的对偶优化算法已经有一些支持向量机思想的影子——只有少数“关键样本”决定分类器超平面的位置,其他的样本并不重要,有对偶算法得到的w和b公式:
$$
w = \sum\limits_{x_i \in M} a_i \cdot y_i \cdot x_i \
b = \sum\limits_{x_i \in M} a_i \cdot y_i
$$
可以将$a_i$视为样本的权值,分类错误次数越多该权值$a_i$越大,即该样本越重要。很自然的可以想到距离最终超平面越近的样本越容易分类错,这种样本的权值也就越高,这些样本也就越重要。
4.2.感知机与神经网络
感知机是神经网络的基础,感知机也被成为单层神经网络。感知机的一大缺陷是无法解决线性不可分问题,想要解决这一问题,需要将原来线性不可分的样本映射到另一个特征空间去,在该空间样本线性可分,映射方法主要有两种:
- 人工指定映射方法:手动指定映射的方法,代表为核函数(核方法)
- 自动寻找映射方法:使用机器学习的方法自动获得映射方法,代表为神经网络
神经网络可以分解如下:
![7241055-4d90181c42ed8370.png](https://i-blog.csdnimg.cn/blog_migrate/fcd7fe84c6e6250f6283007b1d315143.webp?x-image-process=image/format,png)
当输入是线性不可分样本时,通过复杂的隐藏层(全连接层,卷积层或胶囊层)层层映射,最终在输出层之前将数据映射到一个线性可分的特征空间中,再由感知机进行线性分类。其中映射方法由神经网络自行学得。所有输出层为感知机层的神经网络都可以放在这个框架下理解。
除此以外,感知机还奠定了神经网络的基础理论。例如神经网络的基本学习框架也是梯度下降:使用反向传播计算梯度,优化算法迭代获得新的参数。
参考文献
《统计学习方法》李航