【妄言板砖】传统中医和机器学习
大家好,我是弗礼free。本期我想对比一下传统中医和机器学习。这两样东西的本质是一样的,都是从经验教训中找规律,属于经验主义的范畴。那既然本质一样,为什么传统中医饱受诟病,被不少人认定是糟粕;而机器学习,缺被奉为数据科学,是人工智能,是未来的发展方向呢?我认为,传统中医在实践中比机器学习少了两个关键的思路。而缺少的这两个思路也许能帮助传统中医解决一些问题。接下来,我想先从中医争论的落脚点联系到机器学习,然后展开对比一下这两者,最后再讨论一下传统中医该如何借用机器学习来进步。
大家对于中医的争论已经有一段时间了。从方法论的角度来看,中医的理论模型谈的是阴阳五行,不能被证伪,因此不能被称为现代自然科学。但是符不符合自然科学的方法论跟我们是否应该摒弃一门学科没有必然的联系。支持中医的声音大致分为两种。一种声音觉得中医是传统文化的一部分,不能丢弃。这是价值观上的争论,涉及的范围也超过中医一门学科。这种争论我们先搁置一下,留到以后再讨论。另一种支持中医的声音觉得,中医在治病救人或者养生保健方面是有实用效果的,有时还能解决一些西医解决不了的病症。这是从实用的角度来评判中医。我相信对普通人来说,一门医学能不能解决实际的问题往往是最重要的。如果有人完全搞清了月球上的地质结构,里里外外能给我们分个三千五百三十层,我猜大众可能连被科普的兴致都不高。但如果谁发明了一种家禽按摩手法,能让母鸡每天多下一个蛋,搞不好这一下就被奉为只因大师了。既然支持或者反对的声音大多取决与实用效果,我们理所应当先搞清中医是否实际有效。
那么如何能够搞清中医是否有效呢?如果这个有效指因果关系的话,那我们就需要做大样本双盲对照实验,这也是很多反对中医的人对中医提出的挑战。可药方太多了,随便取一本伤寒杂病论,就有三百九十七法,一百十二方。那么多古籍加民间偏方,全都临床实验一遍代价太高了。现在不是旧社会了,不好光天化日吃人了,这大样本人体实验是不好做的。所以因果性的有效,我看暂且是搞不清的。那么这个争论的出路是什么呢?好像只能看笼统性的有效了。不管这中药是不是在病理上有效,我只管把这个药吃下去人能不能好。这种笼统性的有效研究了有意义吗?我想还是有的。至少对现阶段的普罗大众来说,笼统性的有效往往是指导选择的主要标准。你别管读大学是不是真的能学到什么知识或者提升了什么能力,你读了毕业了拿了文凭好找工作就行了。相信很多人是这样想的。类似的,如果一个药对一种病能稳定有效,那即便是安慰剂效应,只要没什么副作用,靠这药治病也算是个切实的手段。要是服个乌鸡白凤丸就脸色红润了,嗑个六味地黄丸就觉得自己又行了,说这些药有效也不为过。我这里只是打个比方,这两味药有没有效果我是不清楚的。不过我们要清楚的是,笼统性包含了因果性,却不能推导出因果性。笼统性的有效可以指导我们的做法,但是不能帮我们理解原理。好了,总之话说回来,由于现实原因,我们是不大好做大样本双盲对照实验来评判中医的因果性有效的,那么我们可不可以退而求其次,考虑一下中医是否笼统性有效。
那我们怎么评判笼统性有效呢?终于谈到了这一期的正题,靠机器学习。我们先来粗略地看一下机器学习的原理。机器学习是干什么的呢?通俗地讲,就是从经验中找教训。从目的上来看,机器学习要达成的的目标是做出有效的推测以及决策。一个常见的例子就是猜你喜欢。购物网站将各色各样的货物推送给感兴趣的买家,视频网站将五花八门的视频推送给感兴趣的观众。这些应用的本质就是给出准确的推测,用来支持决策。推测和决策正好也是医疗的目的,我们不就想找到有效的办法解决病症嘛。所以从目的上来看,机器学习是可以用作医疗的。那么方法上呢?想要做出有效的推测和决策,机器学习需要大量的数据,根据不同的算法,从中找出规律,再用这个规律来给出推测。进一步说,机器学习只关心最后的判断准不准,根本不管这种判断有没有道理可言,是不是因果关系,讲不讲科学。这是不是正符合我们想要检验的笼统性有效呢?再退一步讲,机器学习是不是就跟中医一样,是所谓的经验智慧。神农尝百草,然后说这草能止血,那个草能止泻,然后没有草能生发。这就是通过主管经验来总结用途。到底是什么营养物质,又或者病毒微生物,一概不知。所以说,传统中医和机器学习都属于经验主义,本质上是一样的。
那既然传统中医和机器学习本质上一样,为什么两者的可信度差那么多呢?中医在很多人眼中是糟粕,但机器学习却是未来。我想这种差别源于两者实践思想的不同。注意我这里讲的是实践思想,不是实践条件。虽说在客观条件上,中医在漫长发展中大部分时间是没有强大算力的,可是在算力大幅提高的过去几十年里,我们也没有见到中医像其它学科那样的进步。所以,我强调传统中医和数据科学的差别,在于实践思想,而不是条件。那么这具体的差别是什么呢?我认为主要有两方面。一是忽略了预测偏差,没有控制过度拟合。二是缺少系统性的迭代进步。下面我们展开说说这两个实践思想上的差别。
我们想要从经验中总结教训,做出准确预测,是要客服自身认知偏差的。复杂事物的预测总是会有误差的,相似的,医生的判断也是会有差错的。假设一个医生的一个判断有误,理想的情况是我们能分清这个误判是因为医生的水平不行还是因为一些不可控的随机因素。这个概念区分中医里是有的。人们会分神医庸医,这说的是医生的水平,而不可控的因素就是所谓的天命。但是光有这样的概念还不够,我们还需要合理地区分这两种误差。可是中医在实践中几乎没有对这两类误差进行区分。举一个例子,扁鹊见蔡桓公。每隔十天,扁鹊见了蔡桓公就说他有病,见了三次,蔡桓公都不理。第四十天,扁鹊见到蔡桓公没提有病的事就走了,而是判断蔡桓公没救了。第四十五天,蔡桓公身体疼痛,病死了。这个例子本意是告诫大家不要讳疾忌医,所以在常规的解读里扁鹊是神医,做的所有判断完全都是正确。但是我们光看对这个病例的叙述 ,也有另一种可能。扁鹊误判了三次,第四次自暴自弃不看了,五天之后蔡桓公不巧突然得了什么急性病死了。仅凭这个故事的描述,我们判断不了到底是哪种情况。这就是在实践中,我们没有办法分辨那两种误差,到底是因为人的水平不行,还是有一些随机的因素。举这个例子,并不是想质疑扁鹊的医术。我只是想指出,中医在流传的时候,往往只说成功的病例,而且把成功都算作人或者方子的功劳。不止如此,中医还往往会过分神话一些医生或者药方,神医是不会犯错的,神药是百试百灵的。就说扁鹊有没有失败的病例呢?好像没怎么听说过。讲道理,如果中医要健康发展的话,应当流传所有的病例,不论成功失。在总结经验教训的时候也不能把失败都归为天命,或者把成功全都归为水平。在一个区域或者一代人中,人们也许能通过多个案例来判断一个医生的质量。但是在跨地区跨时代的交流中,中医往往避开了失败的案例,也没有试图辨析成功案例中的偶然性。预测偏差是普遍的,可是中医没有正视过这个偏差。除了忽视预测偏差之外,中医实践也常有过度拟合的问题。什么是过度拟合呢?就是在构建预测模型的时候,试图创造额外的概念或者因素来解释随机的现象。说五脏虚实不够,就配个阴阳,阴虚阳虚阴阳两虚都不够用了,就再提一个气虚。提了这么多概念,也许最后就只是为了解释被石头绊了一下之后的心率变化。虽然这样说起来是更头头是道了,但是过度追求预测模型的精度会导致更差的预测能力。如果大道至简,那就不要装得高深莫测。误差跟拟合都是统计学的概念,是判断预测模型好坏的标准,机器学习也是以这些为基础的。那么机器学习如何训练出预测能力更好的模型呢?一个重要的方法是交叉验证。我们可以把数据分成两组,一组用来当学习的经验,一组用来检验最后的学习成果。这跟模拟试卷很像。平时搞点模拟卷练习,留一套卷子不练,最后用来做测验,看自己学习的成果怎么样。如果所有的卷子都拿来练习,那就不好判断学习的成果了。毕竟做练过的一摸一样的题,正确率高是理所应当的。我想这就是中医可以借鉴的地方。中医,如果能不论成败保留病例,然后从一部分病例中总结经验,再在剩下的病例中验证经验,相信对其判断能力会有所提升。这就是第一个中医和机器学习实践思想上的差别。
除了缺乏对误差跟拟合这些统计概念的认知,中医的发展还缺少迭代进步。所谓的迭代进步,就是学科的翻陈出新,要么提高了成果效率,要么解决了之前解决不了的问题。对中医来说,迭代进步就是指提高了治愈率或者解决了之前搞不定的疑难杂症。这里强调一下迭代这个概念,它有持续不断的意思在里面。我们即便以世纪这样的大尺度来看,中医也并没有迭代进步。眼下的中医跟上世纪上上世纪比,认知上没有什么大的差别,至多是煎药熬药被一些中成药代替了。这里再打一个比方,中医里广为流传信奉的神医到底谁是最强的?岐伯,扁鹊,华佗,张仲景,孙思邈,李时珍。我们能不能说这些神医是一代强过一代?能不能治更多的病?治同样的病能不能更有效?我们也许能拿一两个病例说事,但总体来说,没有办法比较。那既然这些没有办法比较,我们也就不好谈是进步踏步还是退步了。和其它传统文化相似,中医整体的学习方向是尚古,是经典崇拜。这不是说中医发展中没有纠错,或者没有进步。只不过所谓的进步并不是迭代持续的,而是充满了随机性,有时还得多亏一些大逆不道欺师灭祖的行径。一味经典崇拜是一种盲目,如果所谓的经典还是选择性地只记录成功病例。。。细思极恐。那么机器学习是怎么确保迭代进步的呢?首先机器学习有明确的进步方向,想主要是模型的准确率,准确率越高越好,毫不含糊。或者在准确率相同的情况下,比较模型训练的运算量,需要运算的量越少越节能节时间,代表效率越高。中医能不能像这样设立明确的进步方向呢?治愈率不就是一个很直观的衡量标准嘛。那怎么进步呢?机器学习的做法是尝试不同的算法,或者调整超参数,然后比较最后的预测率。用中医的比方来说,就是我用扁鹊的思维总结一堆病例,然后对测试组的病例做出预测,按准确率评个甲乙丙丁。然后再用华佗,张仲景,孙思邈,李时珍的思维如法炮制,最后谁的准确率高就用哪个。这只是个比方,我们当然不用主观地去整理各派的思想,数据自己会告诉我们哪个方法更好。训练出来的模型倒是可以用这些名医的名字来命名,浪漫一点。浪漫归浪漫,我们最终追求的还是更为有效的医疗手段。
以上两点是我认为机器学习值得中医借鉴的实践方式。那么如果我们真的要用机器学习来尝试推进传统医学的话,需要怎么做呢?首先就是搞数据。机器学习最重要的就是数据,数据越丰富越准确,训练出来的模型就越实际有效。在已发表的学术论文里,已经有尝试将机器学习用到中医研究的。现有的论文主要集中在诊断这一阶段,或者说如何用ai模型代替望闻问切。其中用来训练的数据有两种,一个是读取现有的文字病例,然后看机器的判断与医生的判断是否相符。另一类研究数据是直接对患者进行面部扫描,声闻采集,作为机器的望和闻,然后还是比较ai模型和医生的判断。这类论文的本质是在看能否用ai代替人工诊断,这是一个切实的出发点,成熟之后可以帮助减少诊断时的人工错误。但是要实现ai诊断的话,这些还是不够的。毕竟中医的诊断结论用的仍是中医的理论话术,电脑推测个五行阴阳跟算命网站也没什么太大区别。真正的ai诊断需要用诊断信息直接推断到用药用量,这些数据还是可以获取的。不过ai代诊仍然只是是一个用计算机代替人力的过程,并不能回答我们最关心的问题。中医到底有没有效?要回答这个问题,我们需要病人受诊之后的数据。是否按时按量服药,是否康复,是否有其它反应。这一块的数据并不好采集,至少要等到体征检测器普及之后才能大范围得采集到。现阶段可用的只有复诊的数据。如果病人选择不复诊的话,这数据也不完整,所以这样的研究还得鼓励病人都进行复诊。只要能合理采集数据,不仅中医的有效性可以有个答案,中西医的有效性的对比也是做得的。这些研究说起来不难,不过真的要搞起来还是费时费力的。风凉话这里就先打住了。
最后做一个小结。本期我将传统中医与机器学习做了一个对比。虽然本质上两者都是经验主义的应用,不过传统中医缺少了统计学的误差与拟合的理念,也不能像机器学习那样迭代进步。所以大家对这两者的态度会截然相反。以现阶段的条件,我们研究不了中医的因果有效性,不过机器学习是可以帮助我们研究传统中医的笼统性的有效的。这样的研究必定是跨学科的合作,需要些机缘,不过倒是切实可行的。希望在不久的将来,我们能看到一些研究成果。也相信到时候,大家对于中医的争论也能达成共识。