
♻️ 资源大小8.79MB➡️资源下载https://download.csdn.net/download/s1t16/87430307基于 ANN 与 KNN 的图像分类一、摘要1.1 摘要当下人工智能行业发展迅猛在各个领域都有涉及。人工智能的一大用处就是分类操作在智能分类领域中人工智能可以进行科学的模拟操作以达到人们的相关需求。在本次大作业中需要使用相关的分类器对 200 类比的图片进行分类。首先我们选择了 ANN 模型即人工神经网络模型这个模型使用神经网络技术模拟人体神经网络进行相关的训练是对人脑组织结构和运行机制的某种抽象、简化和模拟。因此与传统的数据处理方法相比神经网络技术在处理模糊数据、随机性数据、非线性数据方面具有明显优势对规模大、结构复杂、信息不明确的系统尤为适用。然后我们选择了 KNN 模型即 K 最近邻KNNK-NearestNeighbor分类算法。是数据挖掘分类技术中最简单的方法之一。是使用纯数学方法的适用于样本容量比较大的类域的自动分类方法。因为图片样本的相关特征已经提取出来而且标签也已经得到了标注所以我们只需要进行构建分类器并训练的操作即可。我们使用以上两种模型进行构建分类并观察相关参数对结果指标的影响最后得出结论。1.2 模型评判参数在介绍模型评判参数之前首先要定义一些变量。混淆矩阵True Positive(真正TP)将正类预测为正类数True Negative(真负TN)将负类预测为负类数False Positive(假正FP)将负类预测为正类数误报 (Type I error)False Negative(假负FN)将正类预测为负类数 → 漏报 (Type II error)准确率分类正确的比例其值为分类正确的样本数/样本总数计算公式为准确率分类正确的比例其值为分类正确的样本数/样本总数计算公式为错误率被错分的比例其值可为 1-准确率也可通过 error rate (FPFN)/(TPTNFPFN)求出。灵敏度正例中被分对的比例sensitive TP/P。特效度负例中被分对的比例specificity TN/N。精确度被分为正例的示例中实际为正例的比例PTP/TPFP。召回率有多少个正例被分为了正例RTP/TPFN。Macro f1: 指将所有混淆矩阵的 P 和 R 都算出来求得的平均 P 和 R 求出的 F1.公式为Micro f1: 指将所有混淆矩阵中的数都算出来求得的平均混淆矩阵计算出来的 P 和 R 计算出来的 F1;训练模型准确率用训练数据求出的准确率;测试模型准确率用测试数据求出的准确率;训练时间指完成一整次训练需要消耗的时间。二、ANN 说明2.1 ANN 模型原理与介绍ANN 是指由大量的处理单元(神经元) 互相连接而形成的复杂网络结构是对人脑组织结构和运行机制的某种抽象、简化和模拟。人工神经网络Artificial Neural Network简称 ANN 以数学模型模拟神经元活动是基于模仿大脑神经网络结构和功能而建立的一种信息处理系统。人工神经网络有多层和单层之分每一层包含若干神经元各神经元之间用带可变权重的有向弧连接网络通过对已知信息的反复学习训练通过逐步调整改变神经元连接权重的方法达到处理信息、模拟输入输出之间关系的目的。它不需要知道输入输出之间的确切关系不需大量参数只需要知道引起输出变化的非恒定因素即非常量性参数。因此与传统的数据处理方法相比神经网络技术在处理模糊数据、随机性数据、非线性数据方面具有明显优势对规模大、结构复杂、信息不明确的系统尤为适用。由 Minsley 和 Papert 提出的多层前向神经元网络(也称多层感知器)是目前最为常用的网络结构人工神经网络是由大量处理单元互联组成的非线性、自适应信息处理系统。它是在现代神经科学研究成果的基础上提出的试图通过模拟大脑神经网络处理、记忆信息的方式进行信息处理。人工神经网络具有四个基本特征非线性 非线性关系是自然界的普遍特性。大脑的智慧就是一种非线性现象。人工神经元处于激活或抑制二种不同的状态这种行为在数学上表现为一种非线性关系。具有阈值的神经元构成的网络具有更好的性能可以提高容错性和存储容量。非局限性 一个神经网络通常由多个神经元广泛连接而成。一个系统的整体行为不仅取决于单个神经元的特征而且可能主要由单元之间的相互作用、相互连接所决定。通过单元之间的大量连接模拟大脑的非局限性。联想记忆是非局限性的典型例子。非常定性 人工神经网络具有自适应、自组织、自学习能力。神经网络不但处理的信息可以有各种变化而且在处理信息的同时非线性动力系统本身也在不断变化。经常采用迭代过程描写动力系统的演化过程。非凸性 一个系统的演化方向在一定条件下将取决于某个特定的状态函数。例如能量函数它的极值相应于系统比较稳定的状态。非凸性是指这种函数有多个极值故系统具有多个较稳定的平衡态这将导致系统演化的多样性。人工神经网络的特点和优越性主要表现在三个方面第一具有自学习功能。例如实现图像识别时只在先把许多不同的图像样板和对应的应识别的结果输入人工神经网络网络就会通过自学习功能慢慢学会识别类似的图像。自学习功能对于预测有特别重要的意义。预期未来的人工神经网络计算机将为人类提供经济预测、市场预测、效益预测其应用前途是很远大的。第二具有联想存储功能。用人工神经网络的反馈网络就可以实现这种联想。第三具有高速寻找优化解的能力。寻找一个复杂问题的优化解往往需要很大的计算量利用一个针对某问题而设计的反馈型人工神经网络发挥计算机的高速运算能力可能很快找到优化解。● 神经元输入输出的计算方法假设一个训练样本为对应的输出向量为l 为类别个数即输出向量是类别的独热编码。隐藏层第 h 个节点的输入权重为对应的偏移量为。第 j 个输出层节点的输入权重为对应的偏移量为。q 为隐藏层节点个数。令为 sigmoid 函数如图所示第 j 个输出神经元的输入为第 j 个输出神经元的输出为第 h 个隐层神经元的输入为第 h 个隐层神经元的输出为● 训练算法的计算方法如下图所示假设一个三类别分类问题对一个训练样本l 为类别个数设神经网络的输出为。即那么网络在输出节点上的均方误差为。BP 算法的本质就是梯度下降在训练神经网络的时候任意参数的迭代更新公式为。隐藏层到输出层的权值的更新过程如下构成了影响了最终影响了 E因此由链式法则可知因此。输出层的阈值更新如下此时误差被逆向传播到隐藏层同理可得和。2.2 ANN 模型参数介绍隐藏层层数指网络中输入层与输出层之间的非线性层数多个隐藏层可以用于拟合非线性函数。层数越深理论上拟合函数的能力增强但可能发生过拟合问题同时也会增加训练难度使模型难以收敛。在训练过程中每个隐藏层中的神经元将前一层的值进行加权线性求和转换再通过非线性激活函数。 输出层接收到的值是最后一个隐藏层的输出经过变换而来的。学习率种类指使用的学习率的步长。学习率(Learning rate)作为监督学习以及深度学习中重要的超参其决定着目标函数能否收敛到局部最小值以及何时收敛到最小值。合适的学习率能够使目标函数在合适的时间内收敛到局部最小值。迭代次数指迭代运算中循环次数的上限当循环次数达到这一值时停止训练。一般来说学习次数越多学习效果越好但过多的迭代次数会消耗大量时间还可能产生过拟合所以应选用合适的迭代次数。窗口大小指一次训练所选取的样本数。窗口大小影响模型的优化程度和速度。同时其直接影响到 GPU 内存的使用情况。无窗口训练的梯度是准确的但由于训练速度较慢只适合小样本的数据随着窗口的增大梯度会越来越准确但梯度非常准确后再增加窗口大小就无太大意义了。单层隐藏层神经元个数指一个隐藏层中有多少个神经元。神经元太少将导致欠拟合(underfitting)但使用过多的神经元可能导致过拟合且会增加训练时间。神经元的最佳数量需要经过不断实验来获得。激活函数指神经网络中用于计算输入和偏差的加权和的函数用于确定神经元是否可以释放。如果不加激活函数则无论由多少层隐含层最终结果仍会是原始输入的线性变化所以 ANN 中每个隐含层都会配一个激活函数用来提供非线性变化。激活函数具有改善数据学习模式的能力从而实现了特征检测的自动化并证明它们在神经网络中的合理性且对跨领域分类很有帮助。比较常见的几种激活函数由 Sigmoid 函数Tanh 函数以及 ReLU 函数。Sigmoid 函数这是一个在生物学中常见的 S 型函数也称为 S 型生长曲线。在信息科学中由于其单增以及反函数单增等性质Sigmoid 函数常被用作神经网络的阈值函数将变量映射到 0,1 之间。公式如下。Sigmoid 方法图像Tanh 函数这双曲正切函数由基本双曲函数双曲正弦和双曲余弦推导而来。公式如下。Tanh 方法图像ReLU 函数用于隐层神经元输出公式如下。Relu 方法图像2.3 相关指标介绍训练停止条件迭代完成且呈现收敛趋势(迭代法的收敛性x(0)是人为地给定的初始迭代向量G 和 d 分别为 n×n 矩阵和 n 维实向量且满足 QAI-GQbd此处 Q 是某一非奇异的 n 阶方阵.若存在 x∈Rn 使对任意的初值 x(0)由表达式产生的序列{x(k)}都收敛到 x则称表达式是收敛的)训练时间训练花费时间。迭代次数迭代运算过程中循环的次数。识别率被正确识别的输入模式的数量占被识别的所有输入模式的总数的百分比。是衡量模式识别系统性能的重要指标其值越高则识别率越高系统性能越好。训练集确定模型后用于训练参数训练的是普通参数每多加入一个数据对模型进行训练模型中就会受到影响的参数通过多次迭代不断更新是一个梯度下降的过程而不是超参数超参数是指训练开始之前设置的参数超参数的选择与训练过程实际上是独立的训练过程不会影响超参数。但是训练结束后可以根据训练结果考虑超参数是否可优化可优化的话就调整超参数的值开始下一次训练。测试集虽然验证集没有对模型的参数产生影响但是我们却根据验证集的测试结果的准确度来调整参数所以验证集对结果还是有影响的即使得模型在验证集上达到最优。就是在很多个模型中验证集选择了代价函数最小的一个模型。虽然在这个模型上代价很小但并不代表在其他数据上代价也小。所以需要一个完全没有经过训练的测试集来再最后测试模型的准确率。2.4 实验结果展示我们知道模型训练的最终终止条件是在我们所设定的迭代次数内模型的效果呈现收敛趋势因此迭代次数过小模型的效果可能是欠拟合的迭代次数过多模型的效果是过拟合且会浪费过多时间经过试验我们在训练的过程中迭代次数在 5000 左右时拟合效果良好因此在以下的分析中将不再对迭代次数的影响进行讨论。因为需要考虑的参数很多因此我们在对某一种参数进行讨论时其他变量的参数将取相同的数值。2.4.1 隐藏层的层数每层固定 50 个1 层-2 层-3 层准确率随隐藏层的变化曲线Macro f1 随隐藏层的变化曲线Micro f1 随隐藏层的变化曲线在这里我们能够发现当我们的隐藏层层数增加时模型的效果反而是衰退了。AccuracyMacro-F1Micro-F11 层0.96083333333333320.96085373683322610.96083333333333322 层0.90027777777777760.90057207159262640.90027777777777763 层0.85277777777777760.85260589028727110.85277777777777762.4.2 隐藏层神经元节点的个数-200-400准确率随隐藏层神经元节点个数的变化曲线Macro f1 随隐藏层神经元节点个数的变化曲线Micro f1 随隐藏层神经元节点个数的变化曲线我们发现当隐藏层的神经元节点增加的时候模型的性能是越来越好的但其增长的速率是不断变小的。AccuracyMacro-F1Micro-F1100 个0.96555555555555550.96574146911871940.9655555555555555200 个0.98027777777777780.9802921803277840.9802777777777778400 个0.98194444444444440.9819513618244270.98194444444444442.4.3 窗口大小-100-150准确率随窗口大小的变化曲线Macro f1 随窗口大小的变化曲线Micro f1 随窗口大小的变化曲线通过图像可以观察到对于我们的 ANN 模型来说窗口大小越大模型的性能越差。AccuracyMacro-F1Macro-F1500.96083333333333320.96085373683322610.96083333333333321000.95611111111111110.95609759863436350.95611111111111111500.95527777777777770.95550345207671160.95527777777777772.4.4 学习率随着层数的增加不同学习率训练时间的变化可以观察到随着层数的不断叠加各种学习率的训练时间是不断增加的且 constant 方法的表现是最好的。invscalingconstantadaptive1 层78.2354796600000177.718893399999877.812925660000472 层80.34567845493889580.023457847845579.648394789327343 层82.6921805000001882.4217154399993982.69385183999984随着单层神经元个数的增加不同学习率训练时间的变化可以观察到随着隐藏层中神经元个数的不断增加各学习率的其训练时间是不断增加的其中 invscaling 相对较好。invscalingconstantadaptive100 个32.0137703399999734.80595449999998434.05963100000008200 个52.99512636000008659.61963600000001453.854412799999864400 个185.63600004000017188.34518989999992187.09286480000037随着窗口大小的增加不同学习率训练时间的变化可以观察到随着 batch_size 的增加其单次训练时间是呈现出减少的趋势的其中 constant 的表现最好。invscalingconstantadaptive5082.6921805000001882.4217154399993982.6938518399998410072.5369275200004372.3151233200005773.3481691600012815070.8754277599999170.6327091600003770.88269793999935在这里需要对学习率进行说明每种学习率这里的学习率是最终一定能使得收敛的最终到达的终点是相近的也就是学习率种类对模型的效果影响是不明显的它影响的是我们到达收敛趋势阈值的快慢程度也就是我们的训练时间。2.5 实验结论通过进行 ANN 模型的建立、训练和结果分析我们发现使用 ANN 模型进行分类处理模型的训练数据集的精确度最高可以达到 98.20%测试数据集的精确度可以达到 95.53%说明使用 ANN 模型进行此场景的学习过程相对较好但是要注意选取激活函数和权值优化策略。本例中最好使用 relu 激活函数和 sgd 权值优化策略可以获得客观的训练结果和较短的训练时间。三、KNN 说明3.1 KNN 模型原理与介绍KNN 算法的核心思想是如果一个样本在特征空间中的 k 个最相邻的样本中的大多数属于某一个类别则该样本也属于这个类别并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。KNN 是一种即可用于分类又可用于回归的机器学习算法。对于给定测试样本基于距离度量找出训练集中与其最靠近的 K 个训练样本然后基于这 K 个“邻居”的信息来进行预测。在分类任务中可使用投票法选择这 K 个样本中出现最多的类别标记作为预测结果在回归任务中可使用平均法将这 K 个样本的实值输出标记的平均值作为预测结果。当然还可以基于距离远近程度进行加权平均等方法。闵可夫斯基距离minkowski欧氏距离euclideanp2曼哈顿距离manhattanp1切比雪夫距离chebyshevp∞:下面分析 k 值过大和过小造成的影响k 值较小就相当于用较小的领域中的训练实例进行预测训练误差近似误差小偏差小泛化误差会增大方差大换句话说K 值较小就意味着整体模型变得复杂容易发生过拟合k 值较大就相当于用较大领域中的训练实例进行预测泛化误差小方差小但缺点是近似误差大偏差大换句话说K 值较大就意味着整体模型变得简单容易发生欠拟合一个极端是 k 等于样本数 m则完全没有分类此时无论输入实例是什么都只是简单的预测它属于在训练实例中最多的类模型过于简单。对于 k 值的选择没有一个固定的经验sklearn 默认为 5一般根据样本的分布选择一个较小的值可以通过交叉验证选择一个合适的 k 值。KNN 算法一般是用多数表决方法即由输入实例的 K 个邻近的多数类决定输入实例的类。这也是经验风险最小化的结果。接下来对 KNN 算法的思想总结一下就是在训练集中数据和标签已知的情况下输入测试数据将测试数据的特征与训练集中对应的特征进行相互比较找到训练集中与之最为相似的前 K 个数据则该测试数据对应的类别就是 K 个数据中出现次数最多的那个分类其算法的描述为计算测试数据与各个训练数据之间的距离按照距离的递增关系进行排序选取距离最小的 K 个点确定前 K 个点所在类别的出现频率返回前 K 个点中出现频率最高的类别作为测试数据的预测分类。3.2 模型相关参数介绍迭代次数同上文同一个模型进行多次训练结果取平均值目的是减小误差。邻居个数超参数指基于每个查询点的最近邻实现选取个数其值高度依赖数据。通常较大的值可以抑制噪声的影响但会使得分类界限不明显。半径暴力求解法的可选邻居距离上限用来筛选近邻样本。叶子节点数计算树算法的叶子节点数目作为参数传递给球树与 KD 树影响训练的的资源消耗与训练效果常见的妥协值为 30。数据点间距离度量法用来计算数据点间的距离默认使用欧式距离但也可以使用 KD 树法与球树法。方法的选择取决于样本数量、维度、数据结构、近邻数、查询点数。3.3 相关指标介绍训练停止条件迭代完成且呈现收敛趋势(迭代法的收敛性x(0)是人为地给定的初始迭代向量G 和 d 分别为 n×n 矩阵和 n 维实向量且满足 QAI-GQbd此处 Q 是某一非奇异的 n 阶方阵.若存在 x∈Rn 使对任意的初值 x(0)由表达式产生的序列{x(k)}都收敛到 x则称表达式是收敛的)训练时间训练花费时间。迭代次数迭代运算过程中循环的次数。识别率被正确识别的输入模式的数量占被识别的所有输入模式的总数的百分比。是衡量模式识别系统性能的重要指标其值越高则识别率越高系统性能越好。训练集确定模型后用于训练参数训练的是普通参数每多加入一个数据对模型进行训练模型中就会受到影响的参数通过多次迭代不断更新是一个梯度下降的过程而不是超参数超参数是指训练开始之前设置的参数超参数的选择与训练过程实际上是独立的训练过程不会影响超参数。但是训练结束后可以根据训练结果考虑超参数是否可优化可优化的话就调整超参数的值开始下一次训练。测试集虽然验证集没有对模型的参数产生影响但是我们却根据验证集的测试结果的准确度来调整参数所以验证集对结果还是有影响的即使得模型在验证集上达到最优。就是在很多个模型中验证集选择了代价函数最小的一个模型。虽然在这个模型上代价很小但并不代表在其他数据上代价也小。所以需要一个完全没有经过训练的测试集来再最后测试模型的准确率。3.4 实验结果介绍这里使用控制变量法控制迭代次数 number13.4.1 邻居个数变化变量是邻居个数 k_num(range:1-9,step:1)AccuracyMacro f1Micro f110.98361111111111110.98365265571457530.983611111111111120.97611111111111120.97624360199805730.976111111111111230.98111111111111120.98123105980845940.981111111111111240.97861111111111110.97882356175042880.978611111111111150.97805555555555560.9783099358529020.978055555555555660.97833333333333340.97854729371255080.978333333333333470.97861111111111110.97882438722822330.978611111111111280.97555555555555550.97581292899676210.975555555555555590.97666666666666670.97692563587591160.9766666666666667准确率随邻居个数的变化图像Macro f1 随邻居个数的变化图像Micro f1 随邻居个数的变化图像3.4.2 迭代次数变量是迭代次数 number(range:5-9,step:1)AccuracyMacro f1Micro f150.98111111111111120.98123105980845940.981111111111111260.98111111111111120.98123105980845940.981111111111111270.9811111111111110.98123105980845950.98111111111111180.9811111111111110.98123105980845950.98111111111111190.98111111111111120.98123105980845950.9811111111111112准确率随迭代次数的变化图像Macro f1 随迭代次数的变化图像Micro f1 随迭代次数的变化图像通过图像和表中数据可以明显看出 5 轮迭代之后模型的效果已经呈现收敛趋势指标基本一致可见对于 k_num3 的情况我们尝试了过多的迭代浪费时间。接下来数据可以一定程度减少 number减少过拟合可能和所花时间。3.5 实验结论通过进行 KNN 模型的建立、训练和结果分析我们发现使用 KNN 模型进行分类处理模型的训练数据集精度最高可以达到 100%比 ANN 高模型的测试数据及精度最高可以到达 98.3%也比 ANN 的模型高说明使用 KNN 模型在分类处理问题中比 ANN 有更好的分类效果但是也需要注意对于权重函数和查找的邻居数的选择。