GeLU,(Gaussian Error Linerar Units),高斯误差线性单元

1 Gelu数学原理

G(x) = xΦ(X<=x)

其中,Φ(X)为正态分布。

累积分布函数是指随机变量XX小于或等于xx的概率,用概率密度函数表示为:

正态分布的累积分布函数可以用“误差函数” erf 表示:

其中误差函数的表达式为:

2 代码实现: 

def gelu(x):
    """Implementation of the gelu activation function.
        For information: OpenAI GPT's gelu is slightly different (and gives slightly different results):
        0.5 * x * (1 + torch.tanh(math.sqrt(2 / math.pi) * (x + 0.044715 * torch.pow(x, 3))))
        Also see https://arxiv.org/abs/1606.08415
    """
    return x * 0.5 * (1.0 + torch.erf(x / math.sqrt(2.0)))

3 GeLU与ReLU、sigmoid的区别

GeLU激活函数的最大特点是将非线性与依赖输入数据分布的随机正则化器相结合在一个激活函数的表达中。与以往dropout指定随机概率值或ReLU根据输入值的正负进行mask的方式不同,GeLU根据当前input大于其余inputs的概率进行随机正则化,即为在mask时依赖输入的数据分布。

GeLU可以看做是ReLU、zoneout、dropout的一个综合。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐