激活函数

1,328 阅读2分钟

感知器(perceptron)是 人造神经元(artificial neuron)的一种,也是最基本的一种。它接受一些输入,产生一个输出。

我们在神经元里定义一些 权重(weight),经过计算之后,判断结果是否超过一个 阈值(threshold),如果超过,神经元输出 1;反之,则输出 0。

我们将变量用向量表示,并把阈值移到左边,这就得到了我们熟悉的根据权重和偏差计算的表达式:

\begin{eqnarray}
  \mbox{output} = \left\{ 
    \begin{array}{ll} 
      0 & \mbox{if } w\cdot x + b \leq 0 \\
      1 & \mbox{if } w\cdot x + b > 0
    \end{array}
  \right.
\end{eqnarray}

不过这种计算方式有些缺点,当调整参数时,节点输出的值在 0 和 1 之间跃迁,也就是说,该输出是一个 阶梯函数(step function),这会对调参造成很大不便。

所以我们会希望输出的函数变得平滑一些,这里的函数就是 激活函数(activation functions)。

一、Sigmoid 函数

Sigmoid 函数(Sigmoid Function)又称为 Logistic 函数,是一个在生物学中常见的 S 型函数,也称为 S 型生长曲线,它将负无穷到正无穷的区间映射到了 0 到 1 中。

Sigmoid 函数的输入越小,输出越接近 0;输入越大输出越接近 1。除了平滑,Sigmoid 函数的另一个优点是求导非常简单,可以使用自身表示:

\phi'(z) = \phi(z)(1 - \phi(z))

二、Tanh 函数

Tanh 函数(Tanh Function)是由 Sigmoid 函数推广而来,它的值域为 -1 到 1。

tanh(x) = 2sigmoid(2x) - 1 = \frac{2}{1 + e^{-2x}} - 1

三、线性整流函数

线性整流函数(Rectified Linear Unit, ReLU),又称 修正线性单元。如果 x 为正,则输出 x,否则为 0。它的值域是 [0, inf)。

R(x) = max(0, x)

四、带泄露线性整流函数

带泄露线性整流函数(Leaky ReLU)是线性整流函数的一个变种,它的出现是为了解决 dying ReLU 问题

另外,当 a 不为 0.01 时,它又被称为 带泄露随机线性整流(Randomized Leaky ReLU,RReLU)。

总结

各种激活函数如下:

参考