甘雨,吳雨,王建勇
(四川大學 計算機學院,四川 成都 610065)
2019年12月,新型冠狀病毒肺炎疫情(corona virus disease 2019, COVID-19)在中國湖北省武漢市爆發。新型冠狀病毒傳染速度極快,短時間內即造成多人感染。為控制疫情,武漢市于2020年1月23日實施封城管理,此后全國多個省市相繼啟動突發公共衛生事件Ⅰ級響應機制。2020年1月31日,世界衛生組織宣布COVID-19疫情構成“國際關注的突發公共衛生事件”,后于當地時間2020年3月11日宣布COVID-19疫情成為全球大流行。一時之間,疫情的發展趨勢成為全國乃至世界人民共同關注的問題。通過對疫情發展趨勢的有效預測可對人們提前制定應對措施提供幫助。從疫情爆發初期開始,世界范圍內就有諸多學者對疫情情況進行了預測[1-3]。
SIR模型[4-5]和SEIR模型[6-7]都是常用的傳染病模型,被用來對傳染病傳播情況進行模擬和預測。文獻[8]使用SEIR模型對武漢當時的疫情規模以及武漢和全國其余地區的疫情峰值進行了預測。文獻[9]考慮到人口的流動情況,對SEIR模型進行改進,使用改進后的模型對國內疫情趨勢進行預測。文獻[10]使用基于年齡的SEIR模型對美國的疫情感染人數和死亡人數進行了預測。傳統SIR模型和SEIR模型的局限性在于模型參數都是常數,無法隨著現實世界中真實情況的變化而改變。在以往的工作中,模型參數的計算通常需要人為劃分時間段,使用不同時間段的數據進行分段計算,以實現動態預測。針對此問題,文獻[11]基于啟發式算法[12],對SEIR模型中的參數不斷進行隨機采樣并通過均方根誤差最小的約束原則,獲得參數的最優解,從而對武漢的疫情拐點進行預測。文獻[13]則在SIR模型的基礎上,將模型與機器學習中的極限學習機[14]相結合,提出了極限IR模型,將疫情發展趨勢預測模型的構建轉化為對模型參數預測模型的構建,對全國疫情趨勢進行了預測。
近年來隨著深度學習的不斷發展,其以優秀的實驗性能在多個領域中脫穎而出,包括計算機視覺領域[15-17]、自然語言處理領域[18-20]和語音識別領域[21-23]等。在時序預測問題中,最常見的神經網絡是循環神經網絡[24-25](recurrent neural network, RNN)。RNN可學習到歷史輸入與當前輸入的關聯信息,從而進行時序預測。但當時間序列過長時,傳統RNN容易出現梯度消失現象,無法處理具有長期依賴關系的問題。為解決這一問題,出現了長短期記憶網絡[26-27](long short-term memory network, LSTM)。在此次疫情中,疫情的變化和發展會受到前期各項措施的影響,因此疫情趨勢預測可看作具有長期依賴關系的時序預測問題。文獻[11]除使用改進后的SEIR模型之外,也使用了LSTM對疫情的發展趨勢進行模擬和預測。
本文將疫情趨勢預測看作一個長期且動態變化的時序預測問題,受文獻[11, 13]啟發,借助傳統SEIR模型的數學方法與人工智能方法在時序預測問題上的優越性,從SEIR模型參數入手,針對新冠病毒的傳播特點,提出了基于LSTM的病毒傳染率預測方法,并將其與SEIR模型結合,提出新冠肺炎疫情趨勢預測模型(LSTM-SEIR network, LS-Net)。LS-Net借助LSTM優良的時序信息學習能力對病毒傳染率進行實時預測。最后將實時更新的病毒傳染率應用到SEIR模型中,實現對疫情發展趨勢的智能動態預測。
SEIR模型是經典的傳染病模型,它將人群分為4類:易感者(susceptible),健康但有可能感染病毒的人,總人數為S;潛伏者(exposed),已感染病毒但仍未出現病癥的人,總人數為E;感染者(infected),已感染病毒并出現病癥的確診患者,總人數為I;移除者(removed),感染病毒后因病死亡或成功治愈的人,總人數為R。在COVID-19疫情中,SEIR模型中4類人群的轉化關系如圖1所示,圖中, β1為潛伏者將病毒傳染給易感者的概率, β2為感染者將病毒傳染給易感者的概率, α 為潛伏者轉化為感染者的概率,γ 為感染者轉化為移除者的概率。SEIR的動力學方程為

圖1 SEIR模型Fig.1 SEIR model

式中:t為時間步長;N=S+E+I+R為人群總數。
根據文獻[11], β1和 β2由式(2)計算得到:

式中:k1、k2分別為平均每潛伏者和每感染者每天接觸的人數;b為病毒的傳播率,可由SIR模型計算得到。SIR模型與SEIR模型類似,其將人群分為易感者、感染者、移除者3類,在SIR模型中,病毒傳染初期由于感染人數較少,所以N≈S, 則

由式(3)可得:

由式(4)可計算出b,將其代入式(2)即可計算出SEIR模型中的 β1和 β2。
在傳統SEIR模型中, β1和 β2常是由數據統計得出的常數。而在現實情下,病毒的傳染能力很大程度上會受到外界的影響,所以 β1和 β2應是不斷變化的。且在上述方法中,β1和 β2均由SIR模型計算得出,沒有考慮到潛伏期患者的病毒傳染情況。
針對傳統SEIR模型中的病毒傳染率無法實現自動動態預測和沒有考慮到潛伏期患者的傳染情況的問題,本文基于LSTM和SEIR模型提出LS-Net。
LS-Net的總體結構如圖2所示,其包括2個模塊:病毒傳染率預測模塊和疫情趨勢預測模塊。病毒傳染率預測模塊包括LSTM層、全連接層(fully connection layer,FC)和非線性變換層,實現對新冠病毒傳染率 β1和 β2的預測。疫情趨勢預測模塊包括SEIR模型層,實現對新冠疫情趨勢的預測。

圖2 LS-Net總體結構Fig.2 Framework of the long short-term memory SEIR network
2.1.1 病毒傳染率預測模塊
病毒傳染率后期的變化與疫情前期的防控和診治措施息息相關,因此病毒傳染率的預測需要結合歷史信息與當前信息共同分析得出。病毒傳染率預測模塊以LSTM為基礎,結合病毒的傳播規律對傳染率進行預測。為更好地學習到時序數據間的關聯信息,LS-Net使用3天的潛伏期、感染者、移除者數量作為輸入。
LSTM可學習并生成包含歷史信息與當前信息的數據,其包含3類門:輸入門it、 遺忘門ft、輸出門ot。LSTM更新過程如式(5)所示:

式中:Xt為t時刻的輸入。
將ht輸出的包含時序信息的特征輸入到FC層。FC層計算過程如式(6)所示:

式中:Ct、at、kt均為預測t時刻 β1和 β2的控制參數。
隨著政府和社會管控力度以及人們自身防控意識的不斷增強, β1、 β2會逐漸下滑,且后期 β1、 β2相較前期會大幅下降。由于確診患者會被嚴密地隔離起來并進行醫治,與之接觸的醫護人員也會采取完備的防護措施,而潛伏期患者相對行動更加自由,所以實際上確診患者的病毒傳播能力相較于潛伏期患者更弱。據此本文為新冠病毒傳染創建了式(7)所示的非線性變換函數,由此計算
得到 β1和 β2。

2.1.2 疫情趨勢預測模塊
該模塊由1.1節所述的SEIR模型構成。SEIR層具有參數S、α 和 γ,結合病毒傳染率預測模塊得到的 β1t和 β2t及輸入數據Et、It、Rt對類數據進行預測。其計算過程為

式 中:P(S)t+1、P(E)t+1、P(I)t+1、P(R)t+1分 別 為 第t+1天易感者、潛伏者、感染者和移除者數量的預測值。
LS-Net訓練時使用前3天的數據預測第4天的數據,并使用平均平方誤差(mean square error,MSE)作為損失函數。由于現實中感染者和移除者的數據更易收集,且人們對感染者情況更關注,本文在訓練時給3類數據的MSE分配了不同的權重。具體如式(9)所示:

式中: MSEE、 M SEI、 M SER分別為由潛伏者、感染者、移除者的真實值和預測值計算得到的MSE;Et、It、Rt為真實值;P(E)t、P(I)t、P(R)t為預測值。
模型訓練流程如圖3所示。該訓練算法見算法1。

圖3 訓練算法流程Fig.3 Training algorithm flow
算法1 模型訓練
輸入 訓練集樣本X={X2,···,Xt,···,XT},其中Xt={Et?2,It?2,Rt?2,Et?1,It?1,Rt?1,Et,It,Rt},t∈[2,T];
輸出 模型預測結果Y={Y2,Y3,···,Yt},其中Yt={Et+1,It+1,Rt+1},t∈[2,T]。
參數epoch:訓練的總次數。
1) While 訓練次數 ≤ epoch do
2) for eachXt∈Xdo
3)由式(5)、(6)、(7)計算病毒傳染率 β1t、β2t
4)由式(8)計算新冠肺炎疫情趨勢Yt
5) End for
6)由式(9)計算Loss
7)根據Loss更新LSTM參數
9)End while
LS-Net測試時同樣使用前3天的數據預測第4天的數據。但由于疫情趨勢預測是對疫情在未來較長時間段內的發展趨勢進行預測,而當下無法獲得未來時間下的E、I、R具體數據,因此本文將模型的輸出與上一組輸入中的后2天數據相結合,組成新的輸入數據再次輸入到模型中進行計算。若對未來n天的疫情趨勢進行預測,則測試算法流程如圖4所示,測試算法見算法2。

圖4 測試算法流程Fig.4 Testing algorithm flow
算法2 模型測試
輸入 測試集初始輸入X={XT+1},XT={ET?1,IT?1,RT?1,ET,IT,RT,ET+2,IT+2,RT+2}。
輸出 模型預測結果Y={YT+1,YT+2,···,YT+d},其中YT+d={ET+d+1,IT+d+1,RT+d+1} ,d∈[1,n]。
參數d:已測試的天數。
1)Whiled≤ndo
2)由式(5)、(6)、(7)計算病毒傳染率 β1t+d、 β2t+d
3)由式(8)計算新冠肺炎疫情趨勢Yt+d
4)d←d+1//更新已測試天數
5)Xt+d←concat(Et+d?2,It+d?2,Rt+d?2,Et+d?1,It+d?1,Rt+d?1,Yt+d?1)//更新輸入數據
6)End while
為驗證LS-Net的效果,本文使用Pytorch深度學習框架和Python語言搭建預測模型。Python版本為3.6。使用云南省、上海市和陜西省3個地區的疫情數據創建數據集進行實驗并與傳統SEIR模型進行對比。本節將對實驗數據集、實驗參數設置進行介紹并對實驗結果進行分析。
1)數據來源:2019年12月8日—2020年3月28日全國各省市衛生健康委員會公布的疑似病例、確診病例、治愈和死亡病例(后文簡稱移除病例)數據。
2)數據選取:LS-Net沒有考慮不同地區之間人員流動的因素,因此選取了武漢實施全面封城后的2020年1月24日—2020年3月28日的數據進行實驗,以盡量減少人員流動對實驗結果帶來的影響。在全國的總體數據中,確診病例和移除病例大部分來自于湖北省。而早期由于檢測手段跟不上,湖北省存在大量患者不能及時得到確診和無法對疑似病例進行排查的情況,所以早期全國總體數據與現實情況有較大差距。為此本文沒有使用全國總體數據進行實驗,而是從除湖北省外同時記錄有疑似病例、確診病例和移除病例的省市中挑選了云南省、上海市和陜西省3個地區的數據進行實驗。
3)數據集準備:早期無法對人群的病毒感染情況進行排查,還未出現感染癥狀的潛伏期患者數據難以被記錄,因此,本文使用現存疑似病例(已出現病毒感染臨床癥狀但還未得到核酸檢測結果的病例)數作為E,現存確診病例數作為I(現存確診病例數=累計確診病例數?累計移除病例數),移除病例數作為R,各地區2019年常住人口數作為N。將第t~t+2天的數據作為輸入,第t+3天的數據作為對應標簽來進行整理,共得到62份數據。
4)數據集劃分:將3)得到的數據按訓練集規模大小的不同分別整理出4個數據集,即Set_10、Set_20、Set_30、Set_40。其中Set_10劃分規則: 前10份數據作為訓練集,后52份數據的標簽作為測試集的標簽,第11份輸入數據作為測試集的初始輸入數據。Set_20、Set_30、Set_40劃分規則同理。
各地區人口總數:N云南省=4 858.3萬人[28]、N上海市=2 824.14萬人[29]、N陜西省=3 876.21萬人[30]。
LSTM的隱層數量為1,維度為22。
本文在不同的數據集上分別對E、I、R進行預測。LS-Net的實驗結果如圖5所示,傳統SEIR模型的實驗結果如圖6所示。LS-Net和傳統SEIR模型對現存確診人數峰值的預測結果如表1所示。

圖5 本文疫情趨勢預測模型的實驗結果Fig.5 Experimental results of the proposed epidemics trend prediction model
從圖5和表1可看出,在Set_10的測試集上LS-Net能大致預測出I的峰值及達到峰值的時間,且曲線走勢與真實情況大致相同。但由于訓練集樣本較少,3類人群的預測結果均高于真實數據,尤其在R的預測上誤差較大。由在Set_10、Set_20、Set_30、Set_40測試集上的預測結果的縱向對比可知,隨著訓練集樣本的增加以及疫情后期發展趨于穩定,預測結果與真實值的誤差逐漸減小。圖5(e)實驗結果中,I后期有反彈趨勢,可預測結果卻趨于平穩下降,這或許與數據集中的中期至后期E均為0有關。在SEIR模型中,感染者由潛伏者轉化而來,因此E對I、R和E本身的最終預測結果都會產生影響。從圖5(a)、(d)、(g)可看出3個地區只在前10天左右有疑似病例,而在疑似病例清零的14天之后感染者仍有新增,說明以疑似病例數作為E與真實的潛伏期人數有較大差異。
從圖6和表1可看出,傳統SEIR模型的預測結果與現實情況相差巨大。這是因為,傳統SEIR模型中 β1、 β2為定值,難以模擬真實情況。且由圖5(b)、(e)、(h)可知疫情前期感染人數急劇增加,此時間段內 β1、 β2較大。所以在不添加任何約束條件的情況下,仍使用前期的 β1、 β2對后期疫情進行預測會有較大誤差。

表1 現存確診人數峰值預測Table 1 Peak prediction of the active infected cases

圖6 傳統SEIR模型的實驗結果Fig.6 Experimental results of the traditional SEIR model
在以上使用包含了云南省、上海市、陜西省的感染人數由急劇增加、到達峰值至逐漸降低趨于穩定幾個階段的實驗數據的實驗中,LS-Net使用LSTM和式(7)對 β1、 β2進行實時動態預測,而傳統SEIR則將 β1、 β2設為定值,結果表明在使用相同的訓練數據和約束條件的情況下,LS-Net的預測效果遠優于傳統SEIR模型。且在E與實際情況存在較大偏差的情況下,LS-Net依然能夠大致預測出I達到峰值的日期,以及在E=0的情況下疫情趨勢預測曲線基本能與實際數據擬合。
本文結合LSTM和傳統SEIR模型提出了LSNet。實驗結果表明,LS-Net可省去人工拆分時段進行動態計算的繁瑣過程,使用少量的訓練數據即可對疫情中現存確診病例的峰值進行預測,在一定程度上可為人們在當前的防控措施下對疫情的發展趨勢預測提供參考。為使LS-Net成為一個更通用的傳染病疫情趨勢預測模型,未來工作將會基于現有模型從以下幾點進行改進:1)考慮各地人口的流動情況;2)提出可合理地估算潛伏期人群數量的方法。潛伏者數量由于還未出現感染癥狀,因此難以被統計。從已有數據中準確地估算出潛伏期人群的數量將大大提高模型預測的準確率。