神经网络中的激活函数

193 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

tanh(z)=ezezez+eztanh(z)=\frac{e^z-e^{-z}}{e^z+e^{-z}}效果严格地比sigmoidsigmoid函数好,因为该函数的对称中心在(0,0)(0,0),具有将数据归一化为0均值的效果。当然,二分类的输出层的激活函数还是一般用sigmoid(z)sigmoid(z),因为sigmodsigmod函数能将输出值映射到010\sim1之间(概率值)
Relu(z)=max(0,z)Relu(z)=max(0,z)出现后,神经网络默认都用ReluRelu函数(rectified linear)来作为激活函数。此时一般默认z>0z>0
leaky(z)=max(0.01z,z)leaky(z)=max(0.01z,z)可以避免z<0z<0时斜率为零的情况 输出层有时也用线性激活函数(房价预测)

0. Linear Activate Function

也叫identity activate Function, 即对原始输出不做任何变换

1. Sigmoid activation function

图1.1 激活函数-sigmoid \begin{align*} a&=g(z) \\ &=\frac{1}{1+e^{-z}}\\ \tag{1-1} \end{align*} \begin{align*} g'(z)&=\frac{d}{dz}g(z)\\ &=\frac{e^{-z}}{1+e^{-z}}\\ &=\frac{1}{1+e^{-z}}\left(1-\frac{1}{1+e^{-z}}\right)\\ &=g(z)\left(1-g(z)\right)\\ &=a(1-a)\\ \tag{1-2} \end{align*} ## 2. Tanh activation function 图2.1 激活函数-tanh
a=g(z)=ezezez+ez(2-1)\begin{aligned} a&=g(z) \\ &=\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}\\ \tag{2-1} \end{aligned}
g(z)=ddzg(z)=ez1+ez=(ez+ez)2(ezez)2(ez+ez)2=1(g(z))2=1a2(2-2) \begin{aligned} g'(z)&=\frac{d}{dz}g(z)\\ &=\frac{e^{-z}}{1+e^{-z}}\\ &=\frac{\left(e^{z}+e^{-z}\right)^2-\left(e^z-e^{-z}\right)^2}{\left(e^z+e^{-z}\right)^2}\\ &=1-\left(g(z)\right)^2\\ &=1-a^2\\ \tag{2-2} \end{aligned}

3. ReLU and Leaky ReLU

图3.1 激活函数-ReLU

ReLU:

a=g(z)=max(0,z)(3-1)\begin{aligned} a&=g(z) \\ &=max(0,z)\\ \tag{3-1} \end{aligned}
g(z)=ddzg(z)={0if z<01if z0(3-2)\begin{aligned} g'(z)&=\frac{d}{dz}g(z)\\ &=\left\{ \begin{aligned} 0\quad if\ z<0\\ 1\quad if\ z\geq0 \end{aligned} \right. \tag{3-2} \end{aligned}

Leaky ReLU:

图3.2 激活函数-Leaky ReLU
a=g(z)=max(0.01z,z)(3-3)\begin{aligned} a&=g(z) \\ &=max(0.01z,z)\\ \tag{3-3} \end{aligned}
g(z)=ddzg(z)={0.01if z<01if z0(3-4)\begin{aligned} g'(z)&=\frac{d}{dz}g(z)\\ &=\left\{ \begin{aligned} 0.01\quad if\ z<0\\ 1\quad if\ z\geq0 \end{aligned} \right. \tag{3-4} \end{aligned}

4.选择激活函数的准则

  • 如果处理的问题是二分类问题,输出为0和1,那么输出层选择sigmoid函数,其他神经元选择ReLU(有时也可用tanh),理论上Leaky ReLU比ReLU好,但是实践中差不多。

参考

towardsdatascience.com/activation-…