神经网络中的激活函数

点击量:261

本文主要介绍神经网络中几种常见的激活函数:Sigmoid, Tanh, ReLUSoftmax

Sigmoid

这个应该是我们最熟悉的激活函数了,在处理二元分类任务时经常用到,它的公式是:

$$
f(x)=\frac{1}{1+e^{-x}}
$$

它的函数图像如下:
image

TanH

在Sigmoid的基础上做一个变形,把曲线整体下拉0.5个单位(经过原点)就得到TanH,它的公式是:

$$
{\displaystyle f(x)=\tanh(x)={\frac {2}{1+e^{-2x}}}-1}
$$

它的函数图像如下:
Imgur

ReLU

我们知道Sigmoid在早期的机器学习中使用非常多,但是在深度神经网络中却被舍弃了,主要有两个原因:

  • 容易出现梯度消失问题
    因为它越远离原点处,曲线越平缓,导数也就会接近于0。这样在进行反向传播时,由于连乘效应很可能会导致梯度消失。
  • 激活函数计算量略大,涉及到除法和幂计算

后来一种新的激活函数ReLU在AlexNet中被提出,解决了上述问题,也就此成为了深度学习中最常用的激活函数。ReLU,即线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元, 是一种人工神经网络中常用的激活函数(activation function),通常指代以斜坡函数及其变种为代表的非线性函数。它的公式如下:

$$
{\displaystyle f(x)=\max(0,x)}
$$
它的函数图像如下蓝色线条所示:

img

这个函数有以下两个特点:

  • 大于0时,导数是常数,不存在梯度消失问题
  • 计算量小,不涉及除法和幂运算

在此基础上诞生了若干的变种,比如softplus,softsign,PReLU,Leaky ReLU等,具体可以参考:Activation function From Wikipedia但目前在深度学习中最常用的仍然是ReLU。

Softmax

softmax主要用于多分类任务,通常情况下,我们只会在神经网络的最后一层会采用softmax函数,通过运算之后每个神经元会得到一个概率,用于判断它属于哪个分类。
假设我们有一个数组,\(V\),\(V_i\)表示\(V\)中的第\(i\)个元素,那么这个元素的softmax值就是:

$$
S_i = \frac{e^{V_i}}{\sum_{j}e^{V_j}}
$$

发表评论

电子邮件地址不会被公开。 必填项已用*标注