Prompt-提示词, completions-补全,meta-learning-元学习 原创
“ 老话说温故而知新,在大模型不断的使用过程中,慢慢会发现一些自己之前没有注意过的东西 ”
今天我们来认识几个名词,当然这些名词也已经不是新名词了,但之前对它们的理解只停留在表面,而今天要来加深一些理解。
提示词和补全以及元学习
理论上来说提示词是与大模型打交道的基础,人类要想和大模型进行交互就必须通过提示词来实现。而从表面上来看,任何文本都可以作为提示词,但如何编写一个有效的提示词,才能让大模型更好地理解我们。
提示词就类似于我们人类之间交流的语言,人类与计算机交流的编程语言;归根结底,语言只是一种手段,而怎么把自己的意思说明白,并且让别人(人类,计算机,大模型)理解我们才最重要。
所以,按照我们平常的交流习惯来看,在交流一个问题的时候最好加入一些指令和例子,这样更加有助于其他人进行理解;因此,关于提示词编写的样本提示就被提出来了。
所谓的样本提示主要有三种:
- zero-shot prompts 零样本提示
- one-shot prompts 一次提示
- few shot prompts 少样本提示
虽然官方从未对提示词做过任何约束,任何文本都可以作为提示词,不论是一个字,还是一句话或者一个问题;但按照样本提示的标准撰写提示词效果会更好。
而更重要的是,在文本补全方面,提示词能直接影响到大模型的补全效果;比如说,提示词为宫廷玉液酒,大模型就可以惯性补全为一百八一杯;虽然你也可以直接把一杯宫廷玉液酒多少钱作为提示词,但感觉上总是怪怪的。
另一个因素就是prompt的大小,我们知道大模型是有窗口限制的,当超过窗口限制时,超过的部分就会被丢掉;而写一个短小精悍的提示词就变得更加重要;而且还能节省成本。
最后,你知道文本生成,对话和聊天补全的区别吗?
元学习
先思考一个问题,什么是元学习?
元学习是完全不同于机器学习和迁移学习的一种学习方式;先回顾一下传统的机器学习和迁移学习。
不论是机器学习,还是迁移学习,亦或者是神经网络模型,都是通过使用某个场景的大量数据进行模型训练;而一旦任务场景发生改变,则模型就需要整理新的场景数据,进行重新训练。
但就人类的学习经历来看,有一个词叫做触类旁通,就是说学过某个东西之后再学习其它新的东西就可以很容易的学会,原因是你具备了学习的能力,一法通万法通,而不用每种新东西都要重新学习。
所以,元学习的概念就被提出来了;元学习就是让阿尔法狗学会下象棋,让GPT学会下围棋。
需要注意的是,虽然同样有“预训练”的意思在里面,但是元学习的内核区别于迁移学习(Transfer Learning)。
在机器学习中,训练单位是一条数据,通过数据来对模型进行优化;数据可以分为训练集、测试集和验证集。在元学习中,训练单位分层级了,第一层训练单位是任务,也就是说,元学习中要准备许多任务来进行学习,第二层训练单位才是每个任务对应的数据。
二者的目的都是找一个Function,只是两个Function的功能不同,要做的事情不一样。机器学习中的Function直接作用于特征和标签,去寻找特征与标签之间的关联;而元学习中的Function是用于寻找新的f,新的f才会应用于具体的任务,有种不同阶导数的感觉。
可能很多人看了上面的内容都有点迷糊,但这个可以类比于高中数学;函数f(x) = x +1; 学过高中数学的人应该都知道,这是一个基础的数学函数,变量f(x) 是变量x的函数表示,f是x的函数关系。
而机器学习就类似于这个函数,你知道了x和它的函数关系f,就是把x+1;以后遇到这样的问题就可以按照这种方式进行计算;这在一元一次方程中是没有问题的。
但我们都知道函数的种类有很多,除了一元函数之外,还有二元函数,多元函数,复变函数,三角函数等等。
而如果你想让一个只会处理一元函数的模型去处理二元函数,那么就需要让它重新进行训练,重新学习;但元学习不是这样的。
元学习是通过培养你的数学逻辑思维能力,而不是教你学习一个函数公式;这样,你就可以通过大量的研究,去自己发现不同函数之间的关系,然后自己列出其函数公式;这样,以后不论你遇到什么样的函数,不论多么复杂的数学问题,你都可以自己解决,这样就不用每次都去学习一堆数学公式。
对于大多数 NLP 系统,在训练底层 ML 模型时,提供的数据是用于指导模型如何完成特定NLP任务的。所以,为了提高对给定NLP任务的效果,模型必须重新训练,得到新版本的模型。但是元学习不一样,因为它不需要针对任何特定任务进行重训练。它旨在识别提示(Prompts)文本中的模式(patterns)并通过使用底层通用模型来继续模式。这种方法被称为元学习(Meta-learning),因为提示用于教导大模型如何生成最佳的补全(completion),而不需要重新训练。因此,实际上,可以使用不同的提示类型(零提示、一次提示和多次提示)为不同类型的任务对大模型进行编程,并且您可以在提示中提供大量指令(instuctions)。
本文转载自公众号AI探索时代 作者:DFires
原文链接:https://mp.weixin.qq.com/s/dXiGeAT-TkZbPHpv8MJy1w