第二篇文章来自穆罕默德Muquit来谈谈实现multi-order深度学习模型的建模,以提高精确度。
在典型的分类问题,深层神经网络(款)测量精度的比例的正确类预测对地面真理。然而,款的最后一层包含不止一个类名的更多信息,而且还包含概率的概率密度阵列中的每个类款。因此,典型的方法可能忽略大量的输出数据。
在这个博客我们使用了这个想法
概率密度的数组本身可以使用一组额外的建模预测和调查情况这失去的信息可以用来提高一个款的准确性。
图1所示。显示了该方法的基本思想。
我们引入一个质量保证(QA)应用程序作为例子。
对于一个给定的样本产品检查,使用多个样本的图像作为输入。捕获的图像是通过旋转样品产品的QA成像系统,捕捉60每样本图片。总共135的样品在这个案例研究中使用,在55的一些缺陷和剩余的80个样本是正常的。我们将这些数据分为训练和测试数据如下:
|
训练数据 |
测试数据 |
正常的样品: |
57 |
23 |
叛逃的样本: |
43 |
12 |
总独特的样品: |
One hundred. |
35 |
总图像: |
6000年 |
2100年 |
款是第一个使用训练图像生成与GoogleNet转移学习。2100个测试图像的整体精度为67.43%,精度为
正常的和
叛逃图像分别为67.05%和87.18%,分别。尽管它可以识别个人叛逃图像精度高,它不能识别正常图像近三分之一的病例。
注意,这些结果只在个别image-to-class水平,但我们有60每样本图片。即使这些60预测结果的精度很低
单独整理在一起,一个额外的模型(见图)可能导致非常高的准确性,这在下一节中我们将探讨。
图:图像相同的样品整理在一起形成一个很长的预测数组作为输入第二个模型。这个图显示的想法二阶模型,但请注意,这可以进一步扩展到多级的建模。
多级的建模方法
我将4多级的建模方法从最简单到最复杂的,所有的原始精度的提高个人image-to-class准确性。代码重新创建这些实验和情节是可用的
文件交换
天真的方法
我们设定一个规则,如果
N60的图像预测叛逃,那么样本将被称为叛逃。不可显示正常,叛逃的精度水平移动与n的变化值图三显示了ROC曲线。
负载ReadyVariables。垫numImg =宽度(TrainDataTable) 1;dfctIndx = TestProdLabels = =“叛逃”;nrIndx = ~ dfctIndx;Nnr =总和(nrIndx);Ndf =总和(dfctIndx);SA =总和(table2array (TestDataTable) < = 0.5, 2);nAcr = 0 (numImg, 1);dAcr = 0 (numImg, 1);k = 1: numImg rslt = SA > = k;dAcr (k) =总和(rslt = = 1 & dfctIndx = = 1) / Ndf;nAcr (k) =总和(rslt = = 0 & nrIndx = = 1) / Nnr;结束
两个精度一致的曲线就知道,我们可以看到,如果我们设置为N 17或18,然后正常叛逃样本可以检测精度低至4.35%和8.33%,分别。我们理解,这种方法并不是有效的排序输出模型预测精度很低对个人图像。
Normal-Defected模式作为机器学习的预测
在第二个方法中,我们只训练第二个模型通过使用类别预测所有60的图像。为每个单独的样例中,我们创建一个1 x 60组二进制值,即:1或0,分配一个值(例如,
正常:1或
叛逃:0)。我们为训练样本创建数组,训练一个模型,然后创建数组为测试样本评价模型。我们发现精度提高到90%以上。而不是只看0或1的数,观察0或1的被安排在一个数组是区分样品更有效。
DiscTestDataTable =双(table2array (TestDataTable(:, 1:结束))> 0.5);DiscTestDataTable = array2table (DiscTestDataTable); %数组表转换
测试和训练数据,将数据设置为1,如果正常,如果叛逃。这是表示原始数据大于5的概率密度表。
所以使用第一个样品测试数据,转换看起来像这样:
测试样本1,图片1 - 20:
0.841 |
0.457 |
0.685 |
0.137 |
0.983 |
0.808 |
0.904 |
0.928 |
0.979 |
0.796 |
0.988 |
0.285 |
0.976 |
0.542 |
0.411 |
0.235 |
0.912 |
0.287 |
0.614 |
0.484 |
测试样本1阈值为0.5:
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
我们训练机器学习分类器识别的模式0和1是区分正常和叛逃样本。
bTM = trainClassifier (DiscTrainDataTable numImg);英国石油(bP) = bTM.predictFcn (DiscTestDataTable);bAcc = 100 * (bP = = TestProdLabels) /元素个数之和(bP);disp([阈值数据的准确性:,num2str (bAcc), ' % '])
阈值数据精度:91.4286%
概率分布值作为机器学习的预测
在前面的方法中,不能保证0.5是最好的价值将预测因素划分为两个不同的类。因此,使用概率密度值本身(连续值)作为预测可能的下一步改进。我们训练和评估模型,如以下代码所示。因为信息损失降低,我们看到一个好的上升精度(97.14%)相比,在这种方法中一个(91.43%)。
TM = trainClassifier (TrainDataTable numImg); %建模使用连续模式P = TM.predictFcn (TestDataTable); %预测有关测试数据(Sample-to-Class水平预测)acc = 100 *总和(P = = TestProdLabels) /元素个数(P);disp([正常数据的准确性:,num2str (acc), ' % '])
培训LSTM神经网络
还有一点,就是获得60概率密度值之间的一致性对60图像,捕获时间序列的方式。这个想法是:对于一个给定的样本,叛逃的缺陷应该是可见的一些图片的60图像。结果,关于这样的叛逃样本,概率密度值指示应该出现在一群叛变条件。然而,对于一个给定的正常样本,即使有一些指示叛逃条件概率密度值错误,他们应该出现随机噪声或其他因素造成的。
在本节中,我们使用概率密度LSTM神经网络训练数据和评估其准确性。这一次,与100年与神经网络训练精度达到100%时代。
% % LSTM网络的评价PL =分类(网络,tstLstm); %测试数据预测lAcc = 100 * (PL = = TestProdLabels) /元素个数之和(PL); %计算精度disp ([LSTM精度:,num2str (lAcc), ' % '])
LSTM精度:100%
最后的评论
在这个博客中,我们表明,解释的一般方法神经网络的输出数据到一个单独的决定可能不是最好的实践得到最优的结果。我们之前介绍的方法表明,多级的建模使用输出从深层神经网络(款)显然很低精度最终会导致在实际应用精度高。
我们还介绍了不同方法的多级的建模表明,使用概率分布值,而不是预测类可以帮助获得更好的精度。此外,对输入图像的情况下获得时间序列的方式,基于LSTM方法可能进一步有助于提高准确性。
完整的代码可以在这里:
//www.tianjin-qmedu.com/matlabcentral/fileexchange/79092-multiple-order-modeling-for-deep-learning
有任何评论或问题为穆罕默德?请在下面留下你的评论。
评论
留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。