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

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

相关文章

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

Java Spring的依赖注入理解及@Autowired用法示例详解

《JavaSpring的依赖注入理解及@Autowired用法示例详解》文章介绍了Spring依赖注入(DI)的概念、三种实现方式(构造器、Setter、字段注入),区分了@Autowired(注入... 目录一、什么是依赖注入(DI)?1. 定义2. 举个例子二、依赖注入的几种方式1. 构造器注入(Con

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实