大家好,这里是 NEewBeeNLP。ChatGPT 火爆出圈了,有些人惊叹于它的能力,当然也有部分人觉得也就那样。这就不得不提 Prompt 了,据说【相关文献1】,ChatGPT 效果好不好完全取决于你的 Prompt,“看来 Propmt 也成一个技术活儿了”。 当我这么想的时候,没想到国外居然已经有了成熟的售卖 Prompt 的网站[1],这玩意儿居然成了 NFT(Non-Fungible Token),真是世界变化太快,本人过于迟钝。 其实,对于 ChatGPT 的能力,作为 NLPer 第一时间就领教过了,作为行业内人士,而且多年来一直关注文本生成领域,ChatGPT 带给我的冲击和震撼是非常大的,甚至那几天晚上连觉都睡不着,真是焦虑感爆棚。记得在DataWhale团队群里一次讨论 ChatGPT 时,我发过这样的消息,原话如下: NLP真的考虑要转行了
过了几天看到这篇文章:ChatGPT 会对未来 5 年的 NLP 算法从业者带来怎样的冲击? 发现业内大家也是差不多的想法(虽然我发消息在这篇文章之后,但之前的确没看过),尤其是张俊林博士的观点个人比较认同,NLP 工程师的确不容乐观。这里不是说这个职业的职责不容乐观,而是说整个行业可能会受到冲击。 有点跑偏了,说回 Prompt,春节时就想用 ChatGPT 生成一些祝福语,突然发现自己掌握的 Prompt 出来的效果不太好了。Google 了一下结果就发现了 The Art of ChatGPT Prompting: A Guide to Crafting Clear and Effective Prompts[2] 这本电子书,再一搜,发现这个领域居然已经发展到如斯境地。本着学习的心态,阅读整理了一些 Prompt 工程的资料(见《文献和参考——核心文献》),是有此文。本文主要介绍关于 ChatGPT Prompt 的方法,我会结合这些资料加上自己的理解写出来,同时会在中文环境下做相关试验。 背景简介首先,我们不妨自己先想一想,会怎么写 Prompt。随便一想就一大堆:
这里面大部分内容 ChatGPT 都可以完成的相当不错,至少读起来非常通顺流畅,具有逻辑性。当然,我们不排除其中有一些问题,尤其是知识类的(有时候真的是一本正经的在乱说),关于这方面可以阅读【相关文献2】和【3】。 Prompt 其实在 NLP 领域是一个比较成熟的东西,比如那篇 2021 年的综述[3],再比如 Google 的 FLAN[4] 里面也提到了 T5、GPT3 和 FLAN Prompt 的区别,还有这篇多任务 Prompt[5] 提供了大量的 Prompt 示例(这篇 Paper 161 页,Prompt 就有 133 页)。那怎么到了 ChatGPT 这里 Prompt 一下就有如此地位呢?我觉得主要有两个原因:
因此,从设计的角度来看,要想发挥 ChatGPT 的最大能力,不仅仅要靠它的 In-Context 能力,Prompt 也应该仔细设计,或者说尽量贴近训练时的样子。换句话说,它是遇强则强,遇弱则弱,遇傻逼则傻逼。。。 Prompt设计ChatGPT 有不少特点,比如:跨语言、同时服务多人(伸缩性)、个性化(利用历史记录)等。但最值得一提的是定制化,也就是可以定制语气、风格、类型等,这个也可以包含在你的 Prompt 里。 Prompt原则首先要说的是设计原则,主要包含以下几个:
举几个【核心文献1】中的例子(换成了中文):
当然,这几个例子是站在「你要获得有效信息」的基础上说的。也就是说,这些原则是针对你想要通过 ChatGPT 获取到有用信息或完成特定任务。抛开这个前提,一些开放、宽泛的问题也无可厚非。一方面,可以了解模型在这类问题上的能力;另一方面,ChatGPT 本身并没有规定你必须问什么不问什么,这种问题也是一种信息。 事实上,ChatGPT(或者说,一个有追求的机器人)也是希望我们把它当做合作伙伴(助理)、导师(教育)、朋友(聊天、情感)、百科全书(信息获取)。我们甚至可以想象,以后一定会出现类似科幻电影《人工智能》中那个万事通博士(电影 1 分 26 秒),或者科幻小说《The IWM 1000》中的那个 IWM 1000 仪器(虽然这个,额,有点悲观色彩,但那是另一个话题了)。噢,我还问了 ChatGPT 大卫的问题,我认为他回答的不错,感兴趣的可以看后面《附录一》。 Prompt步骤 一般包括以下步骤【核心文献1】。 对话前:
对话中:
对话后:
再举个【核心文献1】中的例子,依然换成中文: 我希望你充当 JavaScript console。我将键入命令,您将回复 JavaScript console 应显示的内容。我希望你只回复一个唯一代码块中的终端输出,没有别的。不要写注释。除非我指示你这样做,否则不要键入命令。当我需要用英语告诉你一些事情时,我会通过将文本放在大括号内{像这样}来做到这一点。我的第一个命令是 console.log(“Hello World”); 来看看这个例子:
简单的执行效果如下: 关于一些新手常见的错误,【核心文献 5】Rob Lennon 总结的非常到位:
不过与其说这些是错误,还不如说是 ChatGPT 不擅长某些情况。ChatGPT 拥有的是语言模型提供的 In-Context 能力,这是它的内核;Prompt 是一种引导和某种程度来说——限制(可以理解为某种规则)。关于这部分内容我们在后面的《多想一点》部分进一步探讨。 Case一瞥看了上面的例子,我们来一个 NLP 命名实体任务的例子(来自一个朋友,稍作改编),材料是来自维基百科的一段刘亦菲简介。
结果展示如下: 再来一个生成的例子,我们让他写一段年终总结,Prompt 如下: 今年我们团队主要做了以下几件事:第一件,提升业务点击率20%以上;第二件,提升运营效率50%以上;第三件,降低团队成本20%左右。请围绕上面几件事写一段300字左右的晋升材料,我是项目主要成员,务必要突出我本人的个人能力。 再来一个改写的例子:
写的不是很好,我们给多点提示继续: 刚刚写的不太算甄嬛体的风格。请注意,甄嬛体风格的要点如下:
哈哈,还行,倒数第二段有点拉胯,不过本宫比较满意,就不再继续调教了。 通过这几个例子我们不难看出,只要 Prompt 足够「到位」,ChatGPT 都能理解的相当不错,也能生成不错的结果。这看起来就好像你给一个人在布置任务一样,把你的要求清晰准确的告知对方,对方帮你把事情做完。【核心文献2】有大量的示例,感兴趣的读者不妨一试。 更多Case刚刚的 Case 只是很少的一部分,这部分我们将整理一些【核心文献3】中的来自各方的最佳实践,进一步扩充视野。我们这里统一换成中文。 来自 OpenAI 的示例 例1:找代码 Bug
结果反馈: 例2:知识问答 在LaTeX中,怎么表示一个微分方程式? 例3:代码生成问题,这里换了一个算法问题。
还有部分有趣的例子包括:
以上内容均来自【相关文献9】。 来自 Syed Huq 的一些有趣使用场景
以上内容来自【相关文献10】,可以点击链接查看每一个场景的实际效果。 来自 Rob Lennon 的建议
你是一家顶级市场研究公司的才华横溢的分析师,毕业于哈佛商学院。指导我创建与 B2B SaaS 公司的 C 级高管联系的内容。我会问哪些开放式问题?优先考虑不常见的专家建议。
写一首关于文案的诗。
分析下面的文本的样式、语音和语气。使用 NLP,创建提示以相同的风格、语音和语气撰写新文章: 这里,我贴了一段自己之前的一篇文章:人生随笔[7],他给出这样的反馈:
而且用这种风格作为 Prompt 给出一段重写后的示例,感兴趣的读者可以进行尝试。
写一篇简短的文章,说明为什么文案写作是 2023 年的一项基本技能。
就使用 ChatGPT 创建更有效的内容提供最讽刺、嘲讽的建议。
主题:如何发展您的教练业务 以上内容来自【核心文献4】,个人感觉非常值得一试,强烈推荐。 另外,该作者还开发了一个 AI 写作系统:AI Content Reactor[8],感兴趣可以一试。 对写作或 Prompt 感兴趣也可以加入他的邮件推送列表:Join 5,082+ creators, solopreneurs, and founders[9]。 多想一点关于 ChatGPT 的 Prompt 我们已经有了一定程度的理解,这部分内容主要想务虚地探讨一下为什么效果好,以及为什么需要 Prompt,而且效果那么依赖 Prompt? 首先是大模型的超能力——这个的确是自己以前没意识到的,只知道 BERT 这么大的模型比 TextCNN 这类效果好,也知道更大会更好;但确实没有一个具体的概念——到底多好。从 T5 统一所有 NLP 的输入、GPT3 的 In-Context,到后面 Prompt 和 MTL 的大发展,好像都没有感受到那种大突破——直到现在,我们都知道了。 我记得之前看过一篇研究 BERT 究竟学到了什么的 Paper:A Primer in BERTology: What we know about how BERT works[10],这篇 Paper 的结果是在理解范围内的:能学到一些句法和语义知识,在推理和常识方面不太理想。其实,ChatGPT 依然如此,但没想到却出彩了。 另外,也是我一直以来对大模型不太感冒,感觉有点无脑,所以会对类似 R-Drop[11] 这类 Paper 比较感兴趣,还会在小模型上做一些实验[12]。 但大模型一直都比较关注其设计,比如 UniLM[13]、T5[14] 、DeBERTa[15] 等,尤其是 T5 以及后面的 ExT5 对任务的统一,UniLM 对模型架构的统一,这种 Unified 做法实在是太吸引人了,让人拍案叫绝。这期间其实对 GPT 系列关注不太多,GPT2[16] 的 Paper 和代码精读过,但主要是当时有生成的业务需要。GPT3[17] 就一直没仔细读,直到前几天才带着重新学习的心态读了一下,收获很大,有点后悔当时没有认真研读了。对于 In-Context 方面的关注源于 FaceBook 的 MetaICL[18],主要是看到了 Meta Learning 这个东西,这也是一种 Unify,而且更加抽象——个人很喜欢。 总的来说,在语言大模型方面,其实大家研究的都差不多,都在慢慢关注到 In-Context 能力(T5 不是也可以这么理解么)。不过 OpenAI 是一条路走到底,这个只能佩服了。如果说从一开始就有这种前瞻的认识和理解,那只能说太太太牛逼格拉斯了。这可不是写写文章自己随便研究研究,每年多少亿资金砸进去啊,真有魄力。 那么,为什么是 ChatGPT?这就不得不说接下来的强化学习了。关于强化学习在 AI 中的作用我在很久以前在 NLP与AI[19] 这篇文章中就提到过了,这些年也在关注这个领域的进展。在 ChatGPT 前关注到的最新的研究是 Allen AI 的那篇 Is Reinforcement Learning (Not) for Natural Language Processing?: Benchmarks, Baselines, and Building Blocks for Natural Language Policy Optimization[20],额,这么长的标题。当时正好是某个工作日上午,当日常刷论文刷到这篇并快速浏览完后,激动的恨不得在工位上大吼几声。如果说深度学习是在学习表征的话,强化学习就是在学习规则。 我们知道,强化学习一般是在一个发散的空间内探索,所以这里必须要有个东西把规则限制到特定区域内。怎么做呢?要么,我们已经搞清楚语言及背后的意识和思维的奥秘,直接编码规则;要么,直接给出结果,把过程当做黑盒,我就要这个结果,给我往这个方向靠,有点类似于早期控制论那一套人工智能的思路。这就是 Instruct + HF(Human Feedback)的作用了——也是 ChatGPT 之所以成功的一个非常重要的设计。Instruct 引导模型的 In-Context 能力,同时把结果限制在一个范围内,HF 则给出结果反馈,让这个结果往期望的方向上靠。刚刚我们提到强化学习是学习规则,但是这个规则可不是那么容易学的,而 Instruct + HF 就是一个不错的范式。训练完成后,Instruct + 语言模型就可以做到在「用户满意规则」下完成任务了。不能不说,这真的是一个极其精(鸡)巧(贼)的设计。 另外,Instruct 还有个非常重要的点,就是通过 Instruct 可以忽略各种不同的任务,因为什么任务都可以通过 Instruct 给它转成语言模型的生成过程。这点也在 GPT3 Paper 的 Introduction 里解释为什么要这种 In-Context 能力时有提到,简单总结就是 “预训练-微调范式每个任务需要新数据,而且两个阶段数据分布相差太大,可能导致泛化很差”,这非常不够 Human-like,人类往往将多个任务和技能无缝混合或自由切换。再想想 Instruct 对强化学习规则的作用,再想想 Instruct 同时还使得 ChatGPT 具备了一定的可解释性。无论是有意设计还是无意为之,不得不说,和 T5 以及我们之前认知范围内的 Prompt 真的是看似相似,其实完全在两个不同的维度。再次感慨一句:真牛逼——既为这样的设计,也为他们的坚持和执着。 关于设计就说这么多,不过还有一点我觉得也值得一提:和之前不一样的是,ChatGPT 并不是一个算法,更像是一套方案。也就是综合了多种方法的一个有机系统。这也是我个人一直以来的观点,也符合大部分写过复杂工程工程师的认知——没有银弹。我始终相信,没有一个算法是“一招鲜,吃遍天”,我不确定是否会产生真正的强 AI,但即便有,那也一定是一个整合而成的有机系统。这是人类几千万年进化史告诉我们的结论——一个有机整体的系统更加鲁棒、更加具有反脆弱性。一个系统可以犯错,甚至不断犯错,但只要他具备一定学习能力,就总是会不断变得强大。 最后,是关于 ChatGPT 的不足,关于这点本文《Prompt设计》最后部分其实已经涉及一些;GPT3[21]《局限和影响》部分也有部分提及。当然,简单来说,最突出的还是常识和推理方面。关于常识,我们可以依靠知识图谱(Knowledge Graph)、世界知识(Commonsense World Model),甚至是与环境交互(Embodied AI);而关于推理,也许 Model Cascades、CoT(Chain-of-Thought)等会发力,但我觉得也不能排除符号 AI 的再度兴起,说实话,自从几年前读了西蒙的《人工科学》[22]我就在期待这一天了。值得一提的是,在这两个点上,Google 非常有竞争力,真是期待呀。
|
|