APP下载

基于长短期记忆网络的COVID-19疫情趋势序列分析预测

2021-01-20赵永翼

关键词:时序向量神经网络

赵永翼, 王 菲, 申 莹

(1. 沈阳师范大学 软件学院, 沈阳 110034; 2. 沈阳市艺术幼儿师范学校, 沈阳 110000)

0 引 言

2020年伊始,新冠状病毒席卷全球,新冠状病毒通过空气与人体器官嘴、眼皮、鼻腔和口腔中的粘膜接触,释放病毒遗传物质RNA单链作为信使RNA绕过细胞核糖体合成RNA复制酶[1]。RNA复制酶根据病毒RNA生成RNA负链继续和复制酶生成RNA片段、RNA正链,不同RNA片段与核糖体生成更多病毒蛋白质结构,蛋白质外壳与RNA组合生成新冠状病毒颗粒通过高尔基体分泌至细胞外以感染新的细胞[2],以上就是新冠状病毒感染患者的生物传播过程[3]。由于新冠状病毒极容易在空气中通过飞沫传播,截止到2020年7月13日全球疫情数据:现存确诊5 344 825例,累计确诊12 846 242例,累计死亡567 976例,累计治愈6 933 441例。其中美国新冠肺炎病亡人数超过13万,全球居首[4]。本文采取国外疫情数据作为数据本集。在模型的选择上,机器学习主张机器自己从数据中学习知识,需要人工提取特征,常见的算法有线性回归、分类、聚类算法等如SVM、决策树、Adaboost、PCA降维等。而深度学习实质是人工神经网络,可看作是一种层数较深的人工神经网络,常见的有CNN、RNN。为了能实现疫情数据的序列化预测,实验选择深度学习模型RNN循环神经网络变体长短期记忆网络LSTM长短期记忆网络模型对国外疫情数据进行序列预测[5]。

1 RNN循环神经网络

人工神经网络(Artificial Neural Network,ANN)模型,简称神经网络或类神经网络。在机器学习科学领域是一种模仿生物中枢神经系统的结构(如图1所示),神经网络由大量的人工神经元联结进行计算[6],人工神经网络在外界信息的基础上改变内部结构,具备自身学习功能的自适应系统[7]。现代神经网络是一种非线性统计性数据建模人工神经网络, 通过一个基于数学统计学类型的学习方法得以优化。以多层感知机、卷及神经网络CNN为例,ANN是用来处理静态数据,对向量进行加权求和求偏值[8]。

图1 ANN结构Fig.1 ANN structure

图2 循环神经网络Fig.2 Recurrent neural network

人工神经网络处理静态数据,静态数据样本数据之间互相独立,没有依赖关系,通过输入向量进行数学模型训练,得出结果再进行反向传播,以纠正权重[9]。循环神经网络(Recurrent Neural Network,RNN)是深度学习领域中一类特殊的内部存在自连接的神经网络。如图2所示,RNN由3个层次构成,从下至上:输入层xt、隐藏层A、输出层ht。其中隐藏层含多层结构。

静态数据与序列数据不同,静态数据类比用相同方式训练不同数据,数据之间没有依赖关系。序列数据更强调相互关联性,以固定timestep(时间步)要求输入和输出序列必须是等长[10]。当t=0时输出,再依次向后计算,每个时间步的输出值与前面时间步的输出相关且相等。

图3 循环神经网络基本单元Fig.3 Basic unit of Recurrent neural network

图3是RNN循环神经网络基本单元cell:所有的递归神经网络都是由重复神经网络模块构成的一条链,处理层由一个tanh层激活函数组成,通过当前输入及上一时刻的输出来得到当前输出。 数据流向通过xt作为向量输入到A隐藏层,经过计算一部分输出到输出层进行计算,另一部分流入下一个时序的隐藏层[11],在下一个时序的隐藏层接受来自上一个时序输出的数据和本时序的输入数据,2个数据通过concat函数连接,合并2个输入,且维度等于隐藏层的神经元维度,2个合并数据作为整体向隐藏层输入,在隐藏层进行加权求和。

1.1 循环神经网络正向传播与反向传播

RNN循环神经网络正向传播机制:输入数据输入有2个,当前时刻的输入和上一时刻的状态。 cell处理公式:ftanh(wx+b),结果一个拷贝传给下一时刻(之间有权值连接),一个传给输出层,作为其输入cell的输出作为输出层的输入[12],进行全连接操作。

假设:输入向量的维度为x,状态的维度为h, 拼接输入向量维度为x+h, 循环体的参数为(x+h)*h+h, 假设输出向量的维度为y,输出层的参数为h*y+y。

RNN循环神经网络的反向传播BPTT(back propagation through time)的链式求导算法来反向传播。

反向传播权重的反推公式:

反向传播利用对输出层的参数求导再对输入层和隐藏层求导,分别不依赖时间和依赖时间。

1.2 RNN缺陷

长时间以来的RNN循环神经网络序列问题未能及时处理问题时,容易出现梯度消失或梯度爆炸。

图4是短时间序列问题: 相关的信息和预测的词位置之间的间隔是非常小的, RNN可以学会使用先前的信息[13]。

图5是长时间序列问题: 相关信息和当前预测位置之间的间隔比较大,需要“记忆”先前提到的离当前位置很远的上下文内容。

图4 短时间序列问题Fig.4 Short time series problem

图5 长时间序列问题Fig.5 Long time series problem

2 LSTM长短期记忆网络

为处理长序列依赖问题,Greff Klaus等[14]提出的LSTM(long short-term memory)模型,它能够有效克服RNN中存在的梯度消失问题,尤其在长距离依赖的任务中的表现远优于RNN[15]。图6中矩形为神经网络层,带有权重和偏值用于加权运算。圆形部分为线形运算,进行简单线性运算。双箭头融合是指向量拼接,当输入神经元输入一维向量,上一个时序的输出到该时序二维向量,此时拼接后的向量为三维向量[16]。箭头分离为向量拷贝,指把一个向量值分别传给2个流向,到下一个时序以及输出到此时序的输出神经元。

图6 LSTM模型结构Fig.6 LSTM model structure

图7 单元结构Fig.7 Cell state

图7是LSTM模型的核心元素单元结构,是该模型中的传送带,在系统中呈一条长直链,仅存储线性关系。信息往下一级传递且不会改变。在模型中用于存储记忆,跨时间步链接,cell state决定该模型中的数据抛弃什么,传输什么。被抛弃的数据在矩阵运算时用0加权。

遗忘门的作用(如图8所示):决定旧的信息哪些信息丢掉,哪些保留cell state。该门读取当前的输入xt和t-1时刻神经元状态信息ht-1作为输入,做加权求和,再经过sigmoid激活函数转换,输出一个在0~1之间的数值给Ct-1[17]。输出结果1表示“完全保留”,0表示“完全舍弃”。

输入门作用:决定哪些新的信息将被加入cell state 。

输入门分为2个部分:

1) 一部分由Sigmoid激活层构成,它决定哪些值要更新;

2) 另一部分由Tanh函数层构成,新候选的向量生成器。

图8 遗忘门、输入门、输出门Fig.8 Forget gate,input gate,output gate

状态更新:t-1时刻的状态乘“遗忘门”的输出,加上新的候选信息,组成当前的cell state。

输出门作用: 决定最后的输出结果。

首先运行一个sigmoid层来确定cell state的哪个部分将输出出去。接着把cell state通过tanh进行处理(得到一个-1~1之间的值)并将它和sigmoid门的输出相乘,得到最后输出[18]。

LSTM通过“遗忘门” 控制之前的信息的输入程度,通过“输入门”控制当前信息的输入程度,通过 “输出门”控制最终的输出以解决LSTM模型的长期依赖问题[19],同时选择sigmoid激活函数作为选择工具,用0~1来做权重的二次分配,并且用tanh函数作为变化工具。当前的单元信息是通过输入门控制之后叠加来解决梯度消失问题。

3 实 验

3.1 搭建实验环境

使用框架搭建网络,实验中Keras框 架由纯 Python编写的基于Tensorflow为后端。Keras是一个高层神经网络的API,可以迅速地将想法转换为结果,允许简单而快速的原型设计,更适配卷积神经网络,模型库中含有很多经典的模型使得深度学习的建模与算法设计较为方便[20]。实验硬件平台组成是: 处理器为3.1 GHz Intel Core i5,内存为8 GB 2133 MHZ LPDDR3,图形卡为Intel Iris Plus Graphics 650 1556 M。

表1 实验中用到的库Table 1 The library used in the experiment

3.2 实验过程与结果

1) 分析实验任务:疫情预测任务是一个时序预测任务,根据前3天预测第4天累计确诊人数,实验选择RNN循环神经网络变体LSTM模型。

2) 分析原始数据,筛选需要数据:实验采用的数据集为国外某国家在2020年2月22日—2020年7月13日期间爆发的新型冠状病毒(COVID-19)肺炎中新增确诊人数、现有确诊人数、治愈、死亡、累计确诊人数。由于国内疫情数据干扰因素较多,规律不可循,因此使用国外疫情数据。数据集中新增确诊人数、现有确诊人数、治愈、死亡为输入元素X,累计确诊人数为输出元素Y。其中训练集110条,测试集19条。

图9 数据集Fig.9 Data set

3) 数据预处理,并制成数据集(如图9所示):筛选数据集中必要数据,剔除干扰元素。

4) 对必要数据进行归一化处理:

x=normalized_train_data[i:i+time_step,:4]

y=normalized_train_data[i+time_step:i+1+time_step,13,np.newaxis]

5) 用原始值减去数据均值除以标准差,用numpy对训练数据进行减均值操作。

6) 模型搭建:根据数据和任务,分析输入和输出节点如何设定,模型具体使用什么结构。

根据疫情数据中新增确诊人数、现有确诊人数、治愈、死亡、累计确诊人数等元素对下一日累计确诊人数预测。RNN层在输入后的线性转换步骤添加随机失活,在循环阶段的线性转换也添加随机失活,失活概率都为0.2。

表2 关键代码Table 2 Key codes

图10 实验结果Fig.10 Experimental results

在进行实验时,首先打开数据集,读取数据的1~5列。在第二条语句中样本序列长度(time step)为14,每个数据输入维度4,全连接层的dropout为0.2,循环体中的dropout比例为0.2。定义损失函数为交叉熵,优化方法为Adam,模型评价标准为分类正确率。实验设定Batch size=500,epoch=500。在图10中样本集的折线为深色,测试集的折线为浅色。可以看出实验结果与真实数据匹配度较高,实验没有出现梯度消失以及梯度爆炸等问题。LSTM模型适合用于做疫情序列问题预测模型。

4 结 语

本文在Bengio等[8]提出标准RNN循环神经网络的基础上,将Greff Klaus等[14]提出的长短期记忆网络模型应用在长序列疫情预测,实验结果与真实数据高精度匹配,说明LSTM较长短期记忆网络模型适用于做长序列预测,在以后的疫情实验中可做进一步的研究和讨论。

猜你喜欢

时序向量神经网络
基于时序Sentinel-2数据的马铃薯遥感识别研究
向量的分解
基于Sentinel-2时序NDVI的麦冬识别研究
聚焦“向量与三角”创新题
神经网络抑制无线通信干扰探究
一种毫米波放大器时序直流电源的设计
向量垂直在解析几何中的应用
基于神经网络的拉矫机控制模型建立
向量五种“变身” 玩转圆锥曲线
复数神经网络在基于WiFi的室内LBS应用