大语言模型的长文本处理能力
最近大语言模型的一个发展方向就是大语言的模型的长下文能力(long context),谷歌的Gemini 1.5 100万输入,kimi chat支持允许200万输入。
200万token输入是什么概念? 4本红楼梦
那么于大语言模型的长文本能力到底如何呢? 今天通过分析下两个观点
lost in the middle
斯坦福在2023年在《Lost in the Middle: How Language Models Use Long Contexts》中探讨了当前语言模型在处理长上下文时的性能和效率。具体来说,研究关注的是当相关信息位于输入上下文的不同位置时,这些模型的表现如何
做的实验得出的结论:
当相关信息位于输入上下文的开始或结束时,模型的表现通常最好。然而,当需要访问位于长上下文中较中间位置的相关信息时,模型的表现会显著下降。
研究发现,尽管最近的语言模型能够处理较长的上下文,但它们在利用这些长上下文中的信息方面并不总是表现得很强。特别是在多文档问答和键值检索任务中,模型的性能随着相关信息位置的变化而显著变化。
有什么启发呢?
重要的信息放在开头和结尾
Lost in the Middle: How Language Models Use Long Contexts
大海捞针实验
Lost in the Middle算是古早的实验,采用也是GPT3.5。当前长文本测试比较著名的是大海捞针实验即Needle In A Haystack。
大海捞针实验(Needle In A Haystack)是一种评估大型语言模型(LLM)在长文本中寻找关键信息能力的测试方法。该实验由Greg Kamradt设计,通过在一段长文本中随机插入关键信息(“针”),并测试模型是否能准确地从大量无关信息中提取出关键信息。
实验过程中,研究者会将一段随机的事实或陈述(“针”)放入长文本(“大海”)的中间,随后要求模型检索并回答与该“针”相关的问题。研究者会在文本的不同位置放置“针”,并通过改变上下文长度和“针”的位置来衡量模型的性能
比如把制作完美牛排的三个重要步骤,作为三个“针”插入到上下文的某个位置(如开头、中间与结尾),并且让其他内容和这个三个“针”的知识完全不相关。然后要求LLM基于这个上下文来回答:制作完美牛排的步骤有哪些?以验证LLM在上下文中精准的检索出这三个“针”并推理答案的能力。
在进行大海捞针实验时,通常会使用特定的数据集,这些数据集包含了不同领域的文章,例如金融、游戏、政务、电影、技术和综合等。这些文章确保了测试的公平性和挑战性。评估步骤包括将下载的文件放置在指定的目录下,并在配置文件中指定数据集的参数,如上下文长度、文档深度百分比、使用的tokenizer模型、数据源文件列表等。这些参数允许用户根据自己的需求灵活地创建适合的数据集。
贴两个GPT4有趣的结论
- LLM检索的成功率和上下文长度相关:在1k上下文中,GPT4可以找到所有10个针,随着上下文增加,检索的针的准确率在下降
- LLM检索的成功率和针在上下文的位置有关:上下文增加时,开头的针检索的准确率要低于结尾位置的针
这个clause的测试