AlphaGo 击败人类围棋顶尖大师,开辟了人工智能的新阶段。围棋比象棋深奥复杂得多。前几年,用一般评价法给发达的电脑,写出的程序,可以轻易地战胜人类象棋冠军。但因围棋需要高度均衡的思考,远不是电脑的程序能处理的。
当时电脑的围棋程序,还远远不如一个围棋的初学者。这次的人工智能,加用了模糊数学、图像识别、再学习等不同于过去的方法,终于有了巨大的突破,战胜了人类。现在也有不少运用中医师经验的软件(如关幼波治疗肝病等)。但它们类似于电脑的象棋程序,不是我们这里说的像AlphaGo一样的人工智能中医师。
这次的AlphaGo人工智能有电脑再学习的部分,特别是使用两部机器(电脑)对弈,使用获胜一方的经验,再次返回输入电脑,改进修正研判系数的权值,令电脑“棋艺”大增。据报导,两机对弈的总盘数,比人类有史以来所有人类行棋盘数的总和都要多。实践出真知!电脑的实践比任何个人或人类的总体都多,这便是战胜人类的根基。中医本身就是实践出来的真知,关键在要把这些实践电脑化。
现在我们有了AlphaGo的智能,完全可以开发人工智能中医师(AlphaTCMDr,仅仅指中医开药方部分):
创建 电子中医师的智能程序,比起下围棋,容易的方面是它不用与人互动(与对手互相算计落子)。另一方面,在选择参量及其处理上,则要比围棋落子复杂,难得多(仅说千把种中药,就远比围棋361个落子点多得多)。
中医基于整体观点,把人体视为“黑匣子”,即只有输入和输出两端。这似乎更适应于电脑作业。不管中医理论,和推断方法,只要输入体征病状,输出结果就可以,结果就是药方。
为方便起见,可以分成两步走:第一步,“智能诊断”:输入中医诊断体征,经智能运算得出中医诊断的结论(即如:外感或内伤,内伤是何臓何腑的虚、实、寒、热……)为结果。由此结果作为第二次的输入,可称做“智能开药”。输出中药配方,即药味品种及份量……。
第一步的输入,可以是任何一种体征。如头痛。头痛又分一般痛,偏痛,跳痛,隐痛……,不论它多复杂,数学化后,总可以用n1个痛法来表达。类似地,咽痛也可以用n2 个来表达 …… ;所有的痛n1,n2,n3,……的总和可以用N1 表达。而所有其他的不适类似地可用 N2,N3……来表达,以N来表达N1,N2,N3 ……的总和,所有的体征,包括脉象,舌象。一切体征都用N 表达。而中医的诊断结论,可以是M 个结论(如,气血心肝脾肺……的阴阳虚实……)。那么,按数学表达,体征N 和诊断结论M 之间的相关系数,就是一个N × M 阶的矩阵。矩阵中的N × M个数值,就是某体征对某诊断结论的相关性大小。
实际看病时,对某一个病人,只要把N 中不为〇(零)的部分输入电脑,让其运算,输出M 中几个不为〇的诊断结论,再按M 中系数数值高低,来确定主症,兼症……。而诊断的关键就在这个矩阵。
不管N, M 有多大,N × M 个数组成的矩阵,就是相关系数,这个系数越精确,诊断出的结论就越准确。这个系数矩阵是可以通过输入过去的医案(已经根据一些体征,得出正确诊断结论的诊断数据),经电脑自学习,不断调整、逼近到最精确的系数值。中国历朝历代,都积累了海量的中医医案。都代表着当时名中医师的经验,可惜我们人类自己精力有限,无法全部饱览,即使看了,也未必都能记住,能用到临床的更少。但是,电脑就可以,通过输入数据,得以保存,并且能综合多家中医的经验,产生更精准的诊断。以人工智能中医师出现,不仅药方灵,而且人人能有个机器好中医陪在身边
同理,在第二步中,用M 个诊断结论做输入,通过另一个智能电脑,得出L 个 中药名及P 个份量的中药方子输出。其工作原理是类似的,此处略去。(想法就如此,下面用例子具体说明)
中医诊断中模糊数学的相关系数举例:
为清楚地说明起见,我们选取理想化的几个例子。例如出汗体征(特指自汗与盗汗)和阴虚阳虚的关系。这里是特指的两个体征,所以N=2 , 两个诊断结论,即 M=2 ,所以它们的相关矩阵就是N × M = 2×2 的矩阵(叫二阶正方矩阵):
从自汗可以确定为阳虚,系数为1 (即100% 的诊断率);绝不是阴虚,系数为 0 (是阴虚的几率为0,就是100% 地不是阴虚)。同样,从盗汗可以确定为阴虚,系数为1 (即100% 的诊断率);绝不是阳虚,系数为 0 (是阳虚的几率为0,就是100% 地不是阳虚)。
用数学表达如下:
╭ 1 0 ╮ ╭ 自汗1 ╮ ╭ 阳虚=1 ╮
│ │ ╳ │ │ = │ │
╰ 0 1 ╯ ╰ 盗汗1 ╯ ╰ 阴虚=1 ╯
(这只是说明数学化的例子,因为自汗者不可能同时有盗汗,所以右侧结论中,一个病人不可能100% 地阴虚,又100% 地阳虚)。
这里我们再复习一下数学计算方法,即:
╭ 甲 乙 ╮ ╭ A ╮ ╭ 甲×A + 乙×B ╮ ╭ C
│ │ ╳ │ │=│ │=│ │
╰ 丙 丁 ╯ ╰ B ╯ ╰ 丙×A + 丁×B ╯ ╰ D
为了书写方便,避开难键入的复杂数学形式。我们简单地称输入【A B】(把竖式横过来写)为输入向量,输出【C D】为输出向量。而2 ╳ 2 矩阵也叫2 ╳ 2 张量。用 表示。
然而很多证状与诊断结论之间,并不像上面例子那样非0 即1这么斩钉截铁,而是模模糊糊地,所以会出现在0到1 之间的任意值。举例说:
民国时名医张锡纯,治一病人的医案:
崔某,38岁。病初,常觉头痛,时或眩晕,心中发热,饮食停滞,大便燥结,延医治之无效。一日晨起,觉痿弱无力,痿坐于地,人扶坐床沿,休息移时,可扶杖起立,犹可徐步,然时恐颠仆。其脉左部弦而甚硬,右部弦硬且长。
数学化之后,我们得到:
它的输入向量为【头痛,眩晕,心中热,食滞,便燥结,痿弱,左弦硬,右弦硬长】,8个体征输入。
它的输出向量为【心火,肝阴虚,肝风,脾虚,胃火,胃滞,肾虚,阴虚,血虚,气虚,气滞,津亏,热结,痰饮】,对应于8个体征的14 个可能的病症输出。
那么输入与输出之间的张量就是一个14×8 的矩阵,写作。它每个分量的值如下:
0 0 0.91 0 0 0 0 0
0 0 0 0 0 0.81 0.88 0
0 0 0 0 0 0 0 0.67
0.71 0 0 0 0 0 0 0
0 0 0 0 1.0 0 0 0
0 0 0 1.0 0 0 0 0
0.67 0 0 0 0 0.81 0 0
0 0.7 0.95 0 0 0 0 0
0 0.89 0 0 0.91 0 0 0
0 0.89 0 0 0 0 0 0
0.54 0 0 0 0 0 0.64 0
0 0 0 0 0.92 0 0 0
0 0 0 0 0 0 0 0.73
0 0 0 0 0 0 0.71 0
在运算之后,我们得出的结果向量【心火=0.91,肝阴虚=1.69,肝风=0.67,脾虚=0.71,胃火=1.0,胃滞=1.0,肾虚=1.48,阴虚=1.85,血虚=1.8,气虚=0.89,气滞=1.18,津亏=0.92,热结=0.73,痰饮=0.71】
按照其中取值大的为主要症状后,就可以让“电脑”进行下一个开方子的运作(详细的开药方的过程,和诊断过程类似,这里不再重复)。
这些0 到 1 间的值,是根据一位数学专家的中医大夫给出的。是他的经验。他没提及的,我补了很多的零,在精确的智能再学习后,相信这些〇值会变成很小的值,使诊断更准确。
这个0 到 1 之间的值,到底应该取多少,就涉及医生个人的经验了。越有经验的医生,他们的取值(不是医生自己知道有这个值,而是我们进行数学化后的数字值)就越接近精确值。
这也只是一个举例。实际上人工智能中医师的矩阵可能很大,绝不是例子中的 14× 8 ,很可能是1000 × 1000 量级的,而且它的分量不是像在这里的,有很多的0,经过输入庞大医案数据后的矩阵,它的每个分量值就一定会精确的多。这么庞大的数据,对电脑的要求就高得多。
AlphaGo 能打败九段棋手,除用了新招“再学习”,也改进了硬件,使用了多个“头脑芯片(cpu)”,据说使用了2000个(一般的初等电脑只用一个,后来有用双的,四个等稍多些的),他们还准备在AlphaGo2 上用20万个。
AlphaTCMDr (人工智能中医师)的研发,一定少不了扩充电脑硬件。
即使扩大硬件,电脑受硬体质量的限制,使矩阵运算的范围和速度总有个上限。从入手到最终硬体定型下的机器,面对巨大的N,M,L, P ,由于这个上限,电脑可能都无法如理想的那样的快。因此,必须先对那些N,M,L, P 做精简,缩小数目。这就涉及保留哪些,先略去哪些。而这步工作则需要老中医和电脑工作人员,数学家一起共同努力,才能合理取舍,这是一件说起来容易,做起来不简单的事。
---------------------------------------------------------------------------------------------------------------
欢迎扫码添加小编,加入人工智能和大数据公众号读者交流群,探讨、分享、交流!交流群每周会邀请行业专家进行在线分享!
领取专属 10元无门槛券
私享最新 技术干货