对用好的重要性毋庸置疑,我们在上篇文章中介绍了写好的通用原则和一些基础技巧,在本文中,我们将继续探索一些的高阶技巧。

在介绍这些高阶技巧前,我们先对之前介绍的基础技巧做一个简单回顾。

首先作为通用原则,我们的应该尽可能简单、具体、准确,有话直说,在此基础上,我们有Zero-shot, Few-shot, , CoT以及分而治之等基础技巧,在Few-shot中,例子的多样性和排序对结果有较大的影响,在CoT中,例子的复杂度和描述方式对结果也有很大影响。这些技巧还可以组合起来使用如Few-Shot , Zero-shot CoT, Few-Shot CoT等,CoT还衍生出来一个叫做Self-Ask的技术,通过提问,调用外部API回答的方式,我们可以帮助逐步推导出复杂问题的答案

接下来,我们开始介绍高阶技巧。

Self-(自洽) : 这一技巧的思路是投票选举,少数服从多数,其具体工作过程是对同一个问题,让生成多个可能的答案,然后选择占比最高的那个答案作为最终答案,其工作原理示意图如下:

这个技巧很容易理解,但是有几个要注意的点:

为了进一步提升这一方法的效果,还可以额外训练一个小模型或者简单的规则,在投票前先把明显不靠谱的答案过滤掉(比如上图中Janet一天挣多少钱的问题,如果答案是负数肯定不对),过滤后如果备选答案不够就再让生成几个,直到有足够靠谱答案了再投票。

(生成知识) :我们知道在向提问时,如果能提供一些上下文信息,其回答问题的准确率就会高很多,顺着这个思路,我们也可以让自己给自己提供上下文,而不是每次都由我们完成这一工作,我们还是通过例子来说明这一方法的工作过程:

Part of golf is to get a point total than . Yes or No?

得到的答案是

Yes.

这显然是个错误的答案,因为打高尔夫杆数越少越好。

我们可以让回答问题前首先自己生成一些知识,下面是用few-shot技术来让生成知识的例子:

Input: is than .

: is 131,957 sq km, while is 1,964,375 sq km, 1,389% than .

Input: fog up.

: on when water vapor from your sweat, , and lands on a cold , cools, and then into tiny drops of , a film that you see as fog.

Input: A fish is of .

: Fish are more than they . In many areas, such as , their match or those of ’’ non-human . Fish’s long-term help them keep track of

Input: Part of golf is to get a point total than .

:

返回如下知识片段:

The of golf is to play a set of holes in the least of . A round of golf of 18 holes. Each hole is once in the round on a golf . Each is as one point, the total of is used to the of the game.

接下来,我们把这个知识作为上下文,再次向提问:

: Part of golf is to get a point total than . Yes or No?

: The of golf is to …and the total of is used to the of the game..

and :

得到如下答案:

No, the of golf is not to get a point total than . , the is to play a set of holes in the least of . The total of is used to the of the game, not the total of .

吸附石技巧详细版_chatgpt使用技巧详细介绍_vm虚拟机详细使用安装教程

可以看到我们让自己生成的知识帮助它给出了正确的答案。

of (程序式思考) :最近推出了,其思路是把一些问题交给外部的工具来完成,和这一思路类似,有些问题涉及复杂的计算,可能并不适合进行这类计算,我们可以让它为要解决的问题写一段程序,我们运行这个程序以得到最后的答案,下面是一个计算斐波那契数列的例子:

– (选择-推理):这是一种在Few-shot CoT的基础上演化出来的技术,其基本思路是分两步来解决问题:

下图是来自论文中的工作原理介绍图:

图中的几个颜色说明如下:

论文中的图不是特别好理解,我在图上加了3个红框,接下来详细介绍下如何理解这张图:

明白了工作原理后,我们再次忽略细节,其整个工作过程如下图所示(模块决定是继续循环还是给出最终答案):

虽然图看着比较复杂,但其思路和基础技巧中介绍的分而治之的思路很像,先求解中间过程,然后推导最终答案。这个技巧在处理比较复杂的问题时效果比较明显,如果问题本身不涉及太多步骤的推导,一些简单技巧就能解决问题。

一些更复杂的技巧

下面的几个技巧比较复杂,大家平时也不一定能直接用得到,我将简单介绍下其思路,不详细展开,大家知道有这个技巧,真的觉得需要使用时再深入研究就好(我在下面会为大家附上论文链接)。

(自动生成) :有时候,除了我们自己手写之外,我们也可以利用帮我们找到一个好的,下图是一个例子:

这个例子中,我们想找到一句好的(指令),这个指令可以让更好地为一个输入词给出反义词。上图的工作过程是,首先给出一堆正-反义词,然后让给出若干候选指令,接着评估这些候选指令,看哪一个能让在测试集上有更好的表现,然后选择其中得分最高的作为答案。

这里还有一个可选的优化步骤是,把上述最高分的候选指令,让在不改变语义的情况下,生成几个变种,然后重复上面的过程,从这几个变种中选出最优的那个。

有兴趣的同学可以在这里看论文:/pdf/2211.01…

Least to Most(由易到难) :其思路是对高难度的问题,先将其拆解为难度较低的子问题,把这些子问题解决后,用这些子问题和答案作为上下文,再让完成高难度问题的回答,下面是一个例子:

这个方法只有比较复杂的情况下才能发挥比较大的作用,另外要用好这个技巧,能否让有效地分解问题是关键,但整篇论文并没有对此给出详细说明。

有兴趣的同学可以在这里看论文:/pdf/2205.10…

(类决策树) :这是复杂度最高的一个技巧,其基本思路是对一个复杂问题,层层递归,对这个问题生成各种可能的解释(以及子解释),然后从中选择最靠谱的节点,推导最终的问题答案

工作过程如下:

build一棵树,树上的每个树叶都是一句True/False的陈述:把这棵树转化为一个关系图用一个叫做MAX-SAT的算法,选择一组一致的、置信度最高的节点,从中推导出最后的答案

下面是一个例子:

这是另一个例子:

有兴趣的同学可以在这里看论文:/pdf/2205.11… 领域里面的几个技巧介绍,如果我们去搜索一下的,还会发现更多技巧介绍的论文,这里就不再继续了。其实通过上面的几个例子大家能看到,这些复杂的技巧,一般都涉及多个步骤,都会把大问题拆解成若干小问题,这其实就是计算机里面最常用的分而治之的策略,我想只要我们记住这一策略,在我们解决具体问题的时候,也能想到自己的技巧。

本文正在参加 人工智能创作者扶持计划