资源下载地址:https://download.csdn.net/download/sheziqiong/85734203
资源下载地址:https://download.csdn.net/download/sheziqiong/85734203
基于 ANN 与 KNN 的图像分类
一、摘要
模型评判参数
在介绍模型评判参数之前,首先要定义一些变量。
混淆矩阵:
True Positive(真正,TP):将正类预测为正类数
True Negative(真负,TN):将负类预测为负类数
False Positive(假正,FP):将负类预测为正类数误报 (Type I error)
False Negative(假负,FN):将正类预测为负类数 → 漏报 (Type II error)
准确率:分类正确的比例,其值为分类正确的样本数/样本总数,计算公式为
准确率:分类正确的比例,其值为分类正确的样本数/样本总数,计算公式为
错误率:被错分的比例,其值可为 1-准确率,也可通过 error rate = (FP+FN)/(TP+TN+FP+FN)求出。
灵敏度:正例中被分对的比例,sensitive = TP/P。
特效度:负例中被分对的比例,specificity = TN/N。
精确度:被分为正例的示例中实际为正例的比例,P=TP/(TP+FP)。
召回率:有多少个正例被分为了正例,R=TP/(TP+FN)。
Macro f1: 指将所有混淆矩阵的 P 和 R 都算出来,求得的平均 P 和 R 求出的 F1.公式为:
Micro f1: 指将所有混淆矩阵中的数都算出来,求得的平均混淆矩阵计算出来的 P 和 R 计算出来的 F1;
训练模型准确率:用训练数据求出的准确率;
测试模型准确率:用测试数据求出的准确率;
训练时间:指完成一整次训练需要消耗的时间。
二、ANN 说明
● 神经元输入输出的计算方法:假设一个训练样本为
,对应的输出向量为
,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.4 实验结果展示
我们知道,模型训练的最终终止条件是在我们所设定的迭代次数内,模型的效果呈现收敛趋势,因此,迭代次数过小,模型的效果可能是欠拟合的,迭代次数过多,模型的效果是过拟合且会浪费过多时间,经过试验,我们在训练的过程中,迭代次数在 5000 左右时,拟合效果良好,因此,在以下的分析中,将不再对迭代次数的影响进行讨论。
因为需要考虑的参数很多,因此我们在对某一种参数进行讨论时,其他变量的参数将取相同的数值。
2.4.1 隐藏层的层数
每层固定 50 个,1 层->2 层->3 层
准确率随隐藏层的变化曲线
Macro f1 随隐藏层的变化曲线
Micro f1 随隐藏层的变化曲线
在这里,我们能够发现当我们的隐藏层层数增加时,模型的效果反而是衰退了。
Accuracy | Macro-F1 | Micro-F1 | |
---|---|---|---|
1 层 | 0.9608333333333332 | 0.9608537368332261 | 0.9608333333333332 |
2 层 | 0.9002777777777776 | 0.9005720715926264 | 0.9002777777777776 |
3 层 | 0.8527777777777776 | 0.8526058902872711 | 0.8527777777777776 |
2.4.2 隐藏层神经元节点的个数
->200->400
准确率随隐藏层神经元节点个数的变化曲线
Macro f1 随隐藏层神经元节点个数的变化曲线
Micro f1 随隐藏层神经元节点个数的变化曲线
我们发现,当隐藏层的神经元节点增加的时候,模型的性能是越来越好的,但其增长的速率是不断变小的。
Accuracy | Macro-F1 | Micro-F1 | |
---|---|---|---|
100 个 | 0.9655555555555555 | 0.9657414691187194 | 0.9655555555555555 |
200 个 | 0.9802777777777778 | 0.980292180327784 | 0.9802777777777778 |
400 个 | 0.9819444444444444 | 0.981951361824427 | 0.9819444444444444 |
2.4.3 窗口大小
->100->150
准确率随窗口大小的变化曲线
Macro f1 随窗口大小的变化曲线
Micro f1 随窗口大小的变化曲线
通过图像可以观察到,对于我们的 ANN 模型来说,窗口大小越大,模型的性能越差。
Accuracy | Macro-F1 | Macro-F1 | |
---|---|---|---|
50 | 0.9608333333333332 | 0.9608537368332261 | 0.9608333333333332 |
100 | 0.9561111111111111 | 0.9560975986343635 | 0.9561111111111111 |
150 | 0.9552777777777777 | 0.9555034520767116 | 0.9552777777777777 |
2.4.4 学习率
- 随着层数的增加,不同学习率训练时间的变化
可以观察到,随着层数的不断叠加,各种学习率的训练时间是不断增加的,且 constant 方法的表现是最好的。
invscaling | constant | adaptive | |
---|---|---|---|
1 层 | 78.23547966000001 | 77.7188933999998 | 77.81292566000047 |
2 层 | 80.345678454938895 | 80.0234578478455 | 79.64839478932734 |
3 层 | 82.69218050000018 | 82.42171543999939 | 82.69385183999984 |
随着单层神经元个数的增加,不同学习率训练时间的变化
可以观察到,随着隐藏层中神经元个数的不断增加,各学习率的其训练时间是不断增加的,其中 invscaling 相对较好。
invscaling | constant | adaptive | |
---|---|---|---|
100 个 | 32.01377033999997 | 34.805954499999984 | 34.05963100000008 |
200 个 | 52.995126360000086 | 59.619636000000014 | 53.854412799999864 |
400 个 | 185.63600004000017 | 188.34518989999992 | 187.09286480000037 |
- 随着窗口大小的增加,不同学习率训练时间的变化
可以观察到,随着 batch_size 的增加,其单次训练时间是呈现出减少的趋势的,其中 constant 的表现最好。
invscaling | constant | adaptive | |
---|---|---|---|
50 | 82.69218050000018 | 82.42171543999939 | 82.69385183999984 |
100 | 72.53692752000043 | 72.31512332000057 | 73.34816916000128 |
150 | 70.87542775999991 | 70.63270916000037 | 70.88269793999935 |
在这里,需要对学习率进行说明,每种学习率(这里的学习率是最终一定能使得收敛的)最终到达的终点是相近的,也就是学习率种类对模型的效果影响是不明显的,它影响的是我们到达收敛趋势阈值的快慢程度,也就是我们的训练时间。
2.5 实验结论
通过进行 ANN 模型的建立、训练和结果分析,我们发现,使用 ANN 模型进行分类处理,模型的训练数据集的精确度最高可以达到 98.20%,测试数据集的精确度可以达到 95.53%,说明使用 ANN 模型进行此场景的学习过程相对较好,但是要注意选取激活函数和权值优化策略。本例中,最好使用 relu 激活函数和 sgd 权值优化策略,可以获得客观的训练结果和较短的训练时间。
3.4 实验结果介绍
这里使用控制变量法:
控制迭代次数 number=1:
3.4.1 邻居个数变化
变量是邻居个数 k_num(range:1->9,step:1)
Accuracy | Macro f1 | Micro f1 | |
---|---|---|---|
1 | 0.9836111111111111 | 0.9836526557145753 | 0.9836111111111111 |
2 | 0.9761111111111112 | 0.9762436019980573 | 0.9761111111111112 |
3 | 0.9811111111111112 | 0.9812310598084594 | 0.9811111111111112 |
4 | 0.9786111111111111 | 0.9788235617504288 | 0.9786111111111111 |
5 | 0.9780555555555556 | 0.978309935852902 | 0.9780555555555556 |
6 | 0.9783333333333334 | 0.9785472937125508 | 0.9783333333333334 |
7 | 0.9786111111111111 | 0.9788243872282233 | 0.9786111111111112 |
8 | 0.9755555555555555 | 0.9758129289967621 | 0.9755555555555555 |
9 | 0.9766666666666667 | 0.9769256358759116 | 0.9766666666666667 |
准确率随邻居个数的变化图像
Macro f1 随邻居个数的变化图像
Micro f1 随邻居个数的变化图像
3.4.2 迭代次数
变量是迭代次数 number(range:5->9,step:1)
Accuracy | Macro f1 | Micro f1 | |
---|---|---|---|
5 | 0.9811111111111112 | 0.9812310598084594 | 0.9811111111111112 |
6 | 0.9811111111111112 | 0.9812310598084594 | 0.9811111111111112 |
7 | 0.981111111111111 | 0.9812310598084595 | 0.981111111111111 |
8 | 0.981111111111111 | 0.9812310598084595 | 0.981111111111111 |
9 | 0.9811111111111112 | 0.9812310598084595 | 0.9811111111111112 |
Macro f1 随迭代次数的变化图像
Micro f1 随迭代次数的变化图像
通过图像和表中数据可以明显看出 5 轮迭代之后,模型的效果已经呈现收敛趋势,指标基本一致,可见对于 k_num=3 的情况我们尝试了过多的迭代,浪费时间。接下来数据可以一定程度减少 number,减少过拟合可能和所花时间。
资源下载地址:https://download.csdn.net/download/sheziqiong/85734203
资源下载地址:https://download.csdn.net/download/sheziqiong/85734203