![为深度网络构建激活函数 四海 第1张-四海吧 AI生成的图像(craiyon)](https://miro.medium.com/v2/resize:fit:640/format:webp/1*KozBKPl1PKOuow9pPeN_qg.png)
深度神经网络的一个基本组成部分是激活函数(AF),它是网络中节点(“神经元”)的最终输出的非线性函数。常见的激活函数包括sigmoid、双曲正切(tanh)和修正线性单元(ReLU)。
通常情况下,网络构建者会提出新的学习算法、架构等,同时继续使用标准的激活函数。
在我最近的两项工作中,我专注于激活函数,探究如果我们改变它们会发生什么。
在《具有自由选择激活函数的神经网络》中,我将大量已知的激活函数组合到成功的网络架构中。我通过使用Optuna——一种先进的自动超参数优化软件框架来实现这一点。
那么超参数与激活函数有什么关系呢?嗯,最终,取决于您作为编码者如何定义超参数。我“给”Optuna提供了PyTorch中48个可能的激活函数的列表:
其中一些“官方”定义为激活函数(例如ReLU和Sigmoid),而其他的只是张量上的数学函数(例如Abs和Sin)。为了保险起见,我还在研究文献中发现的4个新的激活函数中加入了混合。
Optuna被赋予了将此列表视为超参数的任务。更具体地说,我使用了包含5层神经网络和10层神经网络的Optuna,让Optuna分别找到最佳性能的5个或10个激活函数的列表。
我能够证明,在与由ReLU隐藏单元和softmax输出单元组成的标准网络相比较时,这种方法通常能够更好地为25个分类问题产生显著更好的结果。
在《基于深度学习的图像分类中激活函数的演化》中,我和我的研究生Raz Lapid研究了生成新激活函数。我们使用了遗传编程,这是一种强大的进化算法形式,通过模拟自然选择的过程来演化图形。
例如,下面的图形:
代表了众所周知的sigmoid激活函数。
进化算法被赋予了一组基本构件,用于组合新的激活函数:
正如您所看到的,我们使用了标准激活函数和基本数学函数作为基本构建模块,让进化算法发现新颖而可能有效的组合。这些新的组合就是新的激活函数。
我们还应用了另一种进化的“技巧”,使用了三组演化的激活函数,而不是一组;这被称为协同进化。这个想法在神经网络中是有道理的:
我们在四个图像数据集上测试了我们的方法,并发现协同进化(以及“常规”进化)确实非常有效,能够提供良好的激活函数,从而改善网络性能。此外,我们在不同的网络阶段使用不同的激活函数也证明是有益的。
如果您想了解更多关于进化的内容,我建议您阅读我其他一些关于VoAGI的故事。
进化算法、遗传编程和学习
进化算法是一类受自然界(达尔文式)进化过程启发的搜索算法家族…
VoAGI.com
深度网络上的进化对抗攻击
尽管其无可争议的成功,最近的研究表明深度神经网络(DNNs)易受攻击…
VoAGI.com