当前位置:首页 > 科技数码

swish 谷歌大脑提出新型激活函数Swish惹争议:可直接替换并优于ReLU?(附机器之心测试)

选自arXiv

参与:薛璐、蒋思远

最近,谷歌大脑团队提出了一个新的激活功能Swish。团队实验表明,使用Swish直接替换ReLU激活函数可以提高DNN的测试精度。此外,激活函数的形式非常简单,它提供了平滑和非单调的特性,从而提高了整个神经网络的性能。

本文中,Google brain团队提出了Swish激活函数:f (x) = x sigmoid (x),基线实验表明,它可以替代大多数环境下流行的ReLU函数。但在Reddit论坛中,这种激活功能的性能和优势仍然存在争议。有开发者发现这种激活函数在很多情况下可以获得比标准ReLU更高的性能,而也有开发者认为Swish激活函数并不是什么新鲜事,要注意更多的基础研究。

让-波特:我发现这篇论文比ELU的论文更有趣。他们在激活函数空中使用搜索技术,然后分析并执行一些实验。激活功能很重要。由于ReLU函数的普及,我们很少在它上面取得很大的进展,所以我们确实需要一批关于激活函数的论文来提高神经网络的性能。

图里克:为什么不把本文的思想和前面提出的SELU(标度指数线性元)结合起来,让Swish不用批量归一化技术就能实现自归一化?如果我的推导正确,激活函数的形式应该是1.67653251702 * x * sigmoid(x)。

Jbmlres:论文中用于强化学习中神经网络函数逼近的Sigmoid加权线性单元的激活函数不是类似的结构吗?

Inkognit:这个激活函数类似于Facebook提出的门控线性单位/GLU?

通过观察Reddit上的热烈讨论,我们发现开发者对这个激活函数的性能有很大的争议。有研究人员使用TensorFlow或Keras实现Swish,正常情况下平均测试准确率提高0.5%左右,有的开发者甚至质疑研究是否充满了水。正如上面jbmlres提到的,论文确实与本文使用的激活函数非常相似。本文第一作者普拉吉特·拉马钱德兰(Prajit Ramachandran)对Reddit的回应如下:

大家好,我是这篇论文的第一作者,下面我将总结和回应一些评论:

如上所述,我们在文献综述中没有提到提出相同激活功能的这篇论文。错误在于我们没有彻底搜索相关文献。我们真诚地道歉,并将很快修改论文。

如文中所述,我们搜索了多种形式的激活函数,x*CDF(x)也在我们的搜索空中。当我们发现它的性能不如x*sigmoid(x)的时候。

我们还计划用推荐的初始化设置来实现SELU实验。

激活函数的研究非常重要,因为它是深度学习的核心单元。即使激活功能只提高一点点,也会因为使用广泛而获得很大的好处。ReLU不仅在研究中非常常见,在工业中也有广泛的应用。因此,更换ReLU对科研和工业都具有现实意义。

我们希望这项研究工作能够为我们提供一套令人信服的实验结果,鼓励使用ReLU的研究人员和开发人员至少尝试使用Swish。如果我们的实验有一些性能改进,我们可以用它来代替ReLU。最重要的是,用Swish代替ReLU非常方便,而且我们不需要修改神经网络架构和初始化激活函数。

在这方面,机器心脏也试图使用完全连接的神经网络来测试激活功能。我们测试的数据集是MNIST,但是由于3层全连通网络的测试精度一般可以达到98.53%,而且这样的网络过于简单,我们将其扩展为包含10个全连通隐藏层的神经网络。通过构建更复杂的网络,我们希望增加优化和推理的难度,使其更好地反映两种激活函数的区别。虽然增加模型的复杂度可能会导致过拟合,但我们只需要比较复杂网络中ReLU和Swish的测试精度。

下面是扩展后的神经网络层系和每层神经元的数量。通过这些参数,我们可以理解扩展的神经网络体系结构:

输入_节点= 784

LAYER1_NODE = 500

LAYER2_NODE = 500

LAYER3_NODE = 500

LAYER4_NODE = 500

LAYER5_NODE = 500

LAYER6_NODE = 500

LAYER7_NODE = 500

LAYER8_NODE = 300

LAYER9_NODE = 200

第10层_节点= 100

OUTPUT_NODE = 10

下面是定义推理过程的代码。这里我们首先使用ReLU激活函数:

layer 1 = TF . nn . relu(TF . matmul(input _ tensor,avg _ class . average(W[0])+avg _ class . average(B[0])

layer 2 = TF . nn . relu(TF . matmul(layer 1,avg _ class . average(W[1])+avg _ class . average(B[1])

layer 3 = TF . nn . relu(TF . matmul(layer 2,avg_class.average(西[2])+avg _ class . average([2])

layer 4 = TF . nn . relu(TF . matmul(layer 3,avg_class.average(西[3])+avg _ class . average([3])

layer 5 = TF . nn . relu(TF . matmul(layer 4,avg_class.average(西[4])+avg _ class . average([4])

layer 6 = TF . nn . relu(TF . matmul(layer 5,avg_class.average(西[5])+avg _ class . average([5])

layer 7 = TF . nn . relu(TF . matmul(layer 6,avg_class.average(西[6])+avg _ class . average([6])

layer 8 = TF . nn . relu(TF . matmul(layer 7,avg_class.average(西[7])+avg _ class . average([7])

layer 9 = TF . nn . relu(TF . matmul(layer 8,avg_class.average(西[8])+avg _ class . average([8])

layer 10 = TF . nn . relu(TF . matmul(layer 9,avg _ class . average(W[9])+avg _ class . average(B[9])

returntf.matmul(layer10,avg _ class . average(W[10])+avg _ class . average(B[10)]

然后,我们将定义推理过程所涉及的ReLU激活函数转化为Swish激活函数。Swish的表达式是f (x) = x Sigmoid (x),TensorFlow自带Sigmoid函数,所以我们可以借助tf.nn.sigmoid()函数构建Swish激活函数:

ac_1=tf.matmul(input_tensor,avg _ class . average(W[0])+avg _ class . average(B[0])

layer1 = ac_1*tf.nn.sigmoid(ac_1)

ac_2=tf.matmul(layer1,avg _ class . average(W[1])+avg _ class . average(B[1])

layer2 = ac_2*tf.nn.sigmoid(ac_2)

ac_3=tf.matmul(layer2,avg _ class . average(W[2])+avg _ class . average(B[2])

layer3 = ac_3*tf.nn.sigmoid(ac_3)

ac_4=tf.matmul(layer3,avg _ class . average(W[3])+avg _ class . average(B[3])

layer4 = ac_4*tf.nn.sigmoid(ac_4)

ac_5=tf.matmul(layer4,avg _ class . average(W[4])+avg _ class . average(B[4])

layer5 = ac_5*tf.nn.sigmoid(ac_5)

ac_6=tf.matmul(layer5,avg _ class . average(W[5])+avg _ class . average(B[5])

layer6 = ac_6*tf.nn.sigmoid(ac_6)

ac_7=tf.matmul(layer6,avg _ class . average(W[6])+avg _ class . average(B[6])

layer7 = ac_7*tf.nn.sigmoid(ac_7)

ac_8=tf.matmul(layer7,avg _ class . average(W[7])+avg _ class . average(B[7])

layer8 = ac_8*tf.nn.sigmoid(ac_8)

ac_9=tf.matmul(layer8,avg _ class . average(W[8])+avg _ class . average(B[8])

layer9 = ac_9*tf.nn.sigmoid(ac_9)

ac_10=tf.matmul(layer9,avg _ class . average(W[9])+avg _ class . average(B[9])

layer 10 = AC _ 10 * TF . nn . sigmoid(AC _ 10)

returntf.matmul(layer10,avg _ class . average(W[10])+avg _ class . average(B[10])

如上所示,我们首先计算每一层的传播结果。例如,ac_3计算第二层神经网络的输出结果,即第三层神经网络的输入值。然后计算当前层的激活值,例如,层3用ac_3*tf.nn.sigmoid(ac_3)构造激活函数,计算激活值。另外,我们构造的列表w包含了所有级别的权重,列表b包含了每个级别的偏差向量,avg_class.average()是模型中定义的移动平均运算。

首先,我们使用标准的三层全连接网络(784;500;10),在这种情况下,测试精度为0.9829。然后我们扩展到10个隐藏层来测试Swish的效果。以下显示了使用ReLU激活功能的全连接网络的测试准确性:

其中σ (x) = 1/(1+exp (x))为Sigmoid函数。图1显示了Swish函数的图像:

如果β = 0,Swish变成线性函数f (x) = x,当β→∞,Sigmoid更接近0-1函数(指标函数)时,Swish更像ReLU函数。这说明Swish可以广义地看作一个光滑函数,是线性函数和ReLU函数之间的非线性插值。当β被设置为可训练参数时,插值的程度可以由模型控制。我们把这个变量(不包括x之前的系数2)叫做Swish-β。

Swish的设计灵感来自于在LSTM和高速公路网络中使用sigmoid函数进行门控。我们使用相同的选通值来简化选通机制,这称为自选通。自门控的优点是只需要简单的标量输入,而正常门控需要多个标量输入。这一特性使得通过使用自门控激活功能(如Swish)来替换以单个标量作为输入的激活功能(如ReLU)变得容易,而无需改变隐藏容量或参数数量。

事实上,Swish函数在TensorFlow等大多数深度学习库中,只需改变一行代码就可以实现(Abadi等人,2016)。需要注意的是,如果使用batch ORM(Ioffe & amp:Szegedy,2015),应该设置比例参数。因为ReLU函数是分段线性函数,所以一些高级库默认关闭缩放参数,但是这个设置不适用于Swish。在训练Swish网络时,我们发现稍微降低学习率对于训练ReLU网络是非常有效的。

2.1唰的特点

我们的实验证明Swish在多深度模型上的性能始终优于ReLU函数或与之匹配。因为训练受多种因素影响,很难证明为什么一个激活函数优于另一个。但我们认为Swish具有无上限、下界、非单调、光滑的优点。我们在图3中画出了其他常见的激活函数,这有利于讨论。

图3:常见的基线激活函数。

3实验

本文采用不同的模型来测试主流激活函数在不同任务和数据集上的性能。下表1给出了Swish激活函数与基线激活函数的比较,总结了Swish激活函数与各种主流激活函数在基线性能上的差异,这些比较结果是在不同数据集(MNIST、CIFAR或ImageNet等)上使用不同的激活函数实现的。)通过不同的模式(initiation、MobileNet等。).

表1:本实验中,Swish优于其他激活函数的模型数量。其中,使用Swish的模型性能普遍高于使用其他激活函数的模型。

图6:当具有不同激活函数的全连接级别的数量改变时,其在MNIST数据集上的性能改变。取上面三个运行的中间值。

在我们的实验中,如果完全连接网络的级别在40层以内,不同激活功能的性能没有显著差异。从40层到50层,Swish的性能比ReLU更好,因为随着层数的增加,优化会变得更加困难。在非常深的网络中,Swish可以达到比ReLU更高的测试精度。传统上,ReLU由于梯度不收缩(梯度消失问题)而表现出高效的性能,但现在Swish尽管梯度收缩(梯度不是常数),但更适合训练深度神经网络。

图7:不同激活函数批量大小改变时,在CIFAR-10数据集上测试ResNet-32模型的准确性。

Swish在每一个批量大小上的性能都优于ReLU的激活函数,也就是说两个激活函数的性能比较并不随着批量大小的变化而变化。

此外,我们还重点比较了主流激活函数在ImageNet架构上的性能,包括:initiation-resnet-v2、initiation-v4、initiation-v3 (szegedy等人,2017)、MobileNet(Howard等人,2017)和Mobile NASNet-A(Zoph等人,2017)所有架构都是为ReLU设计的,但是我们可以用不同的激活函数替换ReLU,然后给所有模型相同的迭代次数,并对其进行训练。训练步数由ReLU基线的收敛性决定。

表4:手机NASNet-A对4:ImageNet已经运行了三次,准确率最高。

表5:在5:ImageNet上三个不同的initiation-resnet-v2运行结果。注意:ELU有时候在训练开始就有不稳定的问题,这也是第一次训练成绩低的原因。

表6:在ImageNet上使用不同激活函数的MobileNet训练结果。

表8:在ImageNet上使用不同激活函数的initiation-v4训练结果。

表4-8的结果展示了Swish的强大性能。Swish在移动机型上的性能特别好,比ReLU在Mobile NASNet-A上的性能高0.9%,比ReLU在MobileNet上的性能高2.2%。此外,Swish在大多数型号上的性能匹配或优于最佳性能基线(最佳性能基线随着型号的变化而变化)。

5结论

Swish是一个新的激活函数,其公式为:f (x) = x sigmoid (x)。Swish具有无上界、下界、光滑、非单调的特点,对Swish及类似激活函数的性能起到了有益的作用。在实验中,我们使用了专门为ReLU设计的模型和超参数,然后用Swish替换了ReLU激活函数;只有如此简单和非最佳的迭代步骤数仍然使Swish始终优于ReLU和其他激活函数。我们预计,当模型和超参数为Swish设计时,Swish可以进一步改进。Swish的简单性和它与ReLU的相似性意味着在任何网络中替换ReLU都只是改变一行代码的简单事情。

原链接:https://www.reddit.com/r/machinelearning/comments/773epu/r _刷卡_ a _自闭_激活_功能_ Google/

这篇文章是为机器的核心编写的。请联系本微信官方账号进行授权。

1.《swish 谷歌大脑提出新型激活函数Swish惹争议:可直接替换并优于ReLU?(附机器之心测试)》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《swish 谷歌大脑提出新型激活函数Swish惹争议:可直接替换并优于ReLU?(附机器之心测试)》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/840298.html

上一篇

张靓颖母亲 张靓颖母亲公开信 网友围观:可怜天下父母心

下一篇

蟹老宋 正当季空运大闸蟹卖得火 北京蟹老宋出自阳澄湖养殖基地

if函数的使用方法 玩转EXCEL系列-IF函数的使用详解

  • if函数的使用方法 玩转EXCEL系列-IF函数的使用详解
  • if函数的使用方法 玩转EXCEL系列-IF函数的使用详解
  • if函数的使用方法 玩转EXCEL系列-IF函数的使用详解

wiiu和switch性能对比 《马里奥赛车8:豪华版》switch与wiiU画面对比 这真不是大家来找茬?

  • wiiu和switch性能对比 《马里奥赛车8:豪华版》switch与wiiU画面对比 这真不是大家来找茬?
  • wiiu和switch性能对比 《马里奥赛车8:豪华版》switch与wiiU画面对比 这真不是大家来找茬?
  • wiiu和switch性能对比 《马里奥赛车8:豪华版》switch与wiiU画面对比 这真不是大家来找茬?

2020年版第五套人民币5元纸币将发行 防伪性能提升

本文转自;中新网7月8日电据央行网站消息,中国人民银行计划从2020年11月5日起在2020年发行第五套5元人民币纸币。2020年第五套人民币5元纸币保留了2005年第五套人民币5元纸币的规格、主要图案、主要颜色、“中国人民银行”银行名称、国徽、盲文面额标志、汉语拼...

对数换底公式 必看 | 对数函数常见题型解题方法全在这啦,附换底公式技巧

excel横向求和 有了这三个超好用的Excel函数,你可以在办公室里横着走了!

  • excel横向求和 有了这三个超好用的Excel函数,你可以在办公室里横着走了!
  • excel横向求和 有了这三个超好用的Excel函数,你可以在办公室里横着走了!
  • excel横向求和 有了这三个超好用的Excel函数,你可以在办公室里横着走了!

世界上威力最大的冲锋枪排名 十大性能最突出冲锋枪排行

X.Vz。61蝎冲锋枪,1961冲锋枪,是捷克斯洛伐克制造的7.65毫米口径冲锋枪。9.斯太尔TMP是奥地利斯太尔曼利沙设计的9毫米冲锋枪。而TMP作为战术突击手枪来解决。8.PP-2000是俄罗斯图拉KBP仪器设计厂开发的冲锋枪。它具有突击手枪和个人防御武器的特点...

2019十大最强战斗机排行榜:F-35闪电上榜,歼-20威龙综合性能超

  • 2019十大最强战斗机排行榜:F-35闪电上榜,歼-20威龙综合性能超
  • 2019十大最强战斗机排行榜:F-35闪电上榜,歼-20威龙综合性能超
  • 2019十大最强战斗机排行榜:F-35闪电上榜,歼-20威龙综合性能超
正态分布的概率密度函数 关于正态分布,你不知道它诞生之路是多么“变态”

正态分布的概率密度函数 关于正态分布,你不知道它诞生之路是多么“变态”

本文来自微信官方账号:超级数学建模 微信号:超模 上帝说,一定有正态分布 所以有一个正态分布 正态分布,相信所有模特朋友都很熟悉。不过超模君对比课本,想说说。。。  拉普拉斯作为概率论大牛,说过既然来了就不会轻易离开。于是,他开始研究人们一直在疑惑的随机误差(这是当...