趙永翼, 王 菲, 申 瑩
(1. 沈陽師范大學 軟件學院, 沈陽 110034; 2. 沈陽市藝術幼兒師范學校, 沈陽 110000)
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]。
人工神經網絡(Artificial Neural Network,ANN)模型,簡稱神經網絡或類神經網絡。在機器學習科學領域是一種模仿生物中樞神經系統的結構(如圖1所示),神經網絡由大量的人工神經元聯結進行計算[6],人工神經網絡在外界信息的基礎上改變內部結構,具備自身學習功能的自適應系統[7]?,F代神經網絡是一種非線性統計性數據建模人工神經網絡, 通過一個基于數學統計學類型的學習方法得以優化。以多層感知機、卷及神經網絡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個合并數據作為整體向隱藏層輸入,在隱藏層進行加權求和。
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)的鏈式求導算法來反向傳播。
反向傳播權重的反推公式:
反向傳播利用對輸出層的參數求導再對輸入層和隱藏層求導,分別不依賴時間和依賴時間。
長時間以來的RNN循環神經網絡序列問題未能及時處理問題時,容易出現梯度消失或梯度爆炸。
圖4是短時間序列問題: 相關的信息和預測的詞位置之間的間隔是非常小的, RNN可以學會使用先前的信息[13]。
圖5是長時間序列問題: 相關信息和當前預測位置之間的間隔比較大,需要“記憶”先前提到的離當前位置很遠的上下文內容。

圖4 短時間序列問題Fig.4 Short time series problem

圖5 長時間序列問題Fig.5 Long time series problem
為處理長序列依賴問題,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函數作為變化工具。當前的單元信息是通過輸入門控制之后疊加來解決梯度消失問題。
使用框架搭建網絡,實驗中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
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中樣本集的折線為深色,測試集的折線為淺色??梢钥闯鰧嶒灲Y果與真實數據匹配度較高,實驗沒有出現梯度消失以及梯度爆炸等問題。LSTM模型適合用于做疫情序列問題預測模型。
本文在Bengio等[8]提出標準RNN循環神經網絡的基礎上,將Greff Klaus等[14]提出的長短期記憶網絡模型應用在長序列疫情預測,實驗結果與真實數據高精度匹配,說明LSTM較長短期記憶網絡模型適用于做長序列預測,在以后的疫情實驗中可做進一步的研究和討論。