Gaussian Error Linerar Units(GELUS)
论文链接:https://arxiv.org/abs/1606.08415
在激活函数领域,鄙视链应该是:Elus > Relu > Sigmoid ,这些激活函数都有自身的缺陷, sigmoid容易饱和,Elus与Relu缺乏随机因素。
GELUs其实是 dropout、zoneout、Relus的综合,GELUs对于输入乘以一个0,1组成的mask,而该mask的生成则是依概率随机的依赖于输入。假设输入为X, mask为m,则m服从一个伯努利分布(Φ ( x ) \Phi(x)Φ(x), Φ ( x ) = P ( X < = x ) , X 服 从 标 准 正 太 分 布 \Phi(x)=P(X<=x), X服从标准正太分布Φ(x)=P(X<=x),X服从标准正太分布),这么选择是因为神经元的输入趋向于正太分布,这么设定使得当输入x减小的时候,输入会有一个更高的概率被dropout掉,这样的激活变换就会随机依赖于输入了。
这里Φ ( x ) \Phi(x)Φ(x)是正太分布的概率函数,可以简单采用正太分布N ( 0 , 1 ) \N(0,1)N(0,1), 要是觉得不刺激当然可以使用参数化的正太分布N ( μ , σ ) \N(\mu,\sigma)N(μ,σ), 然后通过训练得到μ , σ \mu,\sigmaμ,σ。
对于假设为标准正太分布的G E L U ( x ) GELU(x)GELU(x), 论文中提供了近似计算的数学公式,如下:
简化公式:
def gelu(input_tensor):cdf = 0.5 * (1.0 + tf.erf(input_tensor / tf.sqrt(2.0)))return input_tesnsor*cdf
特点:
- 可微性:GELU函数可导,可以使用反向传播算法训练神经网络。
- 非线性:与ReLU函数相似,GELU函数具有非线性特点,可以学习非线性函数。
- 平滑性:GELU函数在整个实数轴上都是连续可导的,可以减少梯度消失和爆炸问题。
- 计算效率高:由于GELU函数采用了近似求解,计算速度较ReLU函数更快。
原文链接:https://blog.csdn.net/qq_39506862/article/details/133922971
原文链接:https://blog.csdn.net/liruihongbob/article/details/86510622