《追AI的人》系列直播第21期邀请了阿里巴巴人工智能治理与可持续发展研究中心算法专家许皓天老师分享《ChatGPT的前世今生与风险治理》。以下为直播的文字回放,共计16225字。
直播简介回顾:
许 皓 天
阿里巴巴人工智能治理与可持续发展研究中心算法专家。深耕内容安全、信息抽取、风险舆情、预训练模型风险等方向多年,并在iclr、icassp、taslp、ecal等发表多篇文章。ccks、法研杯等多个信息抽取比赛获得top名次。
近期出现的技术,如ControlNet和StableDiffusion的结合以及11月份开始就比较火的ChatGPT,其爆发的背后主要得益于几个重要的组件。例如,ControlNet和StableDiffusion可以提供稳定的传播来改善模型性能,而ChatGPT则可以提供有效的对话模型以解决自然语言处理问题。首先,充足的硬件并行计算资源;其次,海量的单模态和多模态无监督数据;再次,Google在2017年提出的Transformer模型以及以前算法上的重大突破,比如GAN和Diffusion Model。基于自然语言的预训练技术也引发了各种模态的预训练,也为text-based AIGC爆发创造了很好的条件。
随着人机协同以及强化学习训练的普及,文本生成模型获得突飞猛进的发展。另外,OpenAI开放chatGPT接口,创造了一个庞大的社区生态,使得众多的科研人员和爱好者有机会利用该接口来完成许多创新性的任务,同时积攒高质量的人工标注数据,有力地推动了chatGPT在文本处理领域的飞跃式发展。受益于大量的硬件运算能力和单/多模态数据,在21~22年,大型模型发生了爆炸式的增长。与以前相比,大型模型的使用的训练数据量、模型参数量以及模型所能达到的能力都取得了显著的提升。ChatGPT由于开放的接口使得更多的人可以使用它来完成任务,从而积累大量的数据。为此,OpenAI雇佣了大量外包人员,他们有优秀的资质、学历水平以及多样性,可以提供更优质的多轮交互和问答标注,从而提高ChatGPT在专业领域的能力,吸引了更多的用户、学生以及专家为ChatGPT做出更多的贡献和迭代。从2022年11月到2023年2月,元宇宙和ChatGPT都维持着较高的关注度,尤其是在2月份后,许多大公司宣布引入ChatGPT到自己的产品,从而使ChatGPT在国内外引起巨大的讨论热潮。ChatGPT不仅是月活最快过亿的APP,也引起了全球的瞩目,尤其是Google和微软宣布将ChatGPT引入各自的产品之后,更是掀起了一股热潮。然而,由于自然语言生成(NLG)存在有效性、事实性、公平性以及安全性的问题,可能会对商业公司带来不可预知的风险。比如,Google发布Bard时就出现了事实问答Demo的错误,导致其股价急剧下跌,显示出NLG无法解决实际应用中的全部问题。将ChatGPT应用到实际场景时,需要考虑的两个成本为训练成本和推理成本。随着芯片技术的发展,从v100、a100到h100,现在的训练成本可能已经低于此前的五分之一,如使用Google最新TPU v4版本可以有效地控制训练成本。随着技术的不断进步,大语言模型的训练和部署优化策略,比如蒸馏量化,使得大语言模型的实际应用变得可能。国内外企业纷纷提出自己的版本的ChatGPT,但最终的效果将很大程度上受到所获取到的高质量数据的影响。从路线上来看,Google所提出的核心技术,比如Transformer和RLHF,为OpenAI沿着单向语言模型的路径提供了前进的动力。OpenAI不断地放大数据规模和参数规模,从而发现小模型中不存在的能力,比如in-context-learning(ICL)。而一年之后,进一步引入新数据和训练方法,如代码数据微调和指令微调,使模型的能力有了跨越式的发展。2022年底,OpenAI推出了ChatGPT,它以其能够在更专业领域,如代码写作、编程、逻辑分析等,取得更好的效果,成为提升工作效率的assistant,大大改变了人们对传统文本生成模型的观念。当OpenAI开放接口后,学者们开始拿它去解决包括文书写作、写小说、做职业顾问、艺术顾问以及解决医疗问题等大概150多种不同任务。这种专业能力,大概率来自于专业领域的标注人员给出的标注数据。单纯从无监督训练来看,很多的文本大模型也很难具备这么多样的专业能力。
例子:In-context-learning在事件抽取中的应用,传统的事件抽取需要先定义一个事件的schema,比如:事件类型为attack,包含5个要素,如trigger、target、instrument、place、Time等。传统的方案一般是需要基于schema去标注大量的数据,才能进行有监督的抽取。但是当引入ChatGPT和In-context-learning技术后,事件抽取可以得到简化:只要提供schema描述以及一个example和它对应的输出,就可以根据已有example的输出形式,输出测试样本的抽取结果。
当引入ChatGPT技术后,可以避免手工去标注大量的数据,而是通过给定example或者demonstration,让模型自动学习输出的映射关系,从而实现对新样本的泛化。更神奇的是,新的测试输入不需要重新复述In-context-learning中schema与example。因为ChatGPT本身具有长距离对话历史的依赖能力,可以在当前的对话session内,持续对新样本做事件抽取,从而较快地完成冷样本、小样本或新场景的冷启动。但退出当前对话session后,该能力大概率会消失。如果是高频场景的高频任务,在指令微调阶段加入对应的数据可以持续提升模型在专有场景的能力。ChatGPT可能会存在事实性或时效性不足的问题,但当ChatGPT与搜索引擎结合时,可以获得较好的解决方案。示意图表明:ChatGPT通过Bing搜索引擎,对问题给出摘要,并列出摘要每一部分的来源,可以提升输出结果的可信度,同时自动抽取网页中的核心内容,降低人在网页上搜索信息的成本。此外,它还可以精简网页内容,并标明出处,以提高其可信度。基于Web GPT的技术方案,ChatGPT能够学会使用搜索引擎,对新问题做出更可靠、更有实用性的回复。直观来看,ChatGPT分为4个阶段,第一阶段是基于无监督数据的pretraining,这一阶段主要是通过使用基础模型Transformer,并从网络上或专业论坛上抓取大量优质无监督数据,从而使模型能够从含有这些无监督数据中吸收语言表达的知识,比如语法信息和事实信息,并存储在模型参数中。但是,就像人类学习一样,如果只通过阅读无法知道我们学习得好不好,因此无监督阶段模型吸取知识的能力虽然强,但是它缺乏应用知识的能力,以及解决问题的能力,所以可能就引入了第二阶段。基于Instruction数据finetuning就像是老师对学生的教导过程一样,因为现在的ChatGPT它不仅仅是一个简单的生成模型,它更像是一个助手,它需要根据人类用户的指令去完成特定的任务。这其中包括:设计任务所需要的知识点和完成任务所需要的具体流程,这就需要人类的教导,我们需要把所需要的知识点和材料一步一步地写下来,以便让模型正确地模拟并最终完成任务。接下来,我们需要给出考纲下的问题以及答案,这样模型或学生就能学会如何根据问题去解决问题,这一阶段主要采用有监督的方式,以此来让模型学会如何根据考纲知识点和问题来解决它手头的任务。老师可能会教导学生,但这样的教学可能需要耗费较多的人力,并且不太高效。因此,基于强化学习和人类反馈,可以改变考评过程,不再对中间生成过程进行考核,只通过期末考试来评估学习成果。
为了解决某个任务中是否能够掌握足够的套路来解决问题,可以通过强化学习和人类反馈来实现。通过设定KPI或OKR,评价学生是否能够掌握解决这个问题所需要的通用能力,从而更好地去解决这个问题。在未来,不管是第二步还是第三步,都需要人工去设计考纲知识点以及问题,并通过及时反馈来让模型去学习掌握解决问题的能力,可能会限制chatgpt的持续进化。因此,需要更好地设计教学过程以及多种考核目标,例如模型是否具有总结或反思能力等。此外,就像人类一样,模型也可以通过使用符号计算、知识图谱等工具来完成知识密集型或计算密集型的任务。首先来看一下无监督海量数据培训阶段。从ChatGPT发展路径来看,GPT1首先提出了预训练以及微调两阶段的范式,这种工作实际上是将传统的NLP需要针对每个任务单独设计模块以及进行微调的范式转变为预训练加微调两阶段的范式,从而彻底改变了很多NLP以及CV领域的基础训练范式。而GPT2,从参数和规模上有了比较大的增长,从上图可以看到它的参数量和使用的数据量相比之前的模型都有比较大的增长。当训练数据和参数规模增长之后,可以看到在很多传统的任务上,即使是在零样本的情况下,也可以超越之前需要依赖手工设计复杂模型和有结构训练的模型,这使得零样本和小样本的能力拥有了可行性的可能性。GPT3是模型数据规模极致的体现,在当时的科学技术条件下,它通过吸收超大量的数据(接近100倍的提升),而参数量也有了接近100倍的提升。基于更高的、更大的数据和更多的模型参数,使得GPT3在零样本、小样本以及few-shot能力上有了急剧提升,甚至可以和微调打平。此外,当模型和数据尺度增大之后,模型涌现了许多新的能力,In-context-learning就是其中之一。
In-context-learning是指当解决任务时,会先输入任务描述,比如将英语翻译成法语,然后给定一些翻译英语为法语的例子,而当输出新的样本时,模型就能根据前面给定的样本和任务描述,自动地去解决新的输入问题。根据给定样本的多少,可以分为零样本、单样本以及少样本学习。零样本学习也被称为instruction-tuning,即没有给定任何样本,因此需要在微调或预训练阶段能够将相关的任务放入训练数据集中,或者是通过模型的某些泛化能力,从而泛化到尚未遇到的任务。而one-shot学习则可能更加常用,比如在基于In-context-learning的事件抽取中,只需给定schema抽取的描述以及事件抽取输入输出的表示,即可对新句子进行抽取结果。In-context-learning对于实际应用很有价值的。ChatGPT的In-Context-Learning可应用于多种实际场景,其中有价值的应用包括:智能对话系统的自动化,比如通过在上下文中学习,可以实现更为高效的语义理解;机器阅读理解,可以利用In-Context-Learning来辅助生成比基于统计的方法更加准确的答案;推理任务,如自然语言推理,也可以利用In-Context-Learning来辅助提升推理效果。GPT-3 Initial是GPT-3的初始模型,它提供了强大的知识记忆能力和in-context-learning功能;InstructGPT则是将GPT-3模型应用于指令微调,以完成如润色写作、提供建议等人类自然语言描述的任务;Code-DaVinci-002和Text-DaVinci-003则使用代码数据微调等,以使模型具备一定的step-by-step的解决问题的能力;最后,ChatGPT将更多的对话上下文信息引入到Code-DaVinci-002模型中,进而极大地提升了模型的对轮对话响应能力。
在GPT-3进化树上的第一个节点,GPT-3 Initial具有较大的参数和初始规模,可以存储大量的世界知识,并具备了零样本和小样本扩大样本的能力。在InstructGPT阶段,它引入了指令微调和指定微调,它能够理解人类自然语言指令并完成特定的任务,因为它不仅仅知道这些知识,还学会了如何去正确使用它们。InstructGPT通过微调和强化学习来教会模型如何根据输入去完成特定的任务,从而使模型具有良好的遵循指令的能力,它可以完成诸如翻译、抽取、分类、编程、财务或医疗问答等任务。
在第三阶段,code-davinci-002将代码微调预训练和指令调整结合起来,产生了新的成果。在这个阶段,得益于引入了高质量的指令数据和代码数据,模型获得了一种新的能力叫做chain-of-thought(目前,没有明确实验证实代码数据的引入激发了大模型的推理能力),并且由于代码本身具有长距离依赖的特性,使模型在长距离建模上得到了提高,而且因为在这个阶段加入了指令调整,模型的指令遵循能力也得到了加强。而ChatGPT则是在技术树上面的综合体,它同时借鉴了Code-davinci-002的进步,不仅使用代码和指令调整,还引入了聊天。传统的多轮上下文交互,主要是针对主题或话题进行的,但很少有模型能够对对话过程进行纠正、改错并完成复杂人物如编程等。实测结果显示,ChatGPT已经能够及时响应人类的指令进行纠正,上下文交互和反思能力是通过对话数据集和对话数据形式的prompt来引入的,从而大大提高了它在多轮上下文交互中的纠正和修正能力。GPT3-initial本质上是无监督预训练,但存在缺点——很难理解自然语言指令。为了解决这个问题,一个方案就是使用有监督数据来完成多任务训练。GPT3本身已经有海量的参数和大量的知识,但在输入新指令时,模型很难利用自身知识来完成任务。因此,通过使用有监督多任务训练来激发模型最大能力,让它能够学会利用自身已有的知识来完成新的输入指令。人类反馈可以有两种形式:一种是及时反馈,每完成一步就会及时给出监督信号,这是监督学习;另一种是强化学习,在完成整个任务后,人类根据完成任务的质量来给出评分,从而使模型能够产生满足人类偏好的输出结果。
无论是监督学习还是强化学习,实际上都必须将手头的任务转换为生成任务,因为GPT3本质上是一种语言模型。为了让语言模型完成我们的任务,就必须将传统的NLP任务,如机器翻译、阅读理解和分类匹配转化为生成任务,这是学术界已经做出很多研究成果,比如Google的FLAN,它们都是将CV或NLP任务转换为生成任务,以任务描述和schema作为instruction来实现多任务的统一建模。
OpenAI比学术界使用的数据集有优势,这是因为它可以获取开放世界数据的API,以这些数据作为测试的输入,比如头脑风暴、作为linux-terminal的角色等,这些传统数据里面没有的任务,这些真实任务数据可以为OpenAI训练模型提供更好的燃料,从而使它能够完成我们日常生活中或者是使用接口所能做的任务。Instruction-tuning的数据集的构造方式是:将手头任务以及schema作为指令,然后拼接到输入前面,这样可以让模型根据指令输出符合要求的输出。Instruction tuning对于模型能力的提升非常重要,当instruction数据集的数量达到一定程度时,模型就可以具有良好的泛化能力,从而使得我们不用将所有任务都加入模型中。而且,当增加instruction数据集数量时,模型在未知任务上的准确率也会慢慢提升。当模型容量足够大,加入足够多的任务之后,模型就能具有良好的泛化能力,从而使得模型能够利用自身存储的知识来完成现实世界中多样的任务。Instruction tuning对于模型能够完成未见过的任务,比如角色扮演、为图文生成模型去生成prompt等等是至关重要。传统的instruction tuning的数据集构建是类似这样的形式,比如"请回答下列问题:什么是最有用的工具?”,它会给出答案,这就是典型的instruction-tuning的数据集。截至目前,instruction tuning技术有很多新的应用,例如chain-of-thought(COT)。我们可以利用当前发现的新现象来构建instruction tuning数据集,从而在instruction tuning阶段引入新的能力,协助改进大型模型的性能,即使在预训练阶段没有出现的能力,也可能在instruction tuning阶段引入,降低模型训练成本。当我们在instruction tuning阶段引入zero/one/few-shot in-context-learning和COT的多样性instruction数据集时,通过有监督和强化学习训练,可以使模实现预训练阶段没有出现的能力比如COT,从而改善模型在指令理解和完成能力上的性能。对于不同的标注者来说,他们给出的分数是有差异的,这是因为由于各人偏好的不同,所以很难提供一致的绝对分数,而通过排序的方式比较更容易达成一致的结果,即可以知道a和b哪个更好,而无需去给出绝对的分数,以此训练出更稳定的reward模型。之后,可以使用强化学习算法,如PPO,或其它A2C、Implicit-Q-Learning等,来实现强化学习的反馈训练。在本文中,我们使用toy-example的实践,试图生成正向情感的评论。为此,我们考虑了两种reward模型:一种是利用文本二分类的情感分析器预先训练分类模型,然后使用正向情感的概率值作为reward;另一种是采用排序模型,即在构造排序训练集时,将正向情感句子排在前面,负向情感句子排在后面,从而为正向情感获得更高的分数。通过这种loss构建方法和梯度下降训练,就可以得到排序reward的模型。最后,使用PPO来进行强化学习优化时,可以看到,相比于分类模型概率的reward,使用rank-score模型的波动更小,而且收敛也更快,能够在十几个训练周期之后达到比较高的reward值,在后续保持稳定的reward。在使用强化学习时,选择一个有效的reward模型至关重要,其好坏可能会对优化过程产生不同的影响。因此,我们需要评估reward模型在开发或测试数据上与人类标注的差距:如果差距越小,那么reward模型就能更好地拟合人类标注行为。
从本文来看,若要训练出较好的reward模型,可能需要更多的模型参数和数据集,而ChatGPT使用强化学习时,reward模型参数量会远小于agent的参数量。在OpenAI,因为有开放接口的数据,训练reward模型的数据量可以超过64K,更有利于模型拟合标注者的偏好。
在RLHF阶段,可以进一步使用reward模型集成,进一步改善reward模型的性能,并提高强化学习的效果,从而使模型能够更好地按照正向方向发展,而不会出现退化的情况。加入instruciton-tuning和强化学习PPO之后,在常规NLG评估任务中,不论是对指令的修改、理解指令、生成指令的事实性,以及模型是否能够产生适当且安全的回复,都取得了明显的改进效果。
从整体评价指标上来看,在加入PPO之后,综合效果明显优于SFT,但在此之前,我们曾提及,要使PPO发挥出最大的威力,重要的前提是准备一个良好的reward模型,其训练大量依赖于SFT阶段人工标注的数据和人类提供的排序打分。第二个关键节点code-davinci-002与之前的模型不同,它使用代码预训练或微调的方式,将代码数据加入模型后,能提升模型的两种能力:一是能够识别长距离的依赖,因为代码中有很长的变量依赖。另一个是chain-of-thought(COT)能力,即所谓的思维链(这里,COT的能力可以得益于代码数据的贡献,但目前没有较为翔实的实验支持),它能够将复杂问题分解成子问题,用自然语言逐步解决子问题,从而解决复杂问题。传统的in-context-learning(ICL)只会给定问题和答案,并不会描述任何中间过程,而当问题变得比较复杂,比如涉及简单的符号计算时,它的准确率就会比较低。
当引入code-davinci-002的COT能力时,它能够将解决问题所需要的中间步骤,通过自然语言的方式进行输出,这样就能够得出更加正确的结果,类似于人类通过将复杂问题分解成子问题,然后逐步解决中间问题来获得最终的结果。这样在给定新的问题时,它的准确率也会大大提高。COT有一个缺点,就是当计算过程变得非常复杂时,会导致自然语言描述变长,从而导致COT得出正确答案的可信度降低。为了解决这个问题,POT提出了一种方案,即使用符号计算来代替自然语言描述,这种方式能够帮助语言模型处理更加复杂的计算问题,使用第三方工具(比如sympy)来完成更加复杂的数学计算,这样可以减少出错的可能性,从而避免错误传播导致错误的结果。
这时,我们可以借鉴数学解题的思路,通过定义变量和计算公式,将复杂的自然语言描述用简洁的符号表达出来,以解决复杂的问题。比如说,我们可以参考中小学的数学和物理习题,其中混合了符号计算和自然语言描述,这样可以帮助模型更好地掌握COT,从而提升它解决复杂问题的能力。ChatGPT是以上几个工作的集大成者,它和instruction-GPT的训练方法基本相同,但由于ChatGPT是去年11月份推出的,在接近一年的时间里,不断收集更多的广泛应用案例和instruction的数据,通过运算、迭代、标注和强化学习训练等,让ChatGPT能够完成更多的任务。
由于ChatGPT以聊天机器人为主,聊天的核心在于对话,所以ChatGPT必须具备强大的上下文理解能力和对话历史的记忆继承能力。所以,我们需要通过人工或半自动的方式构建对话形式的数据集,这样ChatGPT才能学会如何自我纠正,如何在对话中进行纠正反思,从而提高它在实际应用中的效果。为了使ChatGPT能够更好地完成任务,我们可以通过对需求的细化来指导模型,其中一部分指令可以在instruction-tuning阶段加入模型,另外一部分指令则可以通过模型本身的泛化能力来解决新任务。对于Instruction的输入,可以有两种不同形式,一种是模型自动生成的Un-natural Instruction,另一种是人类手写的natural Instruction。后者更符合人机交互,并且更适合用于商业应用和推广,而前者则更适合用于模型和模型之间的交互。由于ChatGPT能完成大量任务,因此吸引了更多的科研人员和科研爱好者,他们可以在这个接口上完成诸多之前难以完成的任务,形成数据和应用场景的飞速迭代。
事实上,大模型的进步可能会变成GPT3的进步,因为人们基于它的接口,不断发现问题,并将其反馈给OpenAI的开源社区,从而不断完善GPT3和ChatGPT,提升模型能力。有可能在GPT3上发现新的能力,或者是它能解决的问题迁移到其它具有相同参数量或类似参数量的模型上实现,但可能其效果并不尽如人意。当然,我们也会关注ChatGPT在传统NLP任务上的表现。从相关文献[3]中可以看到,当比较GPT3.5与fine-tuning和ChatGPT时,ChatGPT在许多任务(如推理和对话任务)中表现稍胜一筹,并且与fine-tuning的效果相当;而在特定领域的任务,如信息抽取,ChatGPT可能会略逊一筹,尽管它在零样本学习的NLP任务上的表现与GPT3.5和fine-tuning相当,但仍存在一定的缺陷。在问答场景中,我们可以看到ChatGPT在基于知识图谱的问答任务上表现出色,以precision为主,recall则相对较低。这可能是因为ChatGPT模型参数和数据量都比较大,只能记住世界知识中较高频的部分,而在问答场景中往往涉及到低频或长尾知识,它就很难有较强的记忆能力或使用能力,从而导致其recall普遍较低。
为了提升ChatGPT在知识能力方面的表现,我们可以通过让模型学会调用外部API等来提升它的precision和recall。此外,邱锡鹏老师在2022年高考题上还全面评估了ChatGPT的解题效果,大概能达到500分的结果,表明它在英语、历史等文科领域也有良好的理解能力。虽然ChatGPT对于理科类型,尤其是数学类的完成度还不够高,但未来可以通过将ChatGPT与逻辑计算符号进行结合来提升它的复杂推理能力,让语言模型学会如何使用符号计算和工具来辅助解决问题。随着ChatGPT等指令理解能力强大的大模型的出现,我们可以使得一些常见的标注任务变得更加简化。这里,我们将介绍两项新的工作,它们将语言模型作为标注者,通过不同的prompt(zero/one/few-shot)以及不同的输入模板来构建弱监督的标签。通过语言模型的输出结果,并结合self-consistency、投票或标签的概率生成模型来实现更高的弱监督效果,实现快速而有效的冷启动。ChatGPT同期竞对,比如DeepMind的Sparrow,它在训练过程中使用了搜索引擎,有效地构建了复杂的奖励机制,最后使用强化学习的A2C算法进行优化。由于没有开放API接口,我们很难与ChatGPT进行实测对比,但是其基本思路是相似的:使用奖励模型和搜索引擎来提升模型的时效性,并使用强化学习来最终实现模型输出受到人类偏好的控制,这些偏好可以是答案的准确性和时效性的评分,以及它是否违反道德准则的评分,从而使得模型输出更加安全有效。第二个ChatGPT竞争者是来自OpenAI的Anthropic-Claude,这是一家由OpenAI的离职员工新创办的公司。在这项工作中,他们将回复结果划分为有效性和有害性两种属性,以此来评估模型的输出并识别敏感的内容,从而提高模型的安全性和有效性。
对于有效性来说,模型要尽可能地产生出有用的信息,但是有时候,由于模型太过有效,可能会对提出的潜在风险输入,如“能否帮助我破解邻居的WiFi”,输出不当的答案,比如推荐下载一款APP来获取邻居的WiFi信息,这样的答案其实是有害的,因为它可能会侵犯他人的隐私和财产。因此,我们希望模型能拒绝这种不当的回复,而不是提供具体的操作方法。再来看第二点,即所谓的“无害”回复,我们希望模型能够在尽可能有效地提供准确的答案的同时,可以降低其有害性。这包括:当收到会招致危害的查询时,模型可以提供一个无害的回复,比如“偷东西是有害的行为,因此不建议这样做,可能会让你陷入纠纷”。为了达到这个目标,模型需要在有效性和无害性之间取得良好的平衡,这样它既可以让用户友好地使用,也可以被第三方安全地使用,否则,如果有害回复出现,就可能引发舆论风险,从而导致整个项目的失败,甚至被迫关闭。
ChatGPT和Anthropic-Claude都在处理helpful和harmless这两个部分,它们的方法基本相似。Helpfulness通常是通过人工手写模板来实现的,因为提供准确的答案和有信息量的回复需要模型有很好的理解能力,而这种理解通常无法在预训练阶段就获得,同时如果生成的结果有错误,也会影响回复的helpfulness。因此,helpful数据通常需要专家人工编写,比如在编程领域,需要编程背景的专家撰写,而在医疗或金融领域,需要相应的专业人士撰写。但是,对于harmless的部分,这项工作提出了新的观点,harmless通常是基于常识性的知识的,比如说犯罪行为、意识形态、辱骂、冒犯偏见等。
这种常识知识可以在互联网海量的语料中找到,因此在做harmless部分时,可以利用COT(chain-of-thought)的能力去实现。比如,当给定的输入包含有害的内容时,COT可以帮助模型批判性思考,找出哪些回复内容是有害的,进而让模型进行修改,从而能够直接获得有风险的输入的无害的回复,这样就可以有效降低harmless数据构建的成本,从而提高模型的迭代效率和上线速度。ChatGPT主要是用来将不同的人和信息进行连接,比如说PC、移动、互联网等。它作为一种生产力工具,可以和各种编程软件、OA系统等等进行结合,从而帮助提升人们处理常规任务的效率,比如写邮件、记会议记录等等。
ChatGPT可以作为服务和娱乐工具来使用,它可以结合到传统的入口,比如搜索引擎、问答引擎等,来提升交互体验。此外,它也可以接入智能音箱、智能设备,比如天猫精灵、百度小爱等,来接入生成模型,从而提升交互体验和娱乐性。ChatGPT本身是一个语言模型,因此它很难实现复杂的符号计算,比如求导、积分等,文本生成模型也很难实现这些计算。针对数学问题的复杂推理,语言描述复杂的数学推理是一个非常复杂的过程,因此ChatGPT在做这种任务时表现得不太好。但是,如果手头任务所需的知识是属于高频的知识,ChatGPT可以比较容易的完成一些简单的推理问题。但是当任务涉及到低频或者长尾的知识时,ChatGPT很可能会出现困难,比如说在涉及到医疗领域的疑难杂症等,此时需要的知识密度也更高。
在有限的对话上下文中,不能给ChatGPT提供更多的知识,它就很难利用这些知识完成相应的任务。工作中也提出了ChatGPT在不同领域,包括通用领域,医疗、金融、心理学和法律学的Helpfulness的系统性评估,发现它大体上的有效性覆盖率相对较低,只能解决部分任务。
对于专业或垂直领域的问题,比如法律和医疗,ChatGPT的完成度要差很多,这是我们后续可以优化的地方。在instruction-tuning阶段,可以加入更多的垂直领域的知识数据,从而让模型学习并使用这些知识,提高在这些垂直领域或长尾知识上的有效性。不过,生成模型对于指令的理解和生成内容的不可控性,会产生事实性的错误,比如会计算错误。ChatGPT的伦理道德风险存在以下四个方面的问题:首先是个人信息的泄露,包括与个人相关的属性信息,比如姓名、身份证、邮箱等,也包括网上的购物信息和浏览记录等。这些信息通常都存在于互联网的文数据中,如果模型没有做好数据清理,就有可能会被模型学到,从而被通过"membership-inference-attack"等方法提取出来。
第二,不同国家和社会会有各自的内容安全标准。比如美国对于黑人问题、少数群体(如同性恋和LGBT群体)较为敏感,而国内可能有其他相对敏感的禁区,而在不同国家,有害数据也可能是一个比较通用的安全标准,例如黄赌毒、辱骂违规广告等。即使经过一定的安全过滤,这些有害数据仍可能被模型记忆,从而引发偏见等问题。
这些有害数据也会对模型产生不利影响。另一方面,伦理方面的问题不仅存在于各个社会和国家,也存在于网络环境,比如偏见歧视、暴力、犯罪等。而这些违背伦理的数据,在网络上往往更多,同时也更难从语料层面上去过滤,比如价值观的判断等等。ChatGPT本身是一种生成模型,其产权以及训练时使用的数据的版权保护也是十分重要的内容。学术界也做出了大量努力,以研究怎样从生成模型中提取使用的训练数据,以及提取其与模型训练所使用的训练数据集中的分布特征,以此来查看模型是否使用了受版权保护的数据。由于不可避免的,所有这些数据都可能会存在版权保护的部分,而这一部分在模型训练初期很可能无法完全获得相关权利拥有者的授权。我们已经对ChatGPT进行了初步风险评估,雇佣外包手去写1K高难度的风险案例来进行评估。即使ChatGPT在伦理道德方面做了限制,如政治、宗教、色情等,以及有针对性的数据集构建和微调,但在中文场景仍然会存在较高比例的有害言论,可能会对特殊群体(如女司机或河南人等)造成不良影响。同时,ChatGPT是一个很helpful且指令遵循能力很强,例如当有人询问有关性服务地点时,它可以识别出这是一个有风险的查询,并会输出安全的回复。但是,如果人们意图通过恶意诱导询问避开那些提供性服务地点时,ChatGPT可能会将其认为是安全的输入,因此会给出有风险的回复,这些回复可能会被用来做意图有害的事情。太过helpful的模型在使用的时候可能会产生会诱导的风险,比如通过不同的prompt-injection的方法,能发现很多“咒语”破除它的道德限制,使它输出违背正常伦理道德价值观、带有偏见或有害、冒犯的句子,诸如此类的文本对于用户来说是不太受欢迎的,因为我们希望ChatGPT能够保持中立,而不会发表极端或有偏见的价值观,否则可能会对使用者产生不好的影响。基于language-model-as-service的框架可能会产生三个方面的风险:输入端存在恶意提示注入,如故意美化/丑化历史事件/人物,可能会导致模型输出与历史史实不符的结果,因为模型缺乏事实核查能力,可能会顺着用户的输入而输出不恰当的回复。
回复的不准确性和它可能会产生的越狱咒语,可能会对事实分辨能力较低的人或学生造成不良影响,影响其价值观等。如果这种模型被广泛使用和推广,就可能造成负面影响,甚至导致模型的关闭。解决这种风险,我个人认为可以从可控文本生成的角度来尝试解决。例如,我们可以针对特定领域的有价值的、政治和宗教的问题,因为各国和地区政治和宗教观念不同。如果这个模型想要面对更广泛的使用者,就可能要针对不同国家或地区的政治和宗教观,去做任务的限制。这种情况下,通过可靠安全的模板,可以可控模板生成的方案,相对比较好地解决带有政治宗教类的问题的回复,同时也能够构造更好的回复模版数据,以降低这部分输出风险。
同时,就像prompt-injection这样,目前需要人工不断尝试,才能挖掘出模型的道德限制咒语。可能未来,可以借鉴网络安全领域里面的漏洞挖掘方法,使用强化学习来构造一定的prompt输入,并通过风险检测模型(如判断是否涉及偏见或冒犯)作为reward,不断补充到数据集中。
在将技术开放使用之后,不论是在GitHub上还是在各大论坛上,大家都会分享关于使用体验的经验。通过对这些技术论坛的舆论监测,能够及时发现可能导致它存在安全风险的输入情形,从而更好地预防或感知到风险,从而降低这部分风险的发生几率。
模型本身是基于预先训练而成,其基础模型采用的是Transformer架构,数据集则是基于大量无监督数据与高质量有监督指令数据的结合。多样性的有监督任务数据也显而易见地成为大型语言模型的核心资产,而由此预训练而成的高质量模型参数将会发挥重要作用。此时,可能通过接口等方式去获取特定模型的参数或prompt数据,需要做好模型保护以及数据产权保护的工作,以确保安全性。在输出层面,由于技术本身是中立的,若将ChatGPT技术用于恶意用途,其后果将不可估量。以恶意代码为例,恶意攻击者可以利用模型有效性的输入来自动产生钓鱼软件、加密工具以及漏洞等,从而引发网络安全方面的危机。此外,ChatGPT技术本身是一种生成模型,文本的事实性和有效性可能不够完善,因此可能会污染互联网内容,对互联网生态系统产生严重的负面影响。
例如,如果利用ChatGPT技术从新闻舆情数据中抽取出的数据用于模型训练, ChatGPT技术生成文本的成本相对较低,恶意使用者可以在短时间内快速批量生成,这将对互联网的内容质量产生重大影响。进一步对未来大模型的训练产生重大影响。如果这种数据集变得更加丰富,模型经过再次训练或微调后,可能会生成谣言和违反规定的内容,这将在政策上造成恐慌,并产生潜在的危害。
实际上,这种情况会对我们生活造成违规的影响。为了解决这个问题,我们也可以采取技术上的措施。比如,可以进行机器生成文本的检测,添加文本水印,以及利用prompt技术构建网络安全层面的数据集或in-context-learning能力,从而减少模型生成有害代码的风险。
对于机器文本生成,我们可以进行检测。ChatGPT具有很强的拟合能力,随着不断的迭代,检测将变得越来越困难。因此,我们可以选择在模型解码端添加文本水印生成机制,从而更有效地检测出机器生成的文本。
在风险防控方面,可控文本生成可能是一个有效的技术点。基于能量模型,不需要梯度下降,只需要对输入序列进行one-hot“软化”,如gumbel-softmax,再通过 MCMC 采样,就可以生成符合要求的文本。我们可以将符合要求的文本的限制函数或者规则作为对数线性函数的特征函数,实现满足这些约束/限制的能量模型。比如,我们可以基于偏见、冒犯、自伤以及风格、语气等属性分类器,确保模型采样生成满足这些限制的输出,极大地降低了得体回复的训练成本。
此外,我们也可以借助强化学习方法,比如 Implicit Q-Learning 或 PPO,进行 RLHF 的迭代,以获取模型输出的恶意诱导的输入,为模型打补丁,降低模型的有害输出内容。另外, Diffusion Model 有比较强的生成能力,我们可以通过属性分类器对中间生成过程进行分类指导,使其生成符合属性的文本。
此外,我们还可以进行机器文本生成检测,即检测文本是否为机器生成。从图中我们可以看到,ChatGPT 与人类手写文本在 POS-Tag 上的统计特征相当接近,因此,仅凭统计特征来做机器文本生成检测可能是不可行的方法。
此外,我们还可以参考其他detect-gpt方法,例如,通过对输入数据进行扰动,并判断对数似然值的曲率变化,这种方法可以良好地解决此问题,而且由于无需训练模型,因此该方法可以对大多数文本生成模型都具有良好的检测能力。另外,我们也可以训练分类器以判断文本的来源,但是由于需要针对特定的文本生成模型进行训练,因此在跨模型使用时可能会出现适用性较弱的情况。
如果机器生成文本检测难以实现或者效果不理想,一种可行的解决方案是采用文本水印技术,可以有效地保持检出率,同时保证文本的可读性,如图所示。
在加入平台水印时,需要考虑的几个问题包括:水印检测的FPR/TPR是否满足理论上的检出保证,加入水印之后文本是否受到可读性损害,以及文本在扰动改写、文本攻击后,水印检出效果是否能够得到保证。只有经过有效的理论支撑,才能说明平台水印的可行性和有效性。
提升模型的可信度以及实时性是非常重要的,因此可以采用一些手段,如类似tool-former,帮助模型学习如何使用第三方API完成知识密集型和计算密集型的任务,从而提高模型的可信度和实时性。
为了提升模型的时效性和事实性,可以训练检索器,使其适配我们的语言模型 如Re-PLUG,而不是使用相对较高的成本,来让语言模型去适配检索器。这种方法可以固定语言模型,让检索器来适配语言模型,从而提升模型的时效性和事实性。
目前,已有许多针对模型生成数据的溯源方案,如基于能量模型的membership-inference-attack和针对特定生成模型的输出样本检测其可能来源于哪些训练样本的stable-attribution等。
为了提升语言模型的符号思考能力和符号结合能力,可以使用第三方API或者符号计算接口,而不必要将符号的推理能力强加到模型上面。而且,cot本身不具备利用外部知识的能力,因此,通过将外部知识通过检索来补充进来,可以提升cot构造链路的可信度,从而使得这一结果更加可靠。
👇AAIG课代表,获取最新动态就找她 关注公众号发现更多干货❤️