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 越多,结果越好。提供样例的格式越接近下游任务,结果越好。
输入
|
|
会生成
|
|
而输入
|
|
会生成 Python、JavaScript 生成随机数的脚本。
为了得到更好的结果,我们需要提供一些 prompt 说明大模型扮演什么角色、问题的描述、产生的背景、预期的结果,让大模型知道我们想要的结果是什么。
2.2 思维链(Chain-of-Thought)- 让大模型一步一步的思考
传统的大模型类似一个黑盒,只是输出结果,无法充分利用知识。思维链技术就是让大模型分解问题,一个一个的解决,然后得到最终结果。
为了避免大模型进入错误的知识空间,我们甚至可以提供一些解决的的思路和框架。
输入
|
|
会生成
|
|
这个答案是不对的,正确答案是 4
但如果输入之后,在每个句子后面加上一个提示【请一步一步的思考】,就会得到正确的答案。
|
|
会生成
|
|
可以看到结果的准确性有了显著改善。这是因为,大模型在自己的引导下,进入了正确的知识空间;当然你也可以直接提供给大模型一个思考框架,让它按照你的思路去思考。
2.3 输入文本越长效果越差 - 控制输入长度
如果输入的文本超过了大模型最大 token 长度,大模型会自动截断输入、丢失上下文信息,导致结果不准确。
在不超过大模型最大 token 长度的情况下,输入文本长度的增加,也会导致大模型效果下降。
有研究表明,大模型在处理长文本时,会忽略中间部分的信息,只关注开头和结尾的信息。https://arxiv.org/pdf/2307.03172.pdf
因此,不要因为模型支持 100K 的 token 输入,就真的输入 100k 的 token,而是可以拆分为多个小段,然后分别输入,再汇总。