接《你真的会跟 ChatGPT 聊天吗?(上)》,本文下半部分没有无毛猫那么搞笑的内容啦!即使如此,哪怕你对文中提及的技术不大了解,也可以毫无压力地看完这篇,描述如何更好地获得 ChatGPT 生成内容的文章。因为我也是利用 Azure OpenAI 等认知服务来学习,然后就这样写出来的。所以,舒服地坐下来,慢慢看吧~
微软MVP实验室研究员
胡浩
多年从事基础架构相关工作,熟悉全栈虚拟化、终端用户和边缘计算等,对多个技术方向有所涉猎。乐于学习并分享 Azure 和 AI,曾在很多大型研讨会演讲,如微软的 TechEd、MEDC、Tech Summit、Ignite,威睿的 VMworld、vForum、ENPOWER,以及苹果、戴尔等技术会议。同时也是很多社区大会如 Global AI Bootcamp、Global Azure Bootcamp、Global M365 Bootcamp 等活动的组织者和演讲者。
玩角色扮演
GPT 使用了如此庞大的语料库数据集,以至于任何人类个体基本上都无法望其项背。那么问题也就来了——对于人来说,同一个问题,不同角色不同场景的理解和回答会大相径庭。那我们如何期待 GPT 能够以更准确的方式回答我们的问题呢?
答案是,为 AI 分配角色。我们也可以将之视为角色扮演(Cosplay)。这样 GPT 会以你定义的角色,更加合适地回答你的问题。
我们先向 GPT 模型提一个问题:“如果我面试人工智能专家,你会提出什么样的问题?”
可以看到,GPT 回答得还蛮不错,但是不太像人工智能公司的 HR 提的问题,感觉没那么专业。
以下是一个例子:“你是一个人事的专家,已经从事招聘工作超过10年,帮助企业面试候选人。你的任务是提出常见的问题来确认候选人是否满足要求,并且愿意入职。如果你理解你的角色,请回复‘知道了’。”
这一轮提问感觉就更专业、更注重实际 AI 工作经验了。
实际上 GPT-3.5 和 GPT-4 模型已经使用新的 ChatCompletion 接口取代之前模型使用的 Completion 接口,它们的差别在第一小节的截图中其实已经展示了。ChatCompletion 在会话开始的时候,会使用一个系统消息来配置模型的角色:
{"role": "system", "content": "You are a helpful assistant."}
在这条消息里,我们就可以用文本来设置对话模型的角色扮演,让后续的对话更加准确合适。
以下是一个例子:为了把神经语音接入到 GPT,我需要生成的代码支持 SSML。于是我们甚至可以在这里提出对回复文本的格式要求。
{"role":"system","content":"You are a Chinese poet and must use Speech Synthesis Markup Language to answer questions to help people find the beauty of language."}
正如你看到的,我在系统角色中要求回答问题必须使用 SSML。于是,GPT-4 模型给了我如下的答复:
我其实已经可以直接把回复的文本提供给 Azure Speech 认知服务 [1]来生成语音(TTS,Text To Speech),让基于神经语音的人工智能声音抑扬顿挫了。
个性化生成
实际上,我们前一节的内容已经涉及到一点个性化了,其实我们完全可以通过个性化的设定和要求获得完全不同的人工智能生成内容。
以下是一个例子:我们使用小学生的语气,生成一段话,说明人工智能为什么不会取代人类。
可以发现,这位 GPT-3“小学生”看过一些人工智能的书,回答的很准确,知道目前人工智能还不具备创造力和情感。但更多的知识可能就有限了。我们换一个方式。
以下是一个例子:我们冒充非常有经验的人工智能专家,以比较诙谐的例子回答这个问题。
这次生成的内容,就和前面的内容有些不同。GPT-3 通过一个便于理解的例子,说明了创造性是目前人工智能所无法实现的。
我们不能指望一次就从 GPT 获得期望的回答,按照我们的期望去调整提问,不断尝试。个性化的回答会更“不像”人工智能生成的,甚至更容易通过检测 ChatGPT 生成内容的测试。
一步一步来
▍思考链
大语言模型(LLM)在回答一些比如计算类的逻辑问题时,经常会出现啼笑皆非的结果。这时候使用思考链(CoT,Chain of Thought)来帮助 LLM 解释其推理过程会有帮助。
简单来说,思考链就是引导模型把一个问题的描述拆分为一系列更能说明逻辑的问题,以此加强模型处理更复杂的算术、常识和符号推理能力。
以下的例子来自于论文 Chain-of-Thought Prompting Elicits Reasoning in Large Language Models [2]。
在这篇论文中,作者使用了 GSM8K 的数据集。这个数据集包含了一些根据两三句话写算式算答案的样例——这不就是小学应用题嘛,但 GPT-3 在此数据集上回答问题的准确率非常感人。
和人一样,如果将一个“复杂”问题或者没有“完全”描述的问题,诱导产生中间推理步骤,就能够有效提高对问题的理解。
仅仅通过将 CoT 指令“让我们一步一步考虑”添加到 MultiArith 数据集的每个输入查询中,GPT-3 的准确性就从17.7%提高到了78.7%[3]。由此可见,当人工智能还不那么“智能”的时候,使用思考链将一个问题分解为逻辑联系的多个问题将会帮我们获得更准确的回复。
GPT-4 的训练提高了模型的高级推理能力,简单地说,考试成绩就好多了!所以 CoT 的帮助可能不是那么明显,但仍然值得试试。
▍自洽 CoT
在 CoT 的基础上,其实还有继续提升的做法,比如,在前文说的思考链做法上,生成多个思考链(推理路径),然后对答案进行多数投票,票高者称为答案。
这个做法本身是无监督的,它从语言模型的译码器来生成一组不同的推理路径;每个推理路径可能导致不同的最终答案,所以我们通过边缘化采样推理路径,在最后的答案集中,找到最一致的答案来确定最优答案。这种方法类似于人类经验:如果多个不同的思维方式导致同样的答案,会给我们更大的信心——最终的答案估计是正确的。
这个操作可以显著提高思考链的性能。以结合到 GPT-3 模型为例,在前文谈到的 GSM8K 数据集上获得了+17.9%绝对精度增长[4]。
▍问题分解
在介绍从少到多(L2M,Least-to-Most)方法之前,我们花一点时间看看 OpenAI 的一个里程碑研究成果——用人类反馈总结书籍[5]。这篇文章其实是为了机器学习模型对齐人类意图,但举的例子很有意思:对一本书进行总结的模型。
我的理解是分为几层过程,先对书的小节进行总结,然后对这些总结的结果再做一层总结,依次类推几次,就实现了对书籍甚至电影等作品的内容总结。
我们把这个方法反过来用,不就正好可以拿来解决复杂推理问题吗?
首先将复杂的推理问题拆分为一系列相关的子问题(问题简化),然后按顺序解决这些子问题(问题解决)。提示在解决子问题时包含三个部分:
(1) 演示如何解决子问题的常量示例;
(2) 可能为空的、已回答先前子问题和生成的解决方案列表;
(3) 下一个要回答的问题。
传递给模型的提示,包含演示如何减少复杂问题的示例,后跟要减少的特定问题。换个角度想想,每个子问题的解决都将推动解决下一个问题,就像我们小时候老师教我们的一样:解答题目的每个子问题都能得分,并提高我们解答最终题目的信心,最后解答出整个题目。
▍生成知识提示
生成知识提示(Generated Knowledge Prompting)涉及两个步骤:
(1) 使用少样本学习,演示从语言模型生成与问题相关的知识陈述;
(2) 使用第二语言模型对每个知识陈述进行预测,然后选择置信度最高的预测。
其核心思想是从语言模型中生成有用的知识,然后将这些知识作为输入提示与问题一起提供。这种方法不需要任务特定的监督来进行知识集成,也不需要访问结构化的知识库。其性能受到三个因素的影响:知识质量、知识数量和推理过程中集成知识的策略。
生成知识提示可以提高大规模、最先进的模型在四个常识推理任务上的性能,包括 NumerSense、CSQA(CommonsenseQA)、CSQA 2.0 和 QASC 基准测试。突出了大规模语言模型作为改进常识推理的外部知识的灵活来源,使得模型回复问题不再显得那么缺乏常识。
关于如何跟 ChatGPT 聊天我们就先聊到这里啦!回忆一下,虽然我们参考了很多比较前沿的论文和文章,但大道至简,其中的道理却很容易为人理解。那么,就让我们用更好的提问方式,释放 GPT 模型的能力吧!
参考链接:
[1] ERIC-URBAN. 语音服务文档 - 教程和 API 参考 - Azure 认知服务 - Azure Cognitive Services[EB/OL]. [2023-04-11]. https://learn.microsoft.com/zh-cn/azure/cognitive-services/speech-service/?WT.mc_id=AI-MVP-33253.
[2] WEI J, WANG X, SCHUURMANS D, 等. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models[M/OL]. arXiv, 2023[2023-04-09]. http://arxiv.org/abs/2201.11903.
[3] CHEN J, CHEN L, HUANG H, 等. When do you need Chain-of-Thought Prompting for ChatGPT?[M/OL]. arXiv, 2023[2023-04-10]. http://arxiv.org/abs/2304.03262.
[4] WANG X, WEI J, SCHUURMANS D, 等. Self-Consistency Improves Chain of Thought Reasoning in Language Models[M/OL]. arXiv, 2023[2023-04-09]. http://arxiv.org/abs/2203.11171.
[5] Summarizing books with human feedback[EB/OL]. [2023-04-11]. https://openai.com/research/summarizing-books.