2020-05-18 21:29:24

在医学数据集的训练算法期间面临的许多问题中,这三个最常见:

  1. 类别不均衡
  2. 多任务
  3. 数据集大小

对于这些问题,我将分享一些解决问题的技术。

类别不均衡挑战

在现实世界中,我们看到的健康人比患病的人要多得多,这也反映在医学数据集中。健康和患病类别的例子数量并不平均。这反映了疾病在现实世界中的频率。在医疗数据集和信用卡欺诈数据集中,你可能会看到正常样本的数量是异常样本的一百倍。

结果,很容易被误认为是模型表现出色,而实际上却并非如此。如果使用accuracy_score准确度这样的简单度量,就会发生这种情况。准确度对于这类数据集来说不是一个很好的度量标准,因为标签严重倾斜,所以一个只输出正常标签的神经网络的准确率甚至还能略高于90%。

解决方案:

我们可以定义更有用的指标,例如F1度量或"精确度/召回率"。精度定义为"真正例个数/(真正例个数+假正例个数)"。假正例很多时这是一个很好的度量。另一方面,召回率定义为"真正例个数/(真正例个数+假反例个数)"。当假反例本很多时这是一个很好的度量。医疗领域的大多数模型就是这种情况。但是,我们经常需要同时考虑假正例个数和假反例个数,这就是F1度量的功能。它在精确度(Precision)和召回率(Recall)之间取得均衡,由公式2 * ((Precision*Recall) / (Precision+Recall))给出。

处理类不均衡的另一种流行技术是"重采样"。这是从多数类(样本过多的那一类)中删除示例(称为欠采样)或在少数类中添加示例(称为过采样)以在这两个类之间取得均衡的行为。尽管它们可以通过使用复杂的重采样技术来解决,但它们具有自己的缺点,如信息丢失和过拟合。

多任务挑战

在现实世界中,通常仅预测健康或患病是不够的。我们经常需要将医疗数据分为多个类别或标签。例如,仅从心律中检测出心律失常并没有那么有市场,对患者进行分析判断得到哪种心律失常更有价值。例如病状可能是房颤,室上性心动过速或任何其他类型。

从理论上讲,可以为需要分类的每个标签训练单独的神经网络模型,但是这对于写代码来说非常不切实际。如果我们可以将所有这些分类模型组合到一个返回多个预测的单个深度神经网络中,就比较有价值。

解决方案:

我们使用一种称为"多类别分类"或"多标签分类"的方法来应对这一挑战,它们之间略有不同。在多类别中,数据样本的类别是互斥的,而在多标签中,数据样本可以属于多个类别。在医学领域,我们通常使用多标签分类,因为如果患者被诊断为肺不张(肺的膨胀不全),则并不意味着他/她就不会有心脏肥大。我们将模型最后一层的分数再传递给Sigmoid激活函数。这会把最后一层的每个分数转换为0到1之间的值,而与其他分数无关。

对于多标签分类,我们选择的损失函数变为binary_crossentropy,其中由于我们使用了Sigmoid激活函数,因此每个标签都被视为独立的伯努利分布。在需要多类的情况下,可以用损失函数设置为categorical_crossentropy的softmax激活函数来替换Sigmoid激活函数。

数据集大小挑战

处理医学数据集的主要挑战是这些数据集的大小。大型训练数据除了具有良好的体系结构外,还对模型的性能起着重要的作用,并且可用于疾病的患者数据数量往往不够。低数据集大小是导致高偏差和高方差的主要原因。这导致模型的推广和优化困难。

解决方案:

为了解决模型优化的困难,我们使用一种称为"迁移学习"的方法,其中我们使用从相关网络较低层中学习来训练较高层,而无需它们从头开始学习。由于先前的训练,较低的图层可以用作良好的特征提取器,因此我们可以根据数据集对其进行微调。该技术优化速度更快,并减少了训练新模型所需的数据量。

为了解决模型泛化的困难,我们使用一种称为"数据增强"的技术,将数据提供给模型之前,不是复制相同的示例,而是对示例进行一些随机转换。这样,我们可以使模型对于大小或亮度等微小变化保持不变。诸如水平或垂直翻转图像,更改图像的亮度或对比度,将图像旋转或缩放到一定程度之类的做法都有助于数据扩充。此技术在小型数据集中避免过度拟合非常有用。

医学领域深度学习模型训练的挑战相关推荐

  1. 深度学习模型训练的一般方法(以DSSM为例)

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 本文主要用于记录DSSM模型学习期间遇到的问题及分析.处理经验.先统领性地提出深度学习模型训练 ...

  2. 笔记 | 百度飞浆AI达人创造营:深度学习模型训练和关键参数调优详解

    笔记 | 百度飞浆AI达人创造营:深度学习模型训练和关键参数调优详解 针对特定场景任务从模型选择.模型训练.超参优化.效果展示这四个方面进行模型开发. 一.模型选择 从任务类型出发,选择最合适的模型. ...

  3. 深度学习模型训练和关键参数调优详解

    深度学习模型训练和关键参数调优详解 一.模型选择 1.回归任务 人脸关键点检测 2.分类任务 图像分类 3.场景任务 目标检测 人像分割 文字识别 二.模型训练 1.基于高层API训练模型 加载数据集 ...

  4. dcm格式的文件里有什么,哪些对于深度学习模型训练有用

    DCM格式的文件通常包含医学图像,如X射线.CT或MRI扫描.这些图像可以用来辅助医生诊断疾病,并且对于深度学习模型训练也非常有用.在医学图像分析方面,深度学习模型可以用来做图像分割.疾病诊断.肿瘤检 ...

  5. 深度学习模型训练过程

    深度学习模型训练过程 一.数据准备 基本原则: 1)数据标注前的标签体系设定要合理 2)用于标注的数据集需要无偏.全面.尽可能均衡 3)标注过程要审核 整理数据集 1)将各个标签的数据放于不同的文件夹 ...

  6. AI佳作解读系列(一)——深度学习模型训练痛点及解决方法

    AI佳作解读系列(一)--深度学习模型训练痛点及解决方法 参考文章: (1)AI佳作解读系列(一)--深度学习模型训练痛点及解决方法 (2)https://www.cnblogs.com/carson ...

  7. 收藏 | PyTorch深度学习模型训练加速指南2021

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者:LORENZ KUHN 编译:ronghuaiyang ...

  8. 深度学习模型训练的结果及改进方法

    深度学习模型训练的结果及改进方法 模型在训练集上误差较大: 解决方法:1. 选择新的激活函数2. 使用自适应的学习率 在训练集上表现很好,但在测试集上表现很差(过拟合): 解决方法:1. 减少迭代次数 ...

  9. 深度学习模型训练的时候,一般把epoch设置多大?深度模型中的超参数要如何调整?模型训练的诸多问题?

    深度学习模型训练的时候,一般把epoch设置多大? https://www.zhihu.com/question/296266979 1机器学习模型评估混淆矩阵.ROC曲线和AUC以及PR曲线.以及用 ...

最新文章

  1. 人工神经网络研究的发展及特性,以前不叫人工智能
  2. 面向对象的5条基本设计原则----拜读大作后
  3. Scrapy爬虫框架命令行操作
  4. 云服务器mysql备份与还原数据库命令详解
  5. jsp登录密码加密_[源码和文档分享]基于JSP和MYSQL数据库的在线购物网站的设计与实现...
  6. 谷歌浏览器修复工具_奇安信代码卫士协助谷歌修复漏洞 获官方致谢
  7. python列表元素循环左移_JavaScript系列——数组元素左右移动N位算法实现
  8. iOS 关于使用xib创建cell的两种初始化方式
  9. 如何将苹方字体写入html,html苹方字体
  10. 如何在windows10系统将用户名改为英文
  11. 伪元素写竖线_[CSS] 用伪元素:after实现分割线和气泡
  12. 【java-JDK的下载-安装-配置】
  13. python在地图上画路线_使用Python和Perl绘制北京跑步地图
  14. 计算机等级良好和优秀是什么意思?
  15. Document.location
  16. c语言中变量赋值使用什么运算符,C语言基础学习运算符-赋值运算符
  17. 传奇版本添加npc修改增加npc方法以及配置参数教程
  18. c语言怎么打出花边图案,甄嬛舌尖各种版本苏牙咬人 连黄梅戏C语言都来了
  19. getopt使用方法
  20. react native在growth stack中的角色思考

热门文章

  1. Excel如何删除合并单元格列后的空单元格
  2. 咱张家界桑植的野外小吃
  3. Groovy语言的介绍
  4. CSS兼容性技巧整理从IE6-IE9 火狐谷歌浏览器兼容
  5. 在线绘制流程图网站、思维导图网站总结
  6. 【AI简报20210702期】骁龙888 plus发布、RISC-V处理器大飞跃
  7. 商业智能下,金融行业如何利用起来?
  8. 求一个n*n矩阵对角线元素之和C语言,求一个n*n矩阵主对角线之和,次对角线元素之和.用指针完成...
  9. 从“领域变迁”的视角,来看钉钉的“退让”与“进取”
  10. 【JAVA|Swing】简单表格的制作