激活函数

早过忘川 提交于 2020-02-07 09:28:27

激活函数

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

常用的激活函数

  1. Sigmoid 函数

σ(x)=11+ex \sigma(x) = \frac{1}{1+e^{-x}}
\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)
目的是将一个实数输入转化到 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 函数在 小于 0 的部分,值与梯度皆为 0,而在大于 0 的部分中导数保持为 1,避免 SIgmoid 函数的梯度消失问题.

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!