【模型函数】之 Activation 和 Softmax

参考

keras layers activations API:https://keras.io/api/layers/activations/

激活函数作用:https://zhuanlan.zhihu.com/p/25279356

常见的激活函数: https://zhuanlan.zhihu.com/p/70810466

激活函数 (Activation Function)

解决非线性问题:
参考激活函数作用:https://zhuanlan.zhihu.com/p/25279356

在这里插入图片描述

激活函数众所周知有tanh,sigmoid,ReLU等:

Sigmoid:采用S形函数,取值范围[0,1]

Tanh:双切正切函数,取值范围[-1,1]

ReLU:简单而粗暴,大于0的留下,否则一律为0。

1. Sigmoid

sigmoid将输入挤压进(0, 1)(这和概率的取值范围一致),这正是分类任务中sigmoid很受欢迎的原因。
在这里插入图片描述

在这里插入图片描述

2. Tanh(类似Sigmoid)

Tanh 其实与 Sigmoid类似:tanh的形状和sigmoid类似,只不过tanh将“挤压”输入至区间(-1, 1)。因此,中心为零,(某种程度上)激活值已经是下一层的正态分布输入了。至于梯度,它有一个大得多的峰值1.0(同样位于z = 0处),但它下降得更快,当|z|的值到达3时就已经接近零了。这是所谓梯度消失(vanishing gradients)问题背后的原因,会导致网络的训练进展变慢。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. ReLU

Relu是今时今日寻常使用的激励函数。ReLU处理了它的sigmoid、tanh中常见的梯度消失问题,同时也是计算梯度最快的激励函数。
在这里插入图片描述

在这里插入图片描述

使用ReLU的积极方面是它的梯度要么是1(正值),要么是0(负值)——再也没有梯度消失了!这一模式使网络更快收敛。

另一方面,这一表现导致所谓的“死亡神经元”问题,也就是输入持续为负的神经元激活值总是为零。

4. Leaky-ReLU & P-ReLU(改进Relu)

针对Relu公式的硬饱和问题,我们对Relu作出改进,提出Leaky-ReLU,即在 x<0 部分添加一个参数 a ,如下图所示。

P-ReLU则认为 a 也应当作为一个参数来学习,一般建议 a 初始化为0.25。

在这里插入图片描述
在这里插入图片描述

5. Elu(结合Sigmoid和Relu)

ELU是结合了sigmoid的左侧软饱和性和ReLU的右侧无饱和性而提出的一种新的激活函数。从下图中不难看到这一特点。右侧线性部分使得ELU可以缓解梯度消失问题,而左侧软饱和性能让ELU对输入变化或噪声更鲁棒。

而且ELU的输出均值接近于0,所以没有严重的偏移现象,所以收敛速度更快。

在这里插入图片描述
在这里插入图片描述

6. Softsign(类似Tanh)

Softsign是tanh激活函数的另一个替代选择,从图中可以看到它和tanh的曲线极其相似,不过相比于tanh,Sotsign的曲线更平坦,导数下降的更慢一点,这个特性使得它可以缓解梯度消失问题,可以更高效的学习。

不过,Sofsign的导数相比tanh计算要更麻烦一点。

在这里插入图片描述

在这里插入图片描述

7. SoftPlus(Relu的替代)

SoftPlus可以作为ReLu的一个不错的替代选择,可以看到与ReLU不同的是,SoftPlus的导数是连续的、非零的、无处不在的,这一特性可以防止出现ReLU中的“神经元死亡”现象

然而,SoftPlus是不对称的,不以0为中心,存在偏移现象;而且,由于其导数常常小于1,也可能会出现梯度消失的问题。

在这里插入图片描述

在这里插入图片描述

8. Maxout

Maxout出现在ICML2013上,作者Goodfellow将maxout和dropout结合后,号称在MNIST, CIFAR-10, CIFAR-100, SVHN这4个数据上都取得了start-of-art的识别率。

可以注意到,ReLU 和 Leaky-ReLU 都是它的一个变形。这个激活函数有点大一统的感觉,因为maxout网络能够近似任意连续函数,且当w2, b2, … wn, bn 为0时,退化为ReLU。Maxout能够缓解梯度消失,同时又规避了ReLU神经元死亡的缺点,但增加了参数和计算量。
在这里插入图片描述

9. Swish

Paper: Searching for Activation functions(Prajit Ramachandran,Google Brain 2017) https://arxiv.org/abs/1710.05941

在这里插入图片描述

β是个常数或可训练的参数.Swish 具备无上界有下界、平滑、非单调的特性。

Swish:
在这里插入图片描述
导数:
在这里插入图片描述

Swish 在深层模型上的效果优于 ReLU。例如,仅仅使用 Swish 单元替换 ReLU 就能把 Mobile NASNetA 在 ImageNet 上的 top-1 分类准确率提高 0.9%,Inception-ResNet-v 的分类准确率提高 0.6%。

工程实现: 在TensorFlow框架中只需一行代码: x * tf.sigmoid(beta * x)tf.nn.swish(x).

Linear

Softmax

softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类!

猜你喜欢

转载自blog.csdn.net/u010637291/article/details/110285751