許強,郭強,張藝凡,張松,劉一誠,溫川飆,李煒弘▲
(1.成都中醫(yī)藥大學(xué),四川 成都 610075;2.成都市第一人民醫(yī)院,四川 成都 610016;3.成都中醫(yī)藥大學(xué)附屬醫(yī)院,四川 成都 610072;4.內(nèi)江市中醫(yī)醫(yī)院,四川 內(nèi)江 641600)
傳承精華、守正創(chuàng)新,為中醫(yī)藥發(fā)展厘清了思路,指明了方向,既把握了中醫(yī)藥的特點,更符合中醫(yī)藥發(fā)展的規(guī)律,對我們在新的歷史時期做好中醫(yī)藥工作有著重大意義[1]。整體觀和辨證論治是中醫(yī)藥的兩大核心理念[2],是中醫(yī)守正應(yīng)遵循的基本原則;數(shù)字化中醫(yī)是中醫(yī)現(xiàn)代化的重要途徑,是中醫(yī)創(chuàng)新的關(guān)鍵技術(shù)手段。課題團隊謹守中醫(yī)整體觀這一核心學(xué)科內(nèi)涵,守正以創(chuàng)新,基于系統(tǒng)科學(xué)的思想提出了一種以病機為核心的數(shù)字化辨證新方法——網(wǎng)絡(luò)辨證。本文將從數(shù)學(xué)的角度闡釋網(wǎng)絡(luò)辨證的算法原理。
中醫(yī)學(xué)從系統(tǒng)論的角度去整體認識生命與疾病[3],錢學(xué)森多次強調(diào)“人體科學(xué)一定要有系統(tǒng)觀,而這就是中醫(yī)的觀點”[4-5]。結(jié)構(gòu)上,中醫(yī)將人體看成是以五臟為中心,配以六腑并通過經(jīng)絡(luò)的聯(lián)絡(luò)作用形成的一個有機系統(tǒng)[2]。生理上,中醫(yī)將人體看成是由五臟六腑等構(gòu)成的功能性網(wǎng)絡(luò),各系統(tǒng)之間相互制約、相互協(xié)同,從而維持生理平衡。病理上,中醫(yī)學(xué)認為疾病的發(fā)生發(fā)展是邪氣與正氣相互作用的結(jié)果[2]。從系統(tǒng)科學(xué)的角度出發(fā),病機可定義為由多種病邪與(或)正氣虛對應(yīng)的基本病機(統(tǒng)稱為病機元)組成的集合。
事實上,因陰陽、氣血、臟腑等不同,正氣虛可細分為腎氣虛、腎陰虛、心血虛等病機元;因病邪種類不同,邪氣盛亦可細分為風(fēng)熱外邪、濕邪、瘀血等病機元。中醫(yī)理論體系下,病機元之間存在著廣泛的二元因果(或從屬)關(guān)系,如肺氣虛導(dǎo)致脾氣虛,肺熱從屬于里熱,我們將病機元之間的二元關(guān)系定義為病機鏈。病機鏈具有傳遞性,如肺氣虛招致風(fēng)寒外邪,風(fēng)寒外邪入里產(chǎn)生里熱,由于這種關(guān)系的傳遞,病機從數(shù)學(xué)上可進一步具象為由病機元與病機鏈構(gòu)成的復(fù)雜網(wǎng)絡(luò)。課題組通過圖論的有向圖結(jié)構(gòu)將中醫(yī)學(xué)的病機概念數(shù)學(xué)化地定義為病機網(wǎng)絡(luò),其中病機元代表網(wǎng)絡(luò)的頂點,病機鏈代表網(wǎng)絡(luò)的邊[6-7]。圖1示例一個由5個病機元、6條病機鏈構(gòu)成的病機網(wǎng)絡(luò)。
系統(tǒng)科學(xué)的研究對象為一組具有聯(lián)系的多個子系統(tǒng)構(gòu)成的復(fù)雜系統(tǒng),系統(tǒng)科學(xué)將多個具有聯(lián)系的子系統(tǒng)看做整體,還原論與整體觀為系統(tǒng)科學(xué)的基本方法[3],該方法與中醫(yī)的整體觀思想是高度吻合的。本節(jié)將在系統(tǒng)科學(xué)指導(dǎo)下,舉例論述整體觀思想在中醫(yī)辨證中的應(yīng)用。
1.2.1 單值性辨證推理
引入一簡單的病例,假定中醫(yī)實踐者收集到兩個癥狀——脈浮與頭痛,同時假設(shè)該實踐者具有兩個先驗知識(暫不考慮先驗知識的完備性):脈浮可能由風(fēng)寒外邪(A)或風(fēng)熱外邪(B)導(dǎo)致;頭痛可能由風(fēng)寒外邪(A)或腎精虧虛(C)導(dǎo)致。顯然基于單值性推理原則,實踐者會把風(fēng)寒外邪(A)推理為該病例的最可能原因。本案例中單值性推理原則是指:一個癥狀映射多個候選原因(病機元),多個癥狀共存時人腦總是傾向歸因推理出唯一且相同的原因(病機元)。
1.2.2 整體性辨證推理
將上述病例進行復(fù)雜化,假定除脈浮與頭痛外,還存在第三個癥狀舌質(zhì)紅,同時實踐者存在第三條先驗知識:舌質(zhì)紅可歸因于里熱(D)或陰虛(E)。如若按照單值性推理原則并不能得到適合的辨證結(jié)果,但假若實踐者存在另外的先驗知識:風(fēng)寒外邪能夠入里化熱即病機鏈(風(fēng)寒外邪→里熱)。這種情況下基于整體性推理原則,實踐者會把(風(fēng)寒外邪(A)+里熱(D))推理為該病例的最可能病機。本案例中整體性推理原則是指:一個癥狀映射多個候選原因(病機元),多個癥狀共存時人腦總是傾向歸因推理出一組具有整體聯(lián)系的原因(病機元)。
前文已述,系統(tǒng)科學(xué)將多個具有聯(lián)系的子系統(tǒng)視為整體,這種思想與中醫(yī)的整體觀思想是高度吻合的,事實上,整體觀是中醫(yī)藥最為重要的核心思想[8-9]。課題組基于整體觀思想并結(jié)合圖論理論提出了一種以病機為核心的數(shù)字化辨證新方法,即網(wǎng)絡(luò)辨證。網(wǎng)絡(luò)辨證可表達為公式1,其中矩陣C表示先驗知識1即癥狀與病機元之間的關(guān)系(簡稱S2P),矩陣M表示先驗知識2即病機元與病機元之間的關(guān)系(簡稱P2P),x表示輸入癥狀集合,y表示病機網(wǎng)絡(luò),f1,f2,f3表示3個推理函數(shù)。需要強調(diào)的是先驗知識即S2P與P2P是網(wǎng)絡(luò)辨證的前提,上述關(guān)系信息均由多名具有中醫(yī)專業(yè)背景的中醫(yī)醫(yī)生投票決定(德爾菲法原理)。
y=f3(f2(f1(x:C.M))
(1)
網(wǎng)絡(luò)辨證的醫(yī)理模型包括三個階段:第一階段基于笛卡爾積運算窮盡枚舉所有的候選病機網(wǎng)絡(luò),第二階段基于中醫(yī)的整體觀思想篩選出有限的整體性網(wǎng)絡(luò);第三階段基于人機交互策略確定出唯一的個體化病機網(wǎng)絡(luò)。第二階段f2即是網(wǎng)絡(luò)辨證的關(guān)鍵。如前文所述,中醫(yī)辨證過程中是基于整體觀原則篩選出有效的病機網(wǎng)絡(luò),在我們的研究中,我們對整體觀原則建立了啟發(fā)式的數(shù)學(xué)定義(定義1)。整體觀定義是網(wǎng)絡(luò)辨證的核心。理論上講,判定網(wǎng)絡(luò)的整體性等價于判定網(wǎng)絡(luò)中是否存在(至少一個)基點。圖2對病機網(wǎng)絡(luò)進行了圖形化示例,我們能夠觀察到G1中存在基點(P1);G2中存在基點(P1);G4中存在基點(P1);G5中存在基點(P1,P2,P6);G3、Gi不存在基點。根據(jù)定義我們能夠直接得出結(jié)論:G1、G2、G4、G5為整體性網(wǎng)絡(luò)。回顧1.2節(jié)所示的兩個案例,單值性推理與整體性推理均滿足此定義。整體觀定義具有高度通用性且與傳統(tǒng)人腦辨證的思維過程是高度吻合的。
定義1:病機網(wǎng)絡(luò)G中如果存在至少一個頂點v到其它頂點都是可達的,我們則規(guī)定G具有整體性且將其稱為整體性網(wǎng)絡(luò);否則G稱為非整體性網(wǎng)絡(luò)。如果頂點v存在,我們稱其為網(wǎng)絡(luò)的基點。
本節(jié)將從數(shù)學(xué)層面詳細論述網(wǎng)絡(luò)辨證的算法原理即醫(yī)理模型,其整體框架描述見圖3。
圖3 醫(yī)理模型整體框架描述
圖4 候選病機網(wǎng)絡(luò)生成
第一階段得到了所有候選病機網(wǎng)絡(luò)PNs,第二階段的目標(biāo)是從PNs中篩選出整體性網(wǎng)絡(luò)h-PNs。算法的偽代碼見Algorithm 2(圖5),其中A(vm)表示網(wǎng)絡(luò)中的病機元vm與該網(wǎng)絡(luò)中其它所有病機元的可達性,A(vm)為布爾類型,其中“1”表示全部可達,“0”為不全部可達,同時約定病機元vm與其自身是可達的。前文已述(定義1),篩選原理是基于整體觀原則,而判定網(wǎng)絡(luò)的整體性等價于判斷網(wǎng)絡(luò)中是否存在基點。具體而言,給定一個病機網(wǎng)絡(luò),我們從該網(wǎng)絡(luò)的第一個病機元開始判斷該病機元到其它所有病機元的可達性(Line 3),如果是全部可達(Line 4),我們將其記為基點(Line 5),該網(wǎng)絡(luò)記為整體性網(wǎng)絡(luò)(Line 6),將該網(wǎng)絡(luò)添加至集合h-PNs中并終止循環(huán)(Line 7)。否則重復(fù)執(zhí)行上面操作,最糟糕的情況下我們需要重復(fù)至最后一個頂點,如果該頂點還不是基點,我們則判斷該網(wǎng)絡(luò)為非整體性網(wǎng)絡(luò)。我們對所有候選病機網(wǎng)絡(luò)執(zhí)行相同的判定操作,則得到了對應(yīng)的整體性病機網(wǎng)絡(luò)集合h-PNs(Line 2~9)。
圖5 整體性病機網(wǎng)絡(luò)篩選(定義版)
由于病機網(wǎng)絡(luò)是不帶權(quán)重的,規(guī)定網(wǎng)絡(luò)的所有邊的權(quán)重為1,顯然計算特定點到其它所有點的可達性等同于計算特定點到其它所有點的最短路徑。在我們的研究中采用圖論中非常著名且計算效率優(yōu)良的算法(Dijkstra算法)[8]計算最短路徑(Line 3)。然而雖然Dijkstra算法計算效率已經(jīng)很高,但最短路徑問題本身在圖論中就是一個計算復(fù)雜度特別大的問題。Line 2~9的計算復(fù)雜度達到了一個恐怖的數(shù)量級O(n×n2),其中n代表給定網(wǎng)絡(luò)中的病機元數(shù)目,O(n)對應(yīng) Line 2的復(fù)雜度,O(n2)表示Dijkstra算法的復(fù)雜度。更糟糕的是上述復(fù)雜度只涉及到一個網(wǎng)絡(luò),假定我們有10個癥狀,每個癥狀有20個候選病機元,則第一階段會生成2010個候選病機網(wǎng)絡(luò)。顯然哪怕對于性能非常好的計算機而言,這種計算量都是不可能完成的。
為了解決Algorithm 2的計算效率問題,我們提出了Algorithm 3對其進行優(yōu)化。從圖論的角度講,整體性(網(wǎng)絡(luò)的全局屬性)是與頂點的度(局部屬性)是高度相關(guān)的?,F(xiàn)在我們提出三個重要的關(guān)于這兩種屬性的定理推理,其中NG表示網(wǎng)絡(luò)中入度為0的病機元數(shù)目(圖6)。
圖6 整體性與局部屬性的定理推理
Algorithm 3(圖7)的描述如下:對于每個候選病機網(wǎng)絡(luò)Gi(Line 1),我們計算其入度為0的病機元數(shù)目NGi(Line 2)。NGi的取值分三種情況,第一種情況NGi≥2,根據(jù)定理1,Gi為非整體性網(wǎng)絡(luò)(Line 3-6);第二種情況NGi=1即存在一個入度為0的病機元vr,根據(jù)定理2,Gi為整體性網(wǎng)絡(luò)等價于病機元vr為基點,則可通過Dijkstra算法判斷vr到其它病機元的可達性A(vr),如果A(vr)為真(“1”),則根據(jù)定義1,vr為基點,Gr為整體性網(wǎng)絡(luò),將Gi添加至G+(Line 7-14);第三種情況NGi=0,則網(wǎng)絡(luò)中必然存在有向環(huán)Gs,從Gs取任取病機元vr,根據(jù)推論1,G是整體網(wǎng)絡(luò)等價于vr是一個基點,我們對vr執(zhí)行第二種情況相同的操作并判定其是否為整體性網(wǎng)絡(luò)(Line 15-25)。顯然第一種情況的算法復(fù)雜度為O(1),第二種情況為O(n2)即Dijkstra算法的復(fù)雜度,第三種情況也為Dijkstra算法的復(fù)雜度O(n2),Line 2-15的整體算法復(fù)雜度為O(n2)。綜上,給定任意一個病機網(wǎng)絡(luò),判定其是否為整體性網(wǎng)絡(luò)的算法復(fù)雜度由為O(n3)(Algorithm 2)降低為O(n2)(Algorithm 3)。
圖7 整體性病機網(wǎng)絡(luò)篩選(優(yōu)化版)
從第二階段得到了該組癥狀對應(yīng)的所有整體性病機網(wǎng)絡(luò)即h-PNs,然而整體性病機網(wǎng)絡(luò)的數(shù)目是不唯一的。這很容易理解,同樣一組癥狀,不同的流派有不同的辨證思維,哪怕是同一流派不同的(醫(yī)生)個體也有不同的辨證結(jié)局,(醫(yī)生)個體化辨證是中醫(yī)重要的固有屬性內(nèi)涵。圖論不僅僅是重要的數(shù)據(jù)分析工具,也是一種重要的數(shù)據(jù)可視化工具[8]。網(wǎng)絡(luò)辨證借助圖論的數(shù)據(jù)分析作用從無限的候選病機網(wǎng)絡(luò)中篩選出有限的整體性網(wǎng)絡(luò)(第二階段),借助圖論的可視化作用將有限的整體化網(wǎng)絡(luò)進行可視化展示,基于人機交互,融合醫(yī)生個體化經(jīng)驗篩選出唯一的臨床病機網(wǎng)絡(luò)(第三階段)。通過辨證推理模式既數(shù)字化還原了中醫(yī)傳統(tǒng)辨證過程中固有的整體觀理念,又遵循了中醫(yī)傳統(tǒng)辨證過程中固有的個體化辨證特性,守正以創(chuàng)新。
前文已對網(wǎng)絡(luò)的整體性、網(wǎng)絡(luò)的基點等概念做出相關(guān)數(shù)學(xué)定義,本節(jié)將對第二部分涉及的定理1、定理2、推論1進行證明,其中定理1與定理2可直接證明,推論1則由一系列的其它定理與引理推出,其中符號Root(G)表示網(wǎng)絡(luò)中入度為0的病機元集合,NG表示網(wǎng)絡(luò)中入度為0的病機元數(shù)目。
定理1:如果G是一個NG≥2的網(wǎng)絡(luò),則G是一個非整體性網(wǎng)絡(luò)。
證明: 若不然,G是整體性的,則G中一定至少有一個基點,不妨記為v,我們斷言:v∈Root(G)成立。因為NG≥2,因此必然有v1,v2∈Root(G)。若v?Root(G),則P(v,v1)=?,與v是基點矛盾。另一方面,因為v∈Root(G)且NG≥2,因此必然有v≠v′∈Root(G),則必然有P(v,v′)=?,若不然這與v′∈Root(G)矛盾。因此v不可能是G的基點。
綜上,命題成立。
定理2:如果G是一個NG=1的網(wǎng)絡(luò)且vr是入度為0的病機元,則G是整體性網(wǎng)絡(luò)?vr是一個基點。
證明:?由定理1的證明,NG=1以及G是整體性網(wǎng)絡(luò),我們可知道對于vr∈Root(G),一定有v是G的基點。
?由定義可以知道,G是整體性網(wǎng)絡(luò)。
綜上,命題成立。
定義2:網(wǎng)絡(luò)G中,對于任意兩條道路p1∈P(v,v′),p2∈P(r,r′),如果,即的終點是的起點,那么我們可以將這兩條道路連接起來得到中的一條道路,我們將這樣連接的道路記為p2*p1。
引理1:定義R={(x,y)|Px,y≠?,Py,x≠?},顯然的,我們有R?G×G,因此R是G上的一個二元關(guān)系。更進一步,R為G上的一個等價關(guān)系。若(x,y)∈R,我們記作x~y。
證明:自反性:對于?v∈VG,總是有Pv,v≠?,因此x~x。
對稱性:設(shè)x~y,即Px,y≠?,Py,x≠?,因此Py,x≠?,Px,y≠?,故y~x。
傳遞性:設(shè)x~y,y~z,則P(x,y)≠?,Py,x≠?,P(y,z)≠?,P(z,y)≠?,我們?nèi)xy∈P(x,y),pyz∈P(y,z),pyx∈P(y,x),pzy∈P(z,y)。由道路連接的定義(見定義2),我們有pyz*pxy∈P(x,z),以及pyx*pzy∈P(z,y),因此P(x,z)≠?,進而有x~z。
綜上,R是G上的等價關(guān)系。我們稱G/R為G的商網(wǎng)絡(luò)。
引理2:(聚合引理)G是整體性網(wǎng)絡(luò),x,y∈VG,并且x~y。那么若x是基點?y是基點。即在等價關(guān)系R劃分的等價類中,同一等價類中的頂點,要么全是基點,要么全不是基點。
證明:?因為x是基點,則?x≠vi∈VG,由基點的性質(zhì)P(x,vi)≠?。因此我們?nèi)i∈P(x,vi)。由于x~y,因此P(y,x)≠?,取py∈P(y,x),則總是有pi*py∈P(y,vi),因此y是基點。
?命題是對稱的,故成立。
綜上,引理成立。
定理3:(網(wǎng)絡(luò)不變定理)若網(wǎng)絡(luò)G是整體性的?其商網(wǎng)絡(luò)是整體性的。
證明:由引理1,我們得知對于任意網(wǎng)絡(luò)G,其商網(wǎng)絡(luò)G/R一定存在。
?考慮自然投影:π:G→G/R
取G中的一個基點G以及一條道路$p$,記[g]為g得到的等價類,[p]為道路p得到的等價類,利用R是等價關(guān)系以及R的定義,對于任意道路pv∈P(g,v),有[g]∈P([g],[v])。進而對于?[v]∈G/R,有P([g],[v])≠?,因此[g]是G/R的基點,故G/R是整體性網(wǎng)絡(luò)。
?考慮拉回:π-1:G/R→G
其中,對于?[v]∈VG/R,由拉回的定義可以知道π-1([g]):={v∈VG|π(v)=[g]}。取G/R中的一個基點[g],記Ug=π-1([g]),顯然?x,y∈Ug,有x~y,從而π-1對頂點是良定義的。因此可以直接定義π-1([g])。對于任意G/R中的道路[p]∈P([v],[v′]),對于?x∈Uv,以及?y∈Uv′,由于總有px∈P(x,v),px′∈P(v,x),py∈P(x,v′),py′∈P(v′,y)。因此只需要找到P(v,v′)中的元素即可,進而定義π-1([p])=p∈P(v,v′),從而π-1對道路也是良定義的。因此,對?v∈Ux,我們有π-1([pv])=px∈P(g,x),再取pxv∈Px,v,因此有p(x,v)*px∈P(g,v)。遍歷所有的等價類,從而有g(shù)是G的基點,由聚合引理知道,基點g與選取無關(guān),因此G是整體性網(wǎng)絡(luò)
推論1:如果G是一個NG=0的網(wǎng)絡(luò),網(wǎng)絡(luò)中必然存在有向環(huán)Gs,從Gs取任病機元vr,則G是整體性網(wǎng)絡(luò)?vr是一個基點。
證明:?由網(wǎng)絡(luò)不變定理可知,G是整體性網(wǎng)絡(luò),因此G/R也是整體性網(wǎng)絡(luò),從而在G/R中必然有基點[g],而π-1([g])為G中的有向環(huán)Gs,再利用聚合引理即可知,此環(huán)中任意一點都是G的基點。
?由于vr是基點,由定義,G是整體性網(wǎng)絡(luò)。
綜上,推論成立。
隨著信息學(xué)的發(fā)展,將傳統(tǒng)中醫(yī)與現(xiàn)代計算技術(shù)結(jié)合一直是中醫(yī)尋求突破的重要途徑。中醫(yī)強調(diào)辨證論治,數(shù)字化辨證是實現(xiàn)中醫(yī)智能化的關(guān)鍵與前提。中醫(yī)理論體系下,病機是中醫(yī)臨床實踐的核心概念[13-14],課題團隊基于系統(tǒng)科學(xué)思想首次提出一種以病機為核心的數(shù)字化辨證新方法——網(wǎng)絡(luò)辨證。本研究的創(chuàng)新點如下:(一)首次提出病機網(wǎng)絡(luò)的概念:中醫(yī)學(xué)認為疾病的發(fā)生發(fā)展機理(即病機)為邪氣與正氣相互作用的結(jié)果。從系統(tǒng)科學(xué)的角度而言,病機可定義為由多種病邪與(或)正氣虛對應(yīng)的基本病機(統(tǒng)稱為病機元)組成的集合,另外病機元之間存在著廣泛的二元關(guān)系(稱為病機鏈),病機鏈具有傳遞性,如肺氣虛招致風(fēng)寒外邪,風(fēng)寒外邪入里產(chǎn)生里熱,由于這種關(guān)系的傳遞病機可進一步具象為由病機元與病機鏈構(gòu)成的復(fù)雜網(wǎng)絡(luò)。課題組通過圖論的有向圖結(jié)構(gòu)將中醫(yī)學(xué)的病機概念數(shù)學(xué)化地定義為病機網(wǎng)絡(luò),其中病機元代表網(wǎng)絡(luò)的頂點,病機鏈代表網(wǎng)絡(luò)的邊。相較于四字證型模式的病機表達,病機網(wǎng)絡(luò)對病機的表達更加全面、直觀,最重要的是通過病機的網(wǎng)絡(luò)化定義,實現(xiàn)了復(fù)雜病機的表達。 (二)明確辨證整體觀的數(shù)學(xué)定義:整體觀是中醫(yī)辨證的基本原則,本研究明確了中醫(yī)辨證整體觀的數(shù)學(xué)定義,具體如下:病機網(wǎng)絡(luò)G中如果存在至少一個頂點v到其它頂點都是可達的,我們則規(guī)定G具有整體性且將其稱為整體性網(wǎng)絡(luò);否則G稱為非整體性網(wǎng)絡(luò)。如果頂點V存在,我們稱其為網(wǎng)絡(luò)的基點。整體觀是中醫(yī)的精髓,整體觀定義是網(wǎng)絡(luò)辨證的核心。上述定義具有高度普適性,給定任意病機網(wǎng)絡(luò),根據(jù)該定義能夠得出其是否滿足整體觀定義,是否符合中醫(yī)整體觀原則。 (三)闡述網(wǎng)絡(luò)辨證算法原理:網(wǎng)絡(luò)辨證醫(yī)理模型包括三個階段,第一階段基于笛卡爾積運算窮盡枚舉所有的候選病機網(wǎng)絡(luò);第二階段基于系統(tǒng)科學(xué)的整體觀篩選出有限的整體性病機網(wǎng)絡(luò);第三階段基于人機交互策略確定出唯一的臨床病機網(wǎng)絡(luò),本文從算法角度闡釋了網(wǎng)絡(luò)辨證的數(shù)學(xué)原理,提出且證明了三個重要的定理推論對其中的關(guān)鍵算法進行優(yōu)化。
總結(jié)而言,網(wǎng)絡(luò)辨證在遵循中醫(yī)系統(tǒng)觀、整體觀、個體化等核心科學(xué)內(nèi)涵的前提下,提出一種以病機為核心的數(shù)字化辨證方法,跳出了中醫(yī)證型辨證模式,脫離中醫(yī)“一病幾證,一證幾方”的診療誤區(qū),為中醫(yī)數(shù)字化辨證提供思路。