这个专栏主要是用来分享一下我在机器学习中的学习笔记及一些感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎私信或者评论区留言!这一篇就更新一下《白话机器学习中的数学——感知机》!
目录
一、什么是感知机
二、模型分析
2.1训练数据的准备
2.2权重向量的更新表达式
一、什么是感知机
感知机是二分类的线性分类模型,输入为实例的特征向量,输出为实例的类别(取+1和-1)。感知机目的在求一个可以将实例分开的超平面,为了求它,我们用到基于误分类的损失函数和梯度下降的优化策略。
二、模型分析
之前的学习中,我们学习了权重向量的概念,明白了只要找到权重向量,就能够找到那条分割线,所有现在的问题来到了,我们应该怎么样找到权重向量呢?基本做法和回归时相同:将权重向量用作参数,创建更新表达式来更新参数。接下来,我要说明的就是被称为感知机(perceptron) 的模型。 感知机是非常简单的模型,基本不会应用在实际的问题中。 但它是神经网络和深度学习的基础模型,所以记住它没坏处。
感知机是接受多个输入后将每个值与各自的权重相乘,最后输出总和的模型。人们常用这样的图来表示它:
和我们之前说到的向量的内积很相似,这次我们从图像的角度去理解。在介绍参数更新表达式之前,我们最好做一些准备工作,我们可以先理解这一部分,磨刀不误砍柴工。
2.1训练数据的准备
我们依然以图像的横纵分类为探索问题,设表示宽的轴为 x1、表示高的轴为 x2,用 y 来 表示图像是横向还是纵向的,横向的值为 1、纵向的值为 −1。我们将其画在表里:
接下来,根据参数向量 x 来判断图像是横向还是纵向的函 数,即返回 1 或者 −1 的函数 fw(x)的定义如下。这个函数被称为判别函数。
也就是说,这是根据内积的符号来给出不同返回值的函数,这样就可以判断图像是横向还是纵向的。如果不理解也没有关系,我们对上面这句话再深入理解一下:
与权重向量 w 的内积为负的向量 x 是 什么样的向量呢?用图形来解释更容易理解,所以我们利用这个 包含 cos 的表达式来思考。
之前我们说过|w| 和 |x| 必定为正数,所以决定内积符号的是 cos θ ,我们回忆一下cos θ 的图,它什么时候为 负呢?
在 90◦ < θ < 270◦ 的时候 cos θ 为负,与权重向量 w 之间的夹角为 θ,在 90◦ < θ < 270◦ 范围内的所有 向量都符合条件,所以就在这条直线下面、与权重向量方向相反的这个区域
同理,我们也可以得到使内积为正的向量
所以可以根据内积的正负来分割,内积是衡量向量之间相似程度的指标。结果为正,说明二者相似; 为 0 则二者垂直;为负则说明二者不相似。
2.2权重向量的更新表达式
在这个基础上,我们可以这样定义权重向量的更新表达式。
i 在介绍回归的时候也出现过,它指的是训练数据的索引,而不是i 次方的意思,这一点一定要注意。用这个表达式重复处理所有训练数据,更新权重向量。
虽然表达式整体看上去 乱七八糟的,但是一部分一部分分解来看就不那么难了。好好地 想清楚各部分的含义,再慢慢理解整体含义就好了。之前我们也是这么做的
我们先从表达式括号中的 fw(x(i) ) ̸= y(i)开始看,意思是通过判别函数对宽和高的向量 x 进行分类的结果与实际的标签 y不同,也就是说,判别函数的分类结果不正确。那么另外一个 fw(x(i) ) = y(i)就是分类正确。这也就是说,刚才的更新表达式只有在判别函数分类失败的时候 才会更新参数值。
现在着重看一下w := w + y(i) x(i)这个表达式的含义,我们可以结合图形来理解,一边把学习过程实际地画在 图上,一边去考虑它的含义可能就容易理解了。首先在图上随意 画一个权重向量和直线
权重向量是通过随机值来初始化的,上面向量就可以是初始向量。 在这个状态下,假设第一个训练数据是 x(1) = (125, 30),首先我们就用它来更新参数。
现在权重向量 w 和训练数据的向量 x(1) 二者的方向几乎相 反,w 和 x(1) 之间的夹角 θ 的范围是 90◦ < θ < 270◦ ,内积为负。 也就是说,判别函数 fw(x(1) ) 的分类结果为 −1。我们在这里应用刚才的更新表达式。现在 y(1) = 1,所以更新表 达式是这样的,其实就是向量的加法。
这个 w + x(1) 就是下一个新的 w,画一条与新的权重向量 垂直的直线,相当于把原来的线旋转了一下,刚才x(1) 与权重向量分居直线两侧,现在它们在同一侧了
这次 θ < 90◦,所以内积为正,判别函数 fw(x) 的分类结果为1。而且x(1) 的标签也为 1,说明分类成功了。这样就可以更新参数的权重向量,刚才处理的是标签值 y = 1 的情况,而对于 y = −1 的情况,只是 更新表达式的向量加法变成了减法而已,做的事情是一样的。
也就是说,虽然有加法和减法的区别,但它们的做法都是在分类失败时更新权重向量,使得直线旋转相应的角度,这就是感知机的学习方法。