百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

用Keras实现使用自归一化神经网络来解决梯度消失的问题

liuian 2025-03-30 18:30 105 浏览

作者:Jonathan Quijas

编译:ronghuaiyang

导读

通过非常简单的模型配置,提升深度神经网络的收敛速度和性能。

问题描述

训练深度神经网络是一项具有挑战性的任务,特别是对于深度很深的模型。这些困难的一个主要部分是由于通过backpropagation来计算的梯度的不稳定性造成的。在这篇文章中,我们将学习如何使用Keras创建一个自归一化的深度前馈神经网络。这将解决梯度不稳定的问题,加速训练收敛,提高模型性能。

背景

在他们的2010年里程碑论文中,Xavier gloriot和Yoshua Bengio提供了关于训练深度神经网络困难的宝贵见解。事实证明,当时流行的激活函数和权值初始化技术直接促成了所谓的梯度消失/爆炸问题。

简而言之,这是当梯度开始减少或增加太多时,就无法进行训练了。

饱和的激活函数

在广泛采用现在无处不在的ReLU函数及其变体之前,sigmoid函数(s形)是激活函数最受欢迎的选择。sigmoid激活函数的例子是logistic函数:

sigmoid函数的一个主要缺点是容易饱和,在logistic函数的情况下,输出容易饱和成0或1。这将导致随着输入的变大,梯度越来越小(非常接近0)。

logistic和ELU激活函数及其相应的导数的可视化。由于饱和,logistic函数的导数将趋于收缩到0。相反,对于正输入,ELU函数的导数将是常数。

由于ReLU及其变体没有饱和,它们缓解了这种梯度消失的现象。ReLU的改进变种,如ELU函数(如上所示),在所有地方都具有平滑的导数:

  • 对于任何正输入,其导数总是1
  • 对于较小的负数,导数不会接近于零
  • 所有地方都是光滑可导的

注意:因此,输入的期望值为0,且方差较小是有益的。这将有助于在网络中保持较大的梯度。

权值初始化的糟糕的选择

论文中发现的另一个重要观点是使用均值为0,标准偏差为1的正态分布的权值初始化的影响,在作者发现之前,这是一个广泛流行的选择。

作者表明,sigmoid激活和权值初始化(均值为0,标准差为1的正态分布)的特定组合使输出具有比输入更大的方差。这种效应在整个网络中复合,使得更深层次的输入相对于更浅(更早)层次的输入具有更大的量级。这一现象后来被Sergey Ioffe和Christian Szegedy在2015年的一篇里程碑式的论文中命名为内部协变量移位

正如我们上面看到的,当使用sigmoid激活时,会出现越来越小的梯度。

这个问题在logistic函数中更加突出,因为它的期望值是0.5,而不是0。双曲正切sigmoid函数的期望值为0,因此在实践中表现得更好(但也趋于饱和)。

作者认为,为了使梯度在训练过程中保持稳定,所有层的输入和输出必须在整个网络中保持或多或少相同的方差。这将防止信号在向前传播时死亡或爆炸,以及在反向传播时梯度消失或爆炸。

LeCun正态初始化生成的分布导致更多的概率质量以0为中心,并具有较小的方差。这与正态初始化生成的分布(0均值和1标准差)形成鲜明对比,在正态初始化中,值的分布范围更广(方差更大)。

为了实现这一点,他们提出了一种权值初始化技术,以论文的第一作者命名为Glorot(或Xavier)初始化。结果是,通过对Glorot技术做一点修改,我们得到了LeCun初始化,以Yann LeCun命名。

自归一化神经网络(SNNs)

2017年,Günter Klambauer等人介绍了自归一化神经网络 (SNNs)。通过确保满足某些条件,这些网络能够在所有层保持输出接近0的均值和1的标准偏差。这意味着SNN不会受到梯度消失/爆炸问题的困扰,因此比没有这种自归一化特性的网络收敛得更快。根据作者的说法,SNN在论文中报告的所有学习任务中都显著优于其他变体(没有自归一化)。下面是创建SNN所需条件的更详细描述。

结构和层

SNN必须是一个由全连接的层组成的顺序模型。

注意:根据任务的不同,某些类型的网络比其他类型的网络更适合。例如,卷积神经网络通常用于计算机视觉任务,主要是由于其参数效率。确保全连接的层适合你的任务如果是这种情况,那么考虑使用SNN。否则,Batch Normalization是进行归一化的好方法。

一个深度,顺序的,全连接的神经网络的例子。

在这种情况下,顺序模型是指各层按照严格的顺序排列的模型。换句话说,对于每个隐藏层ll接收的唯一输入是层l-1的输出。在Keras中,这种类型的模型实际上被称为顺序模型。

全连接层是指层中的每个单元都与每个输入有连接。在Keras中,这种类型的层称为Dense层。

输入归一化

输入必须归一化。这意味着训练数据的均值应为0,所有特征的标准差为1。

权值初始化

SNN中的所有层必须使用LeCun正则初始化来初始化。正如我们前面看到的,这将确保权重值的范围接近于0。

SELU激活函数

作者引入了Scaled ELU (SELU)函数作为snn的激活函数。只要满足上述条件,SELU就提供了自归一化的保证。

Keras实现

下面的示例展示了如何为10类分类任务定义SNN:

def get_snn(num_hidden_layers=20, input_shape=None, hidden_layer_size=100):
   model = keras.models.Sequential()
   model.add(keras.layers.Flatten(input_shape=input_shape))
   for layer in range(num_hidden_layers):
      model.add(keras.layers.Dense(hidden_layer_size,    activation='selu', kernel_initializer='lecun_normal'))
      model.add(keras.layers.Dense(10, activation='softmax'))
   return model

自归一化神经网络在Keras中的实现

实验结果

下面是常规前馈神经网络和SNN在三种不同任务上的比较:

  • 图像分类(Fashion MNIST, CIFAR10)
  • 回归(波士顿住房数据集)

两个网络共享以下配置:

  • 20个隐藏层
  • 每隐藏层100个单位
  • Nadam优化器
  • 7e-4的学习率
  • 50个epochs

对于这两种模型,学习曲线都停留在获得最佳性能度量的epoch。

Fashion MNIST

与常规模型相比,SNN在28%的迭代时间内达到了最佳的验证精度。

SNN最后一层权重在时间上的分布。

常规模型最后一层权重的时间分布。
CIFAR10

与常规模型相比,SNN的验证损失和准确性始终更好。

与常规模型相比,SNN在测试集上获得了12%的F1分数。
Boston Housing

与常规模型相比,SNN在少用了32%的时间内获得了最佳的验证精度。

总结

通过确保我们的前馈神经网络结构满足一组条件,我们可以使它自动规范化。所需条件如下:

  • 模型必须是一个全连接的层序列
  • 使用LeCun normal初始化技术初始化权值
  • 使用SELU激活函数
  • 输入归一化

与没有自归一的模型相比,这几乎总是会导致性能和收敛性的改进。如果你的任务需要一个常规的前馈神经网络,可以考虑使用SNN变体。否则,Batch Normalization是一种优秀的(但需要更多时间和计算成本)规范化策略。

—END—

英文原文:
https://medium.com/towards-artificial-intelligence/solving-the-vanishing-gradient-problem-with-self-normalizing-neural-networks-using-keras-59a1398b779f

相关推荐

搭建一个20人的办公网络(适用于20多人的小型办公网络环境)

楼主有5台机上网,则需要一个8口路由器,组网方法如下:设备:1、8口路由器一台,其中8口为LAN(局域网)端口,一个WAN(广域网)端口,价格100--400元2、网线N米,这个你自己会看了:)...

笔记本电脑各种参数介绍(笔记本电脑各项参数新手普及知识)

1、CPU:这个主要取决于频率和二级缓存,频率越高、二级缓存越大,速度越快,现在的CPU有三级缓存、四级缓存等,都影响相应速度。2、内存:内存的存取速度取决于接口、颗粒数量多少与储存大小,一般来说,内...

汉字上面带拼音输入法下载(字上面带拼音的输入法是哪个)

使用手机上的拼音输入法打成汉字的方法如下:1.打开手机上的拼音输入法,在输入框中输入汉字的拼音,例如“nihao”。2.根据输入法提示的候选词,选择正确的汉字。例如,如果输入“nihao”,输...

xpsp3安装版系统下载(windowsxpsp3安装教程)

xpsp3纯净版在采用微软封装部署技术的基础上,结合作者的实际工作经验,融合了许多实用的功能。它通过一键分区、一键装系统、自动装驱动、一键设定分辨率,一键填IP,一键Ghost备份(恢复)等一系列...

没有备份的手机数据怎么恢复

手机没有备份恢复数据方法如下1、使用数据线将手机与电脑连接好,在“我的电脑”中可以看到手机的盘符。  2、将手机开启USB调试模式。在手机设置中找到开发者选项,然后点击“开启USB调试模式”。  3、...

电脑怎么激活windows11专业版

win11专业版激活方法有多种,以下提供两种常用的激活方式:方法一:使用激活密钥激活。在win11桌面上右键点击“此电脑”,选择“属性”选项。进入属性页面后,点击“更改产品密钥或升级windows”。...

华为手机助手下载官网(华为手机助手app下载专区)

华为手机助手策略调整,已不支持从应用市场下载手机助手,目前华为手机助手是需要在电脑上下载或更新手机助手到最新版本,https://consumer.huawei.com/cn/support/his...

光纤线断了怎么接(宽带光纤线断了怎么接)

宽带光纤线断了可以重接,具体操作方法如下:1、光纤连接的时候要根据束管内,同色相连,同芯相连,按顺序进行连接,由大到小。一般有三种连接方法,分别是熔接、活动连接和机械连接。2、连接的时候要开剥光缆,抛...

深度操作系统安装教程(深度操作系统安装教程图解)
  • 深度操作系统安装教程(深度操作系统安装教程图解)
  • 深度操作系统安装教程(深度操作系统安装教程图解)
  • 深度操作系统安装教程(深度操作系统安装教程图解)
  • 深度操作系统安装教程(深度操作系统安装教程图解)
win7旗舰版和专业版区别(win7旗舰版跟专业版)

1、功能区别:Win7旗舰版比专业版多了三个功能,分别是Bitlocker、BitlockerToGo和多语言界面; 2、用途区别:旗舰版的功能是所有版本中最全最强大的,占用的系统资源,...

万能连接钥匙(万能wifi连接钥匙下载)

1、首先打开wifi万能钥匙软件,若手机没有开启WLAN,就根据软件提示打开WLAN开关;2、打开WLAN开关后,会显示附近的WiFi,如果知道密码,可点击相应WiFi后点击‘输入密码’连接;3、若不...

雨林木风音乐叫什么(雨林木风是啥)

雨林木风的创始人是陈年鑫先生。陈年鑫先生于1999年创立了雨林木风公司,其初衷是为满足中国市场对高品质、高性能电脑的需求。在陈年鑫先生的领导下,雨林木风以技术创新、产品质量和客户服务为核心价值,不断推...

aics6序列号永久序列号(aics6破解序列号)

关于AICS6这个版本,虽然是比较久远的版本,但是在功能上也是十分全面和强大的,作为一名平面设计师的话,AICS6的现有的功能已经能够应付几乎所有的设计工作了……到底AICC2019的功能是不是...

win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
  • win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
  • win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
  • win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
  • win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
手机可以装电脑系统吗(手机可以装电脑系统吗怎么装)

答题公式1:手机可以通过数据线或无线连接的方式给电脑装系统。手机安装系统需要一定的技巧和软件支持,一般需要通过数据线或无线连接的方式与电脑连接,并下载相应的软件和系统文件进行安装。对于大部分手机用户来...