您好, 访客   登录/注册

线性分类器与神经网络在数据处理方面的应用

来源:用户上传      作者:

  摘要:在机器学习诞生之时起,线性回归分类器便体现出优越的性能,然而,随着时代的进步,每类训练样本数量增大,线性分类器的速度变得很慢,也凸显了线性分类的一个致命弱点:对大样本数据束手无策。即当用于训练的样本数量大于样本的维数时,线性分类器会无法工作。解决的办法之一是对分类器作局部化处理从而对数据进行筛选,避免大样本数据问题的出现。然而,随着神经网络的兴起,对于大样本数据的处理,也有了更多的新兴的处理办法。
  关键词:机器学习;线性回归分类器;局部化处理;神经网络;大样本数据
  中图分类号:TP391    文献标识码:A
  文章编号:1009-3044(2020)16-0198-02
  1局部线性回归分类器
  在机器学习领域中,分类的目的是指将具有相似特征的对象聚集在一起。而一个线性分类器会透过特征的线性组合来做出分类决定,以达到此种目的。对象的特征通常被描述为特征值,而在向量中则描述为特征向量。
  1.1 Softmax线性回归
  Softmax是除SVM(支持向量机)外,另一种常见的线性分类模型,是逻辑回归推广的一种形式。
  Softmax作为线性分类器的一种,可以从两个方面来研究它:评分函数,也有人称之为目标函数(score function)和损失函数(loss function)。
  1.1.1 Score function
  Score function: f(xi;W;b)=Wxi+b。
  Softmax的评分函数与多类别支持向量机是一样的,都是“线性分类器”的一种,既然都是线性分类器,其计算目标的公式必定是经典的线性公式。其中,Softmax对目标的解释:转换为概率分布。分类器将目标向量看成是没有归一化处理的对数概率分布。经过转化以后得到相对应类的概率。例如,三个数字1、2、3,取max每次都会取到3,但是把它们映射成三个概率,取到3的概率最大,但也有取到其他两个数的可能,三个概率和为1,这就是Softmax值。即分类器会对线性运算产生的目标向量进行相应的转化:通过特定函数将当前样本对各个类的评分转换成当前样本相对应其相对类的概率,这个概率就是模型的输出。这也是Softmax命名的缘由。因为线性运算的结果在某些情况下不具备很好的解释性,因此在输出之前“对目标进行转化”(比如将目标转化为概率)是一种很常见的做法。
  1.1.2 Loss function
  通过以下公式来计算模型在样本xi上的loss:
  Li[=-log(efyi∑jefj])
  这种损失的计算方式称之为交叉熵,与多类别支持向量机的折叶损失不同,这是由于两者对评分的解释不一样。Softmax的损失函数是希望正确的概率越高越好。
  下面,在Jupyter Notebook中用Softmax分类器来处理下面模型。该数据集来源于斯坦福公开课程。数据图形如下所示:
  既然是线性分类器,就有线性公式y=wx+b。初始化w以及b。线性分类器只需要做简单的乘法,就可得到各个类别的目标。用损失函数来计算损失,即预测结果和真实结果的差值。理想情况下希望正确的类要比其他类有更高的评分,这样损失就会很低。如果正确类的评分低,则损失就会很高。量化这种数据的方法有很多。在这个例子中用前面提到的交叉熵损失。
  正确类别的概率值[efyi∑jefj]越大,Li函数的值就会越小,损失就会很小,即得到的结果与期待的目标结果差距很小。若正确类别的概率值越小,Li函数的值就会越大,那么损失就会很大。那么得到的结果就与目标数值差距较大。
  得到了单个样本的损失,又知道训练样本的容量,就可以计算出每个样本的平均损失:1/N∑iLi。
  由目标矩阵score计算得出训练样本所对应各个类别的概率值。通过softmax函数,把三个分数映射为三個概率。然后将得到的矩阵中的值进行?log运算。得到了一个一维数组,其中每个元素都是相应训练样本的正确类别的概率。之后计算完整的损失。
  由此得到的loss会很大,需要减小loss的值。当导数为0的时候,会出现极值点。于是损失(loss)对目标(score)求导,根据链式求导法则得到?loss/?score=?loss/?prob*?prob/?score。这里损失由正确类别的概率值决定,而正确类别的概率值由各个类别分数共同决定,所以求得应分别是对三个分数的导数,最后损失loss对各个分数的导数为Pk?1(k=yi)。现在得到了?loss/?score,我们想得到的是?loss/?w(w为权重),而?loss/?w=?loss/?score*?score/?w。最后对权值和偏置进行更新。重复此过程10000次,得到的损失结果如下图所示:
  可以发现从很早开始损失就没有变化了。打印出精度。
  结果精确度为0.54,这不是一个令人满意的结果。这也说明线性分类器在处理大量非线性数据时并不能很好的拟合数据曲线。
  2 BP神经网络
  之前已经介绍了Softmax的工作原理:将分数转换为概率,然后得到预测结果,把预测结果拿来和期待的目标结果作比较,并通过损失函数算出预测结果与目标结果的偏差。把每个训练样本都重复这样的步骤,最后再综合所有的损失并得到平均损失。然后通过修改权值和偏置来使这个损失降低。
  而神经网络的不同之处,就是在结构上增加了一层数据层,称之为隐藏层。
  神经网络中的每个神经元的结构都是相同的:每个神经元接受多个输入信号,对输入信号进行线性运算:output=wx+b=∑i wixi+b。
  数据经过输入层传到隐含层,在隐含层会经过激励函数f(一般为非线性函数)的处理后再传输到输出层,在输出层也会经过与在隐含层相同的激励函数f的处理,最后得出结果,正向传播结束。计算出结果与期待值误差后再反向传播并借用误差更新权值,上一层的输出作为下一层的输入。而这个非线性激励函数f,也是神经网络为什么能够处理非线性数据的原因。   下面继续在jupyter notebook中用bp神经网络的方法去拟合上面的函数曲线。因为增加了一层数据层即我们的隐藏层,所以相比于线性处理初始化的一组权重和偏置,我们要增加一组,即初始化两组权重和偏置。并使用ReLu函数作为隐藏层神经元的激励函数。函数表达式为ReLu(x)=max{0,x},取0和自变量x之中的的最大值。与softmax线性分类器的操作原理基本一致:想得到?score/?output的权重以及?score/?output的偏置,先计算损失对分数的导数?loss/?score。这里由链式求导法则可以求出损失对各层权重的导数和损失对偏置的导数。然后通过反向传播来更新各层的权重和偏置。跟线性处理一样我们迭代10000次,看看损失。
  相较于Softmax处理的结果,迭代10000次后损失率已经降低到了一个很低的水准。最后打印出精度:
  最后的精度也比Softmax高出很多,可以说bp神经网络更好的拟合了数据曲线。结果让人非常满意。
  3结语
  由这个实验我们可以看出,在特定情况下对于非线性数据集,神经网络往往比线性处理器有更好的处理效果,能更好的拟合数据曲线。但线性分类模型的作用依然不可忽略,它是非线性分类模型的基础,很多非线性模型都是从线性分类模型的基础上演化而来,并且在机器学习并不漫长的历史进程中,线性分类模型也在实践中证明过自己的作用。无论是线性分类还是神经网络,在人工智能日益影响我们生活的今天,只会发挥越来越重要的作用。
  参考文献:
  [1]WidrowB,Lehr M A.30 years of adaptive neural networks:perceptron,Madaline,andbackpropagation[J].Proceedings of the IEEE, 1990,78(9):1415-1442.
  [2] 于秀丽. 对神经网络学习算法的研究[D].天津:河北工业大学, 2003.
  [3] 张铃.支持向量机理论与基于规划的神经网络学习算法[J].计算机学报,2001,24(2):113-118.
  [4] 赵薇,黄敬雯,靳聪,等.基于卷积神经网络的声学场景分类算法研究[J].中国传媒大學学报(自然科学版),2019,26(2):24-30.
  [5] 刘彩红.BP神经网络学习算法的研究[J].西安工业大学学报,2012,32(9):723-727.
  [6] 许建生,盛立东.基于改进的支持向量机和BP神经网络的识别算法[C]//第八届全国汉字识别学术会议论文集.绍兴,2002:84-89.
  [7] 陈永义,俞小鼎,高学浩,等.处理非线性分类和回归问题的一种新方法(I)——支持向量机方法简介[J].应用气象学报,2004,15(3):345-354.
  [8] 李锦绣. 基于Logistic回归模型和支持向量机(SVM)模型的多分类研究[D].武汉:华中师范大学, 2014.
  [9] 王琳. 支持向量机及相关理论研究[D].大连:辽宁师范大学, 2010.
  [10] 陶卿,曹进德,孙德敏.基于支持向量机分类的回归方法[J].软件学报,2002,13(5):1024-1028.
  【通联编辑:梁书】
转载注明来源:https://www.xzbu.com/8/view-15315151.htm