zoukankan      html  css  js  c++  java
  • SOTA激活函数学习

    除了之前较为流行的RELU激活函数,最近又新出了几个效果较好的激活函数

    一、BERT激活函数 - GELU(gaussian error linear units)高斯误差线性单元

     数学公式如下:

      X是服从标准正态分布的变量

    近似的数学计算公式如下:

     

    函数图如下

    橙色曲线为:GELU

    蓝色曲线为:Mish函数

    特性:当输入x减小的时候,输入会有一个更高的概率被dropout掉,这样的激活变换就会随机依赖于输入了,在激活中引入了随机正则的思想,是一种对神经元输入的概率描述。但是其实GELU相比Mish函数就要差一点,首先在大于0阶段,Mish函数的梯度是要略大于GELU,在负轴阶段Mish函数比GELU要晚一点趋近于0,也就是神经元能够晚一点死掉。

    import math
    import numpy as np
    from matplotlib import pyplot as plt
    
    
    def mish(x):
        return x * math.tanh(math.log(1+math.exp(x)))
    
    def GELU(x):
        return 0.5*x*(1+math.tanh(math.sqrt(2/math.pi)*(x+0.044715*x**3)))
        
    x = np.linspace(-10,10,1000)
    y=[]
    z=[]
    for i in x:
        y.append(mish(i))
        z.append(GELU(i))
    plt.plot(x,y)
    plt.plot(x,z)
    plt.grid()
    plt.ylim(-1,6)
    plt.xlim(-7,7)
    plt.show()

    二、Mish激活函数

    公式如下:

    函数图如下:

    橙色曲线为:ln(1+e^(x))

    蓝色曲线为:Mish函数

    import math
    import numpy as np
    from matplotlib import pyplot as plt
            
    def mish(x):
        return x * math.tanh(math.log(1+math.exp(x)))
    
    def ln_e(x):
        return math.log(1+math.exp(x))
        
    x = np.linspace(-10,10,1000)
    y=[]
    z=[]
    for i in x:
        y.append(mish(i))
        z.append(ln_e(i))
    plt.plot(x,y)
    plt.plot(x,z)
    plt.grid()
    plt.show()
  • 相关阅读:
    发一个多维数组转xml格式的php函数方法
    php 返回json和jsonp格式
    phpstudy修改端口及网站根目录和访问 localhost 显示目录文件夹
    web后端开发语言Java和PHP的比较
    VSCode 的PHP常用插件及安装
    Nginx服务器的Websockets配置方法
    WebSocket-demo
    前端资源
    HTTPS 升级指南
    HTTP 协议入门
  • 原文地址:https://www.cnblogs.com/gczr/p/11788271.html
Copyright © 2011-2022 走看看