一个好的深度学习模型的目标是将训练数据很好地推广到问题领域的任何数据。这使我们可以对模型从未见过的数据进行将来的预测。
首先,当模型泛化性差的时候,我们需要找到其原因,当训练集能够很好地拟合,但是测试集却不能有很好的准确率,主要可能有以下几点原因:

网络足够大,仅仅记住了所有样本

当网络足够大时,无论你的数据集多么没规律,多么无意义,网络都能记住它们。
如果你的数据集巨大,但是模型仅在训练集上表现良好,泛化性一般,同时提升模型大小时泛化性没有提升,那么就要考虑是这样情况了
所以,我们需要做的是:
1.找当前任务的公开数据集在自己的模型上训练,对比一些性能优越算法的性能,这样能让我们验证自己算法的可行性,以测试所有基础架构是否正确到位。
2.保证数据集和标签正确无误,这个很好理解,当数据集有错误的时候,网络无论如何无法学到真正的规律;
3.正则化
4.超参探索、尝试

过拟合

如果是过拟合的话,可以考虑:
增大数据集:尤其是增大数据集的多样性,但是数据增强的手端是有限的,不要去生成实际中不太可能存在的情况。
增加正则化:防止过拟合,过拟合一般出现在全连接层,可以通过dropout和增加正则化项来防止过拟合。
减小网络模型:当网络越大,参数越多,越容易拟合到噪声
提前停止训练的前面阶段网络可能在学习规律,但是从后面开始可能开始拟合数据集中的噪声,所以提早结束可以防止过拟合,多早结束呢?可以由验证集的训练结果来确定,所以在训练中,添加验证集是非常有必要的事情;如下图所示:

迁移学习:当数据量较小时,预加载在大数据集上训练好的参数模型很重要(ImageNet等等),可以有效防止过拟合;
个人觉得过拟合跟模型大小没有必然关系,主要跟数据量大小有关,当然模型越大,越容易过拟合也是必然的~因为过拟合的定义是:当模型学习到训练数据中的细节和噪声,以至于对新数据的模型性能产生负面影响时,就会发生过度拟合。这意味着训练数据中的噪声或随机波动被模型作为概念来提取和学习。关于过拟合的本质原因,感觉以下的解释非常好:

  1. 训练集和测试机特征分布不一致:
    假如给一群天鹅让机器来学习天鹅的特征,经过训练后,知道了天鹅是有翅膀的,天鹅的嘴巴是长长的弯曲的,天鹅的脖子是长长的有点曲度,天鹅的整个体型像一个“2”且略大于鸭子.这时候你的机器已经基本能区别天鹅和其他动物了。但是很不巧训练集中的天鹅全是白色的,于是机器经过学习后,会认为天鹅的羽毛都是白的,以后看到羽毛是黑的天鹅就会认为那不是天鹅。可以看到,训练集中的规律,“天鹅的体型是全局特征”,但是“天鹅的羽毛是白的”这实际上并不是所有天鹅都有的特征,只是局部样本的特征。机器在学习全局特征的同时,又大量学习了局部特征,这才导致了泛化能力变产,最终导致不能识别黑天鹅的情况.
  2. 在有限的样本中搜索过大的模型空间
    在高中数学我们知道,从 n 个(线性无关)方程一定可以解 n 个变量,但是解 n+1 个变量就会解不出。因为有2个变量可能不在一个维度上。
    在监督学习中,往往数据(对应了方程)远远少于模型空间(对应了变量)。
    在有监督学习中,如果训练样本数小于模型搜索空间,则有限的训练数据不能完全反映出一个模型的好坏,然而我们却不得不在这有限的数据上挑选模型,因此我们完全有可能挑选到在训练数据上表现很好而在测试数据上表现很差的模型,因为我们完全无法知道模型在测试数据上的表现。显然,如果模型空间很大,也就是有很多很多模型可以给我们挑选,那么挑到对的模型的机会就会很小。
  3. 训练过程中函数过多吸收了噪音数据的影响
    fit model的时候加的parameter太多了,导致model太精准地抓住了这组数据的所有variance,不管是主要的数据趋势带来的variance还是噪音带来的variance都一并被拟合在了模型里。
    用这个模型去预测原数据肯定是准确性更高,但放在一组具有相同趋势但细节不同的数据里时,预测效果就会下降。

提升深度学习模型泛化性的方法相关推荐

  1. 清华大学出品:罚梯度范数提高深度学习模型泛化性

    关注公众号,发现CV技术之美 1 引言 神经网络结构简单,训练样本量不足,则会导致训练出来的模型分类精度不高:神经网络结构复杂,训练样本量过大,则又会导致模型过拟合,所以如何训练神经网络提高模型的泛化 ...

  2. 提升深度学习模型性能及网络调参

    提升深度学习模型性能及网络调参 https://www.toutiao.com/a6637086018950398472/ 图像处理与机器视觉 2018-12-25 10:42:00 深度学习有很多的 ...

  3. 基于linux火焰识别算法,一种基于深度学习模型的火焰识别方法与流程

    本发明属于通信领域,具体涉及一种基于深度学习模型的火焰识别方法. 背景技术: 随着我国工业化与城镇水平的不断提高,现代设施大型公共建筑朝着空间大.进深广功能复杂的多元化方向发展,这对于防烟火朝着空间大 ...

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

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

  5. 提升深度学习模型的表现,你需要这20个技巧

    选自machielearningmastery 机器之心编译 作者:Jason Brownlee 参与:杜夏德.陈晨.吴攀.Terrence.李亚洲 本文原文的作者 Jason Brownlee 是一 ...

  6. 深度学习模型压缩与优化方法

    深度学习(Deep Learning)因其计算复杂度或参数冗余,在一些场景和设备上限制了相应的模型部署,需要借助模型压缩.优化加速.异构计算等方法突破瓶颈. 模型压缩算法能够有效降低参数冗余,从而减少 ...

  7. Arimo利用Alluxio的内存能力提升深度学习模型的结果效率(Time-to-Result)

    深度学习算法通常被一些具体应用所采用,其中比较显著的应用领域包括计算机视觉.机器翻译.文本挖掘.欺诈检测等.深度学习的方法在大模型加大数据的场景下效果显著.与此同时,被设计用来处理大数据的分布式计算平 ...

  8. 深度学习模型的Android部署方法

    使用背景: 将python中训练的深度学习模型(图像分类.目标检测.语义分割等)部署到Android中使用. Step1:下载并集成Pytorch Android库 1.下载Pytorch Andro ...

  9. 在英特尔硬件上部署深度学习模型的无代码方法 OpenVINO 深度学习工作台的三部分系列文章 - CPU AI 第一部

    作者 Taylor, Mary, 翻译 李翊玮 关于该系列 了解如何转换.微调和打包推理就绪的 TensorFlow 模型,该模型针对英特尔®硬件进行了优化,仅使用 Web 浏览器.每一步都在云中使用 ...

最新文章

  1. 狂神说Java 之SpringBoot整合Shiro框架笔记!
  2. Google的Java开发规范
  3. linux设置双屏拼接_双屏办公,用起来到底有多爽
  4. 企业如何快速响应用户需求 且看云徙“数据+业务”双中台化简为繁
  5. Windows8之hyper-v探索
  6. 什么是java源码文件,什么是字节码文件,初程序的编译和运行
  7. Eureka和Zookeeper区别 —— 杂记
  8. Behavior Targeting - 技术研究
  9. 文本的垂直居中 WPF
  10. 关于typedef的用法总结(转)
  11. js正则 保留一位小数或者两位小数
  12. RUOK的完整形式是什么?
  13. 如何提高思维能力和逻辑能力?
  14. 《金融学》笔记 第五章 金融市场
  15. 2021年危险化学品生产单位安全生产管理人员最新解析及危险化学品生产单位安全生产管理人员作业模拟考试
  16. Python 打印的中英文字体如何对齐?
  17. Windows Hyper VBS Virtualization-based Security
  18. while循环和doWhile循环
  19. pl/sql模拟登录并获取Oracle ebs职责
  20. 魔兽世界出错排查以及解决方案

热门文章

  1. html实现文件的下载
  2. SIwave仿真入门 | PI篇——封装PDN参数仿真
  3. exchange发信流程
  4. iOS 手机照片上传服务器方向不对的原因以及解决方法
  5. 内网渗透笔记——三层发现and四层发现
  6. 什么软件测试iphone性能,iPhone浏览器性能测试
  7. 【大数据】大数据平台技术方案及案例
  8. 【转】在内核中之获取HKEY_CURRENT_USER对应路径
  9. linux 搭建 虚拟专用网络 (pptpd )
  10. mcv 与mvvm 浅谈