作者:禅与计算机程序设计艺术
1.简介
1986年,深度学习(Deep Learning)火爆,它提出了一个名为“深层神经网络”(Deep Neural Networks)的新型机器学习模型。随后几年,神经网络在图像、文本等领域取得了惊艳成果。但是,随着深度学习的应用范围越来越广泛,神经网络在遇到新的任务时出现性能下降或退化的问题。这主要是由于深度神经网络在训练初期面临着“梯度消失”或“梯度爆炸”的问题。为了解决这个问题,研究者们提出了一系列方法,即数据标准化(Data Standardization),权重初始化(Weight Initialization),Dropout正则化(Dropout Regularization)和提前终止(Early Stopping)。本文将对这些方法进行详细阐述并给出代码实现。
深度神经网络结构
在深度学习模型中,网络通常由多个具有不同功能的层组成,包括输入层、隐藏层和输出层。每个层可以看作是一个多层感知器,它接受输入信号,进行非线性转换,产生输出信号。多层感知器的输入是从上一层传过来的输出加上一个可学习的参数向量W,并经过激活函数处理后传递到下一层,输出层则是整个网络预测的结果。如下图所示:
【输入层】 --【隐藏层1】–… --【隐藏层n】–【输出层】
其中,n表示隐藏层的数量。在实际应用中,一般不用所有的隐藏层都连接到输出层,而是根据需要添加隐藏层。
梯度消失和梯度爆炸
当训练深层神经网络时,如果权值或者参数过小,那么在反向传播过程中,