如何研究每个数据对深度神经网络模型的影响?

Posted

技术标签:

【中文标题】如何研究每个数据对深度神经网络模型的影响?【英文标题】:How to study the effect of each data on a deep neural network model? 【发布时间】:2017-12-17 18:20:51 【问题描述】:

我正在使用 Python 和 Keras 库训练神经网络模型。

我的模型测试准确率很低(60.0%),我尝试了很多方法来提高它,但我做不到。我正在使用 DEAP 数据集(总共 32 名参与者)来训练模型。我使用的拆分技术是固定的。如下:培训28人,验证2人,测试2人。

对于我使用的模型如下。

顺序模型 优化器 = Adam 使用 L2_regularizer、高斯噪声、dropout 和批量归一化 隐藏层数 = 3 激活 = relu 编译损失 = categorical_crossentropy 初始化器 = he_normal

现在,我正在使用训练测试技术(也修复了一项)来拆分数据,我得到了更好的结果。然而,我发现一些参与者正在以负面的方式影响训练的准确性。因此,我想知道是否有办法研究每个数据(参与者)对模型准确性(性能)的影响?

最好的问候,

【问题讨论】:

不知道你的模型的细节,但是一个有 32 个条目的数据集对于神经网络来说似乎真的很小,也许你应该更简单一些。训练验证测试是获得无偏结果的方法,但如果您不进行超参数调整,训练测试拆分应该没问题。虽然不应该改变太多的准确性(可能是由于数据集小),如果你愿意,你可以尝试像 k-fold 交叉验证这样的东西,它会使用你的所有数据进行训练。您可以使用异常检测等.. 来查找和消除不良数据.. 但是由于您已经有一个小数据集,也许可以找到一种方法来填充它? 感谢@umutto的回答,我忘了说每个参与者有40次试验,因此,数据集的总大小是(1280 x 503),其中503是特征数.我已经尝试过 k 折,它也给出了一个小的准确性,说明我为什么要寻找坏数据。增加噪声或复制数据不是小数据集的解决方案之一吗? 您的问题过于宽泛,实际提供的信息很少。为了让其他人能够帮助您,请参阅“如何创建最小、完整且可验证的示例”***.com/help/mcve 1280 仍然很小(尤其是 503 特征)但应该可以工作,您的网络至少应该是过拟合的。通过良好的正则化方法,您可以获得更好的结果。你的训练准确率如何?也是的,添加噪音,创建人工数据很有帮助,但我不确定哪种数据增强方法对您的数据集有用,我想您可以从一些噪音开始看看。交叉验证、训练测试拆分与您测量结果的方式有关,尽管糟糕的实施可能会产生误导性结果,但您应该专注于超参数。 @umutto 是的,它仍然很小,当我使用更多功能时,我没有得到更好的结果。是的,数据中存在过度拟合,我尝试使用 dropout 和 L2 正则化来解决它。正如我所说,现在我正在使用训练-测试拆分技术(80% 训练,20% 测试),测试的准确率提高到 68%,训练的准确率提高到 66%。我尝试使用 k 倍拆分对超参数进行网格搜索,但我得到的更高准确度是 60%。 【参考方案1】:

来自我的 Starting deep learning hands-on: image classification on CIFAR-10 教程,我在其中坚持跟踪两者:

全局指标(对数损失、准确性), 示例(正确和错误地分类案例)。

后者可能会帮助我们判断哪种模式有问题,并且在许多情况下帮助我更改网络(或补充训练数据,如果是这样的话)。

以及它是如何工作的示例(这里使用 Neptune,尽管您可以在 Jupyter Notebook 中手动完成,或使用 TensorBoard 图像通道):

然后查看特定示例以及预测概率:

完全免责声明:我与 deepsense.ai、创作者或 Neptune - Machine Learning Lab 合作。

【讨论】:

【参考方案2】:

这可能是一个比你喜欢的更广泛的答案,但我希望它仍然有用。

神经网络很棒。我喜欢他们。但是绝大多数***性能、超调优的模型都是集成的。结合使用 stats-on-crack 技术,其中包括神经网络。造成这种情况的主要原因之一是某些技术可以更好地处理某些情况。在您的情况下,您遇到了一种情况,我建议您探索替代技术。

对于异常值,严格的价值分析是第一道防线。您也可以考虑使用principle component analysis 或linear discriminant analysis。您也可以尝试使用density estimation 或nearest neighbors 将它们赶出去。还有许多其他处理异常值的技术,希望您会发现我指出的工具很容易实现(在他们的文档的帮助下); sklearn 倾向于接受为 Keras 准备的数据。

【讨论】:

以上是关于如何研究每个数据对深度神经网络模型的影响?的主要内容,如果未能解决你的问题,请参考以下文章

Keras深度学习实战——神经网络性能优化技术详解

MSRA 系统研究员陈程:MMdnn 如何让模型在不同深度学习框架间转换?

陈程:MMdnn如何让模型在不同深度学习框架间转换?

最新成果深度卷积神经网络图像识别模型对抗鲁棒性技术综述

《Andrew Ng深度学习》笔记1

KDD2020可解释深度神经网络,200页ppt