前言

模型的泛化能力是其是否能良好地应用的标准,因此如何通过有限的数据训练泛化能力更好的模型也是深度学习研究的重要问题。仅在数据集上高度拟合而无法对之外的数据进行正确的预测显然是不行的。本文将不断总结相关的一些方法。

一、模型角度

Dropout


首先随机(临时)删掉网络中一半的隐藏神经元,输入输出神经元保持不变。然后把输入x通过修改后的网络前向传播,然后把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后,在没有被删除的神经元上按照随机梯度下降法更新对应的参数(w,b),然后继续重复这一过程。
Dropout简单来说是是模型节点随机失活,这样使之不会太依赖数据的某些局部特征。
那么为什么这样做能提高模型返回能力呢?
取平均的作用
模型的随机失活最终相当于得到了不同的模型,然后类似于投票取各个子模型普遍认同的解,这样将更具有参考价值。有一些集成学习的意味,最终能提高模型的泛化效果。
减少神经元之间复杂的共适应关系
因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况 。迫使网络去学习更加鲁棒的特征 ,这些特征在其它的神经元的随机子集中也存在。

更深的模型

模型更深可以使之学到更为抽象的特征,从而提高模型对物体认识的层次。

更宽的模型

其实是说综合多种特征,还是集成学习的思路,在模型设计的时候将多个维度的特征进行融合,得到更加有效的信息。这也是提高模型学习效果的一个改进思路。

正则化

模型的损失函数加入正则项可以防止参数过大,防止过分拟合从而提高泛化能力。

二、数据角度

更多的数据

这个不怎么需要解释,更多的数据能够让模型更充分的认识所要识别的问题,学到更加共性的信息

数据增强

数据增强就比较好理解了,比如识别图片中的某个物体,不能因为图片放大或缩小、比例改变、图像截取、角度改变以及翻转就识别不出来了,所以对数据进行这类操作一方面可以扩充数据集,另一方面也能去除像比例关系这种无关因素对训练的影响,从而提高模型的泛化能力。

更好的特征

比如对数据进行更好的的标注,让其对所识别物体的认识更加符合人的思维,或者说认识到更加本质的信息,或者说对问题进行等价转换,能够有更好地学习效果。

三、训练角度

小的Batch Size

这里在之前有讨论过,经过测试小批量数据训练能提高模型的泛化能力。

提前结束

这里即防止模型过度拟合,当模型在验证集上效果下降时及时停止。

总结

提高模型的效果可以从很多角度出发,包括数据角度、模型设计角度与训练角度,其实就是我们深度学习问题的各个阶段,都有改进与提升的余地。

参考资料

https://blog.csdn.net/program_developer/article/details/80737724
https://blog.csdn.net/starzhou/article/details/52754436

【深度学习】常见的提高模型泛化能力的方法相关推荐

  1. 【深度学习基础知识 - 25】提升模型泛化能力的方法

    提升模型泛化能力的方法 从数据角度上来说.可以通过数据增强.扩充训练集等方法提高泛化能力. 在训练策略上,可以增加每个batch size的大小,进而让模型每次迭代时见到更多数据,防止过拟合. 调整数 ...

  2. 深度学习——提升模型泛化能力的方法

    泛化能力指对同类型独立分布的新数据的预测结果是否符合我们的预期.我们常常用泛化能力来反应一个模型的好坏,将不同程度的泛化状态分为:欠拟合.拟合和过拟合. 提升模型的泛化能力可以从两个方面着手:数据集和 ...

  3. 提高模型泛化能力的几大方法

    作者:OpenMMLab 链接:https://www.zhihu.com/question/540433389/answer/2629056736 来源:知乎 著作权归作者所有.商业转载请联系作者获 ...

  4. AI体统中提高模型泛化能力的两个思路

    近几天做模式识别实验时遇到了一个问题.在A环境下采集的数据所训练出的模型,在B环境下几乎丧失了识别能力.很明显,该模型的泛化能力太差. 考虑两个思路:第一,在不同的环境中采集多组数据重新模型训练,以此 ...

  5. 新手入门深度学习 | 4-4:保存模型的N种方法

  6. 评估方法提高深度学习模型泛化能力

    三种经典的评估方法提高模型泛化能力 ①留出验证:评估模型时,将数据划分为训练集.验证集.测试集.(比较适合大数据集) 在训练数据上训练模型,在验证数据上评估模型,最后在测试数据上测试最佳参数的模型. ...

  7. 提高网络泛化能力,过拟合

    方法 说明 使用更多数据 在有条件的前提下,尽可能多地获取训练数据是最理想的方法,更多的数据可以让模型得到充分的学习,也更容易提高泛化能力 使用更大批次 在相同迭代次数和学习率的条件下,每批次采用更多 ...

  8. 集成学习算法的思想、通过集成学习提高整体泛化能力的前提条件、如何得到独立的分类器Bagging、Boosting、Stacking算法

    集成学习算法 Ensemble learning algorithm 目的:让机器学习的效果更好,单个的分类器如果表现的好,那么能不能通过使用多个分类器使得分类效果更好呢?或者如果单个分类器分类效果不 ...

  9. 机器学习中模型泛化能力和过拟合现象(overfitting)的矛盾、以及其主要缓解方法正则化技术原理初探...

    1. 偏差与方差 - 机器学习算法泛化性能分析 在一个项目中,我们通过设计和训练得到了一个model,该model的泛化可能很好,也可能不尽如人意,其背后的决定因素是什么呢?或者说我们可以从哪些方面去 ...

最新文章

  1. Tensorflow C++ API调用Keras模型实现RGB图像语义分割
  2. Linux下DIY DLAN投屏方案
  3. C#实现rabbitmq 延迟队列功能
  4. MyBatis中针对if-test的参数为指定值的xml写法
  5. C#读取Win32标准DLL文件中的Bitmap(位图)
  6. 利用Python脚本编写一个学生平均成绩
  7. 在windows系统上word转pdf
  8. php遍历文件夹下文件内容_php实现的遍历文件夹下所有文件,编辑删除
  9. 多元统计分析最短距离法_多元统计分析习题及解答.doc
  10. sift算法matlab详解,sift算法原理详解及应用
  11. 《YUI 3 Cookbook 中文版》
  12. 高颜值的第三方网易云播放器YesPlayMusic
  13. 大厂智力题讲解,学它!!!!(一)
  14. Java入门需要了解(面向对象之接口-十四)
  15. 业务中台--企业流程优化
  16. Python网络爬虫实例(爬一些小网站的图片)
  17. 一个初创企业的“生还”记录
  18. 苹果7更新系统后显示无服务器,苹果手机备份还原之后显示服务器問題
  19. 秀米图文排版UEditor插件示例 新增自定义按钮没有显示 以及与neditor的适配
  20. 设置服务器可以多人同时远程访问

热门文章

  1. Cisco 3945路由器密码恢复,rommon模式操作详解
  2. 英文不好到底能不能学会编程?
  3. 疑难杂症之各种小坑合集
  4. 关于用盐去黑头的亲身经历~ - 健康程序员,至尚生活!
  5. linux中文本编辑vi命令插入技巧
  6. JNPF快速开发框架的八大功能介绍
  7. 38、程序中的三国天下
  8. macOS卸载Cisco AnyConnect的正确方式
  9. DOSBOX搭建汇编环境
  10. 乖离率背离公式_股票bias指标使用技巧-股票bias指标的使用五大技巧 股票bias指标计算公式...