前沿重器
栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。(算起来,专项启动已经是20年的事了!)
2022年的文章合集,累积起来有60w字,在这:CS的陋室60w字原创算法经验分享-2022版。
往期回顾
前沿重器[29] | ERNIE-Search:向交互式学习的表征式语义匹配代表作
前沿重器[30] | 聊综述-预训练模型在信息检索中的应用
前沿重器[31] | 理性聊聊ChatGPT
前沿重器[32] | 域外意图检测——解决“没见过”的问题
前沿重器[33] | 试了试简单的prompt
熟悉我的朋友都知道,我有混很多NLP相关的技术群,我现在的视角看挺多人现在想把自己的LLMs大模型用在自己的场景里,常用的调优方式都是考虑各种方式搞数据,然后根据自己的资源情况选择不同的训练策略去对模型进行微调,资源足够的可能就是整体微调了,资源不够的就是用LoRa之类轻量化微调(说起来我还有些前瞻性:前沿重器[27] | 从遗忘问题到预训练轻量化微调)
然而我自己其实觉得还是比较麻烦的,最近也跟几个朋友聊过,总结下来,在现阶段模型的生成和推理能力已经比较优秀的情况下,与其还去让模型学习,通过参数更新的方式倒腾,不如把精力集中在prompt上,通过多种方式的引导,来让模型输出我们想要的东西。
这篇文章讲的其实就是prompt的使用和思路,对很多人来说可能都不是难的东西了,然而我还想写的原因是,希望大家在这个环境下能适当减轻对“finetuning”的执念,因为很多问题,我们其实并不需要花时间和精力在微调上了,另外,也不要把设计prompt当做很low的东西,这背后其实是对模型特性的理解,而且我们还需要很多精力花在筛选、整合资源形成合理的prompt,而这,也不是随便找个人就能知道的。
这里叠个甲,不是说LLMs不需要研究了,只是,做应用搞业务,LLMs的训练可能没那么重要了,而Prompt就很有用。这个就跟bert时代,我们不需要很多预训练bert的人,做应用搞业务,只需要finetuning就够了,用大量的数据做MLM、NSP之类的任务其实没那么重要。
从WebCPM到知识输入
论文:WebCPM: Interactive Web Search for Chinese Long-form Question Answering,是来自清华、人大、腾讯、面壁智能联合完成的一个中文领域首个基于交互式网页搜索的问答开源模型框架,最近的新鲜出炉,文章里面其实提供了很多信息,大家可以多去看看。
论文:WebCPM: Interactive Web Search for Chinese Long-form Question Answering
github:https://github.com/thunlp/WebCPM
公众号:https://mp.weixin.qq.com/s/nIRSWHGN6TNAwhtQE8T-dA
文章本身首先聊到一个概念:长文本开放问答(Long-form Question Answering, LFQA),提到一种场景,就是人们在获取知识的时候,主要是通过搜索等多渠道获取,然后进行整合、提取,从而来解决比较复杂的问题,LFQA就是为了解决这种问题存在的,而其主要的框架主要分为两块——“检索-整合”(文章中说的综合,我更愿意理解为整合)。检索是为了从库里面快速找到可能有答案的内容,这些内容会被整理成为prompt,配合query就能够放入LLM里面进行提取并得到回复了,后面这个过程就是整合。
这个“检索-整合”,就是今天想说的使用LLM的快捷方式,无论是现在的WebCPM,还是早一些的langchain,其实本质都是使用了这个思路。
检索-整合模式的讨论
LLM往往是在开放域数据环境下训练的,那么势必他所擅长的,就是常见的、开放的、普适的问题,然而到了我们实际的场景,我们面对的问题往往是细小的、精准的、专业的,定制的甚至即时的,但凡经过专业的评测就会发现,LLMs在这些问题下并没有想象的那么好,而这个最本质的原因,我想把他分成两点:
知识的覆盖率问题。专业领域或者是即时性要求比较高的领域,模型没见过的知识,很难会自己突然就知道,这跟文学专业同学不了解数学系知识,数学系同学不了解文学系知识是一样的。
业务的定制性问题。在特定领域下,我们对答案的要求是定制的,和业务问题强相关的,例如transformer可以是变形金刚、变压器甚至是我们所熟知的模型,具体要翻译成哪个要看场景,再例如有些我们需要的特定格式的答案,需要告知模型。
按照上一个版本,即以Bert为代表的预训练模型时代,我们熟知的方案就是带着知识点,去微调模型,让模型去具备我们需要的能力。然而到了新版本,LLMs其实我们也应该去学习一下新版本的方案了。
从检索-整合到问题设计的推广
为什么“检索-整合”机制会生效,这个就要从prompt开始说起,现在毋庸置疑,prompt肯定是一个非常有效的方案了,通过给出一定的提示,能让模型输出更为准确的结果,生成能力并不强大的bert的无监督尚且能达到一个不错的效果(前沿重器[33] | 试了试简单的prompt),那么对于生成能力更强的GPT甚至他们的升级版,还有现在LLMs下的多个基座模型,更不必多说。再者,检索-整合的这种模式,分离了业务需求和模型生成推理能力,业务需求是可以定制的,也需要具备定制能力的,而模型生成可以是固定通用的,毕竟模型在这个阶段下已经具备了推理能力了。换个角度看,其实在这个思路下,模型更像是在做机器阅读理解MRC任务,模型能够根据提供的文档,给出问题的答案,大大降低了模型的压力,也能把问题进行拆解,方便我们后续进行调优。
而进一步的推广,检索可能并非必须,只是某些问题场景下我们需要检索罢了,但是也有些时候,我们是可以通过必要的提示来让模型来模仿,一方面是模仿回复的形式,另一方面还可以模仿推理逻辑,甚至可以解决fewshot的问题。有关这块的理论基础,其实就是in-context learning,模型具有比较强的即时模仿和推理能力,有些知识或者需求不需要学到模型里面去,而是通过在输入端教他们,他们就会模仿着去做起来,这点,也是我们这种“检索-整合”可行的最关键的基础。
来几个例子
下面,我会通过几个例子,让大家感受一下这个模式的一些优势。下面都是我用chatglm-6b-int4得到的结果。
第一个例子,是天气,天气作为即时性要求很高的任务,模型肯定很难应对,但是如果我们能给模型提供到这个信息,那模型就能够回答,而这里的信息来源,就来源于我们的搜索,这个搜索的结果能为模型回复带来很关键的支持。
Q:深圳今天的天气。
A:抱歉,作为一个人工智能语言模型,我没有实时的天气信息。建议您查看当地天气预报或使用天气应用程序来获取最新的深圳天气信息。
Q:今天深圳晴,27-32摄氏度;北京阴,16-22摄氏度;上海多云,22-26摄氏度。请问深圳今天的天气
A:根据提供的信息,深圳今天的天气是晴,温度在27-32摄氏度之间。
第二个例子,利用了模型的信息提取。很多人可能会问,我搜都能搜到结果出来,为什么还要你再跑一遍模型?我想说的是,模型的生成和抽取能力很强,能帮助你快速获取里面的关键信息,毕竟检索后,我们都需要花费很多时间来筛选、整合这些资源。而且,某些问题的提问下可能会隐含一些背景信息,这些背景知识模型不知道,而可以通过给出检索的结果,为模型更有力的回复支持。
Q:五月天演唱会在什么时候在哪举办?
A:五月天演唱会通常在每年的4、5月份举办,地点包括台湾、香港、新加坡、马来西亚等地。
Q:新闻:鸟巢五月天演唱会将于5月26日开始在国家体育场举行。北京市公安局治安管理总队负责本次演唱会安全监管工作。为了使前来鸟巢的歌迷朋友们顺利观看演出,北京警方向观看演唱会的歌迷朋友们发布了微提示:一是本次演出实名制入场,请务必带好身份证原件及门票并妥善保管,自觉接受安检和验票。二是禁止携带摄像机、照相机、激光手电筒、自拍杆、超大荧光棒(长度50cm直径3cm以上)、超大灯牌(35cmX35cm以上)、长柄雨伞以及管制刀具等违禁品入场。三是观众入场时间为16时30分,正式演出于18时30分开始,请尽量提前入场(鸟巢南侧、西侧、北侧均有验票入口)、所持门票对号入座,不得串区,不得聚集,不得跨越隔离带。四是请妥善保管好自己随身携带的贵重物品,以防遗失和被盗。现场DK、JK两入口处设置有存包处,可供观众存放物品。五是演出过程中如遇意外情况发生,不要惊慌、不要相互拥挤,请在现场工作人员的指引下有序疏散,确保安全。六是演出结束后(预计22时结束),请大家带好随身物品,听从现场工作人员指挥有序退场。七是请关注天气情况,根据天气预报携带合适的衣物,如遇下雨情况,建议穿防雨外套。八是警方将会同文化、市场监管等部门,开展专项整治工作,持续保持对黄牛零容忍打击态度,加强对文化市场的治理。九是演出当天人流、车流较大,请大家尽量选择公共交通工具前往观看演出。公交地铁出行。提问:五月天演唱会在什么时候在哪举办?
A:五月天演唱会将于5月26日开始在国家体育场举行。
第三个例子,模型具有很强的模仿能力。模型甚至能够按照我们给的例子,约束回复格式,这个其实就是in context learning的标注模式了。
Q:兼爱非攻是春秋战国百家争鸣中哪一家的主张?A:儒家;B:法家;C:道家;D:墨家。答案:
A:兼爱非攻是墨家的主张。在春秋战国时期,墨家是一个思想流派,其创始人是墨子。墨子主张兼爱、非攻,反对战争,认为战争只会破坏和平,而不会促进和平。这一主张得到了广泛认同,成为了墨家的主张,并被后来的各种流派所继承和发扬。
Q:问题:北京是中国的首都吗?A:是;B:不是。答案:A。问题:静夜思的作者是谁?A:杜甫;B:王安石;C:李白;D:张三丰。答案:C。问题:兼爱非攻是春秋战国百家争鸣中哪一家的主张?A:儒家;B:法家;C:道家;D:墨家。答案:A:D。
更多例子就不多说了,大家多少能够感受到,其实通过设计良好的提示,模型就能得到我们想要的结果了。
优劣势分析
好了,下面来进行一些优劣势分析吧,避免过度吹,我们还是要权衡着看的。
首先是优势:
prompt不需要对模型进行修改,因此类似模型遗忘、对话能力丧失、学不到等不可控因素都不会出现,也省了很多资源。
解决知识输入的问题,很多模型不知道的东西,我们可以直接通过prompt的方式输入给模型。
prompt能够一定程度约束模型的输出格式,一定程度解决模型生成的过于自由的问题。
比一般的检索,能给出更精准简洁的话语型回复。
劣势:
偶发性,模型在回复的时候可能会出现杂糅信息,例如做多物品对比分析的时候,模型的回复内可能会出现多个物品特点杂糅,张冠李戴的情况。
经常还要额外配合检索模块,开发成本提升,而且准确情况也依赖这个检索模块。
文本输入会变长,增加识别压力。
后记
其实不久前有个朋友问过我一个问题,LLMs出来后,搜索系统会有什么革新,有什么应用场景,我最后的回答是,不是LLMs能帮助搜索什么,而是搜索能一定程度成就LLMs,因为模型需要信息整合,而这个整合,就是搜索系统所做的东西,借助搜索的比较精准的结果,给到LLMs,LLMs就能够输出足够可靠而又精准的内容。