深度学习中常用激活函数的总结2021-03-06

常用的激活函数的总结

1. Sigmoid 函数

f(z)=\cfrac 1{1+e^{-z}}

Sigmoid函数的图像

2. tanh函数

tanh(x)=\cfrac{e^x-e^{-x}}{e^x+e^{-x}}

左:tanh函数,右:tanh函数的导数

3. ReLU函数

ReLU=max(0,x)

ReLU函数和其导数图像

ReLU函数可以达到比较快的收敛速度,但是其输出并不是zero-cnetered的,并且有Dead ReLU Problem

ReLU有其变体Leady ReLU

4. ELU(Exponential Linear Uints)函数

f(x)= \begin{cases} x,&ifx>0\\ \alpha (e^x-1) &otherwise \end{cases}

Exponential Linear Uints和其导数

5. MaxOut 函数

函数可以参考论文《maxout networks》Maxout是深度学习的一层网络。

对于网络中的某一层的输入X=(x_1,x_2,\cdots x_d),Maxout隐藏层中每个神经元的计算公式如下:
\begin{array}\\ z_{ij}=x^TW_{\dots ij}+b_{ij}\quad \\ \text{其中权重W是一个大小为$(d,m,k)$的三维矩阵,$bias$是大小为m$(m,k)$的二维矩阵}\\ h_i(x)=\max\limits_{j\in[1,k]}z_{ij} \end{array}

6.GeLU函数

GeLU是drouout,zoneout,Relu的结合体,GeLU对于输入一个乘以0,1组成mask,而该mask的生成则是依据概率随机的依赖输入,假设输入为X,mask为m那么m服从一个伯努利分布(\Phi(x)=P(X<=x),X\text{服从正态分布}),最终的数学表示如下:
GeLU(x)=xP(X<=x)=x\Phi(x)\\ 对于标准正太分布,其近似的计算公式为:\\ GeLU(x)=0.5x(1+tanh)\left[\sqrt{2/\pi}(x+0.044715x^3)\right]

#源码可以如下方式表达:
def gelu(input_tensor):
    cdf = 0.5*(1.0+torch.erf(input_tensor/torch.sqrt(2.0))
    return input_tensor*cdf
    
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容