激活函数与挤压函数

数据挖掘 机器学习 神经网络 激活函数
2021-09-22 10:33:16

这似乎是一个非常简单明了的问题,但实际上我还没有找到直接的答案。

今天,在一个解释深度神经网络的视频中,我遇到了Squashing function一词。这是一个我从未听说过或使用过的术语。我们的教授总是使用术语激活函数来代替。鉴于我能够找到的定义,这两者似乎是可互换的术语。

它们真的是同义词还是有区别?

3个回答

激活函数

这是一个函数的名称,该函数应用于一个刚刚因新信息而更新权重的神经元。它可以引用任何众所周知的激活函数,例如整流线性单元 (ReLU)、双曲正切函数 (tanh) 甚至恒等函数!查看Keras 文档之类的地方,以获取一些不错的示例列表。

我们通常将激活函数定义为非线性函数,因为它是该属性,它使神经网络能够逼近任何方程(给定一些约束)然而,激活函数也可以是线性的,例如恒等函数。

压扁函数

据我所知,在神经网络的上下文中,这可能意味着两件事之一——你添加到问题中的标签——它们很接近,只是应用方式不同。

第一个也是最常见的例子是当人们提到softmax 函数时,它将最后一层的激活/ logits压缩到 [0, 1] 范围内。这具有允许将最终输出直接解释为概率的效果(即它们的总和必须为 1)。

这些词在神经网络上下文中的第二个也是最新的用法来自 Sara Sabour、Geoffrey Hinton 和 Nicholas Frosst 的相对较新的论文(一篇两篇),它们提出了胶囊网络的想法。这些是什么以及它们如何工作超出了这个问题的范围;但是,“挤压函数”一词值得特别提及。第一篇论文介绍如下:

我们希望胶囊的输出向量的长度表示胶囊所代表的实体存在于当前输入中的概率。因此,我们使用非线性“挤压”函数来确保短向量的长度缩小到几乎为零,而长向量的长度缩小到略低于 1。

这种描述使它听起来确实与 softmax 非常相似!

这个压扁函数定义如下:

vj=||sj||21+||sj||2sj||sj||

在哪里vj是胶囊的向量输出jsj是它的总输入。

如果这对您来说是全新的,并且您想了解更多信息,我建议您阅读这两篇论文,以及一个不错的概述博客,例如这篇文章。

激活函数(如 sigmoid 函数、双曲正切函数等)也称为压缩函数,因为它们将输入压缩到一个小范围内,如 sigmoid 函数输出在 [-1,1] 范围内。但是您不能将 ReLU 称为压缩函数,因为对于正输入值,它会返回相同的输出。

因此,Hornik (1989)的论文中使用了挤压函数的正式定义,参见定义 2.3。该论文表明,任何具有足够数量节点的单层神经网络,其中激活函数是“挤压”函数,都是通用逼近器。鉴于上下文,我认为这就是压缩函数的含义。

给出的定义是任何非递减函数, XF(X)=1X-F(X)=0. 所以我们有 ReLU不是一个压缩函数,因为XRe大号ü(X)=1.

注意。具有 ReLU 激活函数的网络一个通用逼近器,但该论文中的证明不适用于它。