[Deep Learning] 常用的Active functions & Optimizers (2)

dying ReLU problem:由于ReLU特殊的函数形式,在训练过程中某些神经元可能永远不会被激活,导致相应的参数永远不能被更新,而且这个问题会随着训练的进行持续恶化。

导致dying ReLU problem的原因主要有两个:

初始化,这种概率比较小

Learning rate太大

dying ReLU problem详细细节可以参考这里:《What is the "dying ReLU" problem in neural networks?

即使ReLU存在上述问题,但是ReLU目前是应用最为广泛和实用的激活函数。

4. Leaky ReLU

Leaky ReLU就是针对dying ReLU problem而进行改进的,相对于ReLU而言,函数前半段不再为0,而是一段线性函数。用公式表达如下:

$$f(x) = \alpha x, if x < 0$$

$$f(x) = x, if x \ge 0$$

其中,参数$\alpha$一般为远小于1的实数,比如0.01。下图显示了Leaky ReLU的两种函数形式,一种$\alpha$为定值,另外一种$\alpha$为某范围内的随机值(也被称为Randomized Leaky ReLU):

[Deep Learning] 常用的Active functions & Optimizers

除了具备ReLU的所有优点以外,Leaky ReLU不存在dying ReLU problem。从理论上讲,Leaky ReLU应该完全优于ReLU的性能,但是实际应用中并没有表现可以证明Leaky ReLU绝对优于ReLU。

5. ELU

同Leaky ReLU一样,ELU(Exponential Linear Unit)也是针对dying ReLU problem提出的。具体公式如下:

$$f(x) = \alpha (e^x-1), if x < 0$$

$$f(x) = x, if x \ge 0$$

具体函数曲线如下:

[Deep Learning] 常用的Active functions & Optimizers

ELU也可以有效地解决dying ReLU problem,但随之而来的缺点就是ELU不再是简单的阈值计算,计算相对ReLU稍加复杂。

Active functions汇总

下表汇总了常用的一些active functions:

[Deep Learning] 常用的Active functions & Optimizers

Optimizers 1. batch GD & SGD & Mini-batch GD

三种梯度下降算法可以参考之前博文《[Machine Learning] 梯度下降法的三种形式BGD、SGD以及MBGD》

上述三种梯度下降的优化算法均存在如下问题:

Learning rate如果选择的太小,收敛速度会很慢,如果太大,loss function就会在极小值处不停地震荡甚至偏离。

对所有参数更新时应用同样的Learning rate,如果我们的数据是稀疏的,我们更希望对出现频率低的特征进行大一点的更新。

对于非凸函数,还要避免陷于局部极小值或者鞍点处,因为鞍点周围的error 是一样的,所有维度的梯度都接近于0,纯梯度下降很容易被困在这里。

关于鞍点的解释:

  鞍点:一个光滑函数的鞍点邻域的曲线,曲面,或超曲面,都位于这点的切线的不同边。 例如下图这个二维图形,像个马鞍:在x轴方向往上曲,在y轴方向往下曲,鞍点就是(0,0)。

[Deep Learning] 常用的Active functions & Optimizers

目前对于优化器的研究基本围绕上述三个问题进行展开。

2. Momentum

SGD算法的更新公式如下:

$$W:=W-\alpha dW$$

$$b:=b-\alpha db$$

我们可以示意化的画出SGD优化路线图如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsppzy.html