激活函数

激活函数

因为线性的卷积运算,无法形成复杂的空间表示,故很难提取出高语义的信息,因此需要加入非线性的映射,称为激活函数,可以逼近任意的非线性函数,以提升整个神经网络的表达能力.

常用的激活函数

  1. Sigmoid 函数

σ(x)=11+ex \sigma(x) = \frac{1}{1+e^{-x}} σ(x)=1+e−x1​
\sigma(x) 的导数计算

σ(x)=(11+ex)=111+ex=1σ(x) \sigma(x)' = \left(\frac{1}{1+e^{-x}}\right)' = 1 - \frac{1}{1+e^{-x}} = 1- \sigma(x) σ(x)′=(1+e−x1​)′=1−1+e−x1​=1−σ(x)
目的是将一个实数输入转化到 0~1 之间的输出,具体的说也是将越大的负数转化到越靠近 0, 将越大的正数转化到越靠近 1. 即 0 端对应抑制状态,1 端对应激活状态. 中间部分梯度大.

激活函数

缺点:

(1) Sigmoid 函数会造成梯度消失. 靠近 0 和 1 两端时,梯度几乎变为 0,
(2) Sigmoid 输出不是以 0 为均值, 这会导致经过 SIgmoid 激活函数之后的输出,作为最后一层网络的输入时候是非 0 均值,这个时候如果输入进入下一层神经元时全是正的,这就导梯度全是正的, 更新参数时永远是整的。

  1. ReLU 函数
    为了缓解梯度消失现象,修正线性单元,引入 ReLU 函数,

$$
ReLU(x) = max(0, x) = \left{

$$

ReLU(x)=max(0,x)={0=ifx<0x=ifx0ReLU(x)=max(0, x)=\left\{ \begin{aligned} 0 & = & if x < 0 \\ x & = & if x \geq 0 \\ \end{aligned} \right. ReLU(x)=max(0,x)={0x​==​ifx<0ifx≥0​

激活函数

ReLU 函数在 小于 0 的部分,值与梯度皆为 0,而在大于 0 的部分中导数保持为 1,避免 SIgmoid 函数的梯度消失问题.

还有很多激活函数这不一一介绍。

激活函数激活函数 Ming Xu 发布了6 篇原创文章 · 获赞 0 · 访问量 218 私信 关注
上一篇:CNN-VGG16


下一篇:relu非线性映射函数,能拟合任意函数吗