文章目录
- 激活函数
- 1. sigmoid
- 2. relu
- 3. leakyReLu
- 4. nn.PReLU
- 5. nn.ReLU6
- 6. Softplus函数
- 7. softmin, softmax, log softmax
- 8. ELU
激活函数
1. sigmoid
https://zhuanlan.zhihu.com/p/172254089
sogmoid函数的梯度范围在 0-0.25, 容易梯度消失
2. relu
ReLU激活函数的提出 可以解决梯度消失问题
但是
如果输入激活函数的值总是负的,那么反向传播过程经过该处的梯度恒为0,对应的权重和偏置参数此次无法得到更新。如果对于所有的样本输入,该激活函数的输入都是负的,那么该神经元再也无法学习,称为神经元”死亡“问题。
3. leakyReLu
outt = torch.max(0.2 * x, x)
relu和 leakyrelu
超参数α的取值也已经被很多实验研究过,有一种取值方法是 对α随机取值,α的分布满足均值为0,标准差为1的正态分布,该方法叫做随机LeakyReLU(Randomized LeakyReLU)。原论文指出随机LeakyReLU相比LeakyReLU能得更好的结果,且给出了参数α的经验值1/5.5(好于0.01)。至于为什么随机LeakyReLU能取得更好的结果,解释之一就是随机LeakyReLU小于0部分的随机梯度,为优化方法引入了随机性,这些随机噪声可以帮助参数取值跳出局部最优和鞍点,这部分内容可能需要一整篇文章来阐述。正是由于α的取值至关重要,人们不满足与随机取样α,有论文将α作为了需要学习的参数,该激活函数为PReLU(Parametrized ReLU)。
4. nn.PReLU
torch.nn.PReLU(num_parameters=1, init=0.25, device=None, dtype=None)
https://blog.csdn.net/qq_50001789/article/details/128974253
prelu是leakyrelu的变体,alpha是可以学习的,另外就是通过设置num_parameters参数可以设置每个通道分别不同的alpha.
5. nn.ReLU6
相比relu有一点变化就是input>6的时候,梯度设为0了。
6. Softplus函数
https://blog.csdn.net/hy592070616/article/details/120623303
这一系列博客对激活函数有介绍。
Softplus 是ReLU的光滑近似,可以有效的对输出都为正值的网络进行约束。
随着β的增加,Softplus与ReLU越来越接近。
7. softmin, softmax, log softmax
8. ELU
其他类似的还有 CELU, SELU, GELU 主要是负数部分有差异