感知机模型(Perceptron)详细解读 | 您所在的位置:网站首页 › 汽车有关的英文 › 感知机模型(Perceptron)详细解读 |
本文包括: 走近感知机 - 感知机与童话重要概念感知机模型的数学形式构建感知机的损失函数如何取得损失函数最小值 - 随机梯度下降法感知机模型对偶形式其它有关数据分析,机器学习的文章及社群Python复现,使用了随机梯度下降法,梯度下降法,adagrad和对偶形式四种算法: 舟晓南:感知机模型python复现 - 随机梯度下降法;梯度下降法;adagrad;对偶形式 1. 走近感知机 - 感知机与童话 回想一下,在现实生活中,我们是怎么对事物进行分类的?首先,我们需要对这个事物进行观察,我们需要知道它的形状,颜色,大小,触感,温度等等不同的特征,在对这个事物的特征有足够多的认知的时候,就可以对其进行分类了。 当然,现实中我们几乎感觉不到这个过程,因为大脑的运算速度非常快,当我们看到一个苹果的时候,我们立刻就知道这是一个苹果,而不是一个西瓜,但事实上依然走过了上述的过程。 更符合感知机模型的例子是,如果只是由另一个人给你转述这个水果的特征,那你就会对这个判断的过程有一个清晰的实感了。 比如他人告诉你这是一个圆形的水果,你可能会认为它是一个樱桃,或者苹果,或者西瓜,这是因为我们对它的特征的了解还不够,接着又告诉你这是一个红色的苹果,现在我们知道它不是西瓜了,但还不能判断是樱桃还是水果,最后,他又让你用手感受了一下大小,现在我们能够确定是苹果了。 但在上面的例子中,我们候选的分类中有太多的水果, 但现在要学习的感知机,只能对一个事物分成两类,颇为极端了。 这有些像童话中的简单却极端的想法,认为这个世界只有好人与坏人,只有黑与白,只有正面与反面,感知机就是这样一个思想简单却极端的童话,它只能对一个事物进行两个类别的分类。 在明白感知机要解决的问题后,我们需要了解感知机的数学形式,这样才能在数学上实现感知机。 2.重要概念: 在正式介绍感知机模型之前,需要先对一些基本概念有所了解,如果明白这些概念可以直接跳过。 感知机模型:二分类模型且线性可分。 二分类:个体均可被分为两个类别,比如每个人按照生物学性别可分为男和女,通常将其中一个类别作为正类,用1表示,将另一个作为负类,用-1表示。一般将更加关注的类别作为正类。 线性可分:可以用超平面将不同的样本完全分开。 分离超平面:超平面是指n维线性空间中维度为n-1的子空间,分离超平面是一个可以把线性空间分割成不相交的两部分的超平面。对于二维和三维空间来说,该平面即分别为一条线和一个面,对于四维空间来说为一个体,对于五维空间,是一个四维几何结构。 数据集,特征,实例,标记: 其中数据集可以有:训练集,验证集和测试集。训练集用来建构模型,验证集用来选择模型,测试集用来测试模型。 监督学习:当训练集中的实例有标记时,用此类训练集来训练模型叫监督学习。 非监督学习:当训练集中的实例没有标记时,用此类训练集来训练模型叫非监督学习。机的构建。 3. 感知机模型的数学形式: 输入空间X:n维实数的子集。 \\X \subseteq R^{n} 这里的n就是特征的个数,每个特征只能用实数来表示,但如果有的特征无法用实数来表示怎么办呢?比如颜色?这时我们可以将它用实数代码替换,比如红色为1,黄色为2,绿色为3等等。 输入变量x:x属于X \\ x \in X 输出空间Y:因为是二分类问题,我们用1和-1代表两个类。 \\Y=\{+1, \quad-1\} 输出变量y:要么是1要么是-1 \\y \in\{+1,-1\} 由输入空间到输出空间的如下函数: \\f(x)=\operatorname{sign}(w \cdot x+b) 称为感知机。 w叫做权值向量,b叫作偏置。w·x表示w和x的内积,即w1*x1+w2*x2…+wn*xn。Sign是符号函数。 \\ \operatorname{sign}(x)=\left\{\begin{array}{ll}+1, & x \geqslant 0 \\ -1, & xa2,反之,则a2>a1。 如果仅用头发长短和身高也无法准确分类呢,我们还可以加入第三个特征,第四个特征等等,比如肌肉量和思维方式。那么此时感知机变为f(x) = sign(a1x1 + a2x2 + a3x3 + a4x4 + … + anxn + b)。 之前提到,点乘可以表示两个向量的内积,于是可以将a1x1 + a2x2 + a3x3 + a4x4 + … + anxn用a·x表示。其中a和x代表权值和特征且都是向量,因而叫做权值向量和特征向量。 感知机的更为直观的认识可以查看下图,下图显示了一个二维特征空间中的一维分离超平面,其中w是超平面的法向量,-b/||w||是原点到超平面的距离,点到超平面的距离的一般形式为: \\\frac{1}{\|w\|}|w \cdot x+b| 其中 \|w\| 被称为w的L2范数,关于L2范数的定义: \\ \|\vec{a}\|=\sqrt{\sum_{i}^{n}\left(a_{i}\right)^{2}}=\sqrt{\left(a_{1}\right)^{2}+\left(a_{2}\right)^{2}+\cdots+\left(a_{n}\right)^{2}} 好了,现在我们知道了感知机的形式,但我们怎么得到一个合适的感知机呢?总不能在特征空间中随便画一个超平面,就是一个合适的感知机吧?至少,得有什么指标来判断这个感知机是否合适吧? 正是基于这样的思考,提出了损失函数的概念。 简单来说,损失函数代表的是模型对一个数据集的预测与该数据集的真实值之间的差距,显然,差距越大,说明模型预测越不准确,我们需要一个预测准确的模型,所以我们需要让这样的差距最小,即最小化损失函数。 对于感知机而言,损失函数为误分类点到超平面的总距离。可知损失函数越小,说明被误分类的点到超平面的距离较近,且被误分类点较少,如果损失函数为0,说明没有误分类点。 接下来构建感知机模型的损失函数。 4. 构建感知机的损失函数: 感知机的损失函数为误分类点到超平面的总距离,首先看一个点到超平面的距离: \\\frac{1}{\|w\|}\left|w \cdot x_{0}+b\right| 在距离公式中, \left|w \cdot x_{0}+b\right| 称为函数间隔,当w和b等比例放大和缩小时,函数间隔也会按照同样的间隔放大和缩小,这对于我们求取损失函数最小值没有意义。 而除以一个||w||时,即可得到一个比例,称为几何间隔,此时w和b无论怎样等比例放大缩小,||w||也会等比例放大缩小,因此两者之比不变,可以用于求取损失函数最小值。 一个更直观的理解是,以二维特征空间作为例子,二维空间中点到直线的距离为: \\\frac{\left|A x_{0}+B y_{0}+c\right|}{\sqrt{A^{2}+B^{2}}} 其中A和B组成w权值向量, \sqrt{A^{2}+B^{2}} 就是||w||。当A和B都为原来的2倍时,函数间隔变为|2Ax+2By+2C|,此时超平面并没有改变,但是函数间隔变为原来的2倍,几何间隔则变为: \\ \frac{\left|2 A x_{0}+2 B y_{0}+2 c\right|}{\sqrt{(2 A)^{2}+(2 B)^{2}}}=\frac{2\left|A x_{0}+B y_{0}+c\right|}{2 \sqrt{A^{2}+B^{2}}}=\frac{\left|A x_{0}+B y_{0}+c\right|}{\sqrt{A^{2}+B^{2}}} 所以几何间隔仍然不变。 好,现在有了点到超平面的距离的计算公式,但是我们需要计算的是误分类点到超平面的距离,那么怎么知道哪个点是被误分的呢? 对于误分类的数据来说下式成立: \\-y_{i}\left(w \cdot x_{i}+b\right)>0 因为当w·x+b≥0且被误分时,对应的真实的y=-1,当w·x+b\\-y_{i}\left(w \cdot x_{i}+b\right)>0 \rightarrow y_{i}\left(\sum_{j=1}^{N} \alpha_{j} y_{j} x_{j} \cdot x_{i}+b\right) \leqslant 0 迭代公式为: \\\alpha_{i} \leftarrow \alpha_{i}+\eta \\b \leftarrow b+\eta y_{i} 此时仅需要计算每个样本点的内积即可,因每次迭代样本点的内积不变,可以提前算出并以矩阵形式存储,这个矩阵被称为Gram矩阵: \\G=\left[x_{i} \cdot x_{j}\right]_{N \times N} 比如: 以《统计学习方法》中的例子来说明感知机模型的对偶形式如何进行学习: 这里给出书中忽略的第四步迭代过程的前两步。 首先选取x1作为第一个误分类点,计算误分条件: \\y_{i}\left(\sum_{j=1}^{N} \alpha_{j} y_{j} x_{j} \cdot x_{i}+b\right) \\=1 \times(0 \times 1 \times(3,3) \cdot(3,3)+0 \times 1 \times(4,3) \cdot(3,3)+0 \times(-1) \times(3,3) \cdot(1,1)+0)=0≤0 在上面一步中,因为已经计算了Gram矩阵,因此xj·xi这一步可以直接从Gram矩阵中选择。 进行迭代:α1 = 0+1 = 1;b = 0 + 1 = 1 第一步迭代完成,进行第二步迭代,选取x3作为误分类点,计算误分条件(利用Gram矩阵): \\-1 \times(1 \times 1 \times 6+0 \times 1 \times 7+0 \times(-1) \times 2+0)=-4 \leqslant 0 进行迭代:α3 = 0 + 1 = 1;b = 1 – 1 = 0 第二步迭代完成。继续迭代直到没有误分类点。 github: 如果觉得对您有帮助,还烦请点击下面的链接,帮忙github点个star~谢谢~ Zhouxiaonnan/machine-learning-notesandcode 所有笔记目录:包括《统计学习方法》中各个模型的理论和python复现部分,以及数据分析Mysql查询优化。 舟晓南:所有笔记目录 | 数据分析 | 机器学习 | 深度学习等 如何转行数据分析师: 舟晓南:如何转行和学习数据分析 | 工科生三个月成功转行数据分析心得浅谈 舟晓南:求职数据分析师岗位,简历应该如何写?|工科生三个月成功转行数据分析心得浅谈 欢迎关注专栏: 数据分析,机器学习学习社群正式启动~ 需要学习资料,想要加入社群均可私信~ 在这里会分享各种数据分析相关资源,技能学习技巧和经验等等~ 详情私信,一起进步吧! 写于成都 2020-9-3 第一次修改 2020-9-19 第二次修改 2020-11-3 |
CopyRight 2018-2019 实验室设备网 版权所有 |