第二模块 自然语言处理(NLP)和大语言模型(LLM)
这一模块的目的是帮助你了解ChatGPT背后的关键技术——大语言模型(Large Language Model)。除了讲清楚什么是大语言模型外,我还会告诉你如何将大语言模型应用到你的业务中。例如,如果你是一家医疗机构,如何训练属于自己的AI健康管理师。同样地,你也可以训练一个AI客服、AI会计师等。读完这一模块,我希望你能明白,对于一般企业来说,“招聘”AI员工已经不再是遥远的梦想,只要你敢想,你就能实现。
在讲大语言模型之前,我们先来了解一下大语言模型的妈——自然语言处理(NLP)。今天大语言模型的发展离不开过去几十年来在工程师们在自然语言处理技术上的经验积累。自然语言处理是一项使计算机能够理解、翻译和生成人类语言的核心技术。这项技术之所以重要,是因为人类之间的交流主要是通过自然语言进行的,很多知识和工作经验也是以自然语言的形式记录的。突破自然语言处理的能力,意味着我们可以让计算机用我们熟悉的交流方式完成各种任务。因此,几十年来,计算机工程师们一直在尝试让计算机具备自然语言处理的能力。但由于语言的复杂性,始终没有找到合适的解决方案,直到2022年ChatGPT的出现。
过去,NLP的技术难点在于人类语言的上下文和场景的复杂多变。传统的NLP需要限定在特定的应用领域,才能确保当一个词有多种解释时,计算机能够选择符合场景的语义。这种局限性使得NLP一直难以广泛应用。而ChatGPT的出现,为NLP处理提供了一个新的范式。它采用了一种称为Transformer的神经网络架构。(关于人工神经网络的内容,我们会在下一个模块详细展开,这项技术也是2024年获得诺贝尔物理学奖的突破之一,非常有趣,敬请期待。)
ChatGPT通过自监督学习(第一模块中已有介绍),对大量不同语言的文本进行训练。这些文本在神经网络中被转换为向量(一种数学表达方式),而向量本质上是一种空间概念(如果你还记得高中数学的话)。模型通过大量文本数据学习词与词之间的关系,将相似含义的词映射到向量空间中相近的位置。例如,“苹果”和“梨”的向量在虚拟空间中会较为接近,因为它们在语义上有许多相似之处。而“苹果”和“汽车”这样的词,由于语义差异较大,它们的向量在空间中相距较远。
在过去,当我们遇到一个多义词时,可能会面临语义选择错误的情况。但在向量空间中,大语言模型能够根据上下文判断更可能的意思。例如,在一篇文章中提到“苹果”时,模型会根据上下文来判断这里说的是水果还是电子品牌。这种方法对翻译也有极大的帮助。刚刚提到的Transformer架构(如GPT),能够根据词语的上下文动态生成词向量,更精细地捕捉语言的复杂性和多样性。
如果你看到这儿觉得很烧脑,没关系,你只需要知道,最近这一轮引发AI热潮的大语言模型(LLM)是一种最新的自然语言处理(NLP)技术。它通过对大量通用数据集(包括各种文本)的学习,借助数学方法(向量空间的距离计算),更好的完成对“语义的理解”,并实现跨语言、跨领域、跨专业的通用能力,为AGI(通用人工智能)的发展奠定了基础。大语言模型的成功意味着它能够将人类的语言知识与实际应用有效结合起来,使许多原本依赖传统机器学习的AI应用,经过NLP优化后变得更加智能和高效。
在本模块中,我们将首先探讨自然语言处理的发展历程,重点介绍大语言模型为何如此强大。此外,我们还会讨论一些与大语言模型相关的技术和知识,例如预训练、微调和RAG(检索增强生成)。这些内容是将大语言模型应用于产业的重要工具。
让我们从NLP的基础开始吧!
自然语言处理(NLP)简介
自然语言处理(Natural Language Processing,简称NLP)是人工智能的一个核心领域,它能让计算机能够理解、解释和生成我们日常使用的人类语言,从而使我们能够通过自然语言与计算机进行互动,并让它完成各种任务。
NLP的主要任务包括
- 语言理解:帮助计算机“理解”文本的意思。
- 语言生成:让计算机根据输入生成合理的文本。
- 情感分析:识别文本中的情绪和态度。
- 文本分类:将不同类型的文本进行整理分类。
- 机器翻译:跨语言进行翻译。
NLP的发展历程
- 早期(1960年代):最早的NLP基于词典和语法规则,采用的并不是机器学习。由于机器无法理解语义,对于一词多义或复杂的句型,这种翻译的结果并不理想。
- 1980年代:NLP开始采用机器学习,但还不是深度学习,而是基于统计学的传统机器学习模型。这种学习模型的算法直接根据输入特征做出决策、分类或预测。特征和算法设计都是基于人工的,使用者通过限制适用领域来提高翻译准确度。
- 2010年代末:深度学习革命,尤其是基于Transformer架构的模型(如BERT、GPT)带来了重大突破。这些模型通过大规模预训练,自动捕捉文本的复杂语境关系,显著提高了NLP任务的表现。
大语言模型(LLM,Large Language Model)
大语言模型是目前最新一代的自然语言处理(NLP)。这轮以ChatGPT为代表的AI浪潮,最初的引爆点正是因为“大语言模型”在文本处理和语义理解方面实现了质的突破。语言作为人类最核心的交流工具之一,我们的知识体系也多以文字的形式记录。因此,能够理解自然语言的模型就具备了理解人类意图的能力,并且能够将这些意图与已有的知识体系及各种工具有效地联系起来。
举个例子,以往我们要让一个实体机器人执行一系列动作,必须输入预设的代码,机器人才能按照指令行动。而有了大语言模型,我们不再需要编写代码,只需直接告诉机器人我们的意图(比如“帮我去门口拿快递”),机器人通过其内置的大语言模型理解我们的需求,并将其转换为可执行的代码(也是一种语言),最终完成任务。
这一轮大语言模型为何如此强大?背后有三个核心要素:大数据+好算法+强算力
- 大数据:大语言模型通过海量文本数据进行自监督学习得以训练。由于我们拥有丰富的通用文字数据集(如书籍、文章等),加上无需人工标注的自监督学习机制,使得在较短时间内能够完成大规模数据的训练。
- 好算法:深度学习(下一个模块会详细讨论),特别是基于Transformer架构的算法,使得我们能够通过自注意力机制(self-attention)高效处理文本。这样,AI在理解每个词语或句子时,能够将其上下文嵌入整体语境中,而不是孤立地分析单个句子。
- 强算力:这一轮大模型掘金潮背后,最大的铲子供应商是英伟达。英伟达最初主要专注于显卡(GPU)领域,需求主要来自图像处理,相比CPU而言更为小众,需求的广泛性和刚性也较弱。CPU和GPU的主要区别在于,CPU擅长综合处理,处理方式以串行为主;而GPU则为了快速处理图像,采用并行处理,尽管其单线处理能力不如CPU,但并行处理在某些任务中更为高效。显卡最初的推动是90年代兴起的3D游戏,第二次热潮是因为以比特币为代表的虚拟货币的出现。这一类的挖矿计算中,GPU的并行计算明显优于CPU,英伟达因此获得了大量资本,并将资金投入研发。如今,大语言模型的深度学习训练同样依赖并行计算,且对算力的需求极高,这使得英伟达GPU从游戏推动到虚拟货币,刚好承接了AI时代所需要的强算力,可谓天时地利人和。。
因此,大语言模型的出现并非偶然,它是几十年NLP算法的发展、大量文本数据的数字化积累、以及GPU算力的成熟共同促成的结果。OpenAI正是抓住了这个天时地利人和的机会,创造出了引人注目的成果。
大语言模型中的三个重要概念:预训练、微调与RAG
我们的大语言模型是通过自监督的方式,基于通用文字数据集训练的。既然有通用数据集,那对应的就是专业数据集(也称为“领域特定数据集”)。基于通用数据集训练的过程称为预训练(Pre-training),其目的是让大语言模型具备基础的语言理解能力。在此基础上,我们可以通过结合专用数据集,提升大语言模型在特定专业领域的表现。接入专用数据集的方式主要有两种:微调和RAG。
预训练(Pre-trained Model)
预训练是指通过大量未标注的文本数据对模型进行训练,使其掌握语法、词义、上下文等语言基础知识,并积累一定的常识性认知。像GPT和BERT这样的模型,都是通过自监督学习进行预训练的。在这一过程中,模型利用海量通用数据集(如文章、书籍等)进行学习,获得广泛的语言理解能力,类似于一个“本科生”水平的综合知识,但还不具备某一领域的深入专长。预训练之所以称为“预训练”,是因为此阶段的模型虽然掌握了广泛的知识,但并不深入,因此无法胜任专业领域的任务,比如法律咨询或医疗诊断。
微调(Fine-tuning)
微调是通过在预训练模型的基础上,使用特定领域的数据进一步训练模型,以便让它在某个专业领域(比如医疗、法律)表现得更好。这里有三种常见的微调方式:
- SFT(有监督的微调)这是最常见的微调方式。它类似于让模型在专业领域上“补课”。我们提供经过标注的数据(即输入和正确输出的示例),比如医疗问题和对应的正确答案。通过这些带标签的示例,模型会学习如何处理这个领域的特定任务,像医生学习病例一样,让它在医疗任务上变得更精准。
- IFT(指令微调)这种方法专注于让模型更好地理解和遵循指令。为了实现这一点,我们给模型提供一组三部分的数据:指令、输入、输出。举例来说,指令可能是“诊断这个病人”,输入是病人的症状,输出则是诊断结果。通过大量这样的训练,模型能够更好地根据人类的指示做出准确的判断。在ChatGPT中,这种微调方式被用于强化模型执行特定指令的能力,特别是在像医疗领域这样的专业任务中。
- PET(参数高效微调)PET的目标是减少微调所需的计算资源。相比于对整个模型进行调整,PET只会修改模型中一小部分参数,而大部分参数保持不变。就像只调整机器中的一个小零件,而不需要重新组装整台机器。常用的技术包括LoRA和Prefix Tuning,它们通过只调节少量参数来节省计算资源,同时确保模型在特定任务上的性能提升。
RAG(检索增强生成 Retrieval-Augmented Generation)
RAG 可以理解为在预训练模型之外增加了一个“外挂数据库”。在传统的大语言模型中,模型只能依赖预训练时学习到的固定知识来回答问题。RAG 的特别之处在于,它通过外部的数据库或知识库进行实时检索。当模型需要生成答案时,RAG 首先从外部数据库中获取相关信息,然后结合模型本身的知识和语言生成能力,提供更加准确、更新的回答。
简单来说,RAG 的工作流程如下:
- 检索阶段:模型先从外部数据库(如维基百科、专用知识库或企业CRM系统)中检索与问题相关的信息。
- 生成阶段:接着,模型将检索到的外部信息与通过预训练获得的语言能力结合,生成最终的答案。
由于使用外挂数据库,RAG 能够实现信息的实时更新。这对于医疗应用场景特别有价值,因为可以将患者的门诊、住院记录等信息与大语言模型结合,从而实现 AI 医生或健康管理师的功能。
微调与 RAG 的区别
微调本质是优化了预训练模型本身,通过改变模型神经网络中的权重(关于深度神经网络将在下一模块展开讨论),从而让模型更精准地处理特定领域的任务。RAG 不会改变预训练模型,而是通过外挂资料库补充信息,避免了重新训练模型所需的技术门槛和算力负担。
幻觉问题(Hallucination)
幻觉指的是模型生成的内容中包含不准确或非实时信息的现象。幻觉的产生通常是由于大语言模型缺乏问题相关的信息,而模型依然基于语言生成的概率产生了错误的答案。幻觉也是当前大语言模型在一些关键领域(如医疗、法律)投入广泛应用之前急需要解决的问题。幻觉现象可分为“内在幻觉”和“外在幻觉”:
- 内在幻觉:模型生成的内容在逻辑上或与事实相矛盾,比如数学逻辑错误
- 外在幻觉:模型生成了不存在的虚假内容。比如,大语言模型中的幻觉问题可能导致不准确的医疗信息传播,进而引发误诊或错误治疗。
通过微调和 RAG,可以有效减少在专业领域中幻觉问题的发生。
开源模型 vs. 专有模型
在AI出现之前,其实我们经常都能接触到开源和专有系统的区别,比如安卓是开源的,而苹果iOS就是闭源的(或者称为专有/专利),这种区别在大模型中同样适用。
在这一轮大模型浪潮中,其实指的就是预训练模型。目前在行业比较顶尖的预训练模型包括:OpenAI的GPT、谷歌的BERT和Gemini、马斯克的Grok、Meta的Llama等。以上这些大模型有些是开源模型,有些是专有模型,他们的主要区别在于以下:
开源模型(Open-Sourced Models)
- 例子:BERT、Llama、早期的Grok(2.0之前)。
- 特点:代码、结构、参数公开透明,用户可以自由下载和使用,也可以进行二次开发和商业化应用。
- 优势:免费使用,高度灵活,允许微调以适应具体需求。
- 劣势:用户需自行维护和更新;微调后的模型可能需要重新适配新版本;文件较大(千亿参数的模型通常在100~500 GB之间),需要强大的计算资源。
专有模型(Proprietary Models)
- 例子:GPT-4、Grok-2、谷歌Gemini。
- 特点:模型不公开,不允许微调,灵活性受限;个人用户通过线上订阅方式使用;机构用户通常用API接口,将专有模型结合到自己的系统当中使用。
- 优势:有技术支持,维护简单;自动享有模型的更新和优化。
- 劣势:不透明,用户无法访问或修改模型本身;微调通常不允许,但可以通过RAG方式增强灵活性。
大语言模型在医疗服务领域的潜力
目前,医疗报告(如放射学报告、病历、手术记录等)以自由文本形式存在,格式不统一,难以由机器直接处理。传统系统如IBM Watson在传统NLP架构下,无法有效处理这些非结构化数据。
随着新一代大语言模型(如GPT、BERT等)的兴起,这些文本可以被机器精确“理解”,并自动转化为结构化数据,无需人工干预。最新的NLP技术不仅能减少标注数据的需求,还能通过检索医学文献,提取关键信息并以适合特定用户的方式呈现。此外,这些技术已经相对成熟,用户可以通过接入商业大模型平台来使用,而无需自行开发。企业只需根据具体应用场景设计系统,并将模型与现有医疗流程整合。
AI健康管理师开发案例
我想举一个实际的案例,帮助大家理解这些技术是如何整合的。假设我们的医疗机构想要开发一个AI健康管理师,参与我们的健康管理计划。它可以通过企业微信的方式,定时提醒被管理的客户进行健康干预,还能用自然语言与客户交流他们的健康问题,替代部分人类健康管理师的职能。在降低人力成本的同时,实现24小时在线服务。那么,这样的AI健康管理师理论上应该如何实现呢?
AI健管师的大语言模型构想架构
我们可以看到,在这个架构里,我们基于预训练的基础模型(Base model)开发了微调后的模型(Finetuned Model),使其对医疗症状相关的描述更加精准和细致。同时我们还外接了医学领域专业数据和知识的RAG,能够与我们的医院中台系统进行链接。在终端,我们可以用这个大预言模型协助医生与患者的问诊对话,提高效率,提升体验。
我们再更具体的讲一下开发步骤:
第一步,选择预训练模型
我们需要选择一款预训练的人工智能模型。开源的预训练模型是免费的,可以下载并进行大量的定制化调整。例如,我们可以基于医疗数据和健康管理相关的文献,对原有模型进行微调,增强其在医疗和健康管理场景下的能力。但使用开源模型需要我们的AI团队具备成熟的技术能力,能够维护和二次开发模型,同时还需要有运行模型的服务器来提供算力。如果我们不具备这样的能力,可以选择使用专有模型。这些模型的底层维护工作由模型公司负责,我们只需要通过一个叫做API的接口,与我们的系统结合,就能调用他们的预训练模型,他们也会提供运行所需的算力。但正如之前提到的,专有模型公司通常不允许你在他们的模型上进行微调。目前也有一些专门为医疗机构设计的专有模型,他们提供的预训练模型已经在医疗场景下进行了微调。不过,一般来说,微调的数据越有针对性,模型在特定任务上的表现就会越好。如果在没有明确目标的情况下,进行广泛的医疗场景微调,可能无法完全满足客户的需求。
第二步,对模型进行微调
完成预训练模型的选择后,我们需要对开源模型进行微调。在这个过程中,要解决一个重要的问题:如果某个领域的相关数据不足,现代的大型语言模型(LLM)可能会"一本正经地胡说八道",也就是业内所说的模型会出现"幻觉"(hallucination)。幻觉是一个大问题,也是目前在医疗等领域使用AI的最大障碍。
因此,专有模型公司通常会设计让这些预训练模型在遇到不确定的问题时拒绝回答,以避免产生严重的医疗纠纷。不过,最新的模型正在改进这一点。例如,OpenAI在2024年9月推出的”o1“就加入了更高级的推理模式,减少幻觉的发生。有人比喻这就像说原来的预训练模型只会用《思考快与慢》中的“第一系统”,现在开始教会AI使用他们的第二系统看问题。由于这些模型刚刚推出,在医疗场景中的应用还有待验证。
第三步,建立RAG外挂数据库
接下来,我们通常会建立一个RAG(检索增强生成)外挂数据库(适用于开源和专有模型),这个数据库可以与我们的医院信息系统(HIS)或客户关系管理系统(CRM)进行连接。这样的外挂数据库是实时更新的,包含患者最新的电子健康记录(EHR)。因此,模型在生成内容之前,可以先搜索数据库中的医疗诊疗标准和患者健康信息,结合预训练的内容,用自然语言为患者生成有用的输出。
第四步,将模型整合到实际应用中
我们需要将生成的内容与我们的应用场景进行整合,让这个AI健康管理师像人类健康管理师一样工作。我们可以通过建立AI智能体(AI Agent)的方式来实现。AI智能体可以独立存在,也可以用于模拟一个人。大家可以体验一下抖音开发的"豆包",来感受智能体在用户终端的奇妙体验。
我们可以将模型生成的内容与智能体的身份融合,并整合到与客户交互的系统中。例如,之前提到的企业微信,我们可以让智能体直接与被健康管理的客户交互,也可以先将信息发给人类健康管理师审核,然后以这个人类健康管理师的身份和说话习惯,在确认后通过企业微信的方式发给患者。最终,我们实现了线上健康管理的AI自动化,大大提高了健康管理的标准化,降低了人工成本。