Press "Enter" to skip to content

为深度网络构建激活函数

AI生成的图像(craiyon)

深度神经网络的一个基本组成部分是激活函数(AF),它是网络中节点(“神经元”)的最终输出的非线性函数。常见的激活函数包括sigmoid、双曲正切(tanh)和修正线性单元(ReLU)。

为深度网络构建激活函数 四海 第2张

通常情况下,网络构建者会提出新的学习算法、架构等,同时继续使用标准的激活函数。

在我最近的两项工作中,我专注于激活函数,探究如果我们改变它们会发生什么。

在《具有自由选择激活函数的神经网络》中,我将大量已知的激活函数组合到成功的网络架构中。我通过使用Optuna——一种先进的自动超参数优化软件框架来实现这一点。

那么超参数与激活函数有什么关系呢?嗯,最终,取决于您作为编码者如何定义超参数。我“给”Optuna提供了PyTorch中48个可能的激活函数的列表:

为深度网络构建激活函数 四海 第3张

其中一些“官方”定义为激活函数(例如ReLU和Sigmoid),而其他的只是张量上的数学函数(例如Abs和Sin)。为了保险起见,我还在研究文献中发现的4个新的激活函数中加入了混合。

Optuna被赋予了将此列表视为超参数的任务。更具体地说,我使用了包含5层神经网络和10层神经网络的Optuna,让Optuna分别找到最佳性能的5个或10个激活函数的列表。

我能够证明,在与由ReLU隐藏单元和softmax输出单元组成的标准网络相比较时,这种方法通常能够更好地为25个分类问题产生显著更好的结果。

在《基于深度学习的图像分类中激活函数的演化》中,我和我的研究生Raz Lapid研究了生成新激活函数。我们使用了遗传编程,这是一种强大的进化算法形式,通过模拟自然选择的过程来演化图形。

例如,下面的图形:

为深度网络构建激活函数 四海 第4张

代表了众所周知的sigmoid激活函数。

进化算法被赋予了一组基本构件,用于组合新的激活函数:

为深度网络构建激活函数 四海 第5张

正如您所看到的,我们使用了标准激活函数和基本数学函数作为基本构建模块,让进化算法发现新颖而可能有效的组合。这些新的组合就是新的激活函数。

我们还应用了另一种进化的“技巧”,使用了三组演化的激活函数,而不是一组;这被称为协同进化。这个想法在神经网络中是有道理的:

为深度网络构建激活函数 四海 第6张

我们在四个图像数据集上测试了我们的方法,并发现协同进化(以及“常规”进化)确实非常有效,能够提供良好的激活函数,从而改善网络性能。此外,我们在不同的网络阶段使用不同的激活函数也证明是有益的。

如果您想了解更多关于进化的内容,我建议您阅读我其他一些关于VoAGI的故事。

进化算法、遗传编程和学习

进化算法是一类受自然界(达尔文式)进化过程启发的搜索算法家族…

VoAGI.com

深度网络上的进化对抗攻击

尽管其无可争议的成功,最近的研究表明深度神经网络(DNNs)易受攻击…

VoAGI.com

Leave a Reply

Your email address will not be published. Required fields are marked *