深度学习笔记(五)—— 激活函数[Activation Functions]

  这是深度学习笔记第五篇,完整的笔记目录可以点击这里查看。
  
  激活函数都是非线性的,它将非线性特性引入到神经网络中,对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。
  
深度学习笔记(五)—— 激活函数[Activation Functions]_第1张图片

1. Sigmoid

  Sigmoid激活函数的数学形式为σ(x)=1/(1+e−x) ,如上图左所示。如前一节所述,它接受实数并将其“压缩”到0到1之间的范围。特别是,大负数变为0,大正数变为1。sigmoid函数在历史上被频繁使用,因为它有一个很好的解释,即神经元的放电率:从根本不放电(0)到以假定的最大频率(1)完全饱和放电。在实践中,sigmoid非线性最近已经失宠,很少使用。它有两个主要缺点:

  1. Sigmoid饱和(saturate)并杀死(kill)梯度。Sigmoid神经元的一个非常不理想的特性是,当神经元的绝对值较大时(此时激活值非常接近0或1),这些区域的梯度几乎为零。回想一下,在反向传播过程中,这个(局部)梯度将乘以这个门(gate)的整个目标的输出梯度。因此,如果局部梯度很小,它将有效地“扼杀”梯度,几乎没有信号通过神经元流向其权值和递归到其数据。此外,在初始化Sigmoid神经元权值时必须格外小心,以防饱和。例如,如果初始权值太大,那么大多数神经元将饱和,网络将几乎无法学习。
  2. Sigmoid输出不是以零为中心的。这是不可取的,因为层数靠后的神经元在神经网络处理时会接收到非零中心的数据。这对梯度下降过程中的动力(dynamics)有影响。因为如果进入神经元的数据总是正的,那么在反向传播过程中,权重w上的梯度要么全部为正,要么全部为负(取决于整个表达式f的梯度)。这可能会在权重的梯度更新中引入不希望看到的的zig-zagging dynamics。但是,请注意,一旦这些梯度在一个batch数据中相加,权重的最终更新就会有可变的符号,这在一定程度上缓解了这个问题。

2. Tanh

  tanh激活函数如上图右所示。它将实数压缩到[-1, 1]这个范围。与Sigmoid神经元一样,存在饱和问题,但与Sigmoid神经元不同,它的输出是以零为中心的。因此,在实践中,tanh函数总是优于sigmoid函数。还要注意的是,tanh神经元只是一个缩放的sigmoid神经元,特别是以下情况:tanh(x)=2σ(2x)−1。
  
深度学习笔记(五)—— 激活函数[Activation Functions]_第2张图片
  其中,左图:ReLU(Rectified Linear Unit)激活函数,当x<0时为零,当x>0时是斜率为1的直线。右图:Krizhevsky等人的论文中的一个图,这张图表明与tanh相比,ReLU的收敛速度提高了6倍。

3. ReLU

  在过去的几年里,ReLU已经非常流行。它的函数形式为f(x)=max(0,x),如上图左所示。使用ReLU有几个优点和缺点:

优点
  • 与sigmoid/tanh函数相比,它大大加快了随机梯度下降(stochastic gradient descent, SGD)的收敛速度。有人认为这是由于它的线性和非饱和形式。
  • 与涉及昂贵运算(指数等)的tanh/sigmoid神经元相比,ReLU可以通过简单地将激活矩阵的阈值设置为零来实现。
缺点
  • 不幸的是,ReLU在训练中很脆弱,可能会“死亡”。例如,一个大的梯度流过一个ReLU神经元可能会导致权值的更新,这样神经元就再也不会在任何数据点上激活了。如果发生这种情况,那么从这一点开始,流过这个单位的梯度将永远为零。也就是说,ReLU在训练过程中可能会不可逆转地死亡(die)。例如,如果学习率设置得太高,你可能会发现多达40%的网络可能“死亡(dead)”(即在整个训练数据集中从未激活的神经元)。不过,在设置了合理学习率的情况下,一般就不会出现这种问题。

4. Leaky ReLU

  Leaky ReLU是一种试图解决ReLU "dead"的问题。在Leaky ReLU中,当x<0时,函数不再恒为0,而是有一个小的负斜率(0.01左右)。其函数式为f(x)=1(x<0)(αx)+1(x>=0)(x),其中α是一个值较小的常数。有时该函数确实能取得更优的结果,但结果并不总是一致的。负区域的斜率也可以作为每个神经元的一个参数,如PReLU。

5. Maxout

  有些方法不具有函数形式f(wTx+b) 。一个比较流行的是Maxout神经元,它概括了ReLU及其leaky版本。Maxout神经元计算函数max(w1Tx+b1,w2Tx+b2) 。需要注意的是,ReLU和Leaky ReLU都是这种形式的特例(例如,对于ReLU,我们有w1, b1=0)。因此,Maxout神经元享有ReLU神经元的所有优点(线性计算模式,无饱和问题),并且没有缺点(dead ReLU)。然而,与ReLU神经元不同的是,它将每个神经元的参数数量增加了一倍,导致参数总数增加。



*本博客翻译总结自CS231n课程作业网站,该网站需要才能访问。

你可能感兴趣的:(Deep,Learning,CS231n深度学习笔记,神经网络,深度学习,人工智能,机器学习,python)