为什么深度学习对训练样本的数量要求较高?

2023-12-19 19:32

本文主要是介绍为什么深度学习对训练样本的数量要求较高?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

提问:最近在研究深度卷积神经网络,看到很多的深度学习训练都需要几百万的训练样本,我想请教各位为什么深度学习一定要这么多训练样本呢,假如样本只有几万或者几千,对性能会有影响吗?

回答:

作者:Sisyphus
链接:https://www.zhihu.com/question/29633459/answer/45138977
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

对于classification model,有这样一个结论:


上式中N是训练样本数量,η大于等于0小于等于1,h是classification model的VC dimension。具体见wiki:VC dimension。

 

 

其中的这项:


也叫model complexity penalty。

 

 

可以看到,test error小于training error加上model complexity penalty的概率是1-η。如果现在训练模型的算法能使得training error很小,而model complexity penalty又很小,就能保证test error也很小的概率是 1-η。所以要使得模型的generalization比较好,要保证training error和model complexity penalty都能比较小。

 

观察model complexity penalty项,可以看到,h越大,model complexity penalty就会越大。N越大,model complexity penalty则会越小。大致上讲,越复杂的模型有着越大的h(VC dimension),所以为了使得模型有着好的generalization,需要有较大的N来压低model complexity penalty。 这就是为什么深度学习的模型需要大量的数据来训练,否则模型的generalization会比较差,也就是过拟合。
 

左:欠拟合
中:过拟合
右:深度学习

作者:Penguin Whisper
链接:https://www.zhihu.com/question/29633459/answer/150303826
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

画个train and test error VS 训练数据量(training set size) 的learningcurve应该会更加直观了。

可以找个简单的数据集,比如说handwritten digits或者什么的,分别用神经网络和决策树或者knn做出这个learningcurve。

你会看到如果用一个决策树去解决这个问题,随着数据量增加,比如加到500,1000的样本,test error会不断降低,train error会不断增加。最后比如在数据量为2000的地方两个error就收敛了,在0.20的附近比如说。

但是如果你用神经网络去解决这个问题,你会看到当数据量很小的时候train error就是0.01了,然后数据量从0增到500或者1000,train error还是0.01,就像是一条直线一样。直到数据量增加到几万的时候,才看到train error有略微明显的增加(比如到了0.02)。 所以数据量从0到5w,train error只从0.01增加到0.02。而test error虽然在降低,但是一直都比较大,所以overfitting一直存在。

但是我们有个信念是,如同楼上其他人说的,只要数据量足够大,那么test和train会沿着收敛的方向不断前进,而当数据量足够大,两个曲线收敛的那一刻达到的时候,不仅两个曲线收敛了,同时我们的train和test error都是比较低的,远低于上面的knn或者其他简单点的模型。 如果是DL深层的神经网络,可能要几百万才能够达到收敛,那么这个时候的test error肯定也是非常低的

 

所以过拟合,欠拟合,是衡量模型拟合能力与数据量之间相对关系的东西。

如果拟合能力很强,数据量相比拟合能力太少了,就是过拟合。 (在图线上,过拟合就是两个曲线之间有gap,两个曲线没有达到收敛状态,还在向收敛的方向趋近)

如果拟合能力很弱,数据量大大超过拟合能力大大足够了,就是欠拟合。(在图线上,欠拟合就是两个曲线收敛了,但是这个收敛对应的error值太高了。 那么怎么判断这个值太高了呢?这个是人视情况来决定的。)

所以从图线的角度来说,对等划分应该有三种状态:

1) 如果两个图线未收敛状态:这就叫过拟合。。

2) 如果两图线收敛了,但是收敛处的error值过高,不符合预期,就叫欠拟合。

3) 如果两图线收敛了,而且收敛处的error值比较低,符合预期,那么就叫成功了。这正是我们想要的。

另外,其实具体情况,还是要根据问题本身的复杂程度,模型的复杂程度,数据量,这三者一起来看的。

 

机器学习里,模型越复杂、越具有强表达能力越容易牺牲对未来数据的解释能力,而专注于解释训练数据。这种现象会导致训练数据效果非常好,但遇到测试数据效果会大打折扣。这一现象叫过拟合(overfitting)

深层神经网络因为其结构,所以具有相较传统模型有很强的表达能力,从而也就需要更多的数据来避免过拟合的发生,以保证训练的模型在新的数据上也能有可以接受的表现。

作者:某翔
链接:https://www.zhihu.com/question/29633459/answer/150421577
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

首先是因为curse of dimensionality。深度学习往往用于高维空间的学习,但是随着维度的增高所需要的样本数呈指数性增长。比如说对于Lipschitz连续的函数,minimax error rate是O(n^(-2/2+d)),其中d代表数据的维度。由此可见,为了达到同样的error rate,高维度比低维度函数所需要的样本数多了太多。
其次在于深度学习并没有足够的利用好函数本身的信息。之所以深度学习这么流行,是因为他对于所学习的函数的限制非常少,几乎毫无任何假设(一个hidden layer的神经网络就可以估计所有的连续函数,而两个hidden layer则可以估计所有函数)。但是这也带来了一个缺憾,当函数足够smooth足够光滑的时候深度学习可能难以利用好这个信息。相反,local polynomial之类方法可以用更高次数的多项式来估计这个函数,利用好这个条件,达到相对较低的错误率。
最后一点就在于深度学习常采用的是梯度下降。梯度下降,加上并不那么高的learning rate,导致了在样本量有限的时候各个节点的参数变化有限。何况各个节点的参数已开始往往是随机的,如果运气不好+样本量有限,那么最后有不那么理想的错误率也是可想而知的。

目前本人在做的工作是降低深度学习的样本使用数量,即主动学习(Active Learning)。

从实验效果来看,(1)并不是说样本量越多越好,主动学习方法可以大大降低样本使用数量并且达到很好的实验效果,没有overfitting;(2)主动学习结合深度学习可以衍生出深度学习在少量样本数据上的应用,如遥感图像分类(样本比普通图像要少很多);(3)样本本身是有噪声的,每个样本的价值是不同的。举个例子来说,直接用支持向量来训练一个支持向量机跟用全部数据训练一个支持向量机是差不多的。同样,深度学习的样本中也存在这样的重要的样本和不重要的样本。关键是质量。

深度学习都是几w的特征 ,用vc维来看,特征越多模型越复杂,如果ein要跟eout差不多,那么样本量是需要很巨大的,也就是我们说的overfit的问题。一般来说数据量是要十倍的vc维

 

 

这篇关于为什么深度学习对训练样本的数量要求较高?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/513435

相关文章

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学