关于神经网络中过拟合的问题小记。

在训练的时候你的模型是否会出现训练时速度很慢?或者预测结果与训练结果相差过大的现象?那我们可能就需要处理一下过拟合的问题了。

首先看一下overfitting维基百科上的一些信息:
Overfitting occurs when a model is excessively complex, such as having too many parameters relative to the number of observations. A model that has been overfit has poor predictive performance, as it overreacts to minor fluctuations in the training data.

In particular, a model is typically trained by maximizing its performance on some set of training data. However, its efficacy is determined not by its performance on the training data but by its ability to perform well on unseen data

The potential for overfitting depends not only on the number of parameters and data but also the conformability of the model structure with the data shape, and the magnitude of model error compared to the expected level of noise or error in the data.
从以上两段可以稍微总结一下,当你的模型过于复杂时,比如说输入参数过多,你的模型就会出现过拟合问题,该模型虽然会在训练集上表现出较好的预测结果,然而!在预测的时候呢?预测结果就会表现的很差。根据维基的定义以及我平时的一些实验总结,当你observation 的noise 过多,输入维度过大,都可能会导致overfitting。

解决办法就是我们可以启用交叉验证(cross-validation),正则化(regularization),Early Stopping,剪枝(pruning),Bayesian priors这几种方法。

先说cross-validation
cross-validation 的原理就是现在它的一个子集上做训练,这个子集就是训练集,再用验证集测试所训练出的模型,来评价模型的性能和指标,最后再用测试集来预测。

Early Stopping就是在每次训练的epoch结束时,将计算出的accuracy 跟上一次的进行比较,如果accuracy 不再变化,那么停止训练。

下面主要说下regularization 在NN中的作用:

模型假设三层,输入,隐藏,输出。输入层为2个神经元,输出为2个,batchsize为10,下图为当隐藏层神经元个数分别设置为3,6,20时,模型的情况:

注意看当隐藏神经元为20时,模型的状况,每个红色的点都被完美的归类,没错,这在训练时结果是很好,但是在测试集的表现呢?这就不一定了,谁能保证自己的训练结每点噪声呢?是不是?所以用这个模型去预测未知的,就可能造成预测结果很差,这就是NN的overfitting问题。

所以一般大部分情况,我们在调试模型时很多时候是在跟overfitting做斗争。关于regularization 方法。

简单来说就是在目标函数上加一个 λ \lambda 使之变成 Error+λf(θ) Error+\lambda f(\theta) , λ \lambda 用来惩罚那些权重很大的向量,称之为正则系数吧! λ=0 \lambda=0 就意味着没有采用regularization来预防overfitting。

regularization 有 L1 regularization和L2 regularization。如果你想知道哪一个特征对最后的结果产生了比较大的影响,可以采用L1 regularization,如果你不那么在意对特征的分析,那就用L2 regularization吧。

参考资料:
http://www.kdnuggets.com/2015/04/preventing-overfitting-neural-networks.html/2
https://en.wikipedia.org/wiki/Overfitting#cite_note-1

关于神经网络中过拟合的问题相关推荐

  1. [Python人工智能] 七.什么是过拟合及dropout解决神经网络中的过拟合问题

    从本专栏开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前一篇文章通过TensorFlow实现分类学习,以MNIST数字图片为例进行讲解:本文将介绍什么是过拟合,并采用drop ...

  2. 【深度学习篇】--神经网络中的调优二,防止过拟合

    一.前述 上一篇讲述了神经网络中的调优实现,本文继续讲解. 二.L1,L2正则防止过拟合  使用L1和L2正则去限制神经网络连接的weights权重,限制更小 1.对于一层时可以定义如下: 一种方式去 ...

  3. 神经网络 权重文件 大小_神经网络中如何处理过拟合的问题

    1.过拟合和欠拟合 过拟合是指在验证数据上模型的准确性将达到峰值,然后停滞或开始下降. 过度拟合训练数据.学习如何应对过度拟合非常重要.尽管通常可以在训练集上达到高精度,但是我们真正想要的是开发能够很 ...

  4. 神经网络中的过拟合的原因及解决方法、泛化能力、L2正则化

    过拟合:训练好的神经网络对训练数据以及验证数据拟合的很好,accuracy很高,loss很低,但是在测试数据上效果很差,即出现了过拟合现象. 过拟合产生的原因: (1)数据集有噪声 (2)训练数据不足 ...

  5. ML基础 - 深度神经网络中解决过拟合的方法

    过拟合的原因是算法的学习能力过强:一些假设条件(如样本独立同分布)可能是不成立的:训练样本过少不能对整个空间进行分布估计.以下介绍几种常见的处理方法. 1. Dropout 1.1 分布式特征表达 分 ...

  6. (tensorflow笔记)神经网络中的一些关键概念(学习率、激活函数、损失函数、欠拟合和过拟合、正则化和优化器)

    目录 1.神经网络复杂度 空间复杂度 时间复杂度 2.学习率策略 指数衰减学习率 分段常数衰减 3.激活函数 sigmoid tanh ReLU Leaky ReLU 建议 4.损失函数 均方误差损失 ...

  7. 神经网络过拟合什么意思,神经网络中解决过拟合

    神经网络,什么过拟合?,什么是欠拟合? 欠拟合是指模型不能在训练集上获得足够低的误差.而过拟合是指训练误差和测试误差之间的差距太大.相关介绍:人工神经网络(ANN)或联结主义系统是受构成动物大脑的生物 ...

  8. 神经网络中,设计loss function有哪些技巧?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:视学算法 神经网络中,设计loss function有哪 ...

  9. 深度神经网络是否过拟合?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:Lilian Weng 编译:ronghuaiyang 导读 ...

  10. Nat. Mach. Intell. | 深度神经网络中的捷径学习

    今天给大家介绍来自德国蒂宾根大学的Robert Geirhos和加拿大多伦多大学的Claudio Michaelis等人发表在Nature Machine Intelligence的文章"S ...

最新文章

  1. 虚拟机网络连接方式linuxcentos
  2. 霍夫直线检测python_opencv+python 霍夫直线检测
  3. 12-赵志勇机器学习-Label_Propagation
  4. CMake基础 第4节 动态库
  5. 实际电压/流源模型及其等效分析
  6. 亚马逊Corretto 8
  7. MySQL存储过程之查询受影响的行数与查询到的行数
  8. 在生产中使用Istio,我们学到了什么?
  9. 字节跳动和OPPO:机器翻译等智能时代算法技术如何落地?
  10. OSChina 周六乱弹 —— 表白有风险,装逼需谨慎
  11. 将您重定向的次数过多。_吃鸡:蹦蹦将迎来新皮肤?体验服全面加强,最高时速也不打滑...
  12. 一元多项式的带余除法
  13. PCB原理图制作一些简单个人总结
  14. 用友U8安装客户端时提示已经安装过智能客户端
  15. VC所有版本一键清除缓存垃圾脚本
  16. html5新增属性cookies,关于cookie的SameSite属性
  17. [Swift A] - 实战-豆瓣电台总结
  18. smartq ten3 android4,SmartDevices智器SmartQ Ten3平板电脑Android 4.1固件
  19. 炫酷3D相册❤ 520七夕情人节表白网页制作❤(HTML+CSS+JavaScript)
  20. 将SQL Server表变成txt文件

热门文章

  1. keras.preprocessing.text.Tokenizer
  2. 使用java8实现stream流分页
  3. vue除法运算,保留两位小数
  4. Win7系统下Anaconda的TensorFlow-gpu安装
  5. ad域下发策略,在 Azure AD 域服务中创建和管理组策略 | Microsoft Docs
  6. 【喜报】HCIE--PASS !最可怕的敌人,就是没有坚强的信念!
  7. 微信小程序自学(积少成多)
  8. 网络安全之计算机病毒的构成,诊断技术及各自的特点
  9. Spring GraphQL初体验
  10. 瑞星中了Alexa排名病毒(转)