一、gelu
-
公式:f(x) = xΦ(x)
其中Φ(x)表示高斯分布函数(是面积,不是概率密度),这样写是因为一般模型的参数是符合正太分布的,这样越小的参数越可能被dropout掉
实际使用时的近似公式(bert):
tf代码: 0.5x * (1.0 + tf.tanh((np.sqrt(2 / np.pi) * (x + 0.044715 * tf.pow(x, 3))))) -
原理解释:
- 引入非线性,该激活函数是根据输入值进行的非线性缩放,而不是类似于relu这种截断。(模型非线性可以更好的拟合数据,线性DNN的直接等价于单层MLP了)
- 在x<<0的时候该神经元的输出也接近0,起到了dropout的效果。(随机正则)
- 全部可导,对比relu更soft
- 作者说这是集合了relu和dropout的特点,可以根据输入的值设置类似0/1的mask
-
图示:
-
导数图示:
-
其他
和之前的swish激活函数差不多
参考
https://baijiahao.baidu.com/s?id=1653421414340022957&wfr=spider&for=pc