作者:张家俊教授
单位:中国科学院自动化研究所
原文:https://zhuanlan.zhihu.com/p/606478660
ChatGPT最令人非常惊艳的是它的通用性,相比于GPT-3需要通过设计非常精巧的提示来实现效果并不太好的各种NLP能力,ChatGPT已经让用户感受不到提示的存在。作为一个对话系统,ChatGPT让用户自然提问便可实现从理解到生成的各种任务,而且性能在开放领域几乎都达到了当前最佳水平,很多任务超越了针对特定任务单独设计的模型,并且在代码编程领域表现卓越。
具体而言,自然语言理解能力(尤其是用户意图理解能力)十分突出,无论是问答、聊天、分类、摘要、翻译等任务,尽管回复不一定完全正确,但是几乎都能够领会用户意图,理解能力远超预期。相比于理解能力,ChatGPT的生成能力更加强大,可以针对各种问题生成具有一定逻辑且多样化的长文本。总的来说,ChatGPT表现出的更多是惊艳,是通向AGI的初步阶段,一些技术瓶颈解决后会更加强大。
对于ChatGPT表现案例的总结已经非常多了,这里主要总结一下自己对ChatGPT技术问题的一些思考,算是与ChatGPT断断续续交互两个多月的一个简单总结。由于无法了解ChatGPT的具体实现技术和细节,所以几乎都是主观猜想,肯定有很多不对的地方,欢迎一起探讨。
1. ChatGPT的通用性为何做得如此之好?
只要使用过ChatGPT,我们就会发现它不是一个传统意义上的人机对话系统,实际是一个以自然语言为交互方式的通用语言处理平台。2020年的GPT-3虽然拥有了通用能力的雏形,但是需要精心设计提示语来触发相应功能,而ChatGPT允许用户采用非常自然的提问就可以准确识别意图完成各种功能。传统方法往往先进行用户意图识别,再针对不同意图调用相应功能的处理模块,例如通过用户数据识别出摘要或翻译意图,再调用文本摘要或机器翻译模型。传统方法在开放域的意图识别准确率不够理想,而且不同功能模块各自为战无法共享信息,难以形成强大的NLP通用平台。ChatGPT突破了各自为战的模式,不再区分不同功能,统一认为是对话过程中的一种特定需求。
那么,ChatGPT的通用性为何做得如此之好呢?一直在思考这个问题,由于没有条件实验证实,所以仅能猜想。根据Google的Instruction Tuning研究工作FLAN,当模型达到一定规模(e.g. 68B)且Instruction任务的类型达到一定数目(e.g. 40),模型就涌现出对新意图的识别能力。OpenAI从其开放的API中收集了全球用户各种任务类型的对话数据,根据意图分类和标注,然后在175B参数GPT-3.5上进行Instruction Tuning,自然就涌现出了通用的意图识别能力。
2. 为什么面向对话的微调没有遭遇灾难性遗忘问题?
灾难性遗忘问题一直是深度学习中的一个挑战,经常因为在某个任务上训练后就丧失了在其他任务上的性能。例如,一个30亿参数的基础模型,先在自动问答数据上进行微调,然后在多轮对话数据上进行微调,结果会发现模型的问答能力大幅度下降。ChatGPT似乎不存在这个问题,其在基础模型GPT-3.5上进行了两次微调,第一次依据人工标注的对话数据进行微调,第二次根据人类反馈的强化学习进行微调,微调使用的数据很少,尤其是人类反馈的打分排序数据更少,微调后竟然仍然表现出强大的通用能力,而并没有完全过拟合到对话任务。这是个非常有趣的现象,也是我们没有条件验证的现象。猜测可能有两方面的原因,一方面是ChatGPT使用的对话微调数据实际可能包含了非常全面的NLP各种任务,正如InstructGPT中对用户使用API的问题分类可以发现,很多都不是简单的对话,还有分类、问答、摘要、翻译、代码生成等等,因此,ChatGPT实际是对若干任务同时进行了微调;另一方面,可能当基础模型足够大之后,在较小数据上的微调不会对模型产生很大影响,可能仅在基础模型参数空间非常小的邻域中优化,所以不会显著影响基础模型的通用能力。
7. ChatGPT能否解决事实可靠性问题?
答案缺乏可靠性是目前ChatGPT面临的最大挑战。特别是针对事实性和知识性相关的问答,ChatGPT有时候会一本正经地胡编乱造,生成虚假信息。即使让它给出来源和出处或者参考文献,ChatGPT通常也会生成一个不存在的网址或者从未发表过的文献。不过,ChatGPT通常会给用户一种比较好的感觉,也就是很多事实和知识它似乎都知道。实际上,ChatGPT就是一个语言大模型,语言大模型本质就是一种深度神经网络,深度神经网络本质就是一种统计模型,就是从高频数据中习得相关模式。很多常见的知识或事实,在训练数据中出现频率高,上下文之间的模式比较固定,预测的词语概率分布就比较尖锐,熵比较小,大模型容易记住,并在解码过程中输出正确的事实或知识。但是,有很多事件和知识即使在非常庞大的训练数据中也很少出现,大模型便无法学习到相关模式,上下文之间的模式比较松散,词语预测的概率分布比较平滑,熵比较大,大模型在推理过程中容易产生不确定性的随机输出。这是包括ChatGPT在内所有生成式模型的固有问题。如果仍然延续GPT系列架构,基础模型不做改变,从理论上讲是难以解决ChatGPT回复的事实可靠性问题。和搜索引擎的结合目前看是非常务实的一种方案,搜索引擎负责搜索可靠的事实信息来源,ChatGPT负责总结和归纳。如果希望ChatGPT解决事实回答的可靠性问题,可能需要进一步提升模型的拒识能力,也就是过滤掉模型确定无法回答的那些问题,同时还需要事实验证模块来验证ChatGPT回复的正确性。希望下一代GPT能够在这个问题上取得突破。
8. ChatGPT能否实现实时信息的学习?
ChatGPT的交互修正能力使得它看起来似乎拥有了实时的自主学习能力。正如上述讨论,ChatGPT可以依据用户提供的修改意图或者更正信息,立刻修正相关回复,表现出实时学习的能力。实则不然,学习能力体现的是学到的知识是普适的,可以运用在其他时间和其他场合,但是ChatGPT并没有展现出这个能力。ChatGPT只是在当前的对话中能够根据用户反馈进行了修正,当我们重启一个对话,测试相同的问题时,ChatGPT还会犯相同或类似的错误。一个疑问是为何ChatGPT不将修改后正确的信息存储到模型中呢?这里有两方面的问题。首先,用户反馈的信息并不一定是正确的,有时候故意引导ChatGPT做出不合理的回答,只是因为ChatGPT在基于人类反馈的强化学习中加深了对用户的依赖程度,所以ChatGPT在同一个对话过程中会非常相信用户的反馈。其次,即使用户反馈的信息是正确的,但因为可能出现频率不高,基础大模型不能根据低频数据更新参数,否则大模型就会对某些长尾数据进行过拟合从而失去通用性。所以,让ChatGPT实时进行学习非常困难,一种简单直观的方案就是每经过一段时间就利用新的数据微调ChatGPT。或者采用触发机制,当多个用户提交相同或相似反馈时触发模型的参数更新,从而增强模型的动态学习能力。
内容中包含的图片若涉及版权问题,请及时与我们联系删除
评论
沙发等你来抢