为啥不同的机器学习领域都可以使用CNN,CNN解决了这些领域的哪些共性问题?是如何解决的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥不同的机器学习领域都可以使用CNN,CNN解决了这些领域的哪些共性问题?是如何解决的?相关的知识,希望对你有一定的参考价值。

卷积神经网络 (CNN) 是一种神经网络,特别适用于涉及处理和分析具有网格状结构的数据(如图像)的任务。CNN能够通过对数据应用一组学习的过滤器来处理和分析图像,这使他们能够学习不同尺度的特征和模式,并自动识别图像中的对象和特征。
CNN在各种任务上取得成功的关键原因之一是因为它们能够自动从数据中学习特征,这使他们能够在各种任务上表现良好,而无需大量的手动调整或特征工程。这对于图像分类、对象检测和分割等任务特别有用,在这些任务中,模型需要能够识别和分类图像中的对象和特征。
CNN被广泛使用的另一个原因是,它们能够在整个输入中使用共享权重和偏差来有效地处理数据,这使他们能够学习与整个输入相关的特征。这对于图像分类等任务特别有用,在这些任务中,模型需要能够识别和分类对象和特征,而不管它们在图像中的位置如何。
总体而言,CNN在广泛的任务上取得了成功,因为它们能够自动从数据中学习特征,并且因为它们能够在整个输入中使用共享权重和偏差来有效地处理数据。这使它们成为涉及处理和分析具有网格状结构的数据(如图像)的任务的强大工具。
参考技术A 蓝海大脑深度学习高性能计算液冷事业部研究人员表示:CNN的关键是卷积运算,卷积核与卷积输入层进行局部连接可以获取整个输入的局部特征信息或者说是每个输入特征的组合特征。所以CNN的本质是完成了特征提取或者说是对原始特征的特征组合工作,从而增加模型的表达能力。不同领域的机器学习都是通过数据的特征进行建模,从而解决该领域的问题。故CNN解决了不同领域的特征提取问题,所用的方法是基于局部连接/权值共享/池化操作/多层次结构。本回答被提问者采纳

为啥有时 CNN 模型只能预测所有其他类别中的一类?

【中文标题】为啥有时 CNN 模型只能预测所有其他类别中的一类?【英文标题】:Why do sometimes CNN models predict just one class out of all others?为什么有时 CNN 模型只能预测所有其他类别中的一类? 【发布时间】:2021-04-22 01:38:29 【问题描述】:

我对深度学习领域比较陌生,所以请不要像 Reddit 那样刻薄!这似乎是一个普遍的问题,所以我不会在这里提供我的代码,因为它似乎没有必要(如果是,这里是 colab 的链接)

关于数据的一点:可以找到原始数据here。它是 82 GB 原始数据集的缩小版本。

一旦我在这方面训练了我的 CNN,它每次都预测“无糖尿病视网膜病变”(无 DR),准确率达到 73%。这是因为大量的 No DR 图像还是其他原因?我不知道!我预测的 5 个类是 ["Mild", "Moderate", "No DR", "Proliferative DR", "Severe"]

这可能只是糟糕的代码,希望你们能帮忙

【问题讨论】:

您可以在训练中删除一些 No DR 图像,并测试您的理论! 我确实尝试过这样做!虽然准确率下降到 35%,不到一半,但该模型至少可以预测其他类别,而且我不介意在 6 层 CNN 上的准确率如此之低;) 【参考方案1】:

正如 Ivan 已经指出的那样,您有一个班级不平衡问题。这可以通过以下方式解决:

    在线硬负挖掘:在计算损失后的每次迭代中,您可以对批次中属于“无DR”类的所有元素进行排序,只保留最差的k。然后你只使用这些更差的 k 来估计梯度,然后丢弃所有其余的。 参见,例如:Abhinav Shrivastava、Abhinav Gupta 和 Ross Girshick Training Region-based Object Detectors with Online Hard Example Mining (CVPR 2016)

    Focal loss: 对“vanilla”交叉熵损失的修改可用于解决类别不平衡问题。


相关帖子this 和this。

【讨论】:

哇,谢谢,我以前没听说过这些 @Divith 我想如果你用谷歌搜索“类不平衡”,你也会遇到其他选项。此列表绝不是全面的。 感谢您提供链接,很遗憾我不能投票两次!【参考方案2】:

我正要评论:

更严格的方法是开始衡量您的数据集平衡:您拥有每个类别的多少张图片?这可能会回答您的问题。

但我忍不住看了你给的链接。 Kaggle 已经为您提供了数据集的概览:

快速计算:25,812 / 35,126 * 100 = 73%。这很有趣,你说你的准确度是74%。您的模型正在一个不平衡的数据集上学习,第一类被过度表示,25k/35k 是巨大的。我的假设是你的模型一直在预测第一类,这意味着平均而言你最终会得到74% 的准确度。

应该做的是平衡你的数据集。例如,只允许来自第一类的35,126 - 25,810 = 9,316 示例在一个时期出现。更好的是,平衡所有类的数据集,使每个类在每个时期只出现 n 次。

【讨论】:

我试过这样做,我想我也可以在其他类中制作图像的旋转/翻转副本来扩展数据集,你认为这些可行吗? 这将被视为数据增强,因此我认为它不会弥补这一差距。增强图像并不完全是 new 图像。从这个意义上说,我认为第一堂课仍然会因为其多样化的内容而胜过其他班级。

以上是关于为啥不同的机器学习领域都可以使用CNN,CNN解决了这些领域的哪些共性问题?是如何解决的?的主要内容,如果未能解决你的问题,请参考以下文章

R-CNN和Mask R-CNN在图像分割中的应用史

我使用 CNN 模型创建了 CIFAR10 数据集学习模型。为啥会出现错误?

机器学习-计算机视觉和卷积网络CNN

为啥有时 CNN 模型只能预测所有其他类别中的一类?

cnn训练准确率很高,测试准确率很低(loss有一直下降)是为啥?

机器学习篇:卷积神经网络DNN和CNN