Andrej Karpathy在阅读 Claude 的系统提示词后, 认为可以将 system prompt提升到作为和预训练、微调同级别的调教大模型的方法。(Claude 泄露的系统提示词可以在这里看到: github.com/asgeirtj/system_prompts_leaks/blob/main/claude.txt )。
下为全文翻译:
关于大语言模型如何学习和提升能力,我们(至少)缺少一种主要的范式。我不确定该如何称呼它,也许它已经有名字了——不妨称之为“系统提示学习”(system prompt learning)?
预训练(Pretraining)是为了获取知识。
微调(Finetuning,包括监督学习SL/强化学习RL)是为了形成习惯性行为。
这两种学习都涉及到参数的改变,但很多人类的学习感觉更像是一种“系统提示”的改变。当你遇到一个问题,琢磨出一些解决方法后,会用相当明确的语言“记住”某些东西,以备下次使用。例如:“看起来当遇到这类问题时,我应该尝试那样的方法/解决方案。”这感觉更像是给自己做笔记,也就是说,有点像(聊天机器人的)“记忆”(Memory)功能,但并非用来存储每个用户的随机事实,而是存储通用的、全局性的问题解决知识和策略。大语言模型简直就像电影《记忆碎片》 里的主角,只不过我们还没给它们配备“草稿纸”。请注意,这种范式也更为强大和数据高效,因为一个由知识指导的“复盘”阶段,相比于一个标量奖励信号,是一个维度高得多的反馈渠道。
我是在阅读了 Claude 的系统提示后,才有了这些“浴中思奇”并随手记下的。Claude 的系统提示目前似乎有大约17000个词,其中不仅规定了基本的行为风格/偏好(例如,拒绝各种与歌词相关的请求),还包含了大量通用的问题解决策略,例如:
“如果 Claude 被要求计算单词、字母和字符的数量,它会在回答之前进行逐步思考。它会通过为每个单词、字母或字符分配一个编号来明确地计算它们。只有在完成这个明确的计数步骤后,它才会回答用户。”
这是为了帮助 Claude 解决类似“草莓(strawberry)中有几个'r'”这样的问题。在我看来,这种问题解决知识不应该通过强化学习固化到(模型的)权重中,或者至少不应该立即或完全这样做。当然,它也不应该来自于人类工程师手动编写系统提示。它应该来自于“系统提示学习”。这种学习在设置上类似于强化学习,但其学习算法不同(编辑文本 vs 梯度下降)。大语言模型系统提示的很大一部分可以通过“系统提示学习”来生成,这过程有点像大语言模型为自己编写一本关于如何解决问题的书。如果这个方法可行,它将成为一种新的、强大的学习范式。当然,还有很多细节有待解决(例如,编辑是如何工作的?我们能否/是否应该学习编辑系统本身?如何像人类那样,将显式的系统文本知识逐渐内化为习惯性的权重?等等)。
#微博兴趣创作计划##互联网人物#
