ChatGPT云炬学长
喂投的定义及使用场景:
这一部分主要是解决这三个问题:啥是喂投。我们为什么要喂投。以及什么场景下面会用到喂投。
从AI专业名词的角度来说,并不存在“喂投”这么一个行为,这是一个不太专业化的俗称,是广大AI使用者口口相传中创造出来的一个词汇。意思就是通过输入一段文字资料,让chatgpt进行学习,最后让他生成一些基于这段文字的回答,这个过程做喂投。是不是有点不太理解?
我换个通俗易懂的表达,假如你想让他帮你写作文,但是他不知道什么样的作文是好的,所以这个时候你有两个办法,一是告诉他满分作文的评分标准,让他按照这个标准去创作,二是把满分作文给他看,告诉他这是榜样,要学习。
假如是第一种,那么chatgpt会首先学习,并且理解你的作文评分标准,然后在这个理解下去写文章。
假如是第二种,那么chatgpt会先阅读一遍满分作文,再结合自己的语言逻辑,分析出这篇文章好在哪里,为什么能得满分,最后把结论作为一种写满分作文的评分标准,然后在这个理解下去写文章。
所以看懂了吗?我们提供规则的本质,就是通过提示词,限定AI的输出条件;喂投的本质,就是让chatgpt自己提出规则,设置限定条件,虽然两种方式看起来大不相同,但是本质上都属于同一个行为,那就是“限定条件”,都是让AI理解某个规则后,执行命令。
基于chatgpt强大的语言理解能力,两种方法其实都是可行的。而且你会发现其实不管什么命令,都离不开这两种逻辑,要么喂投,要么直接限定规则。无非就是哪种更适合我们的具体情况。我们再灵活选择使用什么类型的命令。
所以什么时候我们更适合用喂投,什么时候更适合用直接限定呢?
从刚才的分析中,你会发现其实就两者差别在于喂投多了一步:让chatgpt自己理解什么是规则,并让他自己执行这个规则。
所以这个问题可以转换为,我们什么时候会考虑让chatgpt自己理解规则,而不是我们来提出规则,基于这个问题,我大概列举了以下这些情况,是我认为比较适合用喂投的:
1、没有现成的规则可用,并且我们认为对某个问题的标准理解力不如chatgpt的时候
2、没有现成的规则可用,并且我们不想知道具体规则,只想简单复制某个事物的逻辑的时候
3、心里知道大概的规则,但是不知道怎么组织语言来表达的时候
4、心里知道大概的规则,但是比较懒,不想花时间概括的时候
这四种规则基本上涵盖了所有需要用到喂投的使用场景,大家可以在解决某个问题的时候自己对号入座一下。
就拿我前几天的参哥喂投这个例子说明吧。我想让他模仿参哥的语气跟我对话,本质上,就是通过喂投参哥语录,让他学习参哥的讲话风格和思考方式,然后基于这个理解来组织他接下来的回答语言。那我为什么不直接告诉他参哥的讲话风格和思考方式呢?因为对我来说,这多了一个工作量就是用我自己的语言把参哥的对话风格进行总结概括,先不说我概括的全面不全面,就算我概括的很全面,但是语言是有歧义的,我在中间转述的过程中可能会造成一定层面的信息不对称,AI很难全面模仿,另一个角度来说,我很难用自己的语言让AI认识一个人,所以不如直接喂投他的内容,让他学习。所以这个情况下明显是喂投比直接条件限定,来的更好。
喂投的具体思路:
关于如何喂投,我的公式是:
明确背景+强调AI在给定语料中的学习方向+喂投内容+自行微调调整+输出满意的结果
很多人在执行的过程中为了图快或者懒,都直接忽略了前两步,这也是最终输出的效果不满意的很关键的因素。我们没有做到与chatgpt“同频”。所以我们一定要先明确一下,所谓的喂投,就是让chatgpt自己总结出规则,并且根据这个规则继续作答的过程。
而我们知道,同样是一本书,一千个读者就有一千个哈姆雷特,对于chatgpt来说,同一段文字也可以延伸出无数个可以理解的角度,如果我们在喂投之前,没有把我们要做事情跟他明确,那么他就很可能会往错误的方向去理解,并回答出不如预期的效果,这不能怪AI,就像领导布置任务,让你办事,却不告诉你这个事情是为了干啥,你说我们能把事情办好么?
所以我们一定要确保你和chatgpt是同频的,这也是我经常和圈友强调的一点,一个事物你不可能保证你的视角和chatgpt的视角是完全一致的,为了确保你们是一致的,我们一定要在喂投之前把背景先提前告诉他。
prompt可以是这么写:我要做一个啥样的事情,我会给你一篇文章让你学习哪一个方面的规则,最后请你用学会的规则,帮我做一个啥样的事情。接下来是xxx的文章,请你学习他的xxx方面的规则。
这样一套组合拳下来,他就基本知道自己的学习思路是怎么样的,并且会有侧重点的去学习和总结收到的语录资料。
等他学习完之后,还有关键的一步,根据他的回答,进行指令层面的微调,也就是人为增加一些额外的规则限制。这个过程我称之为人工干预,这也是我们与其他人拉开差距的关键点。但是这里增加的规则限定词一定不能太多,太多就会覆盖掉原来他自己学习的那一部分。在微调的过程中一定要强调,要把这个人工干预的规则合并到你让他学习的语料规则中,不然也有可能会覆盖他自己学习的语料规则。
另外再提供一个比较人性化调教思路,利用权重来量化规则的优先级,比如我们希望我们的人工干预部分的规则优先级要高于chatgpt自己生成的规则,那么可以用,百分比权重这个概念去进行量化,比如:chatgpt学会了A、B、C三个规则,而我们人工干预补充了D这个规则。如果我们希望哪个规则占据主导地位,就可以设置类似这样的命令:我希望D规则的权重在所有规则的权重里占比50%,就等于把D规则的优先级提高到了主导地位,用这样的方式去灵活调配规则的限制。
上述就是调教的一整个思路,可以发现,其实可以拉开差距的关键点还是在于能否找到正确的学习方向,以及后续如何根据他的表现进行人工干预。
喂投的注意点(局限性):
1、注意语料的长度,以及喂投的上下文限制。因为ChatGPT并不具备所谓记忆功能,除非你对模型进行Fine-tuning,或者每次都把背景资料告诉它,然后从资料中回答问题。所以所谓“上下文”,只是一个假象,实际上是页面(或者系统后台服务)帮你临时记住前面问答的内容,然后一起提交给模型回答。当总字数超过模型能接受的极限时,就会砍掉一些。因此,你觉得他“忘记”了前面的内容。
由于喂投会占用大量的页面记忆缓存,所以在喂投的过程中,其实chatgpt的上下文能力是更弱的,所以我们基本上不能喂投太多内容,基本上一篇文章的长度是差不多的,如果要喂投大量,多段的语料,就很有可能出现上下文连不上的情况,另外也因为上下文经常断连的不稳定性,我也建议大家在利用chatgpt进行喂投工作的时候,最好把他当成是一次性使用的会话,而不是一个可以持续用的会话。因为你无法保证他的每一次回答都完全联系了上下文。
2、语料的质量和人工干预决定了chatgpt的回答效果。喂投的本质是总结和概括,语料一定要挑选有差异化的,这样才比较容易被概括,比如我分别喂投参哥和老纪的资料,同样是让chatgpt学习对话风格和表达逻辑,最后发现参哥学的就很像,而老纪学的就不像,因为参哥的语录差异化太明显了,而老纪的语录差异化很不明显,甚至盖掉作者你就不知道这个人是谁了,所以基于这个理解,我们在挑选语料的时候一定要尽可能挑选有特色的的,有代表性的。挑选了一些不具备代表性的文章,实际上是不具有学习的意义的。
3、prompt中让chatgpt的学习方向要尽可能明确。因为chatgpt是生成式语言模型,上文出现的词汇或者句子,都会作为种子词,限制他接下来的表达内容,比如我们的语料内容中讲到背井离乡,接下来他的回答中不管主题是不是和语料有关,都很有可能出现背井离乡这个概念。这就是很多人发现好像更多是学了个形,而不是学到神。其实这本质上就是chatgpt的上下文能力的一部分,从语言模型的逻辑来看,这是没办法被纠正的。但是很多情况下在喂投中,我们都不希望出现这种情况,所以我们要通过一些指令去尽量避免,最好的方式就是不要笼统的让他学习某一个语录,而是要明确的提出让他学习这个语录中对某个事物的思考,或者学习表达逻辑,这种学习的方向,最好不要是经历,或者是具象的东西,是一个规律并且是可复制的东西,这种就可以避免他把语料中的例子拿出来套用。如果最后还是套用了,那么可以增加一个限定,我希望你只是学习xxx方面的规则,而不希望你在接下来的回答中涉及我给的语料具体内容。
参考案例
关于喂投篇的内容大概介绍到这里,下面是我的一个喂投实例,给大家一个参考,参哥的喂投中其实大家可以发现我的人工干预部分才是关键点,我加入了简单粗暴,语气不耐烦这两个种子词之后,风格马上就跟我期望的差不多了,这个会话接下来可以继续优化,我可以提取chatgpt自己生成的规则,然后配置各个规则的权重,就像设置参数那样,把风格再调整一下,这个就因人而异了。
发布于 2023-05-27 07:26・IP 属地浙江