韓金亮 張欣茹 范東浩 李卓辰
(中國礦業大學 徐州 221116)
醫療專家診斷系統是通過采集大量患者數據指標,用合適的算法進行機器學習并在自我反饋的基礎上構建數據庫,并根據對應的輸入數據與數據庫進行匹配予以癥狀判斷的智能診斷機制。醫療自助診斷是現代醫療智能無人化的一個里程碑,其診斷的誤判率是衡量此機制的關鍵標準。通常,患者的數據采集具有時效性,因此實時采集數據診斷尤為重要。而在診斷機制的構建上,為了使得數據庫不失一般性,其對采集數據的要求較高;為了使自助診斷模型的誤判率較低,在算法的選用和完善上仍然存在缺陷,特別是對于離散指標的分類上如何解決過半自變量波動和網絡過擬合而使得診斷出現誤差的問題。因此,醫療自助診斷建模和算法優化一直是吸引著國內外學者和業者研究與關注的重要課題。
目前,大部分醫療診斷數據要進行人工分析,若將機器學習予以推廣就能極大降低醫學誤診[1~2]。國內外近年來對智能醫療服務(Intelligent medical service)以及生物特征技術(Biometrics)的研究投入了較多的力量,特別在美國、歐洲等地,人工智能技術在醫療領域中的應用已經較為廣泛,在藥物挖掘[3]、精神健康、虛擬助理、醫學影像等領域體現較為顯著。雖然機器學習算法在不斷推廣,但是對于病情診斷的離散型目標判斷的誤判率上任然有待完善,為此,基于病情診斷的離散型指標運用樸素貝葉斯網絡、離散型Hopfeild 神經網絡兩種算法分別作診判模型判別對比,結合Matlab仿真模擬了預判處理,發現有監督的機器學習對數據的預判效果更好。盡管該離散型Hopfeild 神經網絡處理結果較可觀,但是受限于網絡規模從而影響了推廣能力。因此,為了更好地降低網絡結構的復雜性,有效避免網絡過擬合的缺陷,本文基于貝葉斯網絡和離散Hopfeild 神經網絡兩種有監督算法予以結合。
離散Hopfield 人工神經網絡相比于樸素貝葉斯網絡誤判率相近,且機器學習在有監督式學習的環境下,神經網絡等部分深度學習方式準確率受網絡規模限制,且自變量的波動造成神經網絡結構極易出現過學習現象。鑒于離散神經網絡和貝葉斯網絡存在相似之處,憑借著遵從馬爾科夫假設,訓練方式相似,且訓練的計算量特別大的特點,在一系列離散化判別分類問題上的求解也相似。為此,提出一種基于貝葉斯網絡結構下運用離散Hopfeild神經網絡的算法,避免因網絡規模受限制而導致網絡的推廣能力受限,降低了數據關聯度的敏感度,進而降低了診斷誤判率。所提方法構建的醫療診斷模型被運用到醫療診斷機制,實際數據驗證了誤判率的降低。
智能病癥診斷模型是在選取有價值的數據指標基礎上,將指標與結果構建關系,通過機器學習算法完成數據庫的建立并自行完成更行,從而自助對未知病癥的患者予以診判結果的機制。
實際生活中,醫療行業存在著供不應求的狀況,病情診判的工作確是重復不變的。對于重癥急診病人的病情需要實時采集相關數據進行檢測,表現出對分析需要的實時性與精確性。尤其是針對現代自主診斷機制的誤判率方面有待降低。
針對上述問題,為了不失一般性,本文選取失眠病癥為例考察對象,利用收集到的6350 名患有不同程度失眠的患者體征數據進行整理[6],建立診斷失眠程度的自助診斷模型。該數據集提供有年齡(Age)、性別(Sex)、信度(Reliability)、精神質(Psychoticism)、神經質(Nervousness)、性格(Char?acter)以及睡眠質量(Sleep quality)這7類特征指標。
其中睡眠質量(Sleep quality)是病人的失眠程度。由于睡眠質量這一指標呈現為分級離散數據(0、1、2、3,失眠程度越高則離散數據越大),睡眠質量(Sleep quality)在回歸或者判別體系中可以作為因變量,其余6 項指標可以作為自變量進行建模分析,建立自變量與因變量的回歸表達式,從而進行自動數據分析診斷常用的方法有貝葉斯網絡模型判別、支持向量機、神經網絡模型等,我們從樸素貝葉斯網絡與離散Hopfeild 神經網絡算法出發進行專家診斷系統的構建,并提出一種基于貝葉斯網絡改進的離散Hopfeild神經網絡進行系統優化。

表1 測試樣本數據集
貝葉斯網絡(Bayesian Network)呈現為一種模擬推理演化過程中因果關系的不確定性處理的概率圖模型[8~9],其網絡拓樸結構為一種有向無環圖(DAG),其每個節點都表示一定的概率信息,即隨機變量。對于該網絡拓撲結構,認為有因果關系(或非條件獨立)的變量則用箭頭來連接。若兩個節點間以一個單箭頭連接在一起,表示其中一個節點是“因(parents)”,另一個是“果(children)”,兩節點就會產生一個條件概率值。
貝葉斯網絡的最大特點是用概率表示所有形式的不確定性,其結構學習中主要的評分函數分為兩類:基于評分搜索的貝葉斯網絡結構學習算法、基于信息論的貝葉斯網絡結構學習算法[10~11]。
2.2.1 基于評分搜索的貝葉斯網絡結構學習算法
首先,將拓撲結構S 的先驗知識表示為先驗概率p(S);然后,利用貝葉斯公式,給定訓練樣本集D時,拓撲結構S的后驗概率計算如下:

由于分母p(D)具有連續性且與拓撲結構S 無關,因此只需最大化分子p(D|S)p(S)即可。基于貝葉斯評分函數學習算法的核心是對于訓練集D 尋求具有最大后驗概率(Maximum A Posteriori)的拓撲結構。從上式可以看出,分母p(D)與具體拓撲結構S無關,因此通常采用如下函數:

基于評分搜索的貝葉斯網絡算法需要隨著變量增加其運算復雜性,所以當變量較大時,貝葉斯網絡結構空間劇增使得搜索用時較長,導致了準確找到貝葉斯網絡分類器的最優網絡結構非常困難。
2.2.2 基于信息論的貝葉斯網絡結構學習算法
基于信息論學習貝葉斯網絡的算法主要根據變量之間的依賴性建立貝葉斯網絡結構,其原理主要是最小描述長度原理,綜合考慮了似然函數和計算復雜度的兩方面因素。如果對應變量的網絡節點為Xi和Xj,則Xi和Xj的相互信息可以表示為

依據變量關系差異,貝葉斯網絡學習可分為有約束貝葉斯網絡學習和無約束貝葉斯網絡學習[8~9],有約束貝葉斯網絡要求變量對應的節點是相互獨立的,條件約束較弱的情況下可以允許少量的節點是不獨立的;而無約束貝葉斯網絡允許變量節點是獨立的,學習無約束貝葉斯網絡需要引入評估函數。由于本案例為非文本型分類,因此為簡化步驟選用樸素貝葉斯網絡即可。
建立樸素貝葉斯網絡分類器的步驟如下:
Step 1每個數據樣本用一個n 維特征向量X=( X1,X2,…,Xn )表示,分別描述對n 個屬性A1,A2,…,An 樣本的n個度量。
Step 2假定有m 個類C1,C2,…,Cm。給定一個未知的數據樣本X(即沒有類標號),分類法將預測X 屬于具有最高后驗概率(條件X 下)的類。樸素貝葉斯分類將未知的樣木分配給類Ci,當且僅當:

這樣,最大化P(C i|X ),P(C i|X )最大的類Ci稱為最大后驗假定,根據貝葉斯定理可得:

Step 3由于分母p(X)具有連續性且與拓撲結構無關,只需要P( X|Ci )P( Ci )最大即可。如果類的先驗概率未知,則通常假設這些類是等概率的,即 P(C1)=P(C2)=…=P(Cm),并 據 此 對P( X|Ci )P( Ci )最大化。類的先驗概率可以用P(C)=si/s計算,其中si是類Ci中的訓練樣本數,s表示為訓練樣本總數。
Step 4對于指標較多的數據集,P( )Ci|X 的計算量會非常大。為降低計算量可以做類條件獨立的樸素假定。對于給定樣本的類標號,假定屬性值相互條件獨立,這樣有

其中概率P( Xk|Ci ),1 ≤k ≤n 可以由訓練樣本估計。
Step 5最后對未知樣本X 分類。對每個類C,計算P( X|Ci )P( Ci )。當且僅當

時樣本X 被指派到類C;即x 被指派到使P( X|Ci )P( Ci )最大的類Ci。
依據上述步驟,對失眠病癥運用樸素貝葉斯網絡算法建立預測模型。首先隨機選取600 名男性患者與1200 名女性患者作為網絡訓練對象,當網絡訓練完畢后在分別選取若干男性患者與女性患者作模擬預測對象,計算預測正確率,評判網絡的優劣性。
由于原病癥級別分為0、1、2、3 四個級別而不滿足樸素貝葉斯模型的二判別性,因此需要病癥級別先進行預處理,假定級別0、1 為第Ⅰ類病癥、級別2、3 為第Ⅱ類病癥做處理,判別時先將樣本歸為第Ⅰ類或者第Ⅱ類,再在子類里運用樸素貝葉斯模型進行進一步判別即可達到的目的。
對于第Ⅰ類或者第Ⅱ類的劃分步驟,可以采用貝葉斯網絡,但目標值的選定會對子網絡造成一定的干擾,因此對于大類的判別選用無具體目標值的貝葉斯判別分析進行分類操作。
以男性患者為例,對級別0、1 為第Ⅰ類病癥、級別2、3 為第Ⅱ類病癥做處理,設定通過概率為0.5,對完成分類的訓練樣本使用貝葉斯判別,結果顯示誤判率為3.345%,得到兩大類的線性判別式如下:


表2 測試數據結果
將部分測試樣本結果進行可視化,圖1 看出圓圈表示樣本的真實值,星號點表示貝葉斯網絡的預測值,若圓圈與星號點重合則表明該樣本判斷是正確的,進而可以計算判斷的正確率。其中級別0 的預測正確率為76.2%、級別1 的預測正確率為91.5%、級別2 的預測正確率為81.3%、級別3 的預測正確率為88.2%,宏觀來看整體誤判率低于15%,說明的網絡優越性高,而在對于級別0的判斷上有待改進。

圖1 測試結果分布圖
2.3.1 離散型Hopfield人工神經網絡的確定
Hopfield 網絡是二值神經網絡,神經元的輸出只取1 和-1,所以,也稱離散Hopfield 神經網絡(Discrete Hopfield Neural Network,DHNN)。
DHNN[7]結構是一種單層,輸出為二值的反饋網絡。由三個神經元組成的離散Hopfield 神經網絡結構如圖2所示。

圖2 Hopfield神經網絡結構
上圖中,第0 層僅僅代表網絡的輸入,不是實際神經元,所以沒有計算功能;第1 層是神經元,故而執行對輸入信息與權系數的乘積求累加和,并經非線性函數f 處理后產生輸出信息。f 是一個簡單的閾值函數,如果神經元的輸出信息大于閾值θ ,那么神經元輸出取1;反之,神經元輸出取-1。
對于二值神經元,它的計算公式如下:

其中,上式中有:

一個DHNN 的網絡狀態是輸出神經元信息的集合,對于個輸出層是n 個神經元的網絡,其t時刻的狀態為一個n維向量:

因為y(t)(i=1,2,3,…,n)可以取值為1 或1,故n 維向量y(t)有2n種狀態,即網絡有2n種狀態。考慮DHNN 的一般節點狀態,用yi(t)表示第j個神經元,即節點j 在t 時刻的狀態,則節點的下一個時刻(t+1)的狀態可以如下求得:

如果wij在i=j 時等于0,說明一個神經元的輸出并不會反饋到其輸入,DHNN 稱為無自反饋的網絡。如果wij在i=j 時不等于0,說明一個神經元的輸出會反饋到其輸入端,這時,DHNN 稱為有自反饋的網絡[11~13]。
在上述已經處理完善的數據基礎上,選取已知的6350 組數據進行樣本采集訓練,因為目標分類是離散型的睡眠質量(Sleep quality)四個等級指標,傳統的連續型神經網絡已經不再適用,所以這里選取離散型Hofield 神經網絡[6~7]。在離散Hop?field 網絡中,所采用的神經元是二值神經元,因此,所輸出的離散值1和一1分別表示神經元處于激活和抑制狀態。下面以串行(異步)工作方式為例說明Hopfield網絡的運行步驟:
Step 1:對網絡進行初始化。
Step 2:從網絡中隨機選取一個神經元i。
Step 3:計算該神經元i的輸人ui(t)。
Step 4:計算該神經元i 的輸出vi(t+1),此時網絡中其他神經元的輸出保持不變。
Step 5:判斷網絡是否達到穩定狀態若達到穩定狀態或滿足給定條件則結束;否則轉到步驟2 繼續運行。
這里網絡的穩定狀態定義為:若網絡從某時刻t 以后,狀態不再發生變化,則稱網絡處于穩定狀態。即:

從DHNN 的結構可以看出:它是一種多輸入、含有閾值的二值非線性動態系統。在動態系統中,平衡穩定狀態可以理解為系統某種形式的能量函數在系統運動過程中其能量值不斷減小,最后處于最小值[14~15]。當Hopfield 網絡的權系數矩陣W 是一個對稱矩陣,并且對角線元素為0,則這個網絡是穩定的。即在權系數矩陣W中,如果:

則Hopfield 網絡是穩定的。應該指出,這只是Hop?field網絡穩定的充分條件,而不是必要條件。在實際中有很多穩定的Hopfield 網絡,但是它們并不滿足權系數矩陣w是對稱矩陣這一條件。
2.3.2 智能病癥診斷Hopfield 神經網絡建立與結果分析
在上述設計思路的基礎上面,以睡眠質量等級劃分為案例,建立流程圖圖3來展示詳細步驟。

圖3 網絡建立流程圖
基于上述離散型神經網路模型的建立,這里將6350 組患者睡眠質量(Sleep quality)的4 個等級與6 個評價指標作為樣本數據(詳見附錄)。將各個等級的樣本對應的各評價指標的平均值作為各個等級的理想評價指標,即Hopfield 神經網絡的的平衡點,經過相關計算得到4 個等級的6 個理想評價指標如表3。

表3 六項理想評價指標
為了將數據可視化,將評價指標映射為神經元狀態時需要將其編碼化,這里規定當大于或等于理想評價指標的數值是設神經元的狀態為1,反之,神經元的狀態取-1。下圖中●表示神經元的狀態為1,即大于或等于理想指標,反之則用〇表示。則睡眠質量等級為0,1,2,3 的四種理想指標的編碼情況依次如下:

圖4 四種理想指標編碼圖
在用6350 個數據建立完模型的基礎上,選取部分已知數據進行上述編碼規則的編碼,在這里為了給大家展示詳細的過程各個睡眠質量級別只選取一個例子按照上述理想指標進行編碼,分別對應的編碼情況如圖5。
待網絡創建完畢之后,將待分類的4 名患者睡眠質量等級評價指標的編碼作為Hopfield 神經網絡的輸入,經過一定次數的學習就可以得到仿真結果,其結果如圖6。

圖5 四個級別代表編碼圖

圖6 四個級別代表診斷編碼圖
將上述仿真結果與實際情況相比,可以看出分類大體相同,但是因為選取評價睡眠質量等級的指標只有六個,所以當過半指標數據出現誤差的時候,網絡判斷就會出現誤差,就像上述所選擇的睡眠質量等級為3的患者一樣。
而對于等級為0的患者,其正判率只有75.8%,等級為1 的患者為77.9%,等級為3 的患者為79.7%,由此看來Hopfield 神經網絡對病情診斷的判斷有待改善。
相比于樸素貝葉斯網絡算法,離散Hopfield 人工神經網絡的誤判率較高的原因在于兩點:一是神經網絡的反饋機制取決于權值與閾值的選取調整,對神經元函數進行激活,若自變量變化不當則對權值與閾值的選取造成較大影響,從而影響網絡擬合過程中的參數調整速度與收斂程度;二是神經網絡結構上過于標準化,對變量變化的靈敏度過強,一旦變量選取為整型變量則導致權值變化的步伐過大,導致擬合結果準確性降低。因此,若考慮將貝葉斯網絡與離散Hopfield 神經網絡進行結合,將貝葉斯概率式作為輸入輸出變量,并同時利用貝葉斯網絡來對權值與閾值選取做調整,則可以有效降低單一使用離散Hopfield 人工神經網絡的誤判率,并對級別0的判別有顯著性提高。
為了降低離散Hopfield 神經網絡的復雜性,同時考慮自變量的波動造成神經網絡結構極易出現過學習現象的問題,嘗試對離散型Hopfield 神經網絡算法做如下改進。
與貝葉斯網絡學習結構相類似,離散型Hop?feild神經網絡算法采用了二值化思想,使神經網絡神經元的狀態只有1和-1兩種情況,用來解決離散型分類預測問題。而在本案例的目標值為離散整型數據但自變量為連續型變量的限制下,標準Hopfeild神經網絡算法對連續型數據處理方式容易使網絡出現過度學習現象問題。為此,結合“探索與開發”的權衡思想,通過引入貝葉斯網絡理論,執行貝葉斯網絡的持續學習過程來確定離散型Hop?feild的輸入參數與反饋參數。
3.1.1 貝葉斯網絡算法的引入
神經網絡建模的實質是找出樣本數據中的輸入和輸出之間的映射關系,從而對于未經訓練的輸入經過對比匹配也能給出合適的輸出,即具備推廣能力。推廣能力是衡量神經網絡性能好壞的重要指標。在訓練樣本容量大小一定的情況下,網絡的推廣能力與網絡的規模有直接關系。若神經網絡的規模遠小于其訓練樣本集的大小,那么發生過擬合的概率就會很小。貝葉斯網絡算法的正規化方法是通過修正神經網絡的訓練性能函數來提高其推廣能力[10]。其改進在網絡學習廣度與深度上均有體現。
1)在網絡學習廣度上的改進
在神經網絡的相關理論中[12],網絡學習的廣度取決于學習的正規化方法,在該方法下網絡性能函數改進為

其中Eω表示網絡權重的平方和,ED為網絡響應與目標值的殘差平方和,α、β控制著其它參數(權及閾值)的分布形式,稱作超參數。神經網絡的訓練目標往往由超參數的大小決定,若α<<β,則訓練算法目的在于盡量減小樣本數據的訓練誤差;若α>>β,則訓練算法目的在于使網絡產生更平滑的響應。通過調整超參數的大小可以有效極小化目標函數,可以使網絡獲得較小的權值與閾值,在減少網絡訓練誤差的同時,又縮小了網絡的成本規模,降低網絡結構的復雜性,減小“過度訓練”的概率。
常規的正則化方法很難確定其參數的大小。而采用貝葉斯理論可以在網絡訓練過程中自適應地調節正則化參數的大小,并使其達到最優[12]。將超參數α、β視為隨機變量,則α、β的后驗分布根據貝葉斯定理則有:

若使α、β的后驗分布最大,只需使似然函數P( D|ω,β,M )最大。依據該計算規則將似然函數P( D|ω,β,M )作為擬合的誤差函數,通過調整超參數的大小則極大程度降低了神經元函數的錯誤激活概率,同時縮小了網絡權值與閾值的調整步伐與調整次數,理論上可以有效提高網絡訓練廣度使得網絡精度得以提升。
2)在網絡學習深度上的改進
除了將貝葉斯網絡理論應用于神經網絡的網絡權值與閾值調整外,還可以針對本案例所在存在的整型離散變量問題進行貝葉斯理論的改進。
Hopfield 網絡是二值神經網絡,神經元的輸出只取1 和-1,如果神經元的輸出信息大于閾值θ ,那么神經元輸出取1;反之,神經元輸出取-1;該網絡結構對于變量的處理方式為均值化處理,這樣的處理方式對異常值的處理不夠到位,導致網絡學習的反饋過程出現偏差。若將各指標變量數據用貝葉斯網絡算法轉化為概率式,則在反饋過程中依據概率值的大小異常值的影響隨著學習深度而逐漸降低,同時避免整型變量帶來的調整步伐過大影響,達到避免“過度學習”效果的深度學習方式。
3.1.2 改進離散型Hopfeild神經網絡算法的實現
基于上述分析,將若將各指標變量數據用貝葉斯網絡算法轉化為概率式,基于貝葉斯網絡優化下的離散型Hopfeild神經網絡算法的流程如下:
Step 1:變量初始化,進行貝葉斯概率模型轉換為概率表達式。
Step 2:假定有m 個類C1,C2,…,Cm 使用分類法將預測X 屬于具有最高后驗概率(條件X 下)的 類。當 且 僅當P(C i|X )>P(C j|X ),1 ≤j ≤m,j ≠i將未知的樣木分配給類Ci。
Step 3:對P( X|Ci )P( Ci )最大化。類的先驗概率可以用P(C)=si/s 計算,其中si是類Ci中的訓練樣本數,s表示為訓練樣本總數。
Step 4:將x 被指派到使P( X|Ci )P( Ci )最大的類Ci。并將指派率作為新的變量對網絡進行初始化。
Step 5:從網絡中隨機選取一一個神經元i。計算該神經元i的輸人ui(t)與輸出vi(t+1),此時網絡中其他神經元的輸出保持不變。
Step 6:超參數的確定。使用貝葉斯神經網絡算法對α、β超參數進行參數估計,使網絡中的神經元i產生更為平滑的響應。
Step 7:調整權值與閾值,使得每一次反饋調整后使似然函數P(D|ω,β,M)、 變大。
Step 8:判斷網絡是否達到穩定狀態若達到穩定狀態或滿足給定條件則結束;否則轉到步驟2 繼續運行。
結合上述優化后的算法,重新對6350 組數據進行診判,各個等級睡眠質量的預判結果與改進之前的兩種有監督算法下的誤判率如下。

表4 不同算法下的測試結果比較
通過表4 以及圖7 的可視化分析的比可以看出,利用貝葉斯正則化神經網絡對測量數據進行誤差修正后,相比修正前的精度有明顯的提高,效果比較理想,所建立的改進Hopfeild 神經網絡模型具有很好的泛化能力。

圖7 不同機器學習方法下的誤判率比對
在上述工作里依次使用了樸素貝葉斯網絡算法與離散Hopfield 人工神經網絡分類算法以及基于貝葉斯算法下改進的Hopfield 神經網絡算法來對醫療分級診斷的問題展開研究,得到如下結論:
1)對于貝葉斯網絡算法,在大部分離散分類或者判別問題中都較多應用,在部分場合甚至優于深度學習。本案例依據貝葉斯理論,先將樣本進行二分類處理,將0、1級歸為第一類,2、3歸為第二類處理,隨后在子類中分別應用樸素貝葉斯網絡進行分級判別,最后得到整體誤判率低于15%,信度較高。
2)對于神經網絡算法的選用,考慮到本案例的目標值為離散整型數據,因此選用離散Hopfield 人工神經網絡分類算法來進行案例研究。由于該神經網絡神經元的狀態只有1和-1兩種情況,所以將評價指標映射為神經元狀態時需要將其編碼化。為了將數據可視化,這里規定當大于或等于理想評價指標的數值是設神經元的狀態為1,反之,神經元的狀態取-1,誤判率有待提高。
為避免因網絡規模限制網絡推廣,降低模型對數據關聯的敏感度,有效降低診斷機制的誤判率,提出了基于貝葉斯網絡優化下的離散型Hopfeild神經網絡算法,通過調整貝葉斯的超參數的大小可以有效極小化目標函數,可以使網絡獲得較小的權值與閾值,在減少網絡訓練誤差的同時,又縮小了網絡的成本規模,降低網絡結構的復雜性,減小“過度訓練”的概率。并且通過比較優化前后誤判率數據得到:該優化后的算法可以有效降低誤判率。
本文以失眠病癥為代表性案例模擬醫療專家診斷系統進行醫療自主診斷,通過分析有監督式學習的貝葉斯網絡、離散Hopfeild 人工神經網絡兩種算法下的數據診判,鑒于誤判率仍待降低,提出了基于貝葉斯網絡優化下的離散型Hopfeild 神經網絡算法,通過調整貝葉斯的超參數的大小可以有效極小化目標函數,使網絡獲得較小的權值與閾值,在減少網絡訓練誤差的同時,又縮小了網絡的成本規模,降低網絡結構的復雜性,減小“過度訓練”的概率。避免因網絡規模限制網絡推廣,降低模型對數據關聯的敏感度。仿真結果表明:基于貝葉斯網絡優化下的離散型Hopfeild 神經網絡算法可以有效降低診斷的誤判率,在醫療專家診斷系統中,可達到高效準確的診斷方案與決策,有效推動醫療行業的智能化發展。