饒林尚 吳 怡 馮前進
(南方醫科大學生物醫學工程學院 廣東 廣州 510515)(廣東省醫學圖像處理重點實驗室 廣東 廣州 510515)
近年來隨著中國經濟高速發展及社會老齡化加劇,人們對醫療資源的需求不斷增長。醫院巨資引進大量先進醫療設備,但是同時,醫院用于對設備售后管理的費用也以更高的速度增長[1]。主要原因有:(1) 大型醫療設備例如CT、MRI設備,屬于集成度較高的精密電子設備,隨著設備的復雜化、模塊化,及廠家提供的資料有限,設備工程師越難以找出故障和短時間內給出合適的解決方案。因此,相對于醫療儀器技術的發展,醫院對設備的自主保養維修能力反而下降。設備不能及時維修影響到醫院的運營和甚至引發不良的醫患糾紛。(2) 醫療設備銷售市場競爭激烈,設備的售后市場的利潤也逐漸引起了設備廠商的注意,導致醫院對設備的保養和維修成本隨之增加[2]。
近年來,深度學習被應用于各行各業,在問答系統方面也有很廣泛的研究和應用。自2011年,IBM的深度問答系統(Deep QA System)在美國電視競答節目Jeopardy中,以絕對優勢擊敗該節目的兩位前冠軍以來,越來越多的企業開始重視研究Deep QA System,紛紛把自身的業務與自然語言處理、深度學習結合起來[3]。2014年,微軟推出“微軟小冰”,實現開放領域人工智能對話。它衍生的產品形態涉及對話式人工智能機器人、智能語音助手和一系列垂直領域解決方案。2016年3月,京東推出京東JIMI客服機器人,能夠代替人工客服完成一般的咨詢服務,涵蓋售前咨詢、售后服務等電子商務環節。2016年,百度推出百度醫療大腦,結合深度學習和大數據實現在線的健康問題咨詢。隨著互聯網技術的發展和網絡信息量的大爆炸,人們快速獲取資料并準確定位信息的愿望促進了自動問答系統的發展[4]。但是目前還沒有發現有關針對醫療設備信息檢索方面的數據分析和應用系統的研究。
本文提出一個面向醫療設備和基于深度學習的問答系統的設計方案,第一,實現了醫療設備信息的資源共享,第二,可以給工程師提供專業的輔助信息。對醫院來說,設備投入增加,其設備售后產生的花銷倍受重視。同時,醫療設備能夠及時、合理地維修與保養,可以延長設備的使用壽命,增加醫院的經濟效益,降低醫院的運行成本。目前,大部分醫院通過以下方式加強設備管理和節省設備的開銷:(1) 協商設備購買合同,在購買設備前盡可能保證自身利益;(2) 加強設備工程師隊伍建設;(3) 構建醫療設備信息資源共享平臺等[5]。但現實是醫療設備行業內信息的交流和工程師可以咨詢的途徑非常少。而本文提出的問答系統借助當前信息化和深度學習技術的優勢,既實現設備信息共享,也給工程師開辟了一條專業化咨詢的途徑。文獻[6]介紹了六種基于深度學習的問答系統算法框架。本文在此基礎上設計模型,通過實驗證明深度學習可以有效應用在醫療設備文本數據上。
面向醫療設備的深度問答系統的出現可以幫助醫院的工程師從醫療設備大數據分析中得到相似的參考方法或者解決方案。通過線上獲取設備維修保養經驗交流的方式,及時對設備進行合理的保養或維修,避免醫院因為設備故障導致的經濟和聲譽上的損失,增加了設備的可使用價值和效益。另一方面,設備工程師也有一個學習和咨詢的平臺,從中學習技術和經驗,提高醫院工程師隊伍的實力,一定程度避免通過設備廠商提供的高額售后服務,節省醫院開支。
對醫療設備實行現代信息化管理,保證了醫療設備的使用年限和提高醫院工作效率,增加了醫院的經濟效益[7]。醫院引入數字化、信息化的設備管理系統是大趨勢,并在該背景下產生了大量的有關設備的數據,如設備檢測時產生的大量的記錄。可利用大數據手段充分挖掘這些數據背后的潛在價值,可以給醫院帶來更大的效益[8]。隨著人工智能的發展,借助自然語言處理和深度學習的手段更深層次分析和處理這些數據,可實現更準確的智能信息檢索。
深度問答系統本質上是一個信息檢索(IR)系統,只是它從文本數據中獲取更多深層的語義信息,返回更加精準化的答案。這樣的問答系統功能上與現在的搜索引擎,如百度、搜狐基本類似,但是在性能上優于搜索引擎。現在甚至有人認為深度問答系統會成為以后搜索引擎的新型態[9]。
以往的搜索引擎實現方式一般利用網頁中所標注的關鍵詞匹配出得分高的數據資源,它并沒有揭示出這些數據之間深層的關系,所以難以把檢索過程與用戶實際想要的答案結合起來。因此,需要反饋大量相關的信息給到用戶,由用戶自己篩選[10]。隨著深度學習的發展,加深了計算機對語言文字的理解和分析的能力。問答系統中采用深度學習對目標文本進行更細致的語義分析,從中抽取出知識,并根據用戶的問題準確匹配、推理相對應的答案,實現為用戶提供更高精度的搜索反饋[11]。深度學習理論和技術的發展日益成熟,并且被應用到各行各業中。因此,利用深度學習算法實現醫療設備的面向限定域的信息搜索具備可行性。
Spring MVC是一個分層的Java Web應用開發框架,為Web應用開發人員提供了一個快速、方便開發的分層體系結構。分層體系結構既能保證代碼的整潔性,又能保證代碼的可維護性。框架也具有高解耦性,所以系統下不同功能模塊之間耦合性低,降低了算法模型嵌入到其他已開發醫療設備管理系統的難度。該框架突出了HTTP協議中的請求/響應特性,在該框架中,用戶的每一個請求都聲明了一個需要執行的動作。主要是通過將每個請求URI映射到一個可執行的方法來實現。同時,也將請求參數映射到對應方法的參數列表中。在該框架下,用戶以對話形似在前端輸入問題,生成對應問答服務的URL(統一資源定位符),后臺根據該URL執行算法模型,再將答案反饋到前端推薦給用戶,即完成一次問答行為。基于Spring MVC框架實現問答的需求,現已經不成問題。
本文提出的深度問答系統包含算法模塊和應用模塊兩部分。算法模塊是系統的核心部分,實現基于深度學習的信息檢索策略。算法模塊的實現需要數據的支持,通過爬蟲技術,從網站“影像之家”爬取有關醫療設備的數據,例如CT、MRI和DR等設備的維修保養等記錄。應用模塊將算法模塊嵌入到基于Spring MVC框架下的Java Web應用中,前端實現與用戶的交互操作,后臺實現算法的運行和信息檢索及反饋。應用模塊Spring MVC框架由6個核心組件組成:前端控制器扮演樞紐角色完成請求的接收和分發,視圖數據的包裝和傳輸;處理器映射器匹配服務URL地址;處理器適配器通過服務URL地址調用算法模塊的Handler處理器,Handler執行程序并返回結果數據;視圖解析器及視圖負責視圖的構建和向用戶顯示計算結果[12]。各個組件在一次問答行為的業務流程如圖1所示。

圖1 Web應用框架示意圖
整個算法模型的流程包括:醫療設備相關數據獲取,文本預處理,文本分詞和量化,模型實現。具體的步驟說明如圖2所示。

圖2 文本數據處理流程
通過網絡爬蟲框架Scrapy從網站“影像之家”挖取228條有效醫療設備的記錄數據,并將爬取到的數據整理成如圖3所示的格式。

圖3 醫療設備樣本數據示例
實驗假設爬取到的每一個答案只與其配對的答案相關,認為是正答案,其他答案認為是負答案,并且問題之間不存在相關性。每一個訓練樣本由一個問題描述匹配一個正答案和一個從答案集合中隨機采樣得到的負答案組成。按照這樣的方式,訓練集中每一個問題描述隨機采樣不同的負答案匹配生成訓練樣本。
數據清洗:文本數據中任何與數據上下文和最終輸出無關的文本都可被判作噪聲。例如停止符號(/n),標點符號和URL地址,HTML符號等。因為不同人記錄的習慣不一樣,導致可利用的文本數據的絕大多數具有不規范性。同時也因為人記錄的隨意性,導致文本數據夾雜噪聲,例如錯別字,無意義字符等。為了訓練得到更好的算法模型,對數據進行預處理非常必要。
詞向量化:文本分詞基于開源的使用廣泛的中文分詞工具Jieba。對面向限定域的數據構建專有的詞典,可以提高分詞的準確率和模型的泛化能力。針對挖取到的文本數據構建專屬詞典,以提高分詞的準確性。但是構建完備的基于醫療設備的詞典需要花費大量的人力,而且并不一定保證能收錄所有詞。因此如何識別未登錄詞是分詞中的一個重要問題。Jieba采用的是Unigram+HMM(隱馬爾科夫模型)的方法實現分詞。Unigram Model原理通過求解下式,實現最優的分詞效果:
(1)
在Unigram分詞后,HMM以序列標注的方式識別未登錄詞,在一定程度上修正分詞結果。詞向量化基于Word2Vec實現,Word2Vec是Google在2013年推出的一個NLP工具,應用深度神經網絡算法,轉化為對應的詞向量。中文文字數量龐大,使用一般的bag of words模型表達文本,很容易造成維度災難,并且語義信息無法準確表示,無法揭示詞與詞之間的潛在聯系[13]。而采用Word2Vec基于神經網絡的方式得到的空間詞語的語義表達,不僅解決了維度災難的問題,而且挖掘了詞語之間的關聯屬性,從而提高了詞向量語義上的表示準確度。一般Word2Vec包含兩種訓練模式,一種是基于CBOW(Continous Bag of Words Model)框架,另外一種是Skip-gram框架[14]。本文采用CBOW模式,其原理如圖4所示。

圖4 CBOW原理示意圖
通過上下文預測中心詞w(t)的向量表達。w表示每個詞的one-hot expresentations。one-hot expresentations是對每個詞在詞典位置的向量表示,例如“設備”在詞典中的位置為1,則其對應的向量為{1,0,0,0,…},除了第一位為1,其余位置全部取0。這種表示的缺點是只考慮了詞的位置關系,忽略了詞與詞之間的語義關系。CBOW經過累加過程,將上下文每一個詞的one-hot expresentations相加求平均后,經過Sigmoid將數據映射到0-1區間,最后得到預測詞w(t)的向量表達。此時的向量表達加強了詞與詞之間的語義關系。
Deep QA框架如圖5所示。

圖5 Deep QA卷積神經網絡框架
Q表示序列化的問題描述;A表示序列化的答案A選項,B表示序列化的答案B選項。Word Embedding層表示詞向量層,經過Word Embedding層以后,Q、A、B分別轉換成詞向量矩陣。CNN層表示卷積神經網絡層,P表示池化層,T表示激活層。算法均采用Relu函數作為激活函數。Q、A、B的詞向量化矩陣經過CNN層、P層和T層以后,分別得到維度一樣的問題Q,選項A和選項B的向量化表示。求取問題Q分別和選項A和選項B的歐式距離,表示它們之間的相似性。最后,經過全連接層得到Z輸出,再由如下Sigmoid函數得到概率值最大的選項,作為模型最后的預測:
(2)
分別以0,1代表結果A和B。實驗設計的原理在于,通過不斷迭代,實現模型對關聯答案的識別能力的同時提高模型對非關聯答案的辨別能力。
對問題和答案文本序列化,是指將已分詞文本的每個詞用其在字典中的索引表示。Word Embedding層通過詞索引,得到詞向量。具體步驟如圖6所示。

圖6 文本量化過程
文本中每個詞在字典中對應一個位置索引,將文本中每個詞用索引代替實現序列化。文本經過Word2Vec向量化以后,每個詞也會對應一個詞向量,詞向量按字典順序存儲。在向量化過程中,每個詞按照字典索引獲取到對應的詞向量。最后,文本量化成矩陣。按照該方式向量化文本大大節省了存儲空間。
CNN對序列化向量的空間卷積實現原理如圖7所示。在卷積層,每個卷積核分別對文本向量化矩陣卷積,得到feature map向量。在池化層,取feature map全局最大值,將多個feature map的全局最大值連接,通過全連接層,得到文本的向量表達。

圖7 文本序列卷積原理示意圖
實驗一共生成13 300個訓練樣本,其中驗證樣本2 872個。訓練過程采用交叉熵作為調整模型的代價函數:
(3)
使用Cosine Similarity來度量問題和答案之間的相關性,其中Ai、Bi分別表示問題和選項的向量表達。
(4)
Cosine Similarity通過向量夾角的余弦值衡量兩個文本間的相似度,相比歐式距離度量,更加注重向量在方向上的差異。
通過算法框架,預測出答案A或者B。若預測結果與實際的答案選項相符,認為預測正確;若預測結果與實際答案不一致,則認為預測錯誤,反向傳播錯誤率,調整模型參數。再通過迭代訓練,正負選項的方式有利于模型預測結果更加偏向正答案,遠離負答案,以此提高模型對文本數據的認知和辨別能力。
由圖8可知,訓練集和驗證集的acc和loss曲線趨勢一致。訓練迭代350次以后,訓練集和驗證集的acc和loss曲線也達到收斂,并且acc可以達到90%以上,同時loss降低到0.05。在測試集的準確率也達到90%。實驗結果證明了模型從醫療器械文本數據中學習到了知識,具有一定的分析和辨別能力。

(a) 訓練集acc曲線

(b) 訓練集loss曲線

(d) 驗證集loss曲線圖8 模型訓練acc和loss情況
在信息搜索測試中,需要對訓練的網絡結構進行修改,具體的框架如圖9所示。實際應用中,我們只需要計算每個問題和答案的相似性,然后根據得到的相似度進行排序,將相似性程度高的信息反饋回來。通過將228條問答分別輸入系統,測試反饋的回答的準確性。模型預測相似性程度前三的回答里面,包含目標答案的準確度是65%,而預測相似性程度前五的回答包含目標答案的準確度可以達到82%。進一步證明了系統在實際的問答任務中可以反饋給用戶有效的信息。

圖9 系統算法框架
前端頁面基于Javascript開發,并采用Ajax技術連接后臺。用戶在前端頁面提交請求后,前端控制器接收,并訪問處理器映射器獲取到QA服務的對應的URL地址。前端控制器再通過該URL服務地址,命令處理器適配器調用Handler處理器執行QA服務。Handler處理器與數據庫交互,執行算法模塊服務,執行完將檢索結果返回到前端控制器。前端控制器將交由視圖處理層,包裝數據成視圖,并展示給用戶,完成一次問答行為。
根據算法模塊設計,數據存儲基于MySQL數據庫,數據庫表格式以鍵值匹配原始答案文本記錄方式存儲,鍵值設計為以0、1、2、…的遞增形式。算法模塊檢索答案時,SQL語句通過鍵值逐條訪問文本記錄。詞典及Word Embedding矩陣以文本格式存儲在本地電腦磁盤。計算機訪問數據庫獲取文本記錄后,文本記錄通過匹配詞典和Word Embedding矩陣實現向量化。
數據訪問層設計依賴Hibernate框架。Hibernate是一個輕量級JavaEE應用的持久化層解決方案,它提供了強大、高性能的對象到關系數據庫的持久化服務。它能將實體對象與數據庫表建立映射關系,無需寫SQL語句,就完成答案實體對象到對應的數據庫表的映射[15]。
最終將設備問答的功能作為一個模塊嵌入到設備管理系統中,效果示例界面如圖10所示。

圖10 問答界面簡圖
醫院設備管理的效率和成本問題將越來越得到醫院的重視。如何借助目前的深度學習技術提高醫院設備管理的效率和成本,輔助醫院設備工程師完成設備管理的任務,在未來將會是更多醫院去研究和挖掘的方向。設計基于深度學習算法框架的問答實驗,證明了深度學習算法應用于醫療設備文本數據的可行性。并且將算法模型與互聯網技術整合起來,提出一個面向限定域的輔助問答系統設計方案。目前算法模型尚存在的問題是因為醫院設備管理相關的數據不足,上述算法訓練得到的模型泛化能力有限,尚不能廣泛應用于實際工程應用當中。在未來,隨著醫院信息云平臺的發展,越來越多的醫院參與其中,利用數據分析等技術挖掘和處理平臺產生的設備管理數據,將會大大節省醫院的設備成本,產生不可估量的價值。