吳磊,徐凱
(1.重慶醫(yī)科大學(xué)附屬第一醫(yī)院 信息中心,重慶 400016;2.重慶交通大學(xué) 信息科學(xué)與工程學(xué)院,重慶 400074)
隨著信息科技的快速發(fā)展,醫(yī)院診療工作趨向于智能化、精細(xì)化和高效化,人們在享受醫(yī)療服務(wù)的同時,對就醫(yī)體驗要求更高。準(zhǔn)確有效地預(yù)測醫(yī)院門診量可以為醫(yī)療資源配置等活動提供科學(xué)依據(jù)和決策支持,因此,門診量的精準(zhǔn)預(yù)測為開展醫(yī)療工作和提高服務(wù)質(zhì)量有重要作用。
合理的預(yù)測方法和預(yù)測模型是提高門診量預(yù)測準(zhǔn)確度的關(guān)鍵因素。在早期的研究中,ARIMA模型[1]、移動平均季節(jié)指數(shù)模型[2]、灰色GM(1,1)模型[3]和模糊時間序列模型[4]等方法在門診量預(yù)測領(lǐng)域得到廣泛應(yīng)用。這些模型及方法相對簡單,都是通過對歷史門診量數(shù)據(jù)進(jìn)行取樣擬合實現(xiàn)預(yù)測功能,在時間序列預(yù)測領(lǐng)域效果較好,然而在處理非線性數(shù)據(jù)時不能較好地模擬和獲取數(shù)據(jù)的非線性特征,導(dǎo)致預(yù)測結(jié)果穩(wěn)定性較差。
門診量預(yù)測不是一個簡單的時間序列問題,而是包含空氣質(zhì)量、天氣和時間等各種非線性因素[5]。為了更好地獲取門診量數(shù)據(jù)非線性特征和提高預(yù)測精度,神經(jīng)網(wǎng)絡(luò)和組合預(yù)測方法[6-7]在門診量預(yù)測方面具有強大的優(yōu)勢。
本研究提出一種深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Net-work,DNN)預(yù)測模型,由RBM層和預(yù)測層組成,采用無監(jiān)督學(xué)習(xí)方法預(yù)訓(xùn)練網(wǎng)絡(luò)模型初始參數(shù)和提取數(shù)據(jù)特征,預(yù)測層引入殘差結(jié)構(gòu)使信息跨層傳輸,防止梯度消失,最后使用梯度下降法對整個網(wǎng)絡(luò)模型的參數(shù)進(jìn)行微調(diào)。將某醫(yī)院的門診量數(shù)據(jù)作為樣本訓(xùn)練模型并加以實現(xiàn),通過仿真實驗驗證了深度神經(jīng)網(wǎng)絡(luò)模型進(jìn)行門診量預(yù)測時準(zhǔn)確率更好。
典型的受限玻爾茲曼機(Restricted Boltzmann Machine,RBM)是深度學(xué)習(xí)算法的重要組成部分,由1個可見層v和1個隱含層h組成的雙層網(wǎng)絡(luò)??梢妼佑脕磔斎霕颖緮?shù)據(jù),隱含層用于數(shù)據(jù)特征提取,層內(nèi)相互獨立,層與層之間神經(jīng)元全連接。RBM的結(jié)構(gòu)如圖1所示。
圖1 RBM模型結(jié)構(gòu)
對于RBM的模型來說,給定可見層輸入v和隱含層輸出h,聯(lián)合組態(tài)方程為式(1)。
(1)
式中,ai和bj分別為可見層神經(jīng)元i和隱含層神經(jīng)元j的偏置信息;vi和hj分別為可見層神經(jīng)元i輸入值和隱含層神經(jīng)元j輸出值;wij為權(quán)重矩陣;n,m分別為可見層和隱含層神經(jīng)元的個數(shù)。
當(dāng)參數(shù)確定時,聯(lián)合概率分布表示為式(2)。
(2)
Z為歸一化因子,計算式為式(3)。
(3)
分別計算可見層v節(jié)點集合和隱含層h節(jié)點集合的邊緣概率,計算式為式(4)、式(5)。
(4)
(5)
根據(jù)以上公式,可以推導(dǎo)出可見層和隱含層的條件概率分布為式(6)、式(7)。
(6)
(7)
根據(jù)條件概率分布,可以分別計算出可見層神經(jīng)元i和隱含層神經(jīng)元j的激活概率,為式(8)、式(9)。
(8)
(9)
式(8)、式(9)中,σ(·)為sigmoid函數(shù)。
采用對比散度(CD-k)方法近似求解參數(shù)梯度,選取樣本vi計算公式P(hj=1|v),根據(jù)該分布采樣隱含層向量h,計算正向梯度
(10)
式中,μ表示模型學(xué)習(xí)率。
1.2.1 建立網(wǎng)絡(luò)模型
根據(jù)人們就醫(yī)習(xí)慣,在病情允許情況下,一般都會選擇在工作日就醫(yī)。隨著互聯(lián)網(wǎng)技術(shù)的應(yīng)用,預(yù)約掛號成為主要就醫(yī)方式,醫(yī)生排班也幾乎全部集中在工作日,因此,每月的工作日天數(shù)是影響醫(yī)院門診量的關(guān)鍵因素。在醫(yī)院門診量預(yù)測中可以將歷史門診量數(shù)據(jù)和工作日天數(shù)作為輸入信息。
深度神經(jīng)網(wǎng)絡(luò)包含多個隱含層,層與層之間都是全連接,層數(shù)越多,訓(xùn)練的參數(shù)就越多,計算量就越大,引起梯度消失和梯度爆炸問題。為避免這種問題,在預(yù)測層引入殘差學(xué)習(xí)結(jié)構(gòu)(ResNet),激活函數(shù)采用ReLU函數(shù)能夠解決正區(qū)間梯度消失問題,加快訓(xùn)練速度,表達(dá)式如式(11)。
(11)
式中,si為輸出層輸出;wjk為隱含層到輸出的權(quán)重矩陣;ck為輸出層偏置;xi為下一年每月工作日天數(shù)作為輸入樣本數(shù)據(jù)。
根據(jù)前文所述,本研究所提出的深度神經(jīng)網(wǎng)絡(luò)預(yù)測模型結(jié)構(gòu)如圖2所示。
圖2 深度神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)
本研究將前一年每月門診量數(shù)據(jù)和工作日天數(shù)作為預(yù)測模型的輸入,輸入信息結(jié)構(gòu)為:1月門診量,1月工作日天數(shù),……,12月門診量,12月工作日天數(shù);后一年每月工作日天數(shù)作為殘差結(jié)構(gòu)跨層輸入信息,對預(yù)測結(jié)果進(jìn)行引導(dǎo);模型輸出為后一年的月門診量預(yù)測結(jié)果。第一層輸入信息能夠獲取歷史門診量數(shù)據(jù)與工作日天數(shù)之間的關(guān)系,殘差結(jié)構(gòu)的輸入信息對預(yù)測結(jié)果進(jìn)行引導(dǎo)實現(xiàn)更高預(yù)測精度。網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計輸入層24個神經(jīng)元,輸出層12個神經(jīng)元,根據(jù)經(jīng)驗公式[8]確定隱含層為2層,神經(jīng)元節(jié)點數(shù)分別為24、12。
1.2.2 算法流程
深度神經(jīng)網(wǎng)絡(luò)門診量預(yù)測算法操作步驟如下。
步驟1:對樣本進(jìn)行歸一化處理,劃分訓(xùn)練樣本集和測試樣本集;
步驟2:建立深度神經(jīng)網(wǎng)絡(luò)模型,初始化相關(guān)參數(shù),包括權(quán)重、偏置和學(xué)習(xí)率等;
步驟3:模型預(yù)訓(xùn)練階段,采用逐層訓(xùn)練方法,先訓(xùn)練第一個RBM,根據(jù)式(10)更新權(quán)重和偏置;上一層RBM的輸出作為下一層的輸入,再次訓(xùn)練,直至獲取每一層的初始化參數(shù)結(jié)束;
步驟4:訓(xùn)練神經(jīng)網(wǎng)絡(luò),對模型各層參數(shù)進(jìn)行微調(diào),采用梯度下降法對每層參數(shù)進(jìn)行調(diào)整,最終訓(xùn)練結(jié)束得到深度神經(jīng)網(wǎng)絡(luò)模型。
步驟5:輸入測試樣本集,對深度神經(jīng)網(wǎng)絡(luò)模型進(jìn)行精確性驗證。
以某醫(yī)院2014-2018年的門診量數(shù)據(jù)作為試驗數(shù)據(jù),抽取學(xué)習(xí)樣本80%作為訓(xùn)練集,20%作為測試集。訓(xùn)練集用于訓(xùn)練模型,更新參數(shù);測試集用于檢驗?zāi)P偷念A(yù)測精度。
采用平均相對誤差(MRE)和均方根相對誤差(MSRE)來對模型預(yù)測進(jìn)度進(jìn)行評價和比較,如式(12)、式(13)。
(12)
(13)
式(12)、式(13)中,fi表示實際的值;yi表示預(yù)測的值。
在Matlab環(huán)境下進(jìn)行仿真實驗,將ARIMA模型[1]、GM模型[3]、BP神經(jīng)網(wǎng)絡(luò)模型和深度神經(jīng)網(wǎng)絡(luò)模型分別用于門診量預(yù)測。
本研究將RBM的學(xué)習(xí)率設(shè)為0.05,激活函數(shù)為sigmoid函數(shù)。重構(gòu)誤差是預(yù)訓(xùn)練階段對樣本數(shù)據(jù)進(jìn)行特征提取的效果評價指標(biāo),重構(gòu)誤差越小,學(xué)習(xí)效果越好,其提取特征更具有代表性。在預(yù)訓(xùn)練階段,3層RBM的重構(gòu)誤差變化曲線圖如圖3所示。
圖3 3層RBM重構(gòu)誤差變化曲線圖
由圖3可知,每層RBM重構(gòu)誤差均隨著重構(gòu)次數(shù)增加而不斷變小,其中第3層RBM在第50次重構(gòu)訓(xùn)練時重構(gòu)誤差已經(jīng)將至0.000 53。2層RBM和3層RBM的重構(gòu)誤差曲線極為接近,因此,深度神經(jīng)網(wǎng)絡(luò)模型2層RBM學(xué)習(xí)之后,即可從原始樣本中提取代表性較強的數(shù)據(jù)特征,本研究神經(jīng)網(wǎng)絡(luò)模型能夠提取較強的數(shù)據(jù)特征。
在預(yù)測模型微調(diào)階段,設(shè)置網(wǎng)絡(luò)訓(xùn)練算法最大次數(shù)為1 000次,學(xué)習(xí)率為0.1。對比模型得到的預(yù)測結(jié)果如圖4所示。
圖4 4種模型的門診量預(yù)測值
可以看出,深度神經(jīng)網(wǎng)絡(luò)模型預(yù)測曲線更加接近實際值曲線,預(yù)測效果明顯優(yōu)于其他模型,說明解決非線性系統(tǒng)問題,深度神經(jīng)網(wǎng)絡(luò)模型具有更好的適應(yīng)性,適用于醫(yī)院門診量預(yù)測。
ARIMA模型和GM模型無法考慮到其他因素對門診量的影響,當(dāng)外界因素發(fā)生變化時,預(yù)測結(jié)果誤差就大。預(yù)測誤差比較曲線如圖5所示。
圖5 4種模型預(yù)測誤差對比圖
可以看出對12個月的門診量預(yù)測數(shù)據(jù)誤差值,其中深度神經(jīng)網(wǎng)絡(luò)模型的預(yù)測結(jié)果大多數(shù)誤差值分布更近于0。表明工作日天數(shù)作為影響門診量的主要因素,對預(yù)測結(jié)果的準(zhǔn)確性起著極大作用,在樣本數(shù)據(jù)較少的情況下,也能獲取較高的預(yù)測精度。
對比模型平均相對誤差和均方根相對誤差的比較結(jié)果如表1所示。
表1 4種模型預(yù)測誤差比較表
可以看出深度神經(jīng)網(wǎng)絡(luò)預(yù)測方法的平均相對誤差和均方根誤差均最小。說明本研究提出的深度神經(jīng)網(wǎng)絡(luò)預(yù)測模型預(yù)測精度和穩(wěn)定性都優(yōu)于傳統(tǒng)的預(yù)測模型,預(yù)測性能最好。
本研究使用的深度神經(jīng)網(wǎng)絡(luò)模型進(jìn)行門診量預(yù)測,雖然該模型為非線性模型,但只包含2個隱層,并且各層神經(jīng)元個數(shù)較少,因此計算效率高。使用如下仿真設(shè)備:Intel(R)Core(TM)i5-8500 CPU@3.00 GHz 3.00 GHz,內(nèi)存(RAM)為8 GB,64位操作系統(tǒng),程序運行6.81秒便可以獲取最優(yōu)預(yù)測效果,預(yù)測所用時間極少。在樣本數(shù)量大,隱層數(shù)多且隱層神經(jīng)元個數(shù)多時,需要訓(xùn)練的參數(shù)會急劇增加,預(yù)測速率會受到影響。在這種情況下,可以考慮采用并行計算的方法來提速,這也是當(dāng)前的研究熱點,這里不予贅述。
針對醫(yī)院門診量預(yù)測問題,考慮歷史門診量數(shù)據(jù)和工作日天數(shù)因素,提出一種基于深度神經(jīng)網(wǎng)絡(luò)的門診量預(yù)測方法,使用RBM對樣本數(shù)據(jù)進(jìn)行特征提取和網(wǎng)絡(luò)參數(shù)預(yù)訓(xùn)練;預(yù)測層引入殘差結(jié)構(gòu)使輸入信息能夠跨層傳輸,引導(dǎo)預(yù)測結(jié)果;最后對整個網(wǎng)絡(luò)模型的參數(shù)進(jìn)行微調(diào)達(dá)到最優(yōu)。實驗結(jié)果表明,在小樣本數(shù)據(jù)情況下,該模型能夠較好地提取樣本數(shù)據(jù)特征,非線性擬合能力強,預(yù)測精度優(yōu)于對比模型,能較好地逼近實際情況。深度神經(jīng)網(wǎng)絡(luò)模型具有更好的預(yù)測效果,能夠為現(xiàn)代醫(yī)院資源優(yōu)化配置提供更為準(zhǔn)確的參考依據(jù)。
本研究重點考慮了歷史門診量數(shù)據(jù)和工作日天數(shù)作為預(yù)測主要因素,未能考慮其他因素對預(yù)測結(jié)果的影響,如空氣質(zhì)量、氣象等,將在今后的研究中可融合多種外界因素,展開進(jìn)一步研究。