理解深度学习需要重新思考泛化

2024-05-09 13:08

本文主要是介绍理解深度学习需要重新思考泛化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这篇文章来自ICLR2017 best paper,是一片十分有争议的文章,看完之后在小组会上跟大家分享了这篇文章,最终经过一系列讨论,结合种种实验得出结论,我们认为数据对于泛化性能来说是十分重要的,因为对于实验中的数据来说,我们可以发现在真实数据上的实验结果以及泛化结果相对于其他数据副本来说都是极具优势的。以下为个人观点:

我认为这篇文章只是提出了一个新的思考,给出了一个新的研究方向,至于是否有意思,目前无从得知,斯以为它能获得最佳论文的理由如下:

首先,作者团队足够强大,MIT博士,谷歌大脑团队,深度学习三大巨头之一的成员;

其次,由于最近深度学习的研究在很多方向上已经很难开展出十分醒目的研究,比如设计新的模型种种变得并没有那么容易,而这篇paper的出现给大家引了一条新路,开拓了一个新的研究方向。但是它只是给了大家一种新的思考,至于它的实际意义,个人认为目前仍不能确定;

最后,证明了以前的方法不好,这在一定程度上对前人的工作进行了一个前所未有的评价,不敢说否定,但确实有一定的冲击性。

因此,评委认为对这篇paper给予了很高的评价。

下面是我个人对这篇paper的一个翻译,有些地方可能翻译的而不够准确,仅供参考。

UNDERSTANDING DEEP LEARNING REQUIRESRETHINKING GENERALIZATION

摘要

尽管体积巨大,成功的深度人工神经网络在训练和测试性能之间可以展现出非常小的差异。过去一般将其归功于泛化误差小,无论是对模型谱系的特点还是对于训练中使用的正则技术来说。

通过广泛的系统的实验,我们展示了传统方法无法解释为什么大规模神经网络在实践中泛化表现好。 具体来说,我们的实验证明了用随机梯度方法训练的、用于图像分类的最先进的卷积网络很容易拟合训练数据的随机标记。这种现象本质上不受显式正则化影响,即使我们通过完全非结构化随机噪声来替换真实图像,也会发生这种现象。我们用一个理论结构证实了这些实验结果,表明只要参数的数量超过实践中通常的数据点的数量,简单两层深的神经网络就已经具有完美的有限样本表达性(finite sample expressivity)。我们通过与传统模型进行比较来解释我们的实验结果。

【一句话总结】通过深入系统的实验,我们指出传统方式无法解释为什么大规模神经网络在实践中泛化表现良好,同时指出我们为何需要重新思考泛化问题。

   1介绍

深度人工神经网络通常具有远远多于训练样本数目的可训练模型参数 。然而,这些模型中的一些显示出非常小的泛化误差(即“训练误差”与“测试误差”之间的差异比较小)。同时,很容易想出一些泛化很差的自然模型架构。那么,泛化好的神经网络与泛化不好的神经网络有什么区别?对这一问题做出满意的回答,不仅有助于更好地理解神经网络,还可能带来更正确可靠的模型架构设计。

为了回答这个问题,统计学习理论提出了一些能够控制泛化误差的不同复杂度测度。这些包括VC维,拉德马赫复杂度,和均匀稳定性等。而且,当参数的数量很大时,理论认为需要某种形式的正规化来确保小的泛化误差。正则化也可能是隐式的,如提前停止的情况。

 

2我们的贡献

在这个工作中,我们通过展示传统的泛化观点不能够解释为什么不同的神经网络具有截然不同的泛化性能。

随机测试 我们方法论的核心是众所周知的,即从非参数统计中随机化一个变体。在第一组实验中,我们在数据的副本上训练了一些标准的结构,在这个副本数据中,真正的标签被替换为随机的标签。我们的中心发现可以概括为:

深度神经网络很容易拟合随机标签

更确切地说,当我们在真正的数据集上完全随机化标记然后进行训练的时候,神经网络的训练误差为0。当然,测试错误并不是很好,因为没有训练标签和测试标签之间的相关性。

总结在这种情况下,实例和分类标签之间不再有任何关系。因此,学习是不可能发生的。直觉告诉我们,这种不可能会在训练过程中很清楚地表现出来,比如训练不收敛,或者收敛速度大幅减慢。让我们感到意外的是,有多个标准架构的训练过程的好些属性,在很大程度上都没有受这种标签转换的影响。

 

换句话说,通过单独的随机化标签,我们可以强制让一个模型的泛化误差在不改变其模型,以及模型大小,超参数还有优化器的情况下大幅度增加。我们在CIFAR10和ImageNet上分别对不同的标准结构进行训练后得出了这一事实。但是这个简单的陈述,从统计学的角度来看,这一观察结果具有深远的意义:

1 神经网络的有效容量足以记住整个数据集;

2对标签随机的数据进行优化很容易。事实上,与标签正确的训练过程相比,随机标签的训练时间也只增加一个小的常数因子;

3将标签打乱仅仅是做了一个数据转换,其他所有关于学习问题的属性都没有改变。

综上可得:

“……通过将标签随机化,我们可以强制模型不受改变、保持同样大小、超参数或优化器的情况下,大幅提升网络的泛化误差。我们在 CIFAR 10 和 ImageNet 分类基准上训练了好几种不同标准架构,证实了这一点。”

换句话说:模型本身、模型大小、超参数和优化器都不能解释当前最好的神经网络的泛化性能。因为在其他条件都不变的情况下,唯独泛化误差产生大幅变动,只能得出这一个答案。

在第一组实验上进行扩展,我们通过完全随机化的图像像素去替代真实图像,观察发现卷积神经网络继续适用于0训练误差的数据。这表明,尽管他们是这种结构,卷积神经网络可以拟合随机噪声。此外,我们进一步改变随机化的数量,在无噪声和完全噪声的情况下平滑地插入数据集。这样一来,标签还是保有某种程度的信号,从而会造成一系列间接的学习问题。随着噪声水平的提高,我们观察到泛化误差呈现出稳定的恶化。这表明神经网络能够理解数据中的剩余信号,同时用暴力计算适应噪声部分。我们将在下面更详细地讨论这些观察结果排除了所有的VC维度,Rademacher复杂度和均匀的稳定性,作为对最先进神经网络的泛化性能的可能解释。

显式正则化的作用。 如果模型本身没有充分的正则化,它仍然可以看到显式正则化的帮助有多少。我们表明,显式正则化方法,如

这篇关于理解深度学习需要重新思考泛化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

关于rpc长连接与短连接的思考记录

《关于rpc长连接与短连接的思考记录》文章总结了RPC项目中长连接和短连接的处理方式,包括RPC和HTTP的长连接与短连接的区别、TCP的保活机制、客户端与服务器的连接模式及其利弊分析,文章强调了在实... 目录rpc项目中的长连接与短连接的思考什么是rpc项目中的长连接和短连接与tcp和http的长连接短

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

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

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

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规