吳燎 陳思玨

摘 要:目的:本文通過matlab構建BP 神經網絡模型,用于實現人工神經網絡診斷中醫胃病的病型,方法:將真實的中醫胃病臨床數據通過數據清洗、數據編碼、BP神經網絡模型配置、模型訓練,構建出BP網絡模型。結果:通過整理數據,反復地訓練學習,最終使每種病型的平均預測率達到90%以上,結論:利用BP人工神經網絡成功實現了中醫胃病病型的輔助診斷。
關鍵詞:預測診斷;神經網絡;中醫;胃病
目前人工智能火熱發展,在醫學上不少的研究已經涉及了人工智能,而中醫具有整體性,模糊性,抽象性的特點,與神經網絡的容錯性、自助學習性的特點十分切合。張秋云等研究用遺傳算法的BP神經網絡確定不同患者的不同的穴位。[1]徐亮等用BP神經網絡搭建了中醫辨證模型,預測氣虛型與非氣虛型的準確率,[2]其診斷類型較少,只有氣虛型和非氣虛型兩種輸出結果,其次,其準確率較低,只有80%的準確率。本文以真實的中醫胃病臨床數據為基礎,利用Matalb軟件,應用BP神經網絡技術搭建了訓練模型,增加了診斷的類型,診斷類型包括肝胃不和、胃陽虛、胃陰虛等36個診斷結果。本次的準確率也有所提高,平均診斷率達到90%以上,能夠模擬中醫師的辨證,從而輔助胃病病型的診斷。
1 臨床數據來源
采用的數據來自四川省各個縣市醫院的真實中醫臨床數據,總共2252條數據,每條數據至少包含一個胃病相關癥狀和病型診斷。
2 數據清洗加工
數據的收集會產生各種錯誤和不規范,數據庫中有噪聲(noise),不完整(missing),不一致(inconsistent)的數據。[3]保證數據的規范正確,為此,首先要進行數據的清洗。對于數據的清洗一般包括:填補遺漏的數據值、平滑噪聲數據等。[4]對于疾病的描述不準確、遺漏的數據,采取舍去的方法,從而保證數據的完整性。對于癥狀描述的不統一,疾病的診斷不統一,可按照國家中醫藥管理局發布的術語進行規范化降噪,從而保證數據的統一性。在數據清洗之后,將數據整理分類,可分為胃部感覺,口咽感覺、面色等16個癥狀分類。每個分類下根據具體的癥狀從0開始,以1為單位依次編碼。最終得到16個癥狀分類共175個癥狀編號,得到1個癥型分類共38個病型編號。
3 模型設計
(1)BP神經網絡原理:神經網絡與人腦的神經系統類似,由許多的神經元節點構成。神經元可分為三層:輸入層、隱含層、輸出層。不同的神經元具有不同的權值,權值代表著對下一層神經節點的影響程度,權值越大則對節點影響越大,反之越小。權值會隨著神經網絡模型的訓練而做出調整。BP神經網絡是解決權值調整的網絡模型,利用BP算法而調整節點的權值。該算法訓練中有正向傳播和反向傳播兩個過程。在正向過程中傳遞一組輸入值和輸出值,輸入值經過輸入層,再到隱含層,最后到輸出層輸出結果。反向過程中,將輸出結果與輸出值比較,反向傳遞,根據比較的誤差修改節點的權值,直到誤差在允許的范圍內為止。經過多次的訓練,最后的節點權值穩定下來。此時模型的權值結構即代表了符合訓練數據的神經網絡模型。最后通過輸入數據,從模型導出輸出結果,形成非線性對應關系。
(2)網絡層數。BP神經網絡[5]可以包含一個或者多個隱含層,理論上已經證明,單個隱含層可以通過適當增加神經元節點的個數實現任意非線性映射。對于大多數應用場合,單個隱含層即可滿足需要。但如果樣本過多,增加一個隱含層可以明顯減少網絡規模。因為樣本數據輸入層有16個輸入節點,所構成的網絡較復雜,因此采用2個隱藏層,從而減少網絡規模。
(3)輸入層節點數。輸入層節點數與輸入的變量個數相同。此研究有16個癥狀分類作為輸入,每個癥狀分類輸入編號變量,因此有16個輸入節點。
(4)隱含層節點數。隱含層節點數對BP神經網絡的性能影響很大。較多的隱含層節點數可以帶來更好的性能,但可能導致訓練的時間過長,造成過度擬合。可以參考公式,[6]M=m+n+a,m和n分別為輸入層和輸出層的神經元個數,a為[0,10]之間的常數,再結合實驗調整節點個數,確定最佳的訓練效果。經過多次實驗,最終確定了隱含層分別為6、4的訓練時間最短,網絡模型收斂最快,最后的準確率也較高。
(5)輸出層神經元個數。輸出層神經元個數與輸出變量相同。本次輸出變量只有病型一個,輸出值為對應的病型編號。病型編號共有38個,因此共有38種輸出的可能。
4 結果
整理后的數據共2252條,將1700條輸入用于網絡訓練,552條數據用于測試,3次實驗總的準確率分別是93.66%,91.30%,90.76%,平均準確率達到了90%以上。
5 討論
本次研究以BP神經網絡結合中醫胃病病型的診斷,采用真實的臨床數據搭建BP神經網絡診斷模型。通過編碼提高了診斷病型的數量,其病型的診斷多達38種。同時通過BP算法提高了病型的診斷準確率,使得病型預測的平均準確率達到90%以上。但此次研究仍然有許多問題,BP神經網絡作為廣泛使用的神經網絡之一,其本身存在許多缺陷,例如局部極小化,算法收斂速度慢,網絡結構不確定等問題。對于上述的問題,還有待進一步的研究和優化。
參考文獻:
[1]張秋云,張營,李臣.遺傳算法優化BP神經網絡在中醫按摩機器人中的應用[J].應用科技,2017(2).
[2]徐亮,陳守強,侯建輝,等.基于BP神經網絡的中醫辨證模型構建方法探討[J].世界中醫藥,2016,11(2):335-338.
[3]孟祥逢,魯漢榕,郭玲.基于遺傳神經網絡的相似重復記錄檢測方法[J].計算機工程與設計,2010,31(7):1550-1553.
[4]覃華,蘇一丹,李陶深.基于遺傳神經網絡的數據清洗方法[J].計算機工程與應用,2004,40(3):45-46.
[5]陳朝陽,行小帥,李玥.共軛梯度BP算法在Matlab7.0中的實現[J].現代電子技術,2009,32(18):125-127.
[6]沈花玉,王兆霞,高成耀,等.BP神經網絡隱含層單元數的確定[J].天津理工大學學報,2008,24(5):13-15.