作者 | 陈大鑫
编辑 | 丛 末
在深度神经网络大行其道的今天,谁还不认识几个激活函数呢?
下图就是一些我们经常使用的激活函数,从这些激活函数的图像可以看出它们有的是局部线性的有的是非线性的,有的是一个函数表达式下来的,有的是分段的。但其表达式好像都不是很常见,给人一种应凑的感觉有没有?
比如在Relu出现之后,有人觉得x轴坐标都是0(神经元不激活)不太好,那就有了Leaky Rulu的出现,之后又有人提出线性的不太好,那就出现了ELU等等吧。总之Relu的变体一直增多,难道就不能换个花样吗?难道激活函数就得是分段函数去凑吗?
那有意思的就来了,近日斯坦福大学研究员Vincent Sitzmann 等人合作发表了一篇论文:
论文地址:https://arxiv.org/pdf/2006.09661.pdf
项目主页:https://vsitzmann.github.io/siren/
开源代码:https://github.com/vsitzmann/siren
在这篇论文中研究人员在隐形神经表示中使用了正弦函数来替代以往的激活函数,那效果如何呢?
上图是一张狗狗的图片,我们把它放进两个5层的神经网络进行训练并求其梯度图,这两个神经网络除了激活函数不同其它都一样,得到的结果如下图所示。
可以很明显的看出,使用了ReLU激活函数得到的梯度图只是勾勒了原图梯度图的轮廓,而使用了本论文中的正弦周期激活函数(SIREN)得到的梯度图表现几乎与原图梯度图一样好(实际上充当了 Sobel过滤器)。
下图则可以看出正弦周期激活函数(SIREN)在二阶梯度图/拉普拉斯算子下表现得更好。
那究竟正弦周期激活函数(SIREN)是怎样得到这样良好的性能呢?
在回答这个问题之前我们先来明确一下这个激活函数的应用场景:隐式神经表示。
简单来说,Φ只与x有关,即Φ是由F隐式定义的,我们将这种隐式定义函数参数化的神经网络称为隐式神经表示。而科学领域中的各种各样的问题都是以这种隐式神经表示形式存在的,例如在图像、视频和音频处理中使用连续的可微表示来建模许多不同类型的离散信号,通过符号距离函数学习三维形状表示,以及更广泛的求解边界值问题:如泊松方程、亥姆霍兹方程或波动方程。
由神经网络参数化的隐式、连续、可微的信号表示已成为一种强有力的范式,与传统的表示相比,它提供了许多可能的好处。然而目前用于这种隐式神经表示的网络结构无法对信号进行精细的建模,并且无法表示信号的空间和时间导数,尽管事实上,这些导数对于许多隐含定义为偏微分方程解的物理信号是必不可少的。我们建议利用周期激活函数来表示隐式神经网络,并证明这些网络,称为正弦表示网络或SIREN ,非常适合于表示复杂的自然信号及其导数。
1
ReLU的不足
基于以上一些原因,隐式神经表示在过去的一年里引起了广泛的研究兴趣。然而这些最新的研究大多建立在基于ReLU的多层感知器(mlp)上,尽管这些架构很有前途,但它们缺乏在底层信号中表示精细细节的能力,而且它们通常不能很好地表示目标信号的导数/梯度。
这部分是由于ReLU网络是分段线性的,其二阶导数处处为零,因此无法对自然信号的高阶导数中包含的信息进行建模。虽然替代激活如tanh或softplus能够表示高阶导数,但它们的导数通常表现不好,也不能表示精细的细节。
2
SIREN的提出
为了解决这些局限性,作者利用具有周期性激活函数的mlp进行隐式神经表征。作者证明,这种方法不仅比ReLU-MLP更好地表示信号中的细节,而且这些性质还独特地适用于导数,可微意味着梯度和高阶导数可以解析地计算,例如使用自动微分,利用良好的导数,隐式神经表示还可以为求解微分方程等反问题提供一个新的工具箱。
那就来看看SIREN在各方面应用的表现效果吧
1、图像
将2D像素坐标映射到颜色的SIREN可用于参数化图像。在这里,我们直接使用ground truth像素值来监督SIREN。与所有baseline架构相比,SIREN不仅具有高10 dB的PSNR(峰值信噪比)和更少的迭代次数来拟合图像,而且它还是唯一能够准确表示图像的一阶和二阶梯度的的MLP(多层神经网络)。
2、音频
具有单个时间坐标输入和标量输出的SIREN可以参数化音频信号,SIREN是唯一能够成功再现音乐和人声音频信号的网络体系结构。
3、视频
具有像素坐标和时间坐标的SIREN可用于参数化视频。在这里,SIREN受到ground truth像素值的直接监督,并且比ReLU MLP更好地参数化视频。
4、泊松图像重建和编辑
5、解泊松方程
通过仅监督SIREN的导数,可以求解泊松方程,SIREN警报器再次成为唯一能够准确,快速地拟合图像,梯度和拉普拉斯域的架构。
6、解决亥姆霍兹方程问题
7、求解波动方程
在时域中,SIREN成功解决了波动方程,而基于Tanh激活函数的体系结构却未能找到正确的解决方案。
8、用符号距离函数表示形状
3
SIREN的奥妙:求梯度不变性
对SIREN求梯度得到的是另一个SIREN:
在求梯度时用到了求导链式法则,且易知对正弦函数求n阶导仍然是正/余弦函数,如下图所示,大家感兴趣可以多看两眼。
4
讨论与结论
如何表示信号的问题是许多科学和工程问题的核心。与传统的连续和离散表示相比,隐式神经表示可能为其中许多方法提供了一种新的工具。作者证明周期激活函数非常适合用隐式神经表示来表示复杂的自然信号及其导数。作者还原型了几个边值问题,其框架能够稳健地解决这些问题。对于未来的工作有几个令人兴奋的途径,包括探索其他类型的反问题以及在隐式神经表示之外的领域的应用。
一些思考:
正弦周期函数在隐式神经表示领域中是最好的一簇激活函数吗?在深度学习别的领域是否也存在一种比Relu之类更好的一簇激活函数?联系到人类大脑,难道说大脑在解决不同任务的时,内部神经元(突触)的激活表达方式也是不唯一的吗?
固然说人工智能和脑科学是两回事,这二者的内部作用机制也不必等同。但是就像爱因斯坦至死都在追求大统一理论一样,我们相信对于神经网络来说也是存在着一套通用、统一的运行机制:前后两层的作用方式(乘法网络或加法网络或者别的)应该是统一的,激活函数(我猜肯定不是Relu)应该是统一的,超参数的排列方式的产生规律应该是统一的、记忆力和注意力应该是统一的,有无dropout机制等也是统一的......
或许、或许除了要求非线性、强表达之外,上面的一切组件都不是必须的呢?也许有其他的组件可以替代以上呢?
我想这大概就是人工智能的“人工”所在吧,也许我们目前所作的真的只是在拟合数据而已。
那智能又体现在哪里的?智能都是人类赋予机器的,机器只是来满足我们的人类的各种需要而已,从这个角度来说,只要机器能更高效更省电地完成任务不就得了,还要什么自行车?
总的来说,怎么能高效地“人工”即是一种挑战也是一种魅力。
参考链接:https://medium.com/@sallyrobotics.blog/sirens-implicit-neural-representations-with-periodic-activation-functions-f425c7f710fa