Swish **函数的数学公式非常的简单,即 f(x) = x * sigmoid(x) 。根据谷歌大脑的论文,该**函数的性能比 ReLU **函数的性能要好很多。
目前使用最广泛的**函数是 ReLU。
本论文中,我们提出了一种新型**函数 Swish,Swish的数学表达为:f(x)
= x * sigmoid(x) 。
其中σ(x) = 1/(1 + exp(−x)) 是 Sigmoid 函数。 Swish 函数的几何表示如下:
和 ReLU 一样,Swish 无上界有下界。 与 ReLU 不同的是,Swish 是平滑且非单调的函数。
Swish 的导数是
Swish 的一阶导和二阶导如图 2 所示。输入低于 1.25 时,导数小于 1。
Swish 的设计受到 LSTM 和 highway network 中使用 sigmoid 函数进行门控的启发。我们使用同样的值进行门控来简化门控机制,称为自门控(self-gating)。自门控的优势是它仅需要一个简单的标量输入,而正常的门控需要多个标量输入。该特性令使用自门控的**函数如 Swish 能够轻松替换以单个标量作为输入的**函数(如 ReLU),无需改变参数的隐藏容量或数量。
在 TensorFlow 等大多数深度学习库中只需更改一行代码即可实现 Swish 函数。需要注意的是,如果使用 BN,应设置缩放参数(scale parameter)。由于 ReLU 函数是分段线性函数,一些高级别的库默认关闭缩放参数,但是该设置不适用于 Swish。
一句话:Swish 是一种新型**函数,公式为: f(x) = x · sigmoid(x)。Swish 具备无上界有下界、平滑、非单调的特性。