机器学习中的感知机算法原理详解
机器学习中的感知机算法原理详解
感知机(Perceptron)是二分类的线性分类模型,属于监督学习算法。它通过求解将训练数据进行线性划分的分离超平面,来实现分类任务。感知机的学习算法具有简单而易于实现的优点,是神经网络和深度学习的基础算法之一。
一、感知机概述
感知机(Perceptron)是二分类的线性分类模型,属于监督学习算法。输入为实例的特征向量,输出为实例的类别(取 +1 和 -1)。感知机旨在求出将训练数据进行线性划分的分离超平面。为求得超平面,感知机导入了基于误分类的损失函数,利用梯度下降法对损失函数进行最优化求解,求得感知机模型。
感知机学习算法具有简单而易于实现的优点,分为原始形式和对偶形式,感知机预测是学习得到的感知机模型对于新的输入实例进行分类。感知机是作为神经网络(深度学习)的起源的算法,因此,学习感知机的构造也就是学习通向神经网络和深度学习的一种重要思想。
二、案例分析
1. 设置问题
具体要如何求出权重向量呢?基本做法和回归时相同:将权重向量用作参数,创建更新表达式来更新参数。接下来,说明的就是被称为感知机(Perceptron)的模型。入门知识里经常会提到它。
感知机是接受多个输入后将每个值与各自的权重相乘(类似于向量内积或者矩阵乘法),最后输出总和的模型。人们常用这样的下面这样的图来表示它:
在介绍参数更新表达式之前,我们需要做好一些准备工作。内积的相关内容见上次博客:《机器学习 | 分类算法基础——内积-CSDN博客》。
2. 训练数据的准备
首先是训练数据。设表示宽的轴为 (w)、表示高的轴为 (h),用 (y) 来表示图像是横向还是纵向的,横向的值为 1、纵向的值为 -1,如下表所示。
接下来,根据参数向量 (w) 来判断图像是横向还是纵向的函数,即返回 1 或者 -1 的函数 (f(x)) 的定义如下。这个函数被称为判别函数。
一起来思考一下,比如,与权重向量 (w) 的内积为负的向量 (x) 是什么样的向量呢?用图形来解释更容易理解,所以我们利用这个包含 (w) 的表达式来思考:(w \cdot x = |w||x|\cos\theta)。其中 (|w|) 和 (|x|) 必定为正数,所以决定内积符号的是 (\cos\theta)。
图像如下图所示。
在 90° < (\theta) < 270° 的时候 (\cos\theta) 为负。此时,我们需要知道向量在图形上处于什么位置。与权重向量 (w) 之间的夹角为 (\theta),在 90° < (\theta) < 270° 范围内的所有向量都符合条件,所以向量在图形上处于这条直线下面、与权重向量方向相反的这个区域,如下图左侧所示。同理,使内积为正的向量就是与负的区域相反的区域,同样如下图右侧所示。
内积是衡量向量之间相似程度的指标。结果为正,说明二者相似;为 0 则二者垂直;为负则说明二者不相似。
3. 权重向量的更新表达式
在这个基础上,我们可以这样定义权重向量的更新表达式:
[w_{t+1} = w_t + \eta y_t x_t \quad \text{if} \quad y_t f(x_t) \leq 0]
式中,(y_t) 表示判别函数的分类结果不正确,(y_t f(x_t) > 0) 表示判别函数的分类结果正确。(t) 表示训练数据的索引,而不是次方的意思,这一点一定要注意。用这个表达式重复处理所有训练数据,更新权重向量。
其次,光看这个表达式的话是会觉得很难。一边把学习过程实际地画在图上,一边去考虑它的含义可能就容易理解了。权重向量通过随机值来初始化,我们可以首先在图上随意画一个权重向量和直线作为初始向量(就像我们在回归时随意确定初始值一样)。
在这个状态下,假设第一个训练数据是 (x_1),目前我们就先用它来更新参数。
这是上述表中列举的训练数据中的一个,标签是 1,它表示图像是横向的:
现在权重向量 (w) 和训练数据的向量 (x_1) 二者的方向几乎相反,(w) 和 (x_1) 之间的夹角 (\theta) 的范围是 90° < (\theta) < 270°,内积为负。因此,判别函数 (f(x_1)) 的分类结果为 -1。而训练数据 (x_1) 的标签 (y_1 = 1),所以 (y_1 f(x_1) \leq 0),说明分类失败。
已知现在 (y_1 f(x_1) \leq 0),根据向量的加法运算,更新表达式如下:
[w_{t+1} = w_t + \eta y_t x_t]
则 (w_{t+1}) 的矢量图如下所示。
此时,我们得到新的权重,继续更新权重:这个 (w_{t+1}) 就是下一个新的 (w_t),我们可以画一条与新的权重向量垂直的直线,相当于把原来的线旋转了一下,如下所示。
如此看来,刚才 (x_1) 与权重向量分居直线两侧,现在它们在同一侧了,如下图所示。
这次 (\theta) < 90°,所以内积为正,判别函数 (f(x_1)) 的分类结果为 1。而且 (y_1) 的标签也为 1,说明分类成功。如此迭代搜索循环,不断更新参数的权重向量。
刚才处理的是标签值 (y_1 = 1) 的情况,而对于 (y_1 = -1) 的情况,只是更新表达式的向量加法变成了减法而已,做的事情是一样的。也就是说,虽然有加法和减法的区别,但它们的做法都是在分类失败时更新权重向量,使得直线旋转相应的角度。像这样重复更新所有的参数,就是感知机的学习方法。