system: [SYSTEM]

user: 1. 相关理论和技术概念 深度学习的概念来自于对人工神经网络的研究，深度学习通过把通俗易懂的浅层特征串联起来表达更加深层的特征或属性，以此来探索数据本身的关联。深度学习目前正处于进步阶段，它的特点在于可以数据模拟分析，通过一个又一个的神经元节点进行计算最终得到结果。至今已经研发出多种多样的神经网络结构，为了能更好的预测雾霾天气情况，需要对现有的深度学习神经网络充分了解掌握，才能为实现深度学习预测雾霾提供理论支撑。因此，本章由浅入深依次讲述了基本神经网络、BP神经网络、循环神经网络和长短期记忆网络。 1.1. 基本神经网络(Basic Neural Network) 神经元是神经网络最基本的部分，一个神经元可以有多个输入端，每个输入端都有各自的权重，权重的大小则代表了这个输入端输入的信号的重要性，权重越大，输入信号越重要。神经元之间存在连接，输入的数据通过激活函数运算，输出一个带有偏置的输出，偏置代表被神经元控制的容易与否 [ 1 ]。神经元的基本结构如图1 所示。 图1. 神经元结构示意图 图中 x 1 ， x 2 ， ⋯ ， x n 是神经元的输入值； w 1 ， w 2 ， ⋯ ， w 3 是输入值所带的权重值，权重值的大小表示单元之间的连接强度，也决定了输入对输出的影响程度；b是偏置项，偏置项作为神经元的额外输入，它的值 始终为1，它的作用是确保即使输入值为0也能激活神经元。第一次运算过程为： z = ∑ i = 1 n w i x i + b 得到的值被激活函数处理，最终输出。 1.2. BP神经网络(BP Neural Network) BP神经网络(back propagation neural network， BP)是一种以反向传播为主的多层前馈神经网络，它能够在传播途中通过自身的反馈调节上一时刻的输出数据，从而起到缩小误差的作用。当然，BP神经网络和其他神经网络一样也包含输入层、隐藏层和输出层。在神经元之间进行向前的信息传递过程中，激活函数发挥作用，计算出误差的值，如果误差值太大的话，神经元之间便进行向后的反向传播，所以此神经网络的运行方法就是数据按正向传播，误差按方向传播，在此过程中不断修改阈值与权重，直到将损失函数降为最小，得到最接近的期望值。 反向传播主要用到梯度下降的方法，函数在正方向上变化的最快，对数据求导可以得到它的偏导数，如果偏导数大于零则进行反向传播，如果偏导数小于零则继续进行正向传播。图2是BP神经网络的结构图。 图2. BP神经网络结构 从图中可以看出，BP网络是一个三层结构，即输入层、隐含层和输出层，隐含层可以只是一层也可以有很多层 [ 2 ]，这取决于自己的设定，若隐含层数较多，则训练过程缓慢，输出结果更加准确。神经元的个数取决于输入端的多少，数据从前向后依次进入各层中进行处理，最后从输出层输出 [ 3 ]。 1.3. 循环神经网络(Recurrent Neural Network， RNN) 循环神经网络(Recurrent Neural Network， RNN)善于循环往复地处理一段有时间关联的数据，它和其他神经网络不同，虽然都有输入层、隐藏层和输出层，但RNN各层之间并非没有反馈联系，这就使得RNN优于其他传统神经网络，它可以持续保留信息并且能在短时间内记忆信息，将很久之前的信息调出并与现有的信息结合形成对未来的预测，提高了预测的准确性。 循环神经网络内部的隐藏层各层神经元之间通过链接循环传递信息，同层神经元之间没有链接，也不可跨层链接，所以上一时刻神经元的输出数据和这一时刻神经元的输入数据共同组成了此时刻地输入，也就是说RNN可以随时调用之前的信息，但是由于跨度太大，过久地信息储存的不是很好。 循环神经网络最明显的特性就是具有时序性，专门用于处理具有时间序列特性的数据，挖掘输入数据的序列特点以及信息之间的关联，因此常用来实现回归预测。图3为RNN地结构图。 图3. 循环神经网络典型结构图 从图中可以看出，RNN地内部隐藏层中有一个自循环，历史信息被反复传递，之前时刻地信息和新的输入数据一起参与正向传播，故而在接下来的每一次训练中，都会被此前所有时刻影响，而之前的所有信息都会被保留。 对于进行到t时刻的神经元节点，它的输入记作x，输出记作y，输入权重记作u，输出权重记作v，隐藏层的权重记作w。在神经元不断被循环往复计算时，隐藏层读取输入层的输入数据x，并输出一个数据y，同时隐藏层的状态值会从t时刻传递到t + 1时刻，也就是说隐藏层的输入不光包含输入层的输入数据，还包含上一时刻隐藏层的输出 [ 4 ]。 当然，对于一段确定时间序列长度的循环神经网络，本文可以对它内部进行展开，如图4所示。 图4. 循环神经网络结构展开图 从图4中可以得到，对于t刻，输入层输入的数据可以记为 { x 0 ， x 1 ， ⋯ x t − 1 ， x t ， x t + 1 ， ⋯ } ，输出层输出的数据记为 { y 0 ， y 1 ， ⋯ y t − 1 ， y t ， y t + 1 ， ⋯ } ，隐藏层的输出数据记为 { a 1 ， ⋯ a t − 1 ， a t ， a t + 1 ， ⋯ } ，u是输入权重，v是输出权重，w是隐藏层权重。RNN可以进行前向和反向传播，前者的传播过程如式 a t = g ( w a t − 1 + u x t + b a ) 和 y ˜ t = f ( v a t + b y ) 所示。 g ( x ) ， f ( x ) 为激活函数， b a ， b y 为偏置项。从公式中可以看到，输出值包含了当前时刻的值，而当前时刻的值又包含了上一时刻的值，所以随着时序的增加，以前的信息占所有信息的比重会减小，最终随着新输入的增加而逐渐消失，这就是循环神经网络的弊病即梯度消失或梯度爆炸问题 [ 5 ]。这个问题产生的原因是由于链式法则的运算特性，在反向传播时，权重不断地加入计算，逐渐变小直至趋于零，最终导致权重不能更新，形成局部最优解的情况。 1.4. 长短时记忆网络(Long Short-Term Memory Network) 长短时记忆网络(Long Short-Term Memory Networks， LSTM)的问世充分解决了RNN存在的问题，它是一种全新的模型结构，是一种为了解决循环神经网络梯度消失或梯度爆炸问题而研究出的新型神经网络 [ 6 ]，它与RNN结构相似，区别在于在隐藏层中添加了一个记忆细胞，使其能够和之前时刻产生联系，判断信息的可用性，去除掉一部分不可用的信息，输出可用信息。并且在每个神经元中加入了三个门，分别为输入门、遗忘门和控制门，这三个门分工不同，发挥的作用也各不相同。图5为LSTM神经元的结构。 图5. 循环神经网络典型结构图 如图所示的三个模块为部分LSTM神经元结构，每一个模块为不同时刻神经元。从输入端接收数据并开始计算的过程。对于t时刻， c t − 1 为上一个神经元细胞输出的信息， a t − 1 为上一时刻传出的数据。x t 为当前时刻输入的数据。经过三个门的运算。细胞信息c t 进行一次更新，并输出当前时刻的输出数据a t 。由此可见，t时刻的输入和上一时神经元细胞隐藏层的输出共同作为t时刻的输入。 在一段固定长度的时间序列中，神经元内部三个“门”一起控制开断，门其实就是通过激活函数来对输入信息进行控制的结构，而通常激活函数选用sigmoid函数，由于sigmoid函数的值域为(0， 1)，当门处于开通状态时，输出为1，则表示信息可以通过；当门处于关闭状态时，输出为0，则表示信息不能通过。 记忆细胞类似于一条传送带，贯穿了整个时间序列，这其中只和其他部分有一些少量的交互，从开始时刻到目前为止所有的信息都可以被LSTM的记忆细胞记住然后传递给下一时刻，通过三个门的作用任意调取。这便是LSTM优于RNN的地方。图6为LSTM神经元记忆细胞结构。 图6. LSTM神经元记忆细胞结构 下面分别介绍输入门、遗忘门和输出门的结构特点和运算机制： 1) 遗忘门 遗忘门的作用是丢失没用的信息，将有用的信息保留下来，通过遗忘门可以对历史信息进行选择性处理，其结构如图7所示。 图7. LSTM神经元遗忘门结构 从图中可以看到，遗忘门的输入由上一时刻的输出和此时刻的输入组成，计算公式如式所示： f t = σ ( w f [ a t − 1 ， x t ] + b f ) 其中， a t − 1 为上一时刻的输出数据， x t 为当前时刻的输入数据， f t 为当前时刻的输出， b f 是偏置项， w f 是权重，σ是激活函数。遗忘门通过这个激活函数将上一时刻的输出值和当前时刻的输入值进行运算得到一个在(0， 1)之间的值 [ 7 ]，这个值可以视为一个比例，然后用这个比例与上一时刻的单元状态进行点乘，从而实现筛选的目的，即丢弃无用信息，保留有用信息。 2) 输入门 输入门是用来决定加入多少信息的控制开关，也就是决定有多少信息进入当前时刻的记忆细胞，其结构如图8所示。 图8. LSTM神经元输入门结构 它的计算公式为： i t = σ ( w i [ a t − 1 ， x t ] + b i ) c ˜ t = tanh ( w c [ a t − 1 ， x t ] + b c ) c t = f t ∗ c t − 1 + i t ∗ c ˜ t 其中， a t − 1 为上一时刻的输出数据， x t 为当前时刻的输入数据， i t 为当前时刻的输出， b i 是偏置项， w i 是权重，初始值为(−1， 1)。这里包含两个步骤，第一步是通过σ函数将数值控制在(0， 1)之间，第二步是由一个tanh函数生成当前输入的单元状态。其中“1”表示允许通过，“0”表示不允许。新计算出的值 c t 为遗忘门筛选的历史信息和输入门选择输入的信息，这些信息被加入到状态中，完成细胞状态更新。 3) 输出门 输出门的作用是选择什么样的信息能被输出，然后流进下一细胞，其结构如图9所示。 图9. LSTM神经元输出门结构 从图中可以看出，sigmoid函数决定了哪些信息可以被输出，如果当前状态值为1，则表示输出，如果状态值为0，则不输出。然后与经过tanh函数处理过的信息进行相乘，然后输出需要被输出的信息。 其计算公式为： o t = σ ( w o [ a t − 1 ， x t ] + b t ) 输出信息为： a t = o t ∗ c t 以上便是LSTM神经网络的介绍，综上所述，LSTM在保留循环神经网络优点的基础上，加入了记忆细胞和“三门”结构，能完全保留历史信息中有用的部分，更加直接便捷地调取拟合具有时间序列特性的数据，有效地防止了梯度消失和梯度爆炸，避免了训练过程中发生的不必要的问题。正因LSTM的优越性，在语音识别、图像处理和预测数据等领域中LSTM被广泛应用，并取得了不错的成果 [ 8 ]。 1.5. 基于AM的神经网络(Neural Network Based on AM) 1.5.1. 注意力机制 注意力机制(Attention Mechanism， AM)是模仿人脑的一种运行机制，也是一种深度学习的方式，通过这种方式模型可以锁定特定的信息，自动忽略不重要的信息，分辨出哪些是有用的信息。注意力机制会对输入数据进行特征性分析，赋予每一个向量对应的权重值，这些对预测结果影响较大的信息就会被凸显出来，因此，带有注意力机制的神经网络模型可以挖掘出与预测目标关系最为密切的输入信息，对预测结果产生很大影响。 它最核心的操作就是一串权重参数，要从序列中学习到每一个元素的重要程度，然后按重要程度将元素合并。权重参数就是一个注意力分配的系数，决定给哪个元素分配多少注意力。 图10为基于注意力机制的神经网络的结构图。 图10. 基于注意力机制的神经网络结构图 1.5.2. 基于AM的网络结构 从前文可知在神经网络中加入LSTM神经元可以记忆较长序列的信息，并且保留重要信息遗忘不重要信息，而加入Attention层的作用是突出重要信息对预测结果的影响。 1) 引入注意力机制的神经网络模型内部含有两层神经元，并且在两层神经元中使用Dropout层进行连接以减少训练时参数量和防止过拟合。Attntion机制引入权重系数。对雾霾及其影响因子在前一个神经元层与后一个神经元层进行数据特征提出时的输出权重比例进行自适应地重新分配再加权，即自动捕获城市雾霾预测时间序列的自身变化性和周期性。 2) 多次使用Attention机制对多个神经元进行计算，输入信息首先经过第一层神经元，经过运算信息会被输送到第二层神经元，接下来进入Attention层进行学习，最终输出一个一维向量。