0


GELU激活函数

GELU激活函数

论文:GAUSSIAN ERROR LINEAR UNITS (GELUS)

年份:2016

ReLU激活函数的公式可以理解为:

     R
    
    
     e
    
    
     L
    
    
     U
    
    
     (
    
    
     x
    
    
     )
    
    
     =
    
    
     x
    
    
     ⋅
    
    
     
      {
     
     
      
       
        
         
          
           1
          
          
           ,
          
         
        
       
       
        
         
          
           x
          
          
           ≥
          
          
           0
          
         
        
       
      
      
       
        
         
          
           0
          
          
           ,
          
         
        
       
       
        
         
          
           x
          
          
           <
          
          
           0
          
         
        
       
      
     
    
   
   
     ReLU(x) = x\cdot \begin{cases} 1,&x\ge 0\\ 0,&x<0 \end{cases} 
   
  
 ReLU(x)=x⋅{1,0,​x≥0x<0​

ReLU、Dropout等机制都希望将\textbf{不重要}的激活信息规整为零。也就是对于输入的值,根据它需要的情况乘以1或0,需要乘以谁不像ReLU人工定义,而是根输入有关。更为数学的描述,对于一个输入

    x
   
   
    ∼
   
   
    N
   
   
    (
   
   
    0
   
   
    ,
   
   
    1
   
   
    )
   
  
  
   x\sim N(0, 1)
  
 
x∼N(0,1),即

 
  
   
    x
   
  
  
   x
  
 
x服从标准正态分布,而输入

 
  
   
    x
   
  
  
   x
  
 
x还要乘上一个伯努利分布

 
  
   
    B
   
   
    e
   
   
    r
   
   
    n
   
   
    o
   
   
    u
   
   
    l
   
   
    l
   
   
    i
   
   
    (
   
   
    Φ
   
   
    (
   
   
    x
   
   
    )
   
   
    )
   
  
  
   Bernoulli(\Phi(x))
  
 
Bernoulli(Φ(x))。

随着

    x
   
  
  
   x
  
 
x的降低,输出值被归为0的概率就会升高。对于ReLU,这个界限就是0,输入小于0时,输出就归为0。

则怎么判断这个伯努利试验到底失败还是成功呢?则在引入

    Φ
   
   
    (
   
   
    x
   
   
    )
   
  
  
   \Phi(x)
  
 
Φ(x)来控制伯努利试验成功的概率即:

 
  
   
    
     Φ
    
    
     (
    
    
     x
    
    
     )
    
    
     ⋅
    
    
     I
    
    
     x
    
    
     +
    
    
     (
    
    
     1
    
    
     −
    
    
     Φ
    
    
     (
    
    
     x
    
    
     )
    
    
     )
    
    
     ⋅
    
    
     0
    
    
     x
    
    
     =
    
    
     x
    
    
     ⋅
    
    
     Φ
    
    
     (
    
    
     x
    
    
     )
    
   
   
     \Phi(x)\cdot Ix + (1-\Phi(x))\cdot 0x=x\cdot \Phi(x) 
   
  
 Φ(x)⋅Ix+(1−Φ(x))⋅0x=x⋅Φ(x)

这个表达式表示根据

    x
   
  
  
   x
  
 
x比其它输入大多少来缩放它。由于高斯分布的累积分布函数通常用误差函数来计算,因此将高斯误差线性单元)(GELU)定义为:

 
  
   
    
     G
    
    
     E
    
    
     L
    
    
     U
    
    
     (
    
    
     x
    
    
     )
    
    
     =
    
    
     x
    
    
     Φ
    
    
     (
    
    
     x
    
    
     )
    
    
     =
    
    
     x
    
    
     ⋅
    
    
     
      1
     
     
      2
     
    
    
     (
    
    
     1
    
    
     +
    
    
     e
    
    
     r
    
    
     f
    
    
     (
    
    
     x
    
    
     /
    
    
     
      2
     
    
    
     )
    
    
     )
    
   
   
     GELU(x) = x\Phi(x) = x\cdot \frac{1}{2}(1+erf(x/\sqrt{2})) 
   
  
 GELU(x)=xΦ(x)=x⋅21​(1+erf(x/2​))

近似于

     G
    
    
     E
    
    
     L
    
    
     U
    
    
     (
    
    
     x
    
    
     )
    
    
     ≈
    
    
     0.5
    
    
     x
    
    
     (
    
    
     1
    
    
     +
    
    
     t
    
    
     a
    
    
     n
    
    
     h
    
    
     (
    
    
     
      
       2
      
      
       /
      
      
       π
      
     
    
    
     (
    
    
     x
    
    
     +
    
    
     0.044715
    
    
     
      x
     
     
      3
     
    
    
     )
    
    
     )
    
    
     )
    
    
     ≈
    
    
     x
    
    
     ⋅
    
    
     s
    
    
     i
    
    
     g
    
    
     m
    
    
     o
    
    
     i
    
    
     d
    
    
     (
    
    
     1.702
    
    
     x
    
    
     )
    
   
   
     GELU(x) \approx 0.5x(1+tanh(\sqrt{2/\pi}(x+0.044715x^3)))\approx x\cdot sigmoid(1.702x) 
   
  
 GELU(x)≈0.5x(1+tanh(2/π​(x+0.044715x3)))≈x⋅sigmoid(1.702x)

    μ
   
   
    =
   
   
    0
   
   
    ,
   
   
    σ
   
   
    =
   
   
    1
   
  
  
   \mu = 0,\sigma=1
  
 
μ=0,σ=1时,将GELU称为Sigmoid Linear Unit(SiLU)激活函数。

GELU激活函数的曲线和导数曲线如下图所示。
在这里插入图片描述

  • GELU为非单调激活函数,有助于保持小的负值,从而稳定网络梯度流;
  • GELU在0附近接近与恒等函数 x x x。
  • GELU的最小值为-0.21,值域为 [ − 0.21 , + ∞ ] [-0.21, +\infty] [−0.21,+∞]。上界是任何激活函数都需要的特征,因为这样可以避免导致训练速度急剧下降的梯度饱和,因此加快训练过程。无下界有助于实现强正则化效果;
  • GELU的梯度不容易造成梯度爆炸和梯度消失。
  • 光滑性:光滑的激活函数有较好的泛化能力和稳定的优化能力,可以提高模型的性能

本文转载自: https://blog.csdn.net/weixin_38190702/article/details/125670188
版权归原作者 皮鼓坐凳子 所有, 如有侵权,请联系我们删除。

“GELU激活函数”的评论:

还没有评论