2020.08.21
多层感知机
参数初始化
在深度学习中,神经网络的权重初始化方法对模型的收敛速度和性能有着至关重要的影响。事实上,神经网络其实就是对权重参数 w 的不停迭代更新,以期达到较好的性能。而对于参数 b 一般初始化为零。
对权重 w 的初始化,主要使用随机初始化的方法,该方法是指将参数值(通过高斯分布或均匀分布)随机初始化为接近 0 的一个很小的随机数(有正有负)。
Xavier 初始化:加上了方差规范化,维持了输入、输出数据分布方差的一致性,从而更快地收敛。
He 初始化:考虑到非线性映射(relu)函数的影响,修改方差规范化的分母为 2,能让 Relu网络更快地收敛。
激活函数
由于数据的分布绝大多数是非线性的,而一般神经网络的计算是线性的,因此引入激活函数,就是在神经网络中引入非线性,强化网络的学习能力。
Relu
线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元,是一种人工神经网络中常用的激活函数,通常指代以斜坡函数及其变种为代表的非线性函数。
函数公式:
ReLU 函数在函数值大于 0 时,学习速度十分稳定,且不存在梯度为零或者梯度爆炸的问题。经过其处理的数据有更好的稀疏性,可以近似程度最大保留数据特征。
Sigmoid
Sigmoid 函数也称为 Logistic 函数,因为 Sigmoid 函数可以从 Logistic 回归中推理得到,也是 LR 模型指定的激活函数。
Sigmod 函数的取值范围在(0, 1)之间,函数公式:
Sigmod 激活函数特点如下:
- Sigmod 函数平滑,易于求导,但激活函数计算量大(在正向传播和反向传播中都包含幂运算和除法)。
- Sigmoid 导数取值范围是[0, 0.25],由于神经网络反向传播时的“链式反应”,很容易会出现梯度消失的情况。
- Sigmoid 的输出不是 0 均值(即 zero-centered);这会导致后一层的神经元将得到上一层输出的非 0 均值的信号作为输入,随着网络的加深,会改变数据的原始分布。
Tanh
Tanh 为双曲正切函数。Tanh 和 Sigmoid 相似,都属于饱和激活函数,区别在于输出值范围由 (0,1) 变为了 (-1,1),可以把 Tanh 函数看做是 Sigmoid 向下平移和拉伸后的结果。
函数公式:
相比 Sigmoid 函数,Tanh 作为激活函数的特点:
- Tanh 的输出范围时(-1, 1),解决了 Sigmoid 函数的不是 zero-centered 输出问题,但幂运算的问题仍然存在。
- Tanh 导数范围在(0, 1)之间,相比 Sigmoid 的(0, 0.25),梯度消失问题会得到缓解,但仍然还会存在。
Leaky ReLU 函数
函数公式:
为了解决 Dead ReLU Problem,将 ReLU 的前半段设为 0.01x 而非 0。理论上来讲,Leaky ReLU 有 ReLU 的所有优点,外加不会有 Dead ReLU 问题,但是在实际操作当中,并没有完全证明 Leaky ReLU 总是好于 ReLU。
Dead ReLU Problem
这表示某些神经元可能永远不会被激活, 导致其相应的参数永远不能被更新。其本质是由于Relu在的小于0时其梯度为0所导致的。
参考资料:激活函数,你真的懂了吗?
ELU 函数
函数公式:
ELU 也是为解决 ReLU 存在的问题而提出,显然,ELU 有 ReLU 的基本所有优点,以及不会有 Dead ReLU 问题,输出的均值接近 0。但它的一个小问题在于计算量稍大。类似于 Leaky ReLU,理论上虽然好于 ReLU,但在实际使用中目前并没有好的证据 ELU 总是优于 ReLU。
2020.08.21
循环神经网络
当输入序列比较长时,会存在梯度爆炸和消失问题,也称为长期依赖问题。为了解决这个问题,人们对循环神经网络进行了很多的改进,其中最有效的改进方式引入门控机制。
优缺点:
- 循环神经⽹络的隐藏状态可以捕捉截止当前时间步的序列的历史信息。
- 循环神经⽹络模型参数的数量不随时间步的增加而增加。
- 可以基于字符级循环神经⽹络来创建语⾔模型。
- 当时间步数较大或者时间步数较小时,循环神经网络的梯度较容易出现衰减或爆炸。
重置门和更新门
优缺点:
- 重置门有助于捕捉时间序列短期的依赖关系;
- 更新门有助于捕捉时间序列长期的依赖关系。