韋 哲 楊紫娟 陳若珠
骨質疏松已經成為威脅我國中老年人健康的主要疾病之一,患者數量逐年迅速增加,但骨質疏松診斷方面的專家數量卻遠不能滿足醫療發展的需要,同時骨質疏松防治知識尚未得到普及,因此開發骨質疏松診斷系統將有助于解決該問題。
由于某些原因,有些病人的病歷數據存在不完整性,假如按傳統的方法進行處理是很難實現,但采用神經網絡使系統具有較強的容錯性,對最終結果的準確性影響不大。
基于神經網絡的醫療診斷系統通過病歷學習獲取診斷知識并按自然聯想推理產生診斷結果,這是一般的醫療診斷系統沒有做到的。本文是基于LabVIEW8.6平臺實現與專家數據庫的調用,以及與MATLAB7.0的數據交換,并在MATLAB7.0中實現BP網絡的設計,最終以不斷完善診斷系統的專家數據庫為目的,實現更準確到位,更有效的治療病患。
通過LabSQL直接錄入專家診斷過的病例數據,一方面通過系統的ODBC數據源管理存入ACCESS專家數據庫,以便以后查詢;另一方面,再將專家數據輸入到神經網絡中,訓練網絡結構,逼近真實的專家推理。然后用要診斷的病例樣本經過訓練好的BP網絡,得出骨質疏松診斷結果,將診斷誤差小的結果經過LabSQL存入ACCESS專家數據庫中,從而使系統專家數據庫達到完善和更新的功能。其原理步驟如圖1所示。

通過LabVIEW開發的免費數據庫訪問工具包LabSQL來實現數據庫的訪問。LabSQL是一個免費、多數據庫、跨平臺的LabVIEW數據庫訪問工具包,支持 Windows操作系統的任何基于ODBC(數據源管理)的數據庫,通過Microsoft ADO(Microsoft Active Data Object)控件及LabSQL語言實現數據庫的訪問,將復雜的底層ADO和LabSQL語言操作封裝成一系列LabSQL VIs模塊,以便于軟件模塊化的設計[1]。LabSQL優點是容易理解、操作簡單,對不熟悉SQL語言的用戶也能很方便的使用,只需進行簡單的編程,就能在LaVIEW中實現數據庫訪問[2]。利用LabSQL在數據庫操作中可實現應用程序和數據庫之間的數據交互傳遞。一般的簡單操作步驟如圖2所示。
基于LabVIEW8.6環境下的編程運行后,數據可保存在ACCESS數據庫中。

LabSQL和數據庫之間是通過ODBC相連接,需要在ODBC中指定數據源名稱與驅動程序。因而在使用LabSQL之前,第一需要在Windows操作系統的ODBC數據源中創建一個DSN(data source name,數據源名)。LabSQL和數據庫之間的連接是建立在DSN基礎之上。其連接流程如圖3所示。
利用MATLAB的神經網絡工具設計學習機,再把MATLAB和LABVIEW結合起來,不僅可以提高診斷系統推理的可靠度,還可以提高開發效率,增強可維護性[3]。LabVIEW與MATLAB的混合編程,通常用LabVIEW設計用戶圖形界面,負責數據采集;MATLAB在后臺提供大型算法供LabVIEW調用。如圖4所示。

Hecht Nielson證明,一個3層的B網絡可以完成任意N維到M維的映射,當各個節點均采用S型函數f(x)=1/(1+e-x)時,一個隱含層就足以實現任意判決分類問題[4]。所以,此BP子網采用單隱層的激勵函數為S型函數的神經網絡結構。
世界衛生組織(WHO)建議骨質疏松的診斷標準為骨密度值小于-2.5個標準差(SD)[5]。骨質疏松程度診斷的3個必要步驟是:(1)臨床癥狀問診;(2)胸腰椎骨密度分析;(3)股骨頸骨密度分析[6]。所以本診斷系統選用性別、身高、體重、臨床癥狀問診、胸腰椎骨密度及股骨頸骨密度作為性能指標。
問診的目的在于考察與骨質疏松直接相關的不良生活習慣,根據其重要性評估骨質疏松發生的可能性,患者所需回答的問題包括如下具體內容:
(1)是否經常腰背痛;
(2)是否身高明顯降低;
(3)是否長期嗜酒;
(4)是否吸煙史長且吸煙量大;
(5)是否經常消化不良;
(6)自身是否曾發生非創傷性骨折史。
患者需對如上問題作答,回答結果為“是”則記為“1”,回答結果為“否”則記為“0”,若(1)或(2)兩項中有一項回答結果為“是”,則問診結果直接判定為骨量減少,無需借鑒其他問題的回答結果,并且將1作為系統的輸入,如果該患者對上述問題回答的結果所得總分大于3,則記為該患者患有骨質疏松病的一個可能性分析指標,對于該診斷系統,用1作為系統的輸入,否則用0作為系統的輸入。表1為部分骨質疏松病情診斷指標體系的樣本特征信息。

表1 部分骨質疏松病情診斷指標體系的樣本特征信息
由表1可見,輸入患者數據有8個,輸出為1個,據此分析診斷知識結構可得:本系統BP神經網絡診斷結構模型應為3層BP神經網絡,有8個輸入神經元和1個輸出神經元。根據式Hn=2n1+1,并考慮到使網絡收斂速度快同時對測試樣本的識別效果較好,可將隱含層神經元數目設計為17個,患者病情程度子網輸出有1個節點。輸出結果表示:0~0.33的值內為正常,0.33~0.66的值內為骨量減少,0.66~1的值內為骨質疏松,大于1為嚴重骨質疏松。
仿真基于MATLAB7.0神經網絡工具箱的環境下實現,在每一層的傳遞函數分別是:純線性傳遞函數 pureline、正切sigmoid傳遞函數tansig及對數sigmoid傳遞函數logsig,學習函數用自適應學習速率動量梯度下降函數traingdx,性能函數則采用均方誤差函數mse[7]。從經過數據歸一化處理的150個代表病例樣本當中選擇90個作為正常的訓練樣本,構成樣本庫其余的31個作為測試樣本,另29個作為變量樣本(主要目的是防止訓練中出現過擬合狀態),經過BP神經網絡的1000次迭代學習。從而網絡性能目標設為0.001,和學習速率設為0.01,及動量常數為0.9,再以此對全體樣本進行訓練。經過訓練樣本訓練好BP網絡后,測試樣本結果如圖5所示。從圖上可知病人病情的真實值和診斷值的誤差大多數不大,有少量誤差可能是由于選取的學習樣本的數量少或是網絡層數和隱含層神經元數的選取的影響??偟脕碚f此BP網絡的構建和訓練是成功的。

神經網絡通過樣本的學習來獲取知識,網絡穩定后,把領域專家求解問題的知識和經驗分布在網絡的互連結構及權值參數上,最終得到一組參數和兩個鄰接矩陣,構成神經網絡庫。樣本庫和神經網絡庫組成了系統的知識庫。
本文基于LabVIEW8.6的平臺,實現專家數據庫的調用,以及與MATLAB7.0的數據交換,并在MATLAB7.0中實現BP網絡的設計。所采用的BP神經網絡方法是一種非線性映射方法,它只須將處理過的數據輸入到網絡中,通過MATLAB7.0的神經網絡工具箱計算即可得到診斷結果,不用人為地確定權重,從而可以減少診斷過程中的人為因素,提高診斷的可靠性,使診斷結果更有效、更客觀。但是它同時也存在著一些缺點,如所選取的學習樣本的數量在很大程度上影響著神經網絡模型的學習性能,還有網絡層數和隱含層神經元數的選取也將影響整個網絡的學習能力和學習效率等等。LabVIEW與MATLAB的混合編程,是可以節約開發成本,但它會使整個系統運行速度慢,所以本系統還有待改進。隨著BP網絡模型在骨質疏松診斷分類這一領域的深入研究與應用,相信基于LabVIEW與MATLAB神經網絡工具箱的BP網絡模型將成為骨質疏松診斷系統建立的有效途徑。
[1]秘曉元,張彥斌.LABVIEW中利用 LABSQL對數據庫訪問技術的探討[J].自動化與儀器儀表,2004(6):54-56.
[2]關旭,張春梅,王尚錦.虛擬儀器軟件LABVIEW和數據采集[J].微機發展,2004(3):77-79.
[3]裴峰,汪翠英.利用COM技術的LABVIEW與 MATLAB的無縫集成[J].儀器儀表用戶,2005,12(2):97-99.
[4]Hunt,H.Jetal.Neural networks control system,Automatics,1992(6):1083-1112.Oganov VS,Rakhmanov AS,et a1.The state of human bone tissue during space flight[J].Acta Astronaut,1991,23:129-133.
[5]林守清.骨質疏松病因分析[J].當代醫學,2000,6(11):46-50.
[6]Chen Tianping,Chen Hong.Approximations of continuous functions by neural networks with application to dynamic system.IEEE Transition Neural Networks,1993,4(6)910-918.