查看原文
其他

ChatGPT在医疗行业的探索与实践

zhpmatrix KBQA沉思录 2024-04-15

        针对ChatGPT网页应用,在笔者之前的文章《ChatGPT在医疗NLP场景中的应用》中,作为用户测试了ChatGPT在经典医疗NLP问题上的效果。针对OpenAI的API对外开放,在《记一次ChatGPT的应用探索与实践》中,笔者快速开发了一个具体的应用并给出了开发思路。针对行业记者,在《ChatGPT能给医疗行业带来什么》中,笔者也表达了个人的观点。

        这篇文章是针对近期的观察和思考,以及与相关朋友的共创,做的一个分享的文字版。

        原谅我WPS的版本老旧以及非会员水印吧。部分图片来自网络,侵删。探索多于实践。

整体上分为3个部分,应用初探部分主要分享测试用例和效果评测,以及一些医疗相关的产品Demo等。技术原理侧主要沿着时间轴梳理相关工作的脉络,不会涉及过多的细节。关键部分是产研侧的思考,主要包括产品和技术上的想法和医疗落地时可能面临的挑战。

应用初探部分给出了相关的文章链接,感兴趣的读者可以直接搜索对应的文章名字找到具体的文章内容。

2018年开始进入预训练语言模型的时代,BERT在当年的11月份推出,大概之前的几个月推出了GPT-1,前者是Encoder-only的代表,后者是Decoder-only的代表,此后很快推出以T5和BART为代表的Encoder-Decoder的预训练语言模型。

Transformer开启了一个辉煌的时代,上图是这个耀眼年代的代表性工作,包括BERT和GPT。BERT的优点是具备双向编码的全局可见性,但是无法支持可变长度生成。GPT可以支持可变长度生成,但是由于是从左到右缺乏双向互动性。理论上,Encoder-Decoder能够合并二者的优点。

对于BERT而言,主要通过Masked Language Model来完成模型的训练,整体上遵从AutoEncoder的范式,对于GPT,则是通过给定前(i-1)个Token,预测第i个Token,符合AutoRegressive的范式。而对于智源的ChatGLM-6B的工作,与上述工作存在一种有意思的联系,具体如下:

为了阐述ChatGPT的训练过程,先给出相关的关键概念。通过写出好的Prompt,引导模型完成自己的任务目标,称为Prompt Learning。在希望模型给到预期结果之前,通过写出明确的Prompt和Answer,可以更好地引导模型得到预期结果。在Prompt中,存在一种表达称为Instruction,即显式的告诉模型需要具体完成的任务类型,比如写周报,写代码,做翻译等。

下图给出了ChatGPT的详细训练过程。在GPT-3.5的预训练模型基础上,通过收集<Prompt,人工Answer>对,完成模型微调得到fine-tuned GPT-3.5,这里的数据量估计在12K-15K左右,这个步骤的主要目的是通过Prompt实现模型与人类的目标对齐。在对齐之后,仍旧存在答案质量的优劣之分,通过人工对多个预测答案进行排序,可以训练一个Reward Model,基于已经训练的Reward Model,可以基于强化学习的范式,完成对fine-tuned GPT-3.5的优化,也就是上图中的PPO模型。经过多轮的迭代,直到PPO模型效果符合预期,即可完成在线部署。

上述过程中,Reward Model在PPO模型的优化闭环中担当的角色是自动化的给生成的答案做打分,从而代替人工完成这个工作。同时Reward Model也可以存在周期性的版本迭代。Answer Ranking的工作在传统的搜索优化中,也是一个常规的动作,无论是训练Learning to Rank的模型,或者是搜索质量周期性评估。

通过上述流程,首先通过Prompt Learning实现模型和人类意图的对齐(Prompt是意图的具象表达),其次通过RLHF(Reinforcement Learning from Human Feedback)实现高质量的对齐。

整体上看,是预训练语言模型+模型微调+强化学习的组合训练范式成就了ChatGPT。假设后两个步骤的目的是实现高质量的模型-人类意图对齐,那么Prompt是否是最佳方式?其次,是否可以认为ChatGPT效果炸裂的根本原因来自预训练语言模型?如果是的,证明一条朴素的逻辑:更多的数据,更大的模型容量,能够带来更好的模型效果。这样的话,也许这就是ChatGPT可以带来的根本性的方法论启发。


从上图中可以看到,围绕ChatGPT的相关的成本估算。讨论完技术,接下来要思考对我们的启发是什么?

笔者很久之前的一个看待问答系统的角度是:答案在哪里?早期答案在书本等物理静态资料中,给出问题,需要基于记忆,手动查找答案。进入搜索引擎的年代,需要基于关键词去查找海量网页。对于主流的问答系统,答案存在于问答库中,通过召回和匹配的算法策略实现答案的查找,也即FAQ机器人。对于KBQA机器人来说,答案存在于知识图谱中,通过结构化Query实现Query到答案侧的路由。同理,答案也可以存储在参数化的大模型中,基于自然语言的Prompt是路由策略。

在早期DeepMind的AlphaGo工作中,其实也是一种巨大的技术突破,但是那个时候可能更多地存在于围棋圈子中,理解“打劫”对于普遍大众而言并不是那么显然。但是ChatGPT通过对话这种几乎所有人都可以接受的交互方式实现能力的外透,在一定程度上也是爆点形成的重要推动力之一。

回顾ChatGPT的盈利方式,包括2C方向的高级会员服务,2SMB方向的开放API服务,0.002美金/千Token,2bigB方向的model instance,以及潜在的Plugin生态。那么我们能够做什么呢?先看一下现在整个社区的工作,大致可以分为三个方向,分别是基础设施层,模型层和应用层,具体展开见上图。在此之前,文本改写,中文纠错都是场景存在但是存在技术天花板的问题,现在也许就可以做了,更有想象力的地方存在于新增应用的横向拓展。

围绕医疗产品落地,可以选择面向医患的诊前,诊中和诊后的全流程关键节点切入。比如左手医生在大约两年前就在推动的语音问诊病历生成,最近云知声也基于类ChatGPT技术做了产品探索。

技术侧的关键问题是需要处理中心化和去中心化的矛盾,具体的表达是需要处理ChatGPT的公有服务调用和个人语料私有的问题。假设基于中心化的服务调用,无论在工业,或者学术上最近都有一些拼手速的工作。

去中心化的问题在医疗领域落地时会更加地显著。直接在院内调用OpenAI的API虽然在技术上可行,但是在数据合规上基本可以认为走不通。假设通过模型蒸馏的技术蒸馏小模型,并完成在院内的部署,那么模型回流也会因为数据合规问题而无法走通。

除了语言模型必然会存在的基本问题,也包括ChatGPT自身的实效性问题。在当下,针对实效性问题已经有相应的还不错的解决方案,比如可以通过相似性技术计算Query和新知识的相关度,把相关性高的新知识作为ChatGPT的输入做summary后返回。本质上,ChatGPT并不直接提供参数化的知识,而是提供对明文新知识的总结能力。

此外,对于ChatGPT直接输出的结果,如何去做准确性校验?上述解决实效性问题的思路,实际上也提供了一种结果溯源的手段。

假设将机器大脑作为人类大脑的一个低维映射,今天也许LLM(Large Language Model)可以一定程度上承担这样的角色。通过ImageCaption给大脑带来了眼睛,通过ASR给大脑带来了耳朵,通过TTS给大脑带来了嘴巴。然而,大脑基于多模态输入做出的决策不能仅通过“说”对外透出,更重要的是通过“做”,也就是通过“行动”与环境发生相互作用,才能形成完备的价值传导链路。

在满屏都是ChatGPT,满眼都是大新闻的时期内,也许可以静下来思考一下,ChatGPT提供的根本价值在哪里?ChatGPT对于你的价值又在哪里?对于NLP的同学,和OpenAI的首席Ilya Sutskever对话,可能有更大的价值和启发。

扫码加笔者好友,茶已备好,等你来聊,

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存