神经网络损失函数分布可视化神器

news2024/11/16 19:32:35

论文名称和地址:

Visualizing the Loss Landscape of Neural Nets

https://arxiv.org/pdf/1712.09913.pdf

1.1 背景和动机

作者主要想研究几个问题:

  1. 为什么我们能够最小化高度非凸神经损失函数?

  1. 为什么得到的最小值这个结果具有泛化性?

  1. 不同的神经网络网络架构如何影响损失函数分布 (loss landascape),以及训练的超参数参数如何影响损失函数分布

1.2 损失函数可视化基础

一般通过最小化 来训练神经网络。其中, 表示神经网络的参数, 函数 衡量神经网络对数据样本标签的预测程度, m 为数据样本的个数。神经网络包含许多参数, 因此它们的损失函数存在于一个非常高维的空间中。

一维的线性插值可视化方法

一种已有的1维的可视化方法是线性插值法 (Linear interpolation), 就是选择两个参数向量 , 并沿连接这两点的直线 绘制损失函数的值

但是一维线性插值方法有几个缺点

  • 一维线性插值方法去可视化神经网络的非凸性 (non-convexities) 是很困难的,这就导致了损失函数在最小化轨迹上似乎缺乏局部最小值。

  • 一些损失函数具有非凸性,而这些非凸性与不同网络架构之间的泛化差异相关。

  • 一维线性插值方法不考虑 Batch Normalization 或者网络中的不变性对称性。因此,由一维线性插值方法产生的插值结果可能具有误导性。

二维的线性插值可视化方法

为了使用二维的线性插值可视化方法, 我们可以在图中选择首先一个中心点 , 并选择两个方向向量

然后, 在 1D (曲线) 情况下, 绘制一个形式为 的函数, 或者在 2D (平面) 情况下, 绘制一个形式为 的函数。

以上方法的问题

虽然以上这两种在随机方向移动一个小距离,并绘制函数值的绘图方法很简单,但它无法捕捉损失函数的固有几何形状,并且不能用于比较两个不同的最小化器或两个不同的神经网络模型的几何形状。这是因为网络权重的比例不变性 (scale invariance) 。当使用 ReLU 非线性激活函数时,如果将网络中某一层的权重乘以10,并将下一层的权重除以10,网络输出将保持不变。当使用 BN 时,同理也存在这种不变性。

那么网络权重的比例不变性 (scale invariance) 对于以上的一维,二维的线性插值可视化方法有哪些影响呢?

——具有较大权重的神经网络可能具有平滑且缓慢变化的损失函数:比如说,如果权重的幅值比1大得多,那么将权重扰动一个单位对网络性能的影响很小。但是如果权重远小于1,那么同样的单位扰动可能会产生很大的影响,使损失函数对权重扰动显得相当敏感。

1.3 Filter Normalization

基于以上一维和二维的线性插值可视化方法的缺点,本文提出一种叫做 Filter Normalization 的可视化方法。这种方法的思想也是基于以上的一维,二维的线性插值可视化方法。

以上方法问题的核心其实就来自于 "单位扰动" ,即:

  • 对于权重幅值较大的神经网络而言,一个单位的扰动对它没啥作用,即使得 loss 的改变几乎可以忽略不计,那么它就更可能具有一个平滑且缓慢变化的 loss landscape。

  • 对于权重幅值较小的神经网络而言,一个单位的扰动对它会产生很大的影响,使得 loss 发生灾难性的改变,使得 loss landscape 对权重扰动显得相当敏感

那么为了克服这个难题, 本文作者提出一种滤波器归一化 (Filter Normalization) 的做法, 即:对于网络权重 , 和一个随机的高斯方向向量d , 然后作者将d 中的每个滤波器归一化, 使其具有与 中相应滤波器相同的范数。换句话说, 进行替换, 如下式所示:

式中, d_{i,j} 代表第i 层, 第j 个滤波器的高斯方向向量, 代表 Frobenius 范数。滤波器归一 化 (Filter Normalization) 并不局限于卷积 (Conv) 层, 也适用于全连接(FC) 层 (相当于 卷 积)。

作者在下一节证明了经过滤波器归一化的图的锐度与泛化误差有很好的相关性,而没有滤波器归一化的图可能非常具有误导性。

1.4 可视化实验

Loss landscape 尖锐,扁平的困境

在上一节中,我们提到有的神经网络具有平滑且缓慢变化的 loss landscape (称为 sharp minimizer),而有的具有剧烈变化的 loss landscape (称为 flat minimizer)。在本节中,将通过一些实验结果阐明:sharp minimizer 和 flat minimizer 的泛化性有什么关系?

在这里呢,作者探讨了 sharp minimizer 和 flat minimizer 的区别。

作者表明:使用传统的一维线性插值方法得到的结论是:sharp minimizer 和 flat minimizer 的泛化性没什么关系

曲线的锐度模型的泛化性之间很好地相关。大 Batch Size 产生视觉上更尖锐的最小值 (尽管不是很明显),但测试误差更高。

不同 Batch Size 使用滤波器归一化 1D 和 2D 的可视化结果

1.5 一些 Loss Surfaces 非凸结构的发现

大量经验表明,似乎有些神经结构比其他的更容易最小化。例如,使用 Skip Connection,ResNet 使得我们可以训练非常深的神经网络结构,而没有 Skip Connection 的相同的神经网络结构是不可训练的。而且,一个网络是否可以得到良好的训练很大程度上取决于训练开始时的初始参数。

作者使用可视化方法,对神经结构进行了实证研究,以探索为什么损失函数的非凸性在某些情况下似乎是有问题的

模型深度的影响

如下图所示,可以看到,不使用残差连接时,网络深度对神经网络的 loss landscape 有显著的影响。比如当深度为20时,不使用残差连接的 ResNet-20-NS 有较好的表现,这并不太令人惊讶,因为用于 ImageNet 的原始VGG 网络有19层,也可以有效地训练。但是,随着网络深度的增加,VGG 类网络的损失面自发地从 (近) 凸过渡到混沌。ResNet-56-NS 具有显著的非凸性和大区域,其中梯度方向 (与图中描绘的等高线正常) 不指向中心的最小值。而且,随着向某些方向移动,损失函数会变得非常大。ResNet-110-NS 显示出更明显的非凸性,当我们在图中所示的各个方向移动时,它变得非常陡峭。

图中的对比很强烈——当神经网络比较浅时,不使用快捷连接(shortcut connection)对于损失分布的影响还不算大,即上图中的(a)和(d)图。

当网络达到了 56 层的深度时,无快捷连接(shortcut connection)的模型的等高线图中显示的损失函数基本是混乱的(图(e))。特别是在一些区域中,沿着梯度的方向运动并不能达到损失更小的区域。

这显然是很危险的,意味着梯度下降方法的效率被大大损害了;同时也从另一方面解释了模型的训练性,即为何有些模型的训练更容易,或者对于同一模型为何超参数的取值不同会对模型表现造成巨大影响。

假如模型初始化后落入了一个高度非凸的区域中,在整个训练过程中算法可能都无法找到一个比较好的解,因为梯度所指向的方向根本毫无意义。上图第三栏中,ResNet-110-noshort 显示了更极端的非凸性,不管向哪一个方向移动梯度都非常大。

我们特别需要注意的是在上图第一行中——即有快捷连接(shortcut connection)的 ResNet——即使模型的深度大大增加,中心的极小值的深度也并没有增加多少,即模型收敛的区域仍然是相对平坦的。而第二行中当我们去掉了 ResNet 的快捷连接(shortcut connection)时,图像中心紫线所代表的极小值的深度大大增加了。这样一个最直接的影响——上文已经提到——就是训练难度增加了。

图3:Wide-ResNet-56 有残差连接 (上) 和无残差连接 (下) 的 loss landscape,k=2 意思是每层滤波器数量乘以2

有无残差连接的影响

残差连接对损失函数的 loss landscape 有显著的影响。在上图3中可以看到,随着深度的增加,残差连接阻止了向混沌行为的过渡。残差连接的影响似乎对深的网络架构最为重要。对于更浅的网络 (ResNet-20 和 ResNet-20-NS),残差连接的影响不明显。如下图4所示是 ResNet-56 有无残差连接的 loss landscape 对比,图5所示是 ResNet-110 无残差连接和 DenseNet 121 层的 loss landscape 对比。

图4:ResNet-56 有无残差连接的 loss landscape 对比

图5:ResNet-110 无残差连接和 DenseNet 121 层的 loss landscape 对比

模型宽度的影响

另一个比较有意思的发现在于,当神经网络的宽度增加——即每层的神经元个数增加——损失函数的曲面也变得更平滑了。这里作者使用了 RestNet 56 层的结构,仍然是第一行有快捷连接(shortcut connection),第二行无。其中每个子图下面的 k 表示隐藏神经元的倍数,即 k=2 为模型的宽度是 k=1 的模型的二倍。旁边的百分比数字表示模型的错误率。

可以看到更宽的模型的 loss landscape 更宽,即:增大网络宽度可以获得更宽更平坦的 loss landscape。

图6. Wide-ResNet-56 有残差连接 (上) 和无残差连接 (下) 的 loss landscape,k=2 意思是每层滤波器数量乘以2

[图片来源:Hao, L. et al. (2018). Visualizing the loss landscape of neural nets. NIPS.]

我们首先从上到下两两对比地讨论这些结果,可以看到有快捷连接(shortcut connection)总是比无快捷连接(shortcut connection)的损失函数曲面更平滑一些,极小值的位置也更浅。不过更重要的是当我们从左到右的进行分析时——随着模型宽度的增加,模型的损失曲面显著地变得更平缓了,也就是更浅了。

对于没有快捷连接(shortcut connection)的模型来说,增加模型宽度也许不能直接解决损失函数的分布中存在梯度混乱的问题,图(f)的四角都可以看到有很不平滑的等高线,但由于曲面变得更浅,我们可以侧面缓解这个问题。

网络初始化的影响

在图3中看到的一个有趣的性质是,网络的 loss landscape 似乎都可以分成两种区域:一种是损失函数值相对较低,loss landscape 的凸性很好;一种是损失函数值相对较高,loss landscape 的凸性很差。这种混沌和凸区域的划分可能解释了良好初始化策略的重要性。

如果一个神经网络模型的 loss landscape 很平坦,那么初始化的位置很可能位于具有 "良好表现" 的损失函数区域,可能永远不会出于非凸的部分。相反,如果一个神经网络模型的 loss landscape 很陡峭,那么初始化的位置很可能由于梯度不足导致增加优化的难度。

图3和图6都表明,loss landscape 对泛化性有显著的影响。混沌,陡峭的 loss landscape (没有残差连接的深度网络) 导致更糟糕的训练和测试误差,而更凸的景观具有更低的误差值。

总结

  • 本文提出一种基于 "Filter Normalization" 的简单可视化方法。当使用这种归一化时,最小化的锐度与泛化误差有很高的相关性,这种展示的可视化结果非常清晰。

  • 本文观察到,当网络变得足够深时,神经网络的 loss landscape 会迅速从接近凸的状态过渡到高度混乱的状态。这种从凸到混沌行为的转变伴随着泛化误差的急剧下降,并最终导致整个网络可训练性的下降。

  • 本文观察到,残差连接促进了 loss landscape 更加平坦,并阻止了向混沌行为的过渡,这有助于解释为什么残差连接对于训练极深的网络是必要的。

  • 本文通过计算在局部极小值附近 Hessian 矩阵的的最小 (最负) 特征值来定量测量非凸性,并将结果可视化为 heatmap。

  • 本文研究了 SGD 优化轨迹的可视化,也解释了可视化这些轨迹时出现的困难。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/339749.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言进阶】预处理与程序环境

目录一.详解编译与链接1.前言2.翻译环境3.剖析编译过程4.运行环境二.预处理详解1.预定义符号2.剖析#define(1).定义标识符(2).定义宏(3).替换规则(4).#和##(5).宏与函数的对比(6).#undef3.条件编译4.文件包含(1).头文件包含的方式(2).嵌套文件包含一.详解编译与链接 1.前言 在…

《流浪地球2》的现实倒影(三):从脑机接口到数字永生

是人,就会死。这个事实听起来或许很悲哀,但电影《流浪地球2》在一开始,就给出了另一种可能性——疯狂科学家进行数字生命实验,通过连接大脑的电极片,将思维意识上传到计算机,从而让人永生。电影开头的这位印…

《Keras深度学习:入门、实战与进阶》CIFAR-10图像识别

本文摘自《Keras深度学习:入门、实战与进阶》。 https://item.jd.com/10038325202263.html 这个数据集由Alex Krizhevsky、Vinod Nair和Geoffrey Hinton收集整理,共包含了60000张3232的彩色图像,50000张用于训练模型、10000张用于评估模型。…

JUC并发编程学习笔记(一)——知识补充(Threadlocal和引用类型)

强引用、弱引用、软引用、虚引用 Java执行 GC(垃圾回收)判断对象是否存活有两种方式,分别是引用计数法和引用链法(可达性分析法)。 **引用计数:**Java堆中给每个对象都有一个引用计数器,每当某个对象在其它地方被引用时,该对象的…

文献阅读:Scaling Instruction-Finetuned Language Models

文献阅读:Scaling Instruction-Finetuned Language Models 1. 文章简介2. 实验 1. 数据集 & 模型 1. 数据集考察2. 使用模型 2. scale up对模型效果的影响3. CoT对模型效果的影响4. 不同模型下Flan的影响5. 开放接口人工标注指标 3. 结论 文献链接:…

【C++】类和对象(一)

目录一、面向过程和面向对象初步认识二、类的引入三、类的定义四、类的访问限定符及封装4.1、访问限定符4.2、封装五、类的作用域六、类的实例化七、类对象的大小八、this指针8.1、this指针的引出8.2、this指针的特性8.3、C语言和C实现Stack的对比一、面向过程和面向对象初步认…

XSS漏洞,通过XSS实现网页挂马

**今天讲下通过XSS实现网页挂马~*,目的是了解安全方面知识,提升生活网络中辨别度 原理: 实验分为两部分: 1、通过Kali linux,利用MS14_064漏洞,制作一个木马服务器。存在该漏洞的用户一旦通过浏览器访问木…

C语言(C文件处理函数和文件指针)

C语言有很多文件操作函数,这里我们挑了一些重要的开始讲,首先说下这些函数都定义在stdio.h头文件中 目录 一.文件指针 二.文件处理函数 1.fopen(打开文件) 2.fclose(关闭文件) 3.getc和putc(从文件指针读取字符) 4.I/O工作…

「C++控制台生存游戏」暗黑体素 DarkVoxel 控制台版

“《只有作者能看懂的一款游戏》” 刚进高中前开始写的一款抽象的生存游戏 BUG很多请见谅 ###【点击此处,免费畅玩】### 类似泰拉瑞亚的一款游戏 『暗黑体素 DarkVoxel』 直接上图! 用控制台写出如此奇葩的生存游戏,可谓世间少有。 操作…

2022黑马Redis跟学笔记.实战篇(二)

2022黑马Redis跟学笔记.实战篇 二实战篇Redis开篇导读4.1短信登录4.1.1. 搭建黑马点评项目一、导入黑马点评项目二、导入SQL三、有关当前模型四、导入后端项目相关依赖配置redis和mysql连接项目组成概述关闭Linux防火墙五、导入前端工程六、 运行前端项目4.1.2. 基于Session实现…

选购交换机的参数依据和主要的参数指标详解

如何选购交换机?用什么交换机?在选购交换机时交换机的优劣无疑十分的重要,而交换机的优劣要从总体构架、性能和功能三方面入手。交换机选购时。性能方面除了要满足RFC2544建议的基本标准,即吞吐量、时延、丢包率外,随着…

网络是怎么连接笔记(一)WEB浏览器

文章目录介绍生成HTTP请求消息向DNS服务器查询WEB服务的IP地址全世界DNS服务器的大接力委托协议栈发送消息介绍 互联网整个消息传递流程 生成HTTP请求消息向DNS服务器查询WEB服务的IP地址然后DNS服务器进行查询IP地址委托协议给对应IP发送消息 生成HTTP请求消息 整个网络发…

Spring面试重点(三)——AOP循环依赖

Spring面试重点 AOP 前置通知(Before):在⽬标⽅法运行之前运行;后置通知(After):在⽬标⽅法运行结束之后运行;返回通知(AfterReturning):在⽬标…

2023年前端面试知识点总结(CSS篇)

近期整理了一下高频的前端面试题,分享给大家一起来学习。如有问题,欢迎指正! 1. 对CSS盒模型的理解 CSS3的盒模型有两种盒子模型:标准盒子模型、IE盒子模型 盒模型都是由四个部分组成的,分别是content(内容…

layui框架学习(6:基础菜单)

菜单是应用系统的必备元素,虽然网页中的导航也能作为菜单使用,但菜单和导航的样式和用途有所不同(不同之处详见参考文献5)。Layui中用不同的预设类定义菜单和导航的样式,同时二者依赖的模块也不一样。本文主要学习和记…

Vue (3)

文章目录1. 数据代理1.1 回顾1.2 开始2. 事件处理2.1 v-on:click 点击事件2.2 事件修饰符2.3 键盘事件3. 计算属性3.1 插值语法实现3.2 methods实现3.3 计算属性实现4. 监视属性4.1 深度监视4.2 监视属性的简写形式4.3 watch 与 computed 对比1. 数据代理 在学习 数据代理 时 先…

SQL数据查询——单表查询和排序

文章目录一、单表查询1.查询列1)查询全部列指定列2)查询经过计算的值3)列的别名2.查询元组1)消除取值重复的行(DISTINCT)2)条件查询(WHERE)3.空值参与运算4.着重号二、排序(ORDER BY子句)一、单表查询 单表查询指仅涉及…

Webpack的知识要点

在前端开发中,一般情况下都使用 npm 和 webpack。   npm是一个非常流行的包管理工具,帮助开发者管理项目中使用的依赖库和工具。它可以方便地为项目安装第三方库,并在项目开发过程中进行版本控制。   webpack是一个模块打包工具&#xff…

C语言深度剖析之程序环境和预处理

1.程序的翻译环境和执行环境 第一种是翻译环境,在这个环境中源代码被转换为可执行的机器指令 第二种是执行环境,它用于实际执行代码 2.翻译环境 分为四个阶段 预编译阶段 ,编译,汇编,链接 程序编译过程:多个…

使用vue3,vite,less,flask,python从零开始学习硅谷外卖(16-40集)

严正声明! 重要的事情说一遍,本文章仅供分享,文章和代码都是开源的,严禁以此牟利,严禁侵犯尚硅谷原作视频的任何权益,我知道学习编程的人各种各样的心思都有,但这不是你对开源社区侵权的理由&am…