Please enable Javascript to view the contents

影响使用大模型的技术因素

 ·  ☕ 4 分钟

1. 大模型到底是什么

先请两位大模型回答一下这个问题,看看他们的回答是什么。

Claude 说,大模型本质上是语言知识的概率表达,通过统计学习对语言各层次规律建模,表征语言生成的先验分布,从而具备语言预测生成能力。

ChatGPT 说,大模型本质是深度神经网络通过大量参数和数据,学习抽象表示,解决复杂任务,但需要高计算和资源投入。

根据他们的回答,大模型本质上是统计出来的知识分布。但为什么以前的统计手段没有 GPT-3.5 这种效果呢?主要原因有很多,大部分都强调的是训练数据量、算力、模型参数、Transformer 等。

但作为一个使用者,我更关注如何从输入的角度,优化对大模型的使用,提升效果。

2. 影响使用大模型的技术因素

2.1 Prompt learning - 提供一些示例、期望

Zero-shot 不使用任何训练示例,完全通过模型本身的知识去生成 prompt,然后完成下游任务。

One-shot 只使用一个很小的示例 prompt,让模型学习下游任务的格式,然后生成新的 prompt 去完成任务。

Few-shot 使用 2 到 10 个左右的示例 prompt,让模型学习下游任务的特征,然后用来生成更多 prompt。

提供的 prompt 越多,结果越好。提供样例的格式越接近下游任务,结果越好。

输入

1
2
3
4
5
6
生成一组随机浮点数 Let's think step by step

这里有一些示例

生成一组随机数 -> [1, 5, 6]
生成一组随机变量 -> [a, b, c]

会生成

1
生成一组随机浮点数 -> [2.3, 4.8, 1.5]

而输入

1
生成一组随机浮点数

会生成 Python、JavaScript 生成随机数的脚本。

为了得到更好的结果,我们需要提供一些 prompt 说明大模型扮演什么角色、问题的描述、产生的背景、预期的结果,让大模型知道我们想要的结果是什么。

2.2 思维链(Chain-of-Thought)- 让大模型一步一步的思考

传统的大模型类似一个黑盒,只是输出结果,无法充分利用知识。思维链技术就是让大模型分解问题,一个一个的解决,然后得到最终结果。

为了避免大模型进入错误的知识空间,我们甚至可以提供一些解决的的思路和框架。

输入

1
玩杂耍的人有 16 个球。一半的球是高尔夫球,一半的高尔夫球是蓝色的。有多少个蓝色的高尔夫球?

会生成

1
根据题目中的描述,有 16 个球,其中一半是高尔夫球,即 8 个。而又有一半的高尔夫球是蓝色的,所以蓝色的高尔夫球数量为高尔夫球数量的一半,即 8 个。

这个答案是不对的,正确答案是 4

但如果输入之后,在每个句子后面加上一个提示【请一步一步的思考】,就会得到正确的答案。

1
玩杂耍的人有16个球。一半的球是高尔夫球,一半的高尔夫球是蓝色的。有多少个蓝色的高尔夫球? 请一步一步的思考。

会生成

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
当我们一步一步思考这个问题时:

玩杂耍的人有16个球。
一半的球是高尔夫球,即8个球是高尔夫球。
一半的高尔夫球是蓝色的。
现在我们来计算有多少个蓝色的高尔夫球:

由于一半的高尔夫球是蓝色的,我们可以将高尔夫球数量除以2来得到蓝色高尔夫球的数量。

蓝色高尔夫球数量 = 高尔夫球数量的一半 = 8个球的一半 = 4个蓝色的高尔夫球。

所以,玩杂耍的人手中有4个蓝色的高尔夫球。

可以看到结果的准确性有了显著改善。这是因为,大模型在自己的引导下,进入了正确的知识空间;当然你也可以直接提供给大模型一个思考框架,让它按照你的思路去思考。

2.3 输入文本越长效果越差 - 控制输入长度

如果输入的文本超过了大模型最大 token 长度,大模型会自动截断输入、丢失上下文信息,导致结果不准确。

在不超过大模型最大 token 长度的情况下,输入文本长度的增加,也会导致大模型效果下降。

有研究表明,大模型在处理长文本时,会忽略中间部分的信息,只关注开头和结尾的信息。https://arxiv.org/pdf/2307.03172.pdf

因此,不要因为模型支持 100K 的 token 输入,就真的输入 100k 的 token,而是可以拆分为多个小段,然后分别输入,再汇总。

3. 参考


微信公众号
作者
微信公众号