机器学习(第3版)课件汇 赵卫东 第6-11章 神经网络基础-强化学习_第1页
机器学习(第3版)课件汇 赵卫东 第6-11章 神经网络基础-强化学习_第2页
机器学习(第3版)课件汇 赵卫东 第6-11章 神经网络基础-强化学习_第3页
机器学习(第3版)课件汇 赵卫东 第6-11章 神经网络基础-强化学习_第4页
机器学习(第3版)课件汇 赵卫东 第6-11章 神经网络基础-强化学习_第5页
已阅读5页,还剩455页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章神经网络基础赵卫东复旦大学1章节介绍人工神经网络(ArtificialNeuralNetork,即ANN)是由简单神经元经过相互连接形成网状结构,通过调节各连接的权重值改变连接的强度,进而实现感知判断反向传播(BackPropagation,BP)算法的提出进一步推动了神经网络的发展。目前,神经网络作为一种重要的机器学习方法,已在医学诊断、信用卡欺诈识别、手写数字识别以及发动机的故障诊断等领域得到了广泛的应用本章将介绍神经网络基本分类,包括前馈神经网络、反馈神经网络、自组织神经网络等常用的神经网络模型。重点介绍神经网络的概念和基本原理,为后续深度学习章节的学习打下基础赵卫东复旦大学2章节结构神经网络概述前馈神经网络反馈神经网络自组织神经网络神经网络相关概念激活函数损失函数学习率过拟合与正则化数据预处理训练方式神经网络模型训练中的问题网络模型效果评价神经网络的应用赵卫东复旦大学3神经网络概述传统神经网络结构比较简单,训练时随机初始化输入参数,并开启循环计算输出结果,与实际结果进行比较从而得到损失函数,并更新变量使损失函数值极小,当达到误差阈值时即可停止循环神经网络的训练目的是学习到一个模型,实现输出一个期望的目标值。学习的方式是在外界输入样本的刺激下不断改变网络的连接权重。传统神经网络主要分为一下几类:前馈神经网络、反馈神经网络和自组织神经网络。这几类网络具有不同的学习训练算法,可以归结为有监督学习算法和无监督型学习算法赵卫东复旦大学4议程前馈神经网络前馈神经网络(FeedForwardNeuralNetwork)是一种单向多层的网络结构,即信息从输入层开始,逐层向一个方向传递,一直到输出层结束。所谓的“前馈”是指输入信号的传播方向为前向,在此过程中并不调整各层的权重参数,而反向传播时是将误差逐层向后传递,从而使用权重参数实现对特征的记忆,即通过反向传播(BP)算法来计算各层网络中神经元之间边的权重。BP算法具有非线性映射能力,理论上可逼近任意连续函数,从而实现对模型的学习赵卫东复旦大学5议程感知机

赵卫东复旦大学6议程BP神经网络BP(BackPropagation)神经网络也是前馈神经网络,只是它的参数权重值是由反向传播学习算法进行调整的BP神经网络模型拓扑结构包括输入层、隐层和输出层,利用激活函数来实现从输入到输出的任意非线性映射,从而模拟各层神经元之间的交互激活函数须满足处处可导的条件。例如,Sigmoid函数连续可微,求导合适,单调递增,输出值是0~1之间的连续量,这些特点使其适合作为神经网络的激活函数赵卫东复旦大学7议程激活函数赵卫东复旦大学8议程激活函数赵卫东复旦大学9议程BP神经网络的训练(1)BP神经网络有3个输入单元(偏置单元不计在内),3个隐藏单元及一个输出单元。神经网络的本质是非线性回归分析赵卫东复旦大学10式中的

就是相邻两层神经元之间的权重;

表示第2层的第1个神经元输出,上面公式分别求出了3个神经元的输出结果;而

表示输出层第1个神经元的输出值。图中箭头所指的方向为前向传播的方向,即所有输入参数经过加权求和之后,将结果依次向下一层传递,直到最后输出层。可见BP神经网络可以简单表示为一个函数

,网络的输出

与参数

密切相关,层数越多、层中神经元越多,形成的权重参数就越多。议程BP神经网络的训练(2)赵卫东复旦大学11对网络的输出与样本的真实值之间的误差的大小进行度量:设有一个样本集

,共有m个样本,对于其中单个样本

,BP神经网络的训练通常采用下述损失函数(目标函数)来度量误差:基于上述目标函数,神经网络训练的过程就可以归结为:通过训练求解出下式最优参数使得损失函数取得极小值。议程BP神经网络的训练(3)神经网络训练虚拟演示:/赵卫东复旦大学12议程BP神经网络的训练(4)赵卫东复旦大学13BP算法核心思想是:由后层误差

推导前层误差

,由后向前逐层计算权重的梯度值,并由此更新权重参数。为计算

项,可以分两种情况进行讨论。一是当l为第

层输出层时,对该层第i个神经元的输入

求导如下,式中

表示第

层神经元数:

议程BP神经网络的训练(5)赵卫东复旦大学14二是当l=

各个层时,关于第i个节点的残差

计算需要依据链式法则,由最高层函数逐层向下求导,以

层为例,详细的推导过程如下依据链式法则,上式化为:

议程BP神经网络的训练(6)赵卫东复旦大学15其中,

项表示

层第j个神经元的残差,而

输入由

层的各个节点激活值乘以相应权重并相加得到,因此上式可以进一步展开:可见,

层的残差与

层的残差相关,将上式中的

的关系替换为与

的关系,就能够得到

关于后一层神经元

的递推表达式:

议程BP神经网络的训练(6)赵卫东复旦大学16基于BP算法,对BP神经网络进行训练的基本步骤可以归纳如下:①初始化网络权重和神经元的阈值,一般通过随机的方式进行初始化。②前向传播:计算隐层神经元和输出层神经元的输出。③后向传播:根据目标函数公式修正权重

。反复迭代上述过程,通过损失函数(描述单个样本的误差)和成本函数(描述数据集整体误差)对前向传播结果进行判定,并通过后向传播过程对权重参数进行修正,以起到监督学习的作用,直到满足终止条件为止。议程BP神经网络的训练(7)赵卫东复旦大学17采用批量梯度下降训练BP神经网络时为例,一次权重更新的迭代实现如下:①

对网络的第l层,令

。其中

是相同维度的零矩阵,

是相同维度的零向量,用于进行参数梯度的累加。②

对于一批大小为m的样本,令i=1~m,执行以下步骤:a.对样本i计算网络第l层的

。b.各层梯度分别进行累加:③

依据梯度下降公式更新各层参数:议程BP神经网络结构赵卫东复旦大学18议程反向传播总结1赵卫东复旦大学19误差反向传播的实现步骤总结如下:①进行前馈传导计算,得到网络

直到输出层

的激活值向量

。②对输出层

,计算列向量:③

各层,计算向量:依据链式法则,计算得到参数梯度:

议程BP神经网络

赵卫东复旦大学20议程训练方法神经网络批量梯度下降法随机梯度下降法Mini-batch梯度下降法随机梯度下降法赵卫东复旦大学21赵卫东复旦大学22议程手写体的识别赵卫东复旦大学23议程局部极小值和鞍点赵卫东复旦大学24议程冲量项Momentum是一种帮助SGD在相关方向进行加速并抑制振荡,减少陷入局部极小值的方法。赵卫东复旦大学25议程径向基函数网络(1)赵卫东复旦大学26径向基函数(RadialBasisFunction,RBF)网络由布鲁姆黑德(Broomhead)和洛(Lowe)等人于1988年提出,该网络为单隐层前馈神经网络,其隐层的神经元的激活函数采用的是RBF,而输出层则将隐层神经元的输出进行线性组合。所一个简单的RBF网络可以通过下述公式表示:其中,

表示输出层的输出结果,

为隐层神经元的个数,

对应隐层第i个神经元输出的权重,

为该神经元采用的中心点,

表示RBF。议程径向基函数网络(2)赵卫东复旦大学27RBF是一个取值仅依赖于离原点距离的实值函数,也就是

,或者是到任意一点c的距离,c点称为中心点,也就是

。任意一个满足

特性的

函数都叫作RBF,一般使用欧氏距离(也叫作欧氏RBF),其他距离函数例如高斯函数也是常用的RBF:其中,x是输入层的输入向量;b是偏置值,一般为固定常数,用于决定高斯函数的宽度;c是隐层,决定高斯函数的中心点。该函数输出结果不再是非0即1,而是一组很平滑的小数。高斯分布函数的最明显的特点就是径向对称,自变量在偏离中心位置时数值下降幅度特别大,选择性极强。议程径向基函数网络(3)赵卫东复旦大学28以高斯径向函数网络为例,训练RBF网络可以分为两个步骤:第一步,确定RBF中心点;第二步,利用上文介绍的BP算法训练隐层神经元权重ωi和RBF中的偏置b(下文称其为扩展常数)。目前常用的确定中心点的方法有如下3种:随机采样:随机地在输入样本中选取中心点,且中心点固定。一旦中心点固定下来,隐层神经元的输出便是已知的,这样神经网络的连接权就可以通过求解线性方程组来确定。该方法适用于样本数据的分布具有明显代表性的场景。聚类:主要采用k-均值聚类法来选择RBF的中心点,属于无监督学习方法。通过该方法确定的RBF神经网络的中心点可以变化,并可以通过自组织学习确定其位置。这种方法是对神经网络资源的再分配,通过学习,使RBF的隐层神经元中心点位于输入空间重要的区域。梯度下降:采用梯度下降法,可利用训练样本获得较优的中心点。议程反馈神经网络赵卫东复旦大学29与前馈神经网络相比,反馈神经网络内部神经元之间有反馈,可以用一个无向完全图表示。霍普菲尔德神经网络采用了类似人类大脑的记忆原理,即通过关联的方式,将某一件事物与周围场景中的其他事物建立关联,当人们忘记了一部分信息后,可以通过场景信息将缺失的信息找回。霍普菲尔德神经网络分为离散型霍普菲尔德神经网络(DiscreteHopfieldNeuralNetwork,DHNN)和连续型霍普菲尔德神经网络(ContinuesHopfieldNeuralNetwork,CHNN)两种,在本小节中主要介绍DHNN在霍普菲尔德神经网络中,学习算法基于Hebb学习规则,权重调整规则为若相邻两个神经元同时处于兴奋状态,那么它们之间的连接应增强,权重增大;反之,则权重减小。议程反馈神经网络赵卫东复旦大学30反馈神经网络的训练过程,主要用于实现记忆的功能,即使用能量的极小点(吸引子)作为记忆值,一般可应用以下操作来实现训练。存储:基本的记忆状态,通过权重矩阵存储。验证:迭代验证,直到达到稳定状态。回忆:没有(失去)记忆的点,都会收敛到稳定的状态。虽然霍普菲尔德神经网络具有强大的记忆能力,但是它的缺点也比较明显假记忆问题:只能记住有限个状态,并且当状态之间相似性较大,或者状态的特征较少或不明显时,容易收敛到别的记忆上。存储容量限制问题:主要依赖极小点的数量。当两个样本距离较近时,就容易产生混淆。局部最优问题。议程反馈神经网络赵卫东复旦大学31埃尔曼神经网络是一种RNN,网络中存在环形结构,部分神经元的输出反馈作为输入,而这样的反馈将会出现在该网络的下一个时刻,即这些神经元在这一时刻的输出结果,反馈回来在下一时刻重新作为输入作用于这些神经元,因此RNN可以有效地应对涉及时序性的问题。图中所示为一个简单的埃尔曼神经网络。从图中可以

清晰地看出埃尔曼神经网络的特点,隐层神经元的输

出被反馈回来,作为一个单独的结构被定义为承接层,

而承接层的数据将与输入层的数据一起作为下一时刻

的输入。议程自组织神经网络赵卫东复旦大学32自组织神经网络(Self-OrganizingNeuralNetwork)又称Kohonen网络,是芬兰的科霍宁教授提出的一种自组织特征映射网。这一神经网络的特点是当接收到外界信号刺激时,不同区域对信号自动产生不同的响应。神经网络相关概念学习神经网络相关概念有助于理解深度学习中网络设计原理,可在模型训练过程中有的放矢地调整参数,并且这些神经网络相关概念是深度学习的基础,随着深度学习的不断演化,深入理解这些常识性理论有助于快速理解层出不穷的深度学习网络模型赵卫东复旦大学33议程激活函数

赵卫东复旦大学34议程Binarystep函数Binarystep(二进制步进)函数是基于阈值的激活函数。其函数表达式如下,实际应用中通常采用0作为激活阈值:随着神经网络的发展,Binarystep函数逐步被淘

汰,主要有两个原因:该函数输出只有0和1两个

值,不利于在多分类问题中使用;该函数没有梯

度,在训练BP神经网络时,无法通过梯度下降进

行网络学习。赵卫东复旦大学35议程Sigmoid函数Sigmoid函数的优点在于输出范围有限,数据在传递的过程中不容易发散,并且其输出范围为(0,1),可以在输出层表示概率值,如图6-8所示。Sigmoid函数的导数是非零的,很容易计算Sigmoid函数的主要缺点是梯度下降非常明显,且两头过于平坦,容易出现梯度消失的情况,输出的值域不对称,并非像tanh函数那样值域是-1到1赵卫东复旦大学36议程双曲正切函数(tanh)双曲正切函数将数据映射到[-1,1],解决了Sigmoid函数输出值域不对称问题。另外,它是完全可微分和反对称的,对称中心在原点。然而它的输出值域两头依旧过于平坦,梯度消失问题仍然存在。为了解决学习缓慢和梯度消失问题,可使用其更加平缓的变体,如log-log、Softsign、SymmetricalSigmoid等赵卫东复旦大学37议程

Softsign函数赵卫东复旦大学38议程ArcTan函数赵卫东复旦大学39ArcTan函数为Tan函数的反函数。ArcTan函数在视觉上类似于双曲正切(Tanh)函数,但ArcTan函数更加平坦。在默认情况下,ArcTan函数激活值输出范围为(-π/2,π/2)。ArcTan函数相较于Tan函数的优势在于其导数趋向于0的速度更慢,这意味着学习的效率更高,但它同Tan函数一样属于饱和函数,“梯度消失问题”依然存在。议程

Softplus函数赵卫东复旦大学40议程Mish函数Mish函数由迪甘塔·米斯拉(DigantaMisra)于2019年提出,主要针对ReLU函数的非平滑以及负值截断的特性做出了优化,函数表达式如下:赵卫东复旦大学41议程SoftExponential函数SoftExponential函数是一种能够在对数函数、线性函数和指数函数之间实现连续插值的神经网络激活函数,函数表达式如下:赵卫东复旦大学42议程Sinusoid函数Sinusoid(简单正弦)函数与Tanh、ArcTan等双曲函数的相同点在于,它同样是零点对称的奇函数。该函数的值域为[-1,1],对称的输出区间平衡了神经元的输出,可避免网络出现输出偏移问题。Sinusoid函数又是激活函数中较为特殊的一个,如同余弦函数,Sinusoid函数为神经网络引入了周期性,且Sinusoid函数的导数为余弦函数,导数在定义域内处处连续,并具有周期性,不存在像Sigmoid、Tanh函数那样随着输入值x的增加或减少,梯度值逐渐趋于0的趋势。赵卫东复旦大学43议程Sinc函数Sinc函数又称辛格函数,该函数在数字信号处理和数学领域中具有不一样的定义,具体分为归一化和非归一化形式,两种形式的区别在于,归一化比非归一化形式多了自变量的放大系数。当选择Sinc函数作为激活函数时,通常采用的是非归一化的形式:赵卫东复旦大学44议程高斯函数高斯函数与RBF网络中常用的高斯核函数不同,如图(a)所示,它可以看作峰值为1、均值为0、方差为

的正态分布,高斯函数在多层感知机类模型中使用得并不广泛。由图(b)可知高斯函数可微且为偶函数,其缺点在于该函数的一阶导数很快收敛到0,在输入值较大或较小时容易产生梯度消失问题。赵卫东复旦大学45议程ReLU函数ReLU函数是目前神经网络里常用的激活函数,由于ReLU函数是线性特点使其收敛速度比Sigmoid、Tanh更快,而且没有梯度饱和的情况出现。计算更加高效,相比于Sigmoid、Tanh函数,只需要一个阈值就可以得到激活值,不需要对输入归一化来防止达到饱和赵卫东复旦大学46议程

LeakyReLU函数

赵卫东复旦大学47议程ELU函数ELU函数在x>0的正值区间内的值为输入x本身,这一点与ReLU函数及其衍生的其他激活函数类似,因此该函数具备与ReLU函数相同的解决“死亡神经元”、减轻梯度消失问题(x>0时导数处处为1)的能力。赵卫东复旦大学48议程Maxout函数

赵卫东复旦大学49议程Softmax函数赵卫东复旦大学50议程Mish函数

赵卫东复旦大学51议程Swish函数赵卫东复旦大学52议程常见的激活函数赵卫东复旦大学53议程激活函数赵卫东复旦大学54议程激活函数如何选择激活函数?通常使用ReLU函数,并注意设置好学习率如果存在死亡神经元的问题,就尝试LeakyReLU或Maxout函数尽量避免使用Sigmoid函数tahn函数大部分情况下效果不如ReLU和Maxout函数赵卫东复旦大学55议程损失函数

赵卫东复旦大学56议程Softmax使用Softmax函数的好处是可以使分类问题的预测结果更加明显,不同类别之间的差距更大。在实际应用中,特别是在Tensorflow中推荐采用交叉熵与Softmax结合作为损失函数,可以避免数值不稳定的情况赵卫东复旦大学57议程损失函数-交叉熵

赵卫东复旦大学58议程损失函数-平均绝对误差平均绝对误差损失函数相比于直接采用预测值和真实值之间的差值作为误差函数,采用MAE度量更加准确。当度量多个样本的预测结果误差时,若只采用差值,因差值存在正、负,在多个差值相加后误差相互抵消,得到的总和误差自然不够准确。而MAE通过取绝对值的方式,能够将每个样本的误差转化为正数进行累加,具有更好的学习效果。赵卫东复旦大学59议程损失函数-均方误差均方误差损失函数赵卫东复旦大学60议程损失函数-Huber赵卫东复旦大学61议程损失函数-FocalLossFocalLoss是在标准交叉熵损失函数的基础上,增加了一个调制因子,为难分类样本(易错误分类)的样本分配更大权重来处理类不平衡问题:式中αt​、γ为参数,pt​为样本分类的概率。

其曲线如图所示,可以看出,FocalLoss

降低了易分类(样本pt​较大)的样本的

损失占比,将更多注意力放在难训练或易

分错样本上(样本pt​​较小)。赵卫东复旦大学62FL(pt​)=−αt​(1−pt​)γlog(pt​)议程损失函数-自定义函数对于某些候选属性,单独将一些预测值取出或者赋予不同大小的参数。或者合并多个损失函数,实现多目标训练任务,或者在不同的情况下采用不同的损失函数赵卫东复旦大学63议程学习率(1)学习率控制每次更新参数的幅度,过高和过低的学习率都可能对模型结果带来不良影响,合适的学习率可以加快模型的训练速度常见学习率调整方法基于经验的手动调整固定学习率均分分步降低策略指数级衰减多项式策略AdaGrad动态调整AdaDelta自动调整动量法动态调整RMSProp动态调整随机梯度下降Adam自动调整赵卫东复旦大学64议程学习率(2)学习率的动态调整赵卫东复旦大学65议程学习率(3)赵卫东复旦大学66议程学习率(4)Adam学习率优化算法Adam:(adaptivemomentestimation)利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率赵卫东复旦大学67议程神经网络算例赵卫东复旦大学68议程过拟合(1)过拟合是指模型在训练集上预测效果好,但在测试集上预测效果差常用的防止过拟合的方法有参数范数惩罚数据增强提前终止权重衰减Bagging等集成方法Dropout批标准化赵卫东复旦大学69议程过拟合(2)赵卫东复旦大学70议程模型训练中的问题选择恰当的激活函数权重初始化学习率梯度消失和梯度爆炸梯度截断标准化(Normalization)周期

/训练迭代次数局部极小值超参数优化训练过程可视化赵卫东复旦大学71议程权重初始化Xavier权重初始化He权重初始化赵卫东复旦大学72Xavier初始化能够保持输出在很多层之后依然有着良好的分布。使用Xavier初始化时网络中任意第i层的权重满足:其中

表示网络第i层权重的方差,

分别表示第i层和第i+1层的神经元个数。Xavier初始化对应下面的均匀分布:使用He初始化方法,将权重初始化为服从下式描述的均值为0的正态分布。其中

分别表示卷积层中的卷积核高和宽,而

表示当前第i层卷积核个数:考虑了LeakyReLU函数负数域的曲线斜率

,权重初始化分布如下:议程梯度消失和梯度爆炸(1)防止梯度消失和梯度爆炸的方法:1.重新设计网络模型2.使用ReLU激活函数3.使用长短期(LSTM)记忆网络4.使用梯度截断(GradientClipping)5.使用权重正则化(WeightRegularization)链式法则:当权重过小或过大(<1或>1),会分别导致梯度消失和梯度爆炸赵卫东复旦大学73议程梯度爆炸与梯度截断梯度截断(GradientClipping)是防止梯度爆炸常用的方法之一它首先设置梯度截断的阈值,在计算梯度时,若梯度的范数超过了设定的阈值a,就采取强制方法将梯度限制在某个较小的区间内,从而将超出限制的梯度值减少,缓解了梯度爆炸的趋势。可以对梯度的数值进行限制在某个区域、限制梯度的范数梯度修剪赵卫东复旦大学74议程局部极小值鞍点赵卫东复旦大学75议程Dropout(1)简化网络,减少网络的过拟合引入了多样性的模型Dropout是一个集成方法,将所有子网络结果进行合并fromkeras.layersimportDropoutx=Dropout(0.5)(x)赵卫东复旦大学76议程Dropout(2)前向传播时:#A1为上一层的输出,D1为用随机数生成的一组dropout向量,然后将其与保留概率prob做比较得到一个布尔向量,再将其与A1做乘积可得到失活后的A1,最后将A1除以保留概率。D1=np.random.rand(A1.shape[0],A1.shape[1])D1=D1<probA1=np.multiply(D1,A1)A1

=

A1

/

prob

反向传播时:dA1=np.multiply(dA1,D1)dA1=dA1/prob使用了dropout后,在模型训练阶段只有占比为p的神经元参与了训练,那么在预测阶段得到的结果会比实际平均要大1/p,所以在测试阶段需要将输出结果乘以p来保持输出规模不变。神经网络以1-p的概率丢弃某些神经元,多次训练随机性每次训练不同的网络,使神经网络不依赖于某些独立的特征,最后的结果也就是几次训练之后的平均结果,提高神经网络的泛化性能。赵卫东复旦大学77议程Dropout(3)赵卫东复旦大学78议程batchsize对网络性能的影响赵卫东复旦大学79议程batchnormalization(1)在训练的过程中,激活函数会改变各层数据的分布,随着网络的加深,这种改变(差异)会越来越大,使模型训练起来特别困难。要对每个隐层神经元的激活值做BN,可以想象成每个隐层加上了BN操作层,它位于激活函数变换之前赵卫东复旦大学80议程batchnormalization(2)若训练过程中每批的数据分布各不相同,那么网络每次迭代学习过程就会出现较大波动,使之更难趋于收敛,降低训练收敛速度。对于深层网络,网络前几层的微小变化都会被网络累积放大,则训练数据分布变化问题就会被放大,更加影响训练速度。InternalCovariateShift上层网络需要不停调整来适应输入数据分布的变化,导致网络学习速度的降低网络的训练过程容易陷入梯度饱和区,减缓网络收敛速度白化操作减弱了网络中每一层输入数据表达能力,再加个线性变换操作,恢复这些数据的表达能力白化:PCA白化保证了所有特征分布均值为0,方差为1;而ZCA白化则保证了所有特征分布均值为0,方差相同网络加入BN后丢弃Dropout,也同样具有很好的泛化效果每个通道分别计算赵卫东复旦大学81议程batchnormalization(3)提升了训练速度,收敛过程大大加快增加分类效果降低了初始化要求,可以使用大的学习率。不足:如果batchsize太小,均值、方差不能代表整个数据分布。batchsize太大:会超过内存容量赵卫东复旦大学82议程batchnormalization(4)GN是LN和IN的折中赵卫东复旦大学83议程变量归一化和标准化特征间的单位(尺度)可能不同因尺度差异,损失函数的等高线图可能是椭圆形,梯度下降会走zigzag路线,对特征进行标准化后,损失函数的等高线图更接近圆形赵卫东复旦大学84议程正则化赵卫东复旦大学85议程神经网络效果评价用于分类的模型评价以准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1分值(F1Score)为主,辅以ROC、AUC并结合实际应用进行结果评价如果神经网络用于聚类,数据源并没有进行标记,那么其模型结果的评价按照聚类算法的标准来操作,如RMSSTD、RSquare、SRP等随着机器学习在不同领域中的应用,其评价方式需要与实际业务相结合,通过确定目标要求来定量设计评价标准,例如在目标检测等方面使用平均曲线下面积(meanAveragePrecision,mAP)指标进行衡量识别准确性赵卫东复旦大学86议程径向基函数网络

赵卫东复旦大学87议程反馈神经网络与前馈神经网络相比,反馈神经网络内部神经元之间有反馈,可以用一个无向完全图表示,包括了Hopfield网络、BAM网络,Elman网络等Hopfield网络类似人类大脑的记忆原理,即通过关联的方式,将某一件事物与周围场最中的其他事物建立关联,当人们忘记了一部分信息后,可以通过场最信息回忆起来,将缺失的信息找回。通过在反馈神经网络中引入能量函数的概念,使其运行稳定性的判断有了可靠依据,由权重值派生出能量函数是从能量高的位置向能量低的位置转化,稳定点的势能比较低。基于动力学系统理论处理状态的变换,系统的稳定态可用于描述记忆Hopfield网络分为离散型和连续型两种网络在Hopfield网络中,学习算法是基于Hebb学习规则,权值调整规则为若相邻两个神经元同时处于兴奋状态,那么他们之间的连接应增强,权值增大;反之,则权值减少赵卫东复旦大学88议程反馈神经网络反馈神经网络的训练过程,主要用于实现记忆的功能,即使用能量的极小点(吸引子)作为记忆值,一般可应用以下操作来实现训练存储:基本的记忆状态,通过权值矩阵存储验证:选代验证,直到达到稳定状态回忆:没有(失去)记忆的点,都会收敛到稳定的状态以下是Hopfield网络的一个示例应用,对屏幕点阵模拟的数字进行记忆,经过克罗内克积计算之后,获得了对应数字的参数值矩阵,进行记忆效果评估时,只给出一半的点阵数字信息,通过Hopfield网络进行恢复到原始数字defkroneckerSquareProduct(self,factor):ksProduct=np.zeros((self.N,self.N),dtype=np.float32)foriinxrange(0,self.N):ksProduct[i]=factor[i]*factorreturnksProduct赵卫东复旦大学89议程反馈神经网络#记忆单个数字的状态defdo_train(self,inputArray):#归一化mean=float(inputArray.sum())/inputArray.shape[0]self.W=self.W+self.kroneckerSquareProduct(inputArray-mean)/(self.N*self.N)/mean/(1-mean)#通过记忆重构数字defhopRun(self,inputList):inputArray=np.asarray(inputList,dtype=np.float32)matrix=np.tile(inputArray,(self.N,1))matrix=self.W*matrixouputArray=matrix.sum(1)#归一化m=float(np.amin(ouputArray))M=float(np.amax(ouputArray))ouputArray=(ouputArray-m)/(M-m)ouputArray[ouputArray<0.5]=0.ouputArray[ouputArray>0]=1.returnnp.asarray(ouputArray,dtype=np.uint8)赵卫东复旦大学90议程基于神经网络(多层感知器)识别手写数字数据集为经典的MNIST加载数据importtensorflowastfimportsslssl._create_default_https_context=ssl._create_unverified_contextfromtensorflow.examples.tutorials.mnistimportinput_datamnist=input_data.read_data_sets("./mnist_data/",one_hot=True)赵卫东复旦大学91配套在线课程深度学习及其应用(第2次开课)/course/FUDAN-1205806833?tid=1206624259赵卫东复旦大学案例和实验平台头歌机器学习实践课/paths/ygpm7bqe赵卫东复旦大学第7章贝叶斯网络赵卫东复旦大学赵卫东复旦大学章节介绍贝叶斯网络(Bayesiannetwork),又称为信念网络(Beliefnetwork)

,是一种通过有向无环图(Directedacyclicgraph,DAG)表示一组随机变量及其条件依赖概率的概率图模型。概率图中,节点表示随机变量,有向边表示随机变量间的依赖关系,条件概率表示依赖关系的强度。没有父节点的节点用先验概率表达信息。两个节点若无连接则表示相互独立的随机变量。贝叶斯网络中的节点可以表示任意问题,丰富的概率表达能力使能较好地处理不确定性信息或问题。贝叶斯网络中所有节点都是可见的,并且节点间的因果关系可以非常直观地观察到。这些特性都使得贝叶斯网络在众多智能系统中有相当重要的应用本章首先介绍贝叶斯网络的基础知识,重点讲解贝叶斯的概率基础和朴素贝叶斯分类模型,并结合实际案例说明贝叶斯网络的应用赵卫东复旦大学章节结构贝叶斯理论概述贝叶斯概率基础概率论贝叶斯概率朴素贝叶斯分类模型贝叶斯网络推理贝叶斯网络的应用中文分词机器翻译故障诊断疾病诊断赵卫东复旦大学贝叶斯理论概述

赵卫东复旦大学贝叶斯概率基础概率论古典概率几何概率条件概率加法定理减法定理独立事件联合概率分布条件概率分布贝叶斯概率先验概率后验概率全概率公式贝叶斯公式赵卫东复旦大学朴素贝叶斯分类模型朴素贝叶斯分类模型是一种简单的构造分类器的方法。朴素贝叶斯分类模型是将问题分为特征向量和决策向量两类,并假设问题的特征向量都是相互独立地作用于决策向量的,即问题的特征之间都是互不相关的。尽管有这样过于简单的假设,但朴素贝叶斯分类模型能指数级降低贝叶斯网络构建的复杂性,同时还能较好地处理训练样本的噪声和无关属性,所以朴素贝叶斯分类模型仍然在很多现实问题中有着高效的应用,例如入侵检测和文本分类等领域。目前许多研究学者也在致力于改善特征变量间的独立性的限制使得朴素贝叶斯分类模型可以应用到更多问题上赵卫东复旦大学朴素贝叶斯分类模型

赵卫东复旦大学朴素贝叶斯分类模型

赵卫东复旦大学朴素贝叶斯分类模型朴素贝叶斯分类模型应用流程的三个阶段赵卫东复旦大学朴素贝叶斯分类模型朴素贝叶斯分类器还可以进行提升(Boosting),提升方法的主要思想是学习多个分类器组成一个分类器序列,序列中后面的分类器对前面的分类器导致的错误分类的数据给予更高的重视,即调整前一个分类器分类错误的训练集的权值,并对训练集重新计算权值以调整下一个分类器,以此类推,最终得到提升后的强分类器朴素贝叶斯分类模型结构简单,只有两层结构。由于特征向量间的相互独立,算法简单易于实现。同时算法有稳定的分类效率,对于不同特点的数据集其分类性能差别不大。朴素贝叶斯分类在小规模的数据集上表现优秀,并且分类过程时空开销小。算法也适合增量式训练,在数据量较大时,可以人为划分后分批增量训练赵卫东复旦大学朴素贝叶斯分类模型以下是应用sklearn库中朴素贝叶斯(高斯)分类模型进行分析的示例代码。数据源是通过sklearn中的聚类生成器(make_blobs)生成的50000个随机样本,每个样本的特征数为2个,共有三个类簇,样本集的标准差是1.0,随机数种子为42centers=[(-5,-5),(0,0),(5,5)]X,y=make_blobs(n_samples=50000,n_features=2,cluster_std=1.0,centers=centers,shuffle=False,random_state=42)y[:n_samples//2]=0y[n_samples//2:]=1sample_weight=np.random.RandomState(42).rand(y.shape[0])X_train,X_test,y_train,y_test,sw_train,sw_test=train_test_split(X,y,sample_weight,test_size=0.9,random_state=42)clf=GaussianNB()clf.fit(X_train,y_train)prob_pos_clf=clf.predict_proba(X_test)[:,1]target_pred=clf.predict(X_test)score=accuracy_score(y_test,target_pred,normalize=True)print("accuracyscore:",score)赵卫东复旦大学朴素贝叶斯分类模型

通过GuassianNB算法fit之后,对测试集X_test进行预测,结果存在prob_pos_clf中输出分类结果:accuracyscore:0.8335赵卫东复旦大学朴素贝叶斯分类模型

赵卫东复旦大学朴素贝叶斯分类模型

赵卫东复旦大学贝叶斯网络推理不确定性推理是机器学习的重要研究内容之一。用概率论方法进行不确定推理的一般流程是首先将问题抽象为一组随机变量与其联合概率分布表,然后根据概率论公式进行推理计算,但这个流程复杂度高赵卫东复旦大学议程警铃问题

赵卫东复旦大学议程警铃问题BCADE概率

BCADE概率yesyesyesyesyes1.2E-4

noyesyesyesyes3.6E-3yesyesyesyesno5.1E-5

noyesyesyesno1.6E-3yesyesyesnoyes1.3E-5

noyesyesnoyes4.0E-4yesyesyesnono5.7E-6

noyesyesnono1.7E-4yesyesnoyesyes5.0E-7

noyesnoyesyes7.0E-6yesyesnoyesno4.9E-7

noyesnoyesno6.9E-4yesyesnonoyes9.5E-8

noyesnonoyes1.3E-4yesyesnonono9.4E-6

noyesnonono1.3E-2yesnoyesyesyes5.8E-3

nonoyesyesyes6.1E-4yesnoyesyesno2.5E-3

nonoyesyesno2.6E-4yesnoyesnoyes6.5E-4

nonoyesnoyes6.8E-5yesnoyesnono2.8E-4

nonoyesnono2.9E-5yesnonoyesyes2.9E-7

nononoyesyes4.8E-4yesnonoyesno2.9E-5

nononoyesno4.8E-2yesnononoyes5.6E-6

nonononoyes9.2E-3yesnononono5.5E-4

nonononono9.1E-1赵卫东复旦大学议程警铃问题

BDyesyes0.000115yesno0.000075noyes0.00015nono0.99966赵卫东复旦大学议程警铃问题

赵卫东复旦大学议程警铃问题

赵卫东复旦大学议程警铃问题

赵卫东复旦大学议程警铃问题ABCyesyesyes0.95noyesyes0.05yesyesno0.94noyesno0.06yesnoyes0.29nonoyes0.71yesnono0.001nonono0.999赵卫东复旦大学议程警铃问题如何定量地描述图中节点间的依赖关系呢?根据联合概率分布表和基本公式,可以计算出每个节点的条件概率表。有向无环图和条件概率表就构成了一个贝叶斯网络Bp(B)yes0.01no0.99Cp(C)yes0.02no0.98DAp(D|A)

EAp(E|A)yesyes0.9

yesyes0.7noyes0.1

noyes0.3yesno0.05

yesno0.01nono0.95

nono0.99赵卫东复旦大学议程贝叶斯网络的表示

赵卫东复旦大学议程贝叶斯网络的构建

赵卫东复旦大学议程贝叶斯网络的学习贝叶斯网络学习是对数据进行统计分析获取贝叶斯网络的过程。学习包括了参数学习和结构学习两部分。参数学习是在网络结构已知的情况下确定参数即条件概率表中的值。结构学习则既需要确定网络结构G以定性反映变量间的依赖关系,又需要确定网络参数以定量得到条件概率表中的值在对贝叶斯网络进行参数学习时,我们已经知道了网络结构G和G中所有节点或部分节点的状态值,这些状态值就是需要进行学习的数据集赵卫东复旦大学议程贝叶斯网络推理贝叶斯网络的推理是指在已知网络结构G和参数Θ下,给定某些证据或变量的值通过概率论的方法求目标变量值的过程。贝叶斯网络的推理主要包括两种,一种为自顶向下的推理,一种为自底向上的推理推理主要运用的方法有精确推理和近似推理两种,分别有一些算法来解决实际问题。不同情况下有不同因素影响推理,贝叶斯网络拓扑结构和推理任务是两大主要复杂度来源。网络的大小、变量的类型和分布情况、推理任务的类型和相关证据的特征都会影响推理过程和结果,实际应用中也应灵活选择推理方法赵卫东复旦大学议程精确推理精确推理最简单的方法即计算全局的联合概率,但直接对联合概率进行计算的效率很低,常常采用变量消元法分别联合概率的求解达到简化计算的目的。变量消元法利用链式乘积法则和条件独立性对联合概率计算表达式进行变换,改变基本运算的次序改变消元的次序,最终达到减少计算量的目的。该方法的基本思想可以通过一个简单例子描述,假设有如下所示的简单贝叶斯网络ABCD赵卫东复旦大学议程精确推理

赵卫东复旦大学议程近似推理在贝叶斯网络节点很多或依赖关系很复杂时,精确推理的复杂度很高,通常需要降低推理的复杂度,在问题的因果关系在网络中可独立于某一块存在时,可以将这一部分结构提取出来用精确推理的方法推理。在不能利用局部独立时,就需要降低计算的精度,即采用近似推理的方法。随机抽样算法是最常用的近似推理方法。该方法又被认为蒙特卡洛算法或随机仿真。算法的基本思想上根据某种概率分布进行随机抽样以得到一组随机样本,再根据这一组随机样本近似地估计需要计算的值赵卫东复旦大学贝叶斯网络的应用贝叶斯网络经过长期的发展,现已被应用到人工智能的众多领域。包括模式识别、数据挖掘、自然语言处理、辅助智能决策等等。其中针对很多领域核心问题的分类问题,大量卓有成效的算法都是基于贝叶斯理论设计在医疗领域,贝叶斯网络用于医疗诊断在工业领域,贝叶斯网络用于对工业制品的故障检测和性能分析在军事上也被应用于身份识别等各种战场推理在生物农业领域,贝叶斯网络在基因连锁分析、农作物推断、兽医诊断、环境分析等等问题上都有大量的应用在金融领域可用于构建风控模型在企业管理上可用于决策支持在自然语言处理方面可用于文本分类、中文分词、机器翻译赵卫东复旦大学议程中文分词

赵卫东复旦大学议程中文分词

赵卫东复旦大学议程机器翻译

赵卫东复旦大学议程故障诊断故障诊断是为了找到某种设备出现故障时故障的所在部件,在工业领域,自动的故障诊断装置能节省一线工作人员大量的预判断时间。基于规则的系统可以被用于故障诊断,但是起不能处理不确定性问题,在实际环境中难以灵活应用。贝叶斯网能较好地描述可能的故障来源,在处理故障诊断的不确定问题上有优秀的表现。多年来研究人员开发出了多种基于贝叶斯网络的故障诊断系统,包括对汽车启动故障的诊断、波音飞机的故障诊断、核电厂软硬件的故障诊断等等赵卫东复旦大学议程故障诊断Heckerman等人在1995提出了一种汽车发动机诊断系统,该系统用于诊断汽车无法正常启动的原因,可见原因有多种,所以可以利用前文提到的诊断推理的方法,找到后验概率最大的故障原因其网络结构如下电池使用时间长发动机报废皮带断开电池报废未充电电池没电无润滑油无燃油燃油指示失灵启动器失灵燃油指示灯润滑油指示灯引擎无法启动照明大灯赵卫东复旦大学议程疾病诊断疾病诊断是从一系列历史经验和临床检验结果中对病人患有疾病种类和患病程度的判断。机器学习在疾病诊断领域有较多的应用,在上世纪70年代就有基于规则设计的产生式专家系统用于对疾病进行诊断,但是该类型系统不能处理不确定性使其诊断正确率远低于临床医生。后来研究人员基于贝叶斯网络设计了新的疾病诊断系统以处理不确定性问题,新系统的诊断准确程度已可与专业临床医生相当。下面是一个对胃部疾病建模的简单贝叶斯网络的部分,网络结构与条件概率不一定符合真实情况,这里关键是对贝叶斯网络的应用予以阐释。假设我们已经根据历史诊断经验得到了如下图所示贝叶斯网络结构赵卫东复旦大学议程疾病诊断锻炼饮食胃痛腹胀恶心胃炎伤寒细菌感染晕动症神经疾病赵卫东复旦大学议程疾病诊断其对应的部分条件概率表为:对“锻炼”与“饮食”节点:对“胃痛”节点:锻炼=“是”0.5

锻炼=“否”0.5饮食=“健康”0.4

饮食=“亚健康”0.6

胃痛=“是”胃痛=“否”锻炼=“是”,饮食=“健康”0.20.8锻炼=“是”,饮食=“亚健康”0.450.55锻炼=“否”,饮食=“健康”0.550.45锻炼=“否”,饮食=“亚健康”0.70.3赵卫东复旦大学议程疾病诊断对“腹胀”节点:对“恶心”节点:对“胃炎”节点:

“腹胀”=“是”腹胀=“否”饮食=“健康”0.20.8饮食=“亚健康”0.60.4

恶心=“是”恶心=“否”胃痛=“是”0.70.3胃痛=“否”0.20.8

胃炎=“是”胃炎=“否”胃痛=“是”,腹胀=“是”0.80.2胃痛=“是”,腹胀=“否”0.60.4胃痛=“否”,腹胀=“是”0.40.6胃痛=“否”,腹胀=“否”0.10.9赵卫东复旦大学议程疾病诊断

赵卫东复旦大学议程疾病诊断

赵卫东复旦大学配套在线课程深度学习及其应用(第2次开课)/course/FUDAN-1205806833?tid=1206624259赵卫东复旦大学案例和实验平台头歌机器学习实践课/paths/ygpm7bqe赵卫东复旦大学赵卫东复旦大学第8章支持向量机赵卫东复旦大学赵卫东复旦大学章节介绍支持向量机(SupportVectorMachine,SVM)属于有监督学习模型,主要用于解决数据分类问题。通常SVM用于二元分类问题,对于多元分类可将其分解为多个二元分类问题,再进行分类,主要应用场景有图像分类、文本分类、面部识别和垃圾邮件检测等领域。本章共划分为两个小节,分别介绍支持向量机模型的基础以及支持向量机的应用过程。赵卫东复旦大学章节结构线性可分SVM间隔与超平面支持向量对偶问题求解非线性SVM非线性SVM原理常见核函数支持向量机应用基于SVM进行新闻主题分类基于支持向量机和主成分分析的人脸识别赵卫东复旦大学一个例子:青光眼诊断赵卫东复旦大学图中“+”表示开角型青光眼样本点,“〇”表示闭角型青光眼型样本点。样本数据相互交叉较多,不易进行线性可分。分类分析支持向量机在青光眼检测中的应用这里随机抽取某医院眼科青光眼门诊病例88人,建立支持向量机模型。这些原发性开、闭角型青光眼的双眼眼压差、房角、前房深度三个变量的三维图。图中“+”表示开角型青光眼样本点,“o”表示闭角型青光眼样本点。不易进行线性可分。左表训练集中分类,右表测试集,其中Y为确诊后的临床诊断结果,Y=1为原发性开角型青光眼,Y=-1为原发性闭角型青光眼。Result为模型数据回代结果。Result>0代表房角为开角,否则为闭角。赵卫东复旦大学分类分析间隔和超平面以一个二元分类问题为例,假设有两类数据,如图需要找出一条边界来将两类数据分隔开来。在当前的数据集的条件下,三种分隔方式都是可行的,该如何做选择?需要选择具有较强分类能力的直线,有较稳定的分类结果和较强的抗噪能力,b的分隔效果更好。赵卫东复旦大学分类分析支持向量找到最优分类数据的分界线,对样本数据的分类效果更好的方法就是要尽可能地远离两类数据点,即数据集的边缘点到分界线的距离d最大,这里虚线穿过的边缘点称作支持向量,分类间隔为2d。赵卫东复旦大学分类分析支持向量机

赵卫东复旦大学分类分析支持向量机

赵卫东复旦大学分类分析支持向量机

赵卫东复旦大学分类分析支持向量机

赵卫东复旦大学分类分析支持向量机对偶问题求解优化问题:为解决这个约束问题的最优解,引入Lagrange函数:

赵卫东复旦大学分类分析支持向量机

赵卫东复旦大学分类分析支持向量机

赵卫东复旦大学分类分析支持向量机用于预测银行客户流失赵卫东复旦大学议程常见核函数支持向量机通过线性变换A(x)将输入空间X映射到高维特征空间Y,如果低维空间存在函数K,x,y∈X,使得K(x,y)=A(x)·A(y),则称K(x,y)为核函数。核函数方法可以与不同的算法相结合,形成多种不同的基于核函数的方法,常用的核函数有:线性核函数多项式核函数径向基核函数Sigmoid核赵卫东复旦大学议程线性核函数线性核函数(LinearKernel)是最简单的核函数,主要用于线性可分的情况,表达式如下:K(x,y)=x·y+c

其中c是可选的常数。线性核函数是原始输入空间的内积,即特征空间和输入空间的维度是一样的,参数较少运算速度较快。适用的情景是在特征数

量相对于样本数量非常多时。赵卫东复旦大学议程多项式核函数多项式核函数(PolynomialKernel)是一种非稳态核函数,适合于正交归一化后的数据,表达式如下:K(x,y)=[a·x·y+c]d

其中a是调节参数,d是最高次项次数,c是可选的常数。赵卫东复旦大学议程径向基核函数径向基核函数(RadialBasisFunctionKernel)具有很强的灵活性,应用广泛。与多项式核函数相比参数较少。因此大多数情况下都有较好的性能。径向基核函数类似于高斯函数,所以也被称为高斯核函数。在不确定用哪种核函数时,可优先验证高斯核函数。表达式如下:K(x,y)=exp{-[(||x-y||2)/(2·a2)]}

其中a2越大。高斯核函数就会变得越平滑,此时函数随输入x变化较缓慢

,模型的偏差和方差大,泛化能力差,容易过拟合。a2越小,高斯核函

数变化越剧烈,模型的偏差和方差越小,模型对噪声样本比较敏感。赵卫东复旦大学议程Sigmoid核Sigmoid核(SigmoidKernel)来源于MLP中的激活函数,SVM使用Sigmoid相当于一个两层的感知机网络,表达式如下:K(x,y)=tanh(a·x·y+c)

其中a表示调节参数,c为可选常数,一般情况c取1/n,n是数据维度。赵卫东复旦大学支持向量机应用支持向量机(SVM)算法比较适合图像和文本等样本特征较多的应用场合。基于结构风险最小化原理,对样本集进行压缩,解决了以往需要大样本数量进行训练的问题。它将文本通过计算抽象成向量化的训练数据,提高了分类的精确率。赵卫东复旦大学议程新闻主题分类新闻的分类是根据新闻中与主题相关的词汇来完成的。应用SVM对新闻分类可以划分为五个步骤:获取数据集将文本转化为可处理的向量分割数据集支持向量机分类分类结果显示

赵卫东复旦大学议程获取数据集数据集来自于sklearn官网上的20组新闻数据集,下载地址为:/stable/datasets/index.html#the-20-newsgroups-text-dataset

数据集中一共包含20类新闻,选择其中三类新闻,对应的target依次为0,1,2。部分代码如下:select=['alt.atheism','talk.religion.misc','comp.graphics']newsgroups_train_se=fetch_20newsgroups(subset='train',categories=select)赵卫东复旦大学议程文本转化为向量sklearn中封装了向量化工具TfidfVectorizer,它统计每则新闻中各个单词出现的频率,并进行TF-IDF处理,其中TF(termfrequency)是某一个给定的词语在该文件中出现的次数。IDF(inversedocumentfrequency)是逆文档频率,用于降低其它文档中普遍出现的词语的重要性,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。通过TF-IDF来实现文本特征的选择,也就是说,一个词语在当前文章中出现次数较多,但在其它文章中较少出现,那么可认为这个词语能够代表此文章,具有较高的类别区分能力。使用TfidfVectorizer实例化、建立索引和编码文档的过程如下:vectorizer=TfidfVectorizer()vectors=vectorizer.fit_transform(newsgroups_train_se.data)print(vectors.shape)赵卫东复旦大学议程支持向量机分类使用sklearn中的SVM工具包SVC(C-SupportVectorClassification)来进行分类,核函数采用的是线性核函数,代码如下:

svc=SVC(kernel='linear')svc.fit(x_train,y_train)赵卫东复旦大学议程分类结果显示print(svc.score(x_test,y_test))Result:0.955017301038

可以看到训练正确率约为95.5%赵卫东复旦大学议程基于支持向量机和主成分分析的人脸识别主成分分析(PrincipalComponentAnalysis,PCA)是一种降维方法,可以从多种特征中解析出主要的影响因素,使用较少的特征数量表示整体。PCA的目标就是找到方差大的维度作为特征。本案例可以被划分为六个步骤:获取数据集将图片转化为可处理的n维向量分割数据集PCA主成分分析,降维处理支持向量机分类查看训练后的分类结果

赵卫东复旦大学议程主成分分析主成分分析是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的方差最大,以此使用较少的维度,同时保留较多原数据的维度尽可能如果把所有的点都映射到一起,那么几乎所有的区分信息都丢失了,而如果映射后方差尽可能的大,那么数据点则会分散开来,特征更加明显。PCA是丢失原始数据信息最少的一种线性降维方法,最接近原始数据PCA算法目标是求出样本数据的协方差矩阵的特征值和特征向量,而协方差矩阵的特征向量的方向就是PCA需要投影的方向。使样本数据向低维投影后,能尽可能表征原始的数据。协方差矩阵可以用散布矩阵代替,协方差矩阵乘以(n-1)就是散布矩阵,n为样本的数量。协方差矩阵和散布矩阵都是对称矩阵,主对角线是各个随机变量(各个维度)的方差赵卫东复旦大学议程主成分分析

赵卫东复旦大学议程主成分分析基于sklearn(Python语言下的机器学习库)和numpy随机生成2个类别共40个3维空间的样本点,生成的代码如下:mu_vec1=np.array([0,0,0])cov_mat1=np.array([[1,0,0],[0,1,0],[0,0,1]])class1_sample=np.random.multivariate_normal(mu_vec1,cov_mat1,20).Tmu_vec2=np.array([1,1,1])cov_mat2=np.array([[1,0,0],[0,1,0],[0,0,1]])class2_sample=np.random.multivariate_normal(mu_vec2,cov_mat2,20).T赵卫东复旦大学议程获取数据集数据集来自于英国剑桥大学的AT&T人脸数据集,此数据集共有40×10=400张图片,图片大小为112x92,已经经过灰度处理。一共被划分为40个类,每类中包含的是同一个人的10张图像。赵卫东复旦大学议程图片转化为向量由于每张图片的大小为112x92,每张图片共有10304个像素点,这时需要一个图片转化函数ImageConvert(),将每张图片转化为一个10304维向量,代码如下:

defImageConvert():foriinrange(1,41):forjinrange(1,11):path=picture_savePath+"s"+str(i)+"/"+str(j)+".pgm"#单通道读取图片

img=cv2.imread(path,cv2.IMREAD_GRAYSCALE)h,w=img.shapeimg_col=img.reshape(h*w)data.append(img_col)label.append(i)赵卫东复旦大学议程图片转化为向量data变量中存储了每个图片的10304维信息,格式为列表变量(list)。变量label中存储了每个图片的类别标签,为数字1~40。应用numpy生成特征向量矩阵,代码如下:

importnumpyasnpC_data=np.array(data)C_label=np.array(label)赵卫东复旦大学议程分割数据集将训练集与测试集按照4:1的比例进行随机分割,即测试集占20%,代码如下:

fromsklearn.model_selectionimporttrain_test_splitx_train,x_test,y_train,y_test=train_test_split(C_data,C_label,test_size=0.2,random_state=256)赵卫东复旦大学议程PCA主成分分析,降维处理引入sklearn工具进行PCA处理:

fromsklearn.decompositionimportPCApca=PCA(n_components=15,svd_solver='auto').fit(x_train)

方法中的15表示处理后保留维度为15个,auto表示PCA会自动选择合适的SVD算法,进行维度转化:x_train_pca=pca.transform(x_train)x_test_pca=pca.tra

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论