神经网络基础:激活函数与训练技巧
神经网络是我们踏入深度学习的必经之门。在这里,我们将复习一下神经网络的基础知识,包括常见的激活函数优缺点、重点的反向传播算法、神经网络的训练技巧。
激活函数的优缺点
Sigmoid 函数
将输入映射到区间 (0,1)。当 z 很大时,f(z) 趋近于 1;当 z 很小时,f(z) 趋近于 0。其导数 f'(z)=f(z)(1-f(z)) 在 z 很大或很小都趋近于 0,造成梯度消失的现象。此外需要指数运算,复杂度高。
Tanh 函数
在 z 很大和很小时,f(z) 分别趋近于 1 和 -1。其导数 f'(z)=1-f(z)^2 在 z 很大和很小时,都会趋近于 0,出现梯度消失。同样需要指数运算,复杂度高。
ReLU 函数
优点:计算复杂度低,非饱和性有效地解决梯度消失问题,单侧抑制提供了网络稀疏表达能力。缺点:训练过程中会导致神经元死亡的问题。
神经网络的训练技巧
1. 随机初始化
随机地初始化神经网络参数的值,解决参数对称的问题。因为每一层神经元同构且它们拥有相同的输入输出,如果参数初始化为相同的值,那么前向传播和后向传播取值都是完全相同的。
2. Dropout
训练神经网络过程中,以一定概率随机地'丢弃'一部分神经元节点。对于任意神经元,每次训练中都与一组随机挑选的神经元集合共同进行优化,这个过程会减弱全体神经元之间的联合适应性,减少过拟合的风险,增强泛化能力。
3. 批量归一化
针对每一批数据,在网络的每一层输入之前加上归一化处理,将所有批数据强制在统一的数据分布下,增加模型的泛化能力。解决的问题是:训练网络时,每个隐层参数变化使得后一层输入发生变化,从而每一批训练数据的分布随之改变,致使网络在每次迭代中都需要拟合不同的数据分布,增大训练的复杂度以及过拟合的风险。

