Category: AGI

  • 思维链增强蒸馏技术的神秘面纱:探究其背后的奥秘

    摘要: 近年来,大型语言模型(LLM)在问答等推理任务中表现出色,而“思维链”(CoT)推理的引入更是锦上添花。CoT推理指的是生成能够传达“推理”过程的标记序列,其本质是将解决问题的步骤分解,并用自然语言描述出来。最近的研究表明,这种CoT推理机制可以用于模型蒸馏:在微调小型学生模型时,除了目标标签外,加入从大型“教师”模型中提取的CoT序列可以显著提高模型性能。

    本文将深入探讨CoT增强蒸馏技术背后的奥秘,并试图解答以下问题:

    • 为什么以及如何利用额外的训练信号来帮助模型蒸馏?
    • CoT推理在模型蒸馏中扮演着什么样的角色?

    通过一系列精心设计的实验,我们揭示了一些令人惊讶的结果,并对CoT增强蒸馏技术提出了新的见解。

    一、 CoT增强蒸馏技术:简介

    思维链(CoT)推理能够显著提高模型在推理任务中的表现,例如问答 (Wei et al., 2023)。在模型蒸馏领域 (Hinton et al., 2015),研究人员尝试从大型语言模型(如GPT-4)中提取CoT推理链,并用其增强训练数据,以微调体积更小、针对性更强的学生模型。

    CoT增强蒸馏技术的流程如下:

    1. 提取CoT推理链: 使用大型“教师”模型(如GPT-4),为训练数据中的每个样本生成CoT推理链。
    2. 增强训练数据: 将CoT推理链作为额外的训练信号添加到目标标签中,构成增强后的训练数据。
    3. 微调学生模型: 使用增强后的训练数据微调小型“学生”模型,使其学习生成推理过程和目标标签。

    这种简单的CoT增强蒸馏策略能够持续且显著地提高学生模型的性能 (Ho et al., 2023)。例如,Li et al. (2023a) 使用GPT-3 (175B) 生成的CoT推理链来训练一个相对较小的学生模型 (OPT-1.5B),使其能够在推理时生成类似的“推理”标记序列,最终在三个常识推理数据集上实现了平均12.4%的准确率提升。

    二、 CoT推理链的位置之谜:前置还是后置?

    传统上,从大型模型中提取的CoT推理链通常作为前缀,引导模型生成最终的目标标签。然而,我们的研究发现,在模型蒸馏过程中,将CoT推理链放置在目标标签之后,反而能够获得更好的性能提升。

    实验设计:

    为了探究CoT推理链的位置对模型性能的影响,我们设计了以下实验:

    1. 基线模型: 使用标准的监督微调方法,训练学生模型,不使用任何CoT推理链。
    2. 前置CoT模型: 在微调学生模型时,将CoT推理链放置在目标标签之前。
    3. 后置CoT模型: 在微调学生模型时,将CoT推理链放置在目标标签之后。

    实验结果:

    实验结果表明,后置CoT模型的性能始终优于前置CoT模型。这意味着学生模型在推理时不需要生成“推理”过程,因为目标标签已经在推理链之前生成。

    原因分析:

    我们推测,将CoT推理链放置在目标标签之后,可以为学生模型提供更丰富的上下文信息,使其能够更好地理解目标标签与输入之间的关系。

    三、 CoT推理链的本质:逻辑连贯性并非必要条件

    为了进一步探究CoT推理链的本质,我们尝试打乱CoT推理链中标记的顺序,观察其对模型性能的影响。

    实验设计:

    我们对CoT推理链进行了以下操作:

    1. 打乱标记顺序: 在实例级别上,随机打乱CoT推理链中标记的顺序。

    实验结果:

    实验结果表明,将打乱顺序后的CoT推理链放置在目标标签之后,对模型性能几乎没有影响。

    原因分析:

    我们认为,CoT推理链中包含了一些关键的上下文信息,这些信息有助于学生模型更好地理解目标标签与输入之间的关系。即使打乱标记的顺序,这些关键信息仍然存在,因此模型性能不会受到太大影响。

    四、 CoT推理链的关键:识别并利用关键标记

    既然CoT推理链的逻辑连贯性并非必要条件,那么是否存在一些关键标记,能够在模型蒸馏过程中起到至关重要的作用?

    实验设计:

    为了识别CoT推理链中的关键标记,我们采用了以下方法:

    1. 梯度归因: 使用梯度归因方法,计算CoT推理链中每个标记对最终目标标签的贡献程度,并保留贡献最大的前15个标记。

    实验结果:

    实验结果表明,使用梯度归因方法识别出的关键标记,能够在模型蒸馏过程中取得与完整CoT推理链相当的性能提升。

    原因分析:

    我们认为,梯度归因方法能够有效地识别出CoT推理链中对目标标签预测贡献最大的关键标记,这些标记包含了理解目标标签与输入之间关系的最重要信息。

    五、 结论

    本文深入研究了CoT增强蒸馏技术,并通过一系列精心设计的实验,揭示了其背后的奥秘。我们的研究结果表明:

    1. CoT推理链的位置: 将CoT推理链放置在目标标签之后,能够获得更好的性能提升。
    2. CoT推理链的本质: CoT推理链的逻辑连贯性并非必要条件,关键在于其包含的关键标记。
    3. CoT推理链的关键: 梯度归因方法能够有效地识别出CoT推理链中的关键标记。

    我们的研究结果为CoT增强蒸馏技术提供了新的见解,并为未来开发更有效、更高效的模型蒸馏方法奠定了基础。

    六、参考文献

    • Belrose et al. (2023). Eliciting latent predictions from transformers with the tuned lens.
    • Chen et al. (2024). Post-semantic-thinking: A robust strategy to distill reasoning capacity from large language models.
    • Deng et al. (2023). Implicit chain of thought reasoning via knowledge distillation.
    • Fu et al. (2023). Specializing smaller language models towards multi-step reasoning. ArXiv, abs/2301.12726.
    • Goyal et al. (2024). Think before you speak: Training language models with pause tokens.
    • Han et al. (2023). Dialcot meets ppo: Decomposing and exploring reasoning paths in smaller language models.
    • Hase and Bansal (2022). When can models learn from explanations? a formal framework for understanding the roles of explanation data.
    • Hinton et al. (2015). Distilling the knowledge in a neural network.
    • Ho et al. (2023). Large language models are reasoning teachers.
    • Hsieh et al. (2023). Distilling step-by-step! outperforming larger language models with less training data and smaller model sizes. ArXiv, abs/2305.02301.
    • Jiang et al. (2023). Mistral 7b.
    • Li et al. (2023a). Symbolic chain-of-thought distillation: Small models can also “think” step-by-step.
    • Li et al. (2023b). Textbooks are all you need ii: phi-1.5 technical report.
    • Magister et al. (2023). Teaching small language models to reason.
    • Mihaylov et al. (2018). Can a suit of armor conduct electricity? a new dataset for open book question answering.
    • Mikolov et al. (2013). Distributed representations of words and phrases and their compositionality.
    • nostalgebraist (2020). interpreting gpt: the logit lens.
    • Pal et al. (2023). Future lens: Anticipating subsequent tokens from a single hidden state.
    • Radford et al. (2019). Language models are unsupervised multitask learners.
    • Shridhar et al. (2023). Distilling reasoning capabilities into smaller language models.
    • Sundararajan et al. (2017). Axiomatic attribution for deep networks.
    • Tafjord et al. (2018). Quarel: A dataset and models for answering questions about qualitative relationships.
    • Talmor et al. (2019). CommonsenseQA: A question answering challenge targeting commonsense knowledge.
    • Team et al. (2024). Gemma: Open models based on gemini research and technology.
    • Wadhwa et al. (2023). Revisiting relation extraction in the era of large language models.
    • Wang et al. (2023). SCOTT: Self-consistent chain-of-thought distillation.
    • Wei et al. (2023). Chain-of-thought prompting elicits reasoning in large language models.
    • West et al. (2022). Symbolic knowledge distillation: from general language models to commonsense models.
    • Wiegreffe et al. (2022). Reframing human-AI collaboration for generating free-text explanations.
    • Wolf et al. (2020). Transformers: State-of-the-art natural language processing.
    • Xu et al. (2024). Preemptive answer “attacks” on chain-of-thought reasoning.

    Q: 这篇论文试图解决什么问题?

    A: 这篇论文探讨了在模型蒸馏过程中使用“思维链”(Chain of Thought, CoT)增强的方法来提升学生模型(small student model)性能的原因和机制。具体来说,论文试图解答以下几个问题:

    1. CoT增强蒸馏中理性序列的位置是否影响效果:即是将CoT序列放在目标标签之前还是之后,哪个能更好地提升学生模型的性能?
    2. CoT序列的连贯性和语法结构是否必要:即使CoT序列的令牌顺序被打乱,是否仍然能够观察到性能提升?
    3. 是否只需要CoT序列中的一小部分关键令牌:是否可以通过仅使用CoT序列中的一部分关键令牌来实现与完整CoT序列相同的性能提升?

    论文通过一系列实验和消融研究来探索这些问题,并得出了一些可能令人惊讶的结果。

    Q: 有哪些相关研究?

    A: 论文中提到了以下几项相关研究:

    1. Hinton et al., 2015: 提出了模型蒸馏的概念,即通过大型模型(teacher model)的知识来训练小型模型(student model)。
    2. Wei et al., 2023: 探讨了在推理任务中使用CoT推理来提升模型性能。
    3. Li et al., 2023a: 使用GPT-3生成的CoT来训练一个小型学生语言模型(LM),在常识推理数据集上取得了显著的性能提升。
    4. Shridhar et al., 2023: 类似地,使用CoT方法在小学数学数据集上对GPT-2进行了微调,取得了性能提升。
    5. Wadhwa et al., 2023: 利用CoT推理在关系提取任务上取得了最先进的结果。
    6. Chen et al., 2024: 与本文同时进行的研究,提出了“后语义思考”(Post-semantic-thinking, PST)的概念,以减少推理对最终输出标签的影响。
    7. Xu et al., 2024: 发现在CoT推理中提前生成目标标签对恶意攻击非常敏感。
    8. Goyal et al., 2024: 观察到在训练和推理时增加“虚拟”令牌可以提升LLM的性能。
    9. Deng et al., 2023: 探索了使用模型隐藏状态进行隐式推理的方法,而不是逐个生成推理令牌。
    10. Ho et al., 2023: 展示了如何使用大型语言模型作为推理教师来提升小型模型的推理能力。
    11. Wang et al., 2023: 研究了如何通过自洽链式推理蒸馏(SCOTT)来提升学生模型的性能。

    这些研究为本文提供了理论基础和实验方法,同时也与本文的研究结果相互印证和补充。

    Q: 论文如何解决这个问题?

    A: 论文通过以下步骤来解决提出的问题:

    1. 实验设计:首先,论文定义了一个实验框架,使用大型教师模型(例如Mistral-7B-Instruct)生成CoT推理,并将这些推理作为额外的训练信号来微调小型学生模型。
    2. 消融研究:通过改变CoT序列相对于目标标签的位置(前或后),研究其对学生模型性能的影响。
    3. 令牌顺序的鲁棒性测试:通过打乱CoT序列中的令牌顺序,来测试学生模型对CoT连贯性的敏感度。
    4. 关键令牌的识别:使用梯度归因方法(如集成梯度)和人类标注来识别CoT中的“重要”令牌,并测试这些令牌是否足以实现与完整CoT序列相同的性能提升。
    5. 与基线的比较:将经过不同处理的CoT序列微调后的学生模型的性能与基线模型(未经过CoT增强的模型)进行比较。
    6. 模型信心分析:使用LogitLens、TunedLens和FutureLens等工具来分析不同模型在预测时的信心水平,以了解CoT增强是否有助于模型更早地获得高置信度的预测。
    7. 计算量的影响:通过在目标标签前添加不同数量的令牌来测试额外计算步骤是否能够提供与CoT增强相同的性能提升。
    8. 实验结果分析:对实验结果进行详细分析,以确定CoT增强蒸馏中哪些因素对学生模型性能的提升起到了关键作用。

    通过这些方法,论文得出了关于CoT增强蒸馏的几个关键发现,包括CoT序列放置的位置、CoT序列的连贯性以及关键令牌的作用等方面的见解。

    Q: 论文做了哪些实验?

    A: 论文中进行了以下实验来探究CoT(Chain of Thought)增强蒸馏对模型性能的影响:

    1. 基础性能比较:比较了在没有CoT、标准CoT(标签前)和后缀CoT(标签后)情况下,学生模型在三个常识推理数据集上的性能。
    2. 理性序列位置的实验(RQ1):研究了CoT序列放置在目标标签之前或之后对学生模型性能的影响。
    3. 理性序列连贯性的实验(RQ2):通过打乱CoT序列中的令牌顺序,测试了学生模型对理性序列连贯性的需求。
    4. 关键令牌的识别和实验(RQ3):使用集成梯度方法和人类标注来识别CoT中的“重要”令牌,并测试这些令牌是否足以实现与完整CoT序列相同的性能提升。
    5. 模型信心分析:使用TunedLens工具分析了不同条件下训练的模型在预测时的信心水平。
    6. 计算量的影响实验:通过在目标标签前添加不同数量的令牌来测试额外计算步骤是否能够提供与CoT增强相同的性能提升。
    7. 与基线的比较:将经过不同处理的CoT序列微调后的学生模型的性能与基线模型进行比较。
    8. 使用相关词的实验:探索了使用与目标标签语义相似的词(通过Word2Vec方法选择)是否能够提供与CoT增强蒸馏相似的性能提升。
    9. 人类标注的比较:将通过集成梯度方法选择的令牌与人类标注者选择的“重要”令牌进行了比较,以评估哪种方法更能提高模型性能。

    这些实验的结果帮助论文得出了关于CoT增强蒸馏效果的一系列结论。

    Q: 有什么可以进一步探索的点?

    A: 尽管这篇论文提供了对CoT增强蒸馏的深入分析,但仍有一些潜在的研究方向可以进一步探索:

    1. 多语言数据集的测试:论文主要使用了英文数据集进行实验。未来的研究可以在其他语言的数据集上测试CoT增强蒸馏的效果,以验证方法的普适性。
    2. 不同任务类型的应用:论文集中在常识推理任务上。可以探索CoT增强蒸馏在其他类型的任务,如文本摘要、机器翻译或情感分析等任务中的效果。
    3. 更大规模模型的实验:研究中使用的是相对较小的学生模型。可以探索CoT增强蒸馏在更大规模或更复杂的模型上的效果。
    4. 改进CoT生成质量:研究中提到了使用教师模型生成CoT,但并未深入探讨如何改进生成的CoT质量。研究者可以探索如何通过迭代提示或反馈机制来提高CoT的准确性和连贯性。
    5. 理解CoT增强蒸馏的内在机制:尽管论文提供了一些见解,但对于CoT增强蒸馏如何提升模型性能的内在机制仍需更深入的理解。
    6. 对抗性攻击和鲁棒性:论文中提到了CoT的鲁棒性问题,未来的研究可以进一步探索CoT增强模型对抗性攻击的能力和鲁棒性。
    7. 实际应用场景的测试:将CoT增强蒸馏应用于实际应用场景,如医疗诊断、法律分析等,以评估其在现实世界问题中的有效性。
    8. 模型解释性与可解释性:研究CoT增强蒸馏对模型可解释性的影响,以及如何利用CoT提高模型的透明度和解释性。
    9. 跨领域知识迁移:探索CoT增强蒸馏在跨领域知识迁移中的潜力,例如,将一个领域学习到的知识迁移到另一个不同的领域。
    10. 优化和自动化CoT选择过程:研究如何自动化和优化选择CoT中关键令牌的过程,以减少人工干预并提高效率。

    这些方向可以帮助研究者更全面地理解CoT增强蒸馏,并探索其在更广泛场景中的应用潜力。

    Q: 总结一下论文的主要内容

    A: 这篇论文《Investigating Mysteries of CoT-Augmented Distillation》主要研究了在模型蒸馏过程中使用“思维链”(Chain of Thought, CoT)增强的方法来提升学生模型性能的机制。以下是论文的主要内容总结:

    1. 研究背景:CoT是一种能够显著提升大型语言模型(LLM)在问答等任务上性能的技术。最近的研究表明,CoT也可用于模型蒸馏,即通过在微调过程中加入从大型教师模型中提取的CoT序列,来提升小型学生模型的性能。
    2. 研究问题:论文探讨了为什么CoT增强蒸馏能够提升学生模型的性能,以及这种提升是如何实现的。
    3. 实验设计:通过从大型教师模型中提取CoT,并将其作为额外的训练信号加入到学生模型的训练目标中,研究者进行了一系列的消融实验。
    4. 关键发现
      • CoT序列放置在目标标签之后(后缀CoT)比放置之前(前缀CoT)能更有效地提升学生模型的性能。
      • 即使CoT序列的令牌顺序被打乱,只要它们被附加到目标标签之后,学生模型的性能仍然可以得到提升。
      • 通过集成梯度等方法识别出的CoT中的一小部分关键令牌,就足以实现与完整CoT序列相同的性能提升。
    5. 实验方法:使用了三个小型学生语言模型(GPT-2, Phi-1.5, 和 Gemma-2B)进行实验,并在三个常识推理数据集上进行了评估。
    6. 模型信心分析:通过分析模型在不同层次和时间步的信心水平,发现后缀CoT能够使学生模型更快地获得高置信度的预测。
    7. 计算量的影响:研究了额外计算步骤是否能够提供与CoT增强相同的性能提升,发现仅仅增加计算步骤并不能替代CoT中的有用信息。
    8. 理性序列连贯性:通过打乱CoT令牌的顺序,发现在目标标签之后的CoT序列不需要连贯也能提升性能。
    9. 关键令牌的作用:通过集成梯度和人类标注来识别关键令牌,并发现这些关键令牌足以实现性能提升。
    10. 结论:论文得出结论,CoT增强蒸馏的关键在于将CoT序列作为额外的训练信号,而不需要学生模型在推理时生成完整的CoT。
    11. 局限性和伦理声明:论文讨论了研究的局限性,包括使用的是公开可用的数据集和模型,以及可能存在的偏见和解释性问题。
    12. 相关工作:论文回顾了与CoT增强蒸馏相关的其他研究,并讨论了其与本文研究的联系。

    论文通过这些研究,为理解和改进使用CoT增强蒸馏的方法提供了深入的见解,并指出了未来研究的潜在方向。


  • 当抽象弊大于利时:我们在生产环境中使用 LangChain 的教训以及我们应该做的

    当抽象弊大于利时:我们在生产环境中使用 LangChain 的教训以及我们应该做的

    作为一名资深科技专栏作家,我最近关注到人工智能领域的一个有趣现象:越来越多的开发者开始质疑框架的必要性。Octomind 公司的深度学习工程师 Fabian Both 近期发表了一篇博文,分享了他们团队在构建 AI 代理时放弃 LangChain 框架的心路历程,这篇文章引发了我的思考。

    LangChain 的诱惑与困境

    Octomind 团队最初选择 LangChain 的原因很简单:它提供了一系列令人印象深刻的组件和工具,并且在当时非常流行。正如 LangChain 的承诺那样,它似乎可以让开发者“在一个下午的时间里,从一个想法变成可运行的代码”。然而,随着 Octomind 团队需求的不断提高,LangChain 的弊端也逐渐显现。

    Both 指出,LangChain 最初在满足简单需求方面表现出色,但其高层抽象很快使得代码变得难以理解和维护。他以一个简单的翻译任务为例,展示了 LangChain 如何增加了代码的复杂性,却没有带来明显的好处。

    以下是使用 OpenAI 包的 Python 代码示例:

    from openai import OpenAI
    
    client = OpenAI(api_key="<your_api_key>")
    text = "hello!"
    language = "Italian"
    
    messages = [
        {"role": "system", "content": "You are an expert translator"},
        {"role": "user", "content": f"Translate the following from English into {language}"},
        {"role": "user", "content": f"{text}"},
    ]
    
    response = client.chat.completions.create(model="gpt-4o", messages=messages)
    result = response.choices[0].message.content

    以下是使用 LangChain 的 Python 代码示例:

    from langchain_openai import ChatOpenAI
    from langchain_core.output_parsers import StrOutputParser
    from langchain_core.prompts import ChatPromptTemplate
    
    os.environ["OPENAI_API_KEY"] = "<your_api_key>"
    text = "hello!"
    language = "Italian"
    
    
    prompt_template = ChatPromptTemplate.from_messages(
        [("system", "You are an expert translator"),
            ("user", "Translate the following from English into {language}"),
            ("user", "{text}")]
    )
    
    parser = StrOutputParser()
    chain = prompt_template | model | parser
    result = chain.invoke({"language": language, "text": text})

    Both 认为,LangChain 在这个例子中引入的“提示模板”、“输出解析器”和“链”等抽象概念,实际上增加了代码的复杂性,却没有带来任何实际价值。

    抽象的代价:速度与灵活性

    Both 进一步指出,LangChain 的高层抽象限制了团队的迭代速度和灵活性。当他们试图构建更复杂的 AI 代理时,LangChain 框架成为了绊脚石。

    例如,当 Octomind 团队希望根据业务逻辑动态更改 AI 代理可以访问的工具时,他们发现 LangChain 无法满足这一需求。最终,他们不得不放弃 LangChain,转而采用更灵活的模块化构建块方法。

    模块化构建块:大道至简

    Both 认为,在大多数情况下,开发者并不需要像 LangChain 这样复杂的框架来构建 AI 应用。他建议采用模块化构建块的方法,只使用少量经过精心挑选的外部软件包,保持架构精简。

    他列举了构建 AI 应用所需的核心组件:

    • 用于 LLM 通信的客户端
    • 用于函数调用的函数/工具
    • 用于 RAG 的向量数据库
    • 用于跟踪和评估的可观测性平台

    通过将这些模块化的构建块组合在一起,开发者可以构建出灵活且易于维护的 AI 应用。

    结论:拥抱简单,回归本质

    Octomind 团队放弃 LangChain 的故事,为我们敲响了警钟:在 AI 领域,抽象并不总是有益的。过度的抽象可能会导致代码复杂、难以维护,并最终阻碍创新。

    正如 Both 所说:“在大多数情况下,你对 LLM 的使用将是简单而直接的。你主要是在编写顺序代码,迭代提示,并提高输出的质量和可预测性。大多数任务都可以通过简单的代码和相对较少的外部软件包来完成。”

    因此,在构建 AI 应用时,我们应该始终牢记“大道至简”的原则,避免过度依赖框架,而是专注于解决实际问题。

    参考文献

    • Both, F. (2024). Why we no longer use LangChain for building our AI agents. Octomind Blog. Retrieved from https://www.octomind.dev/blog/why-we-no-longer-use-langchain-for-building-our-ai-agents
  • 当 Transformer 遇上状态空间模型:结构化状态空间对偶性揭秘

    近年来,深度学习领域取得的巨大成功离不开 Transformer 架构的贡献,尤其是在语言建模方面。然而,随着模型规模的不断扩大,Transformer 的二次时间复杂度成为了其进一步发展的瓶颈。与此同时,状态空间模型(SSM),例如 Mamba,展现出与 Transformer 相媲美甚至更优的性能,并且在中小规模模型上具有线性时间复杂度优势。

    本文将深入探讨 Transformer 与 SSM 之间的联系,并提出一个全新的理论框架——结构化状态空间对偶性(SSD)。该框架揭示了 SSM 与各种注意力变体之间的密切关系,并通过对结构化半可分矩阵的不同分解方式建立了联系。基于 SSD 框架,我们设计了一种全新的架构——Mamba-2,其核心层是对 Mamba 选择性 SSM 的改进,速度提升了 2-8 倍,同时在语言建模方面仍然可以与 Transformer 竞争。

    Transformer 与 SSM 的前世今生

    Transformer:深度学习的明星架构

    Transformer,特别是仅解码器模型(例如 GPT、Llama),以其强大的序列建模能力成为了现代深度学习成功的关键驱动力之一。然而,其核心注意力层的二次时间复杂度问题一直是研究者们努力攻克的难题。

    状态空间模型:线性复杂度的挑战者

    结构化状态空间模型(SSM)作为一种新兴的序列模型,在长程任务(例如 S4)中表现出色,并且最近在中小型语言建模任务中与 Transformer 达到或超过了 Transformer 的性能(例如 Mamba)。SSM 具有线性时间复杂度,在训练和推理过程中效率更高。

    结构化状态空间对偶性:架起沟通的桥梁

    为了更好地理解和改进 SSM,我们提出了结构化状态空间对偶性(SSD)框架,该框架通过结构化矩阵的抽象概念将 SSM 与注意力变体联系起来。

    结构化矩阵:SSD 框架的核心

    结构化矩阵的定义和性质

    结构化矩阵是指具有以下两个特性的矩阵:

    1. 可以通过压缩表示以亚二次(理想情况下是线性)参数表示。
    2. 具有快速算法(最重要的是矩阵乘法),可以直接对其压缩表示进行操作。

    半可分矩阵:SSM 的矩阵表示

    半可分矩阵是一种重要的结构化矩阵,其定义为:矩阵下三角部分中的每个子矩阵的秩最多为 N,其中 N 称为半可分矩阵的阶数或秩。

    本文证明了 SSM 与半可分矩阵之间的等价性,并通过半可分矩阵的顺序半可分(SSS)表示形式建立了联系。

    定理 3.5:状态大小为 N 的状态空间模型变换 y = SSM(A, B, C)(x) 与通过 N 阶半可分矩阵(以 SSS 表示形式)进行矩阵乘法 y = SSS(A, B, C) · x 相同。

    基于结构化矩阵算法的 SSM 计算

    通过将 SSM 视为半可分矩阵,我们可以利用结构化矩阵乘法算法来高效地计算 SSM。

    线性(递归)模式:利用 SSM 的递归形式,可以以线性时间复杂度计算 SSM。

    二次(朴素)模式:直接计算 SSM 的矩阵表示,时间复杂度为二次,但对于短序列长度,由于计算模式的硬件友好性,这种方法可能比线性算法更有效。

    结构化掩码注意力:线性注意力的推广

    注意力框架

    注意力机制的核心是为序列中每对位置分配分数,从而使每个元素能够“关注”其他元素。最常见的注意力变体是 softmax 自注意力,其定义为:

    Y = softmax(QKᵀ) · V

    线性注意力

    线性注意力通过将 softmax 折叠到核特征映射中,并利用矩阵乘法的结合律来重写注意力计算,从而避免了 softmax 的计算。

    命题 4.1:自回归核注意力(即具有因果掩码的掩码核注意力)可以通过每次步骤花费恒定时间的递归以 O(T) 时间计算。

    结构化掩码注意力

    结构化掩码注意力(SMA)将线性注意力推广到使用任何结构化掩码 L 的情况,只要 L 具有亚二次矩阵乘法即可。

    定义 4.2:结构化掩码注意力(SMA)(或简称结构化注意力)定义为对查询/键/值 Q, K, V 以及任何结构化矩阵 L(即具有亚二次矩阵乘法)的函数,通过四路张量收缩:

    Y = contract(TN, SN, SP, TS → TP)(Q, K, V, L)

    状态空间对偶性:SSM 与 SMA 的交汇

    标量-单位结构化 SSM

    当 SSM 中的 A 矩阵是标量时,其朴素二次计算可以看作是核注意力的一种实例。

    1-半可分结构化掩码注意力

    当 SMA 中的掩码 L 是 1-半可分矩阵时,其线性计算形式是状态空间模型的一种特例。

    推论 5.1:1-SS SMA(具有 1-半可分结构化矩阵 L 的掩码注意力)(15)是对角 SSM(8)的一种特例,其中对角矩阵是单位矩阵的标量倍数。

    定理 5.2:对于任何作为有界阶自回归过程的结构化掩码注意力(定义 4.2)实例,结构化掩码 L 必须是半可分矩阵。

    结构化状态空间对偶性

    SSD 框架揭示了 SSM 与 SMA 之间的对偶关系,其中线性 SSM 算法和二次核注意力算法是彼此的对偶形式。

    SSD 模型的硬件高效算法

    块分解

    为了高效地计算 SSD 模型,我们采用了一种块分解方法。将矩阵 M 分解成大小为 Q × Q 的子矩阵的 T/Q × T/Q 网格,其中 Q 是块大小。对角块可以使用二次 SMA 模式高效计算,而离对角块可以利用半可分矩阵的秩结构分解为更小的递归。

    计算成本

    SSD 算法的计算成本与线性 SSM 相同,但其硬件友好性与注意力机制相当,主要使用矩阵乘法。

    定理 6.1:考虑状态扩展因子为 N 且头部维度为 P = N 的 SSD 模型。存在一种算法,可以在任何输入 X ∈ R(T,P) 上计算模型,该算法仅需要 O(TN²) 训练 FLOP、O(TN) 推理 FLOP、O(N²) 推理内存,并且其工作量主要由矩阵乘法决定。

    Mamba-2 架构

    块设计

    Mamba-2 架构对 Mamba-1 块进行了一些修改,这些修改部分是受注意力机制的启发,也是为了提高 Mamba-2 的可扩展性。

    并行参数投影:Mamba-2 在块的开头使用单个投影并行生成 A, X, B, C,这与标准注意力架构类似,其中 X, B, C 对应于并行创建的 Q, K, V 投影。

    额外的归一化:为了提高稳定性,在最终输出投影之前添加了一个额外的归一化层(例如 LayerNorm、GroupNorm 或 RMSNorm)。

    多头模式

    类似于多头注意力,Mamba-2 也采用了多头模式,其中状态大小 N 和头部维度 P 分别类似于注意力的 QK 头部维度和 V 头部维度。

    多输入 SSM (MIS) / 多值注意力 (MVA) 模式:Mamba-2 使用 MVA 模式,其中 BC 矩阵(对应于注意力中的 KQ)在输入 X 的所有通道(对应于注意力中的 V)之间共享。

    其他 SSD 扩展

    SSD 还可以结合线性注意力文献中的其他思想,例如各种形式的核近似。

    核注意力近似 softmax 注意力:Mamba-2 中包含一个灵活的核特征映射,并将其应用于 BC 分支(对应于注意力中的 KV 分支)。

    合并归一化(分母)项:可以通过在 X 中添加一个额外的列 1 来找到分母项,从而得到形状为 (T, P + 1) 的张量。

    实验验证

    关联回忆

    在多查询关联回忆(MQAR)任务中,Mamba-2 表现出色,并且随着状态大小的增加,性能持续提高。

    语言建模

    在标准语言建模任务中,Mamba-2 在困惑度和零样本评估方面与其他架构相比具有竞争力。

    速度基准

    SSD 算法比 Mamba 的扫描实现快 2-8 倍,并且在中等序列长度下与优化的注意力机制相当。

    相关工作和讨论

    状态空间模型

    SSD 可以描述为具有 SISO 维度和标量-单位结构的选择性 SSM。

    结构化矩阵

    SSD 框架将 SSM 视为具有特定结构的矩阵混合器——半可分矩阵。

    (线性)注意力

    SSD 与标准(因果)注意力的主要区别在于:

    1. SSD 不使用 softmax 激活函数。
    2. SSD 将 logits 矩阵乘以一个输入相关的 1-半可分掩码。

    相关模型

    最近出现了一些与 Mamba 和 Mamba-2 非常相似的序列模型,例如 RetNet、TransNormerLLM、GateLoop、Gated Linear Attention (GLA)、HGRN、Griffin、xLSTM 和 RWKV(-4)。

    结论

    SSD 框架为理解和改进 SSM 提供了一个新的视角,并为设计更高效、更强大的序列模型开辟了新的方向。

    参考文献

    • Dao, T., Gu, A., et al. (2019). M2: A high-performance monarch matrix multiplication library. In Proceedings of the 2019 IEEE/ACM International Symposium on Code Generation and Optimization (CGO) (pp. 174–185).
    • Gu, A., Goel, K., & Ré, C. (2022). Efficiently Modeling Long Sequences with Structured State Spaces. In International Conference on Learning Representations.
    • Gu, A., & Dao, T. (2023). Mamba: Linear-Complexity Attention with Selective State Spaces. arXiv preprint arXiv:2307.00855.
    • Katharopoulos, A., Vyas, A., Pappas, N., & Fleuret, F. (2020). Transformers are rnns: Fast autoregressive transformers with linear attention. In International Conference on Machine Learning (pp. 5156–5165). PMLR.
    • Pernet, C., & Storjohann, A. (2018). Time and space efficient generators for quasiseparable matrices. Journal of Symbolic Computation, 85, 224–246.
    • Sun, Y., Dehghani, M., et al. (2023). Retentive Network: A Successor to Transformer for Large Language Models. arXiv preprint arXiv:2307.08621.

  • 化解信息迷航:让AI轻松应对海量文本挑战

    近年来,人工智能(AI)发展日新月异,尤其是大型语言模型(LLM)的出现,例如ChatGPT,更是让人们看到了AI在理解和生成人类语言方面惊人的潜力。然而,即使强大的LLM也面临着一个巨大的挑战:如何高效地处理海量文本信息?

    想象一下,当你面对浩如烟海的文献资料,需要从中寻找特定问题的答案时,是不是常常感到力不从心?LLM也面临着同样的困境。传统的LLM受限于“内存”大小,只能处理有限长度的文本,面对过长的文本就会像迷失在信息海洋中一样,难以抓住重点,更不用说从中提取有效信息并进行推理了。

    为了解决这个问题,科学家们提出了各种各样的方法,例如优化LLM的内部结构,或是借助外部工具帮助LLM检索信息。然而,这些方法要么效果有限,要么成本高昂,难以满足实际应用的需求。

    最近,一种名为GraphReader的全新系统横空出世,为解决LLM的“阅读障碍”带来了新的希望。

    GraphReader的工作原理是什么?

    简单来说,GraphReader就像一位高效的“阅读助手”,它可以将海量文本信息转化为一张结构清晰的“知识地图”,并指导LLM在这张地图上精准地找到目标信息。

    具体来说,GraphReader的工作流程可以分为以下几个步骤:

    1. 绘制地图: 首先,GraphReader会将长篇文本分割成多个小的片段,并从中提取出关键信息,例如人物、事件、地点等等。然后,它会根据这些关键信息之间的关系,将它们连接起来,形成一张类似于“思维导图”的知识图谱。
    2. 制定计划: 当用户提出问题后,GraphReader会先分析问题的类型和关键信息,然后制定一个合理的“阅读计划”,明确需要重点关注哪些信息。
    3. 精准导航: GraphReader会根据“阅读计划”,引导LLM在这张“知识地图”上进行有目的的探索,避免LLM在海量信息中迷失方向。
    4. 信息整合: LLM在探索过程中,会将收集到的相关信息记录下来,并最终整合这些信息,生成最终的答案。

    GraphReader的优势是什么?

    • 高效处理海量文本: GraphReader能够将长文本转化为结构化的知识图谱,帮助LLM快速定位关键信息,从而突破传统LLM在文本长度上的限制。
    • 提升推理能力: GraphReader引导LLM进行有目的的探索,避免了无关信息的干扰,从而提高了LLM的推理效率和准确性。
    • 降低计算成本: 相比于其他方法,GraphReader的计算成本更低,更容易应用于实际场景。

    GraphReader的应用前景

    GraphReader的出现为LLM处理海量文本信息提供了一种全新的思路,未来有望应用于各种需要处理长文本的场景,例如:

    • 智能客服: 帮助客服机器人更准确地理解用户问题,并给出更详细的解答。
    • 文献检索: 帮助研究人员快速从海量文献中找到所需的信息。
    • 新闻摘要: 自动生成简洁准确的新闻摘要,帮助读者快速了解新闻内容。

    总而言之,GraphReader的出现是LLM发展历程上的一个重要里程碑,它将帮助LLM突破自身局限,更好地理解和应用人类的知识,为我们带来更加智能化的未来。

  • GraphReader:基于图的智能体,增强大型语言模型的长文本处理能力

    大型语言模型 (LLM) 在自然语言理解和生成方面取得了显著进步,但受限于上下文窗口和内存使用,它们在处理长文本时仍然面临挑战。现有的长文本处理方法主要分为模型级别和智能体级别,但都存在一定的局限性:模型级别方法训练成本高昂,且容易忽略长文本中的关键细节;智能体级别方法则难以捕捉多跳关系和长距离依赖,在处理超长文本时效果不佳。

    为了解决这些问题,本文提出了一种名为 GraphReader基于图的智能体系统,它能够将长文本结构化为图,并利用智能体自主探索图结构,从而有效地处理长文本信息。

    1. GraphReader 的工作原理

    GraphReader 的工作流程主要分为三个阶段:图构建、图探索和答案推理

    1.1 图构建

    • 将长文本分割成多个文本块 (Chunk),并保留段落结构。
    • 使用 LLM 从每个文本块中提取关键元素 (Key Element) 和原子事实 (Atomic Fact)。
    • 将关键元素和原子事实构建成图结构,其中节点代表关键元素及其相关的原子事实,边代表节点之间的关系。

    1.2 图探索

    • 智能体根据问题和预先设定的理性计划,选择初始节点开始探索。
    • 智能体首先探索节点的原子事实,然后深入阅读相关的文本块,并不断记录新的见解和反思当前情况,以优化探索过程。
    • 智能体根据问题、理性计划和笔记内容,选择下一个要探索的相邻节点,直到收集到足够的信息来回答问题。

    1.3 答案推理

    • 将所有智能体收集到的笔记汇总,并使用 LLM 进行推理和生成最终答案。
    • LLM 首先分析每个笔记,并利用其他笔记中的信息进行补充和验证,最终综合所有信息生成最终答案。

    2. 实验结果

    GraphReader 在多个长文本问答基准测试中表现出色,包括多跳长文本问答 (HotpotQA、2WikiMultihopQA、MuSiQue) 和单跳长文本问答 (NarrativeQA)。

    2.1 超越 GPT-4-128k

    实验结果表明,GraphReader 在使用 4k 上下文窗口的情况下,在 16k 到 256k 的不同文本长度上,始终优于 GPT-4-128k。这表明 GraphReader 能够有效地利用图结构捕捉长距离依赖关系,并利用智能体进行高效的探索,从而在有限的上下文窗口内处理超长文本。

    2.2 强大的召回能力

    GraphReader 在关键信息召回方面也表现出色。在 HotpotWikiQA-mixup 数据集上,GraphReader 始终优于其他基线方法,即使在 256k 的超长文本长度下,仍然能够保持约 60% 的召回率。

    3. 结论

    GraphReader 是一种基于图的智能体系统,它能够有效地增强大型语言模型的长文本处理能力。通过将长文本结构化为图,并利用智能体进行自主探索,GraphReader 能够在有限的上下文窗口内捕捉长距离依赖关系,并高效地收集关键信息,从而在各种长文本问答任务中取得优异的成绩。

    4. 局限性

    GraphReader 目前依赖于闭源的 GPT-4 API,未来需要收集数据并训练开源模型,以便更好地服务于更广泛的社区。此外,智能体的效率取决于其规划和推理能力,未来需要进一步提升这些能力,以提高 GraphReader 的效率和性能。


    GraphReader 的核心优势:图结构与智能体协同合作

    GraphReader 的出色表现源于其巧妙的设计,它将图结构和智能体有机地结合在一起,充分发挥了各自的优势:

    • 图结构: 图结构能够有效地组织长文本信息,捕捉文本块之间的长距离依赖关系和多跳关系,为智能体提供全局视野。
    • 智能体: 智能体能够根据问题和理性计划,自主地探索图结构,并利用预定义函数进行精细化操作,从而高效地收集关键信息。

    5. GraphReader 的关键组件

    5.1 理性计划 (Rational Plan)

    理性计划是 GraphReader 的核心组件之一,它指导智能体进行高效的图探索。智能体会根据问题,将复杂问题分解成多个步骤,并确定每个步骤所需的关键信息,从而形成一个清晰的行动计划。

    5.2 节点选择 (Node Selection)

    GraphReader 的另一个关键组件是节点选择机制。智能体不会盲目地探索所有节点,而是根据问题、理性计划和笔记内容,选择最有可能包含关键信息的节点进行探索,从而提高探索效率。

    5.3 预定义函数 (Predefined Functions)

    GraphReader 为智能体提供了一组预定义函数,例如:

    • read_chunk(List[ID]): 读取指定 ID 的文本块。
    • stop_and_read_neighbor(): 停止当前节点的探索,并转向相邻节点。
    • search_more(): 继续探索当前节点的文本块。
    • read_previous/subsequent_chunk(): 读取前一个或后一个文本块。
    • termination(): 终止探索过程。

    这些函数使智能体能够执行精细化操作,例如选择性地阅读文本块、跳转到相邻节点、终止探索等,从而提高探索效率和准确性。

    6. 未来方向

    GraphReader 为解决 LLM 长文本处理问题提供了一种新思路,未来研究可以从以下几个方面进行扩展:

    • 开源模型: 目前 GraphReader 依赖于闭源的 GPT-4 API,未来可以收集数据并训练开源模型,以便更好地服务于更广泛的社区。
    • 智能体增强: 智能体的效率取决于其规划和推理能力,未来可以探索更强大的规划和推理算法,例如利用知识图谱或强化学习来提升智能体的性能。
    • 多模态扩展: GraphReader 目前主要处理文本信息,未来可以扩展到多模态场景,例如将图像、视频等信息也纳入图结构中,并利用智能体进行多模态信息处理。

    Q: 这篇论文试图解决什么问题?

    A: 这篇论文介绍了一个名为GraphReader的系统,旨在解决大型语言模型(Large Language Models, LLMs)在处理长文本和复杂任务时面临的挑战。具体来说,尽管已有多种方法尝试优化LLMs以处理长文本,但它们在处理长输入时仍存在一些限制,例如上下文窗口的限制和内存使用问题。这些限制导致LLMs在处理长文本时可能会忽略重要细节,特别是在处理多跳(multi-hop)问题时。

    为了克服这些问题,GraphReader通过以下几个关键步骤来增强LLMs处理长文本的能力:

    1. 将长文本分割成离散的块(chunks),提取关键信息,并将其压缩成关键元素和原子事实。
    2. 使用这些关键元素和事实构建一个图(graph),其中节点表示关键元素及其相关的原子事实。
    3. 通过一个代理(agent)系统自主地探索这个图,代理会根据问题逐步分析并制定合理计划,然后调用预定义的函数来读取节点内容和邻居信息,实现从粗到细的图探索。

    通过这种方法,GraphReader能够有效捕捉长文本中的长距离依赖和多跳关系,并且通过代理的自主探索和笔记记录,优化处理过程,直到收集到足够的信息生成答案。

    Q: 有哪些相关研究?

    A: 论文中提到了与长文本处理相关的几个研究领域,包括:

    1. 长上下文大型语言模型(Long-Context LLMs)
      • 研究者们专注于通过位置插值(Positional Interpolation, PI)增强模型处理长上下文的能力,但这需要在全文长度的文本上进行训练,导致数据和训练成本显著增加。
      • 一些方法如PoSE和SkipAlign研究了数据跳过策略,但这些方法可能会忽略长文本中的细节信息。
    2. 检索增强生成(Retrieval-Augmented Generation, RAG)
      • RAG利用大量文档数据库提取与任务相关的信息以辅助响应生成。
      • 研究者们探索了不同的检索粒度,包括标记(tokens)、实体(entities)和块(chunks)。
    3. 代理用于检索(Agent for Retrieval)
      • 最近的工作越来越多地利用LLMs作为代理来处理复杂问题,使用它们强大的规划和反思能力。
      • 例如,WebGPT模拟人类行为在互联网上搜索特定答案,而ReadAgent将文档组织成树形结构或分页页面。
    4. 变换器变体(Transformer Variants)
      • 提出了具有修改注意力机制的变换器变体,以解决长上下文问题,但这些模型可能会丢失早期信息。
    5. 其他相关工作
      • 包括对大型语言模型进行微调、修改位置嵌入、应用变换器变体等方法来优化长上下文任务的处理。

    这些研究为GraphReader的设计提供了背景和基础,同时也展示了现有方法的局限性,GraphReader旨在通过图结构和代理系统的方法来克服这些限制。

    Q: 论文如何解决这个问题?

    A: 论文通过提出GraphReader系统来解决大型语言模型(LLMs)处理长文本的问题。GraphReader的解决方案主要包括以下几个关键步骤:

    1. 图结构构建(Graph Construction)
      • 将长文本分割成小块(chunks),并提取关键元素和原子事实。
      • 将关键元素和原子事实构建成图,其中节点表示关键元素,边表示节点之间的关系。
    2. 代理初始化(Agent Initialization)
      • 代理首先制定一个理性的计划(Rational Plan),确定解决问题所需的关键信息。
      • 选择初始节点,这些节点是图探索的起点。
    3. 图探索(Graph Exploration)
      • 代理使用预定义的函数自主探索图结构,包括读取节点内容、邻居节点和相关信息。
      • 代理在探索过程中持续更新笔记本(notebook),记录相关信息。
    4. 信息收集与反思(Information Gathering and Reflection)
      • 代理在探索过程中,根据问题和理性计划,不断收集信息并进行反思,直到收集到足够的信息。
    5. 答案推理(Answer Reasoning)
      • 代理收集完所有信息后,使用链式思考(Chain-of-Thought)策略,分析每个笔记本中的内容,使用多数投票策略解决任何不一致性。
      • 最终,代理综合所有可用信息生成最终答案。
    6. 实验验证(Experimental Validation)
      • 在多个长文本问答(QA)基准测试中,验证GraphReader的性能,包括单跳和多跳问题。

    通过这种方法,GraphReader能够有效地处理长文本中的长距离依赖和多跳关系,同时在有限的上下文窗口内实现高效的信息检索和问题解答。

    Q: 论文做了哪些实验?

    A: 论文中进行了多项实验来评估GraphReader的性能,主要实验包括:

    1. 基准测试(Benchmark Evaluation)
      • 在两种类型的长文本问答(QA)基准测试上进行实验,包括多跳长文本QA(如HotpotQA、2WikiMultihopQA、MuSiQue)和单跳长文本QA(如NarrativeQA)。
      • 还包括了LV-Eval中的HotpotWikiQA-mixup,这是一个多跳基准测试,具有五个不同文本长度级别:16k、32k、64k、128k和256k。
    2. 评估指标(Evaluation Metrics)
      • 使用了多个自动评估指标,如F1分数、精确匹配(Exact Match, EM)分数和LV-Eval优化的F1*分数。
      • 为了评估答案的正确性,还实现了LLM Raters,使用LLM来评估答案的正确性,记为LLM-Rating-1(LR-1)和LLM-Rating-2(LR-2)。
    3. 与基线方法的比较(Comparison with Baseline Methods)
      • 将GraphReader与以下基线方法进行比较:检索增强生成(RAG)、长上下文LLM和基于代理的方法(如ReadAgent)。
    4. 主要结果(Main Results)
      • 展示了不同方法在四个多跳长文本基准测试和一个单跳长文本基准测试上的性能。
    5. 在极长文本任务上的评估(Evaluation on Extremely Long Context Tasks)
      • 研究了极长文本对GraphReader的影响,比较了不同方法在16k到256k不同文本长度级别上的性能。
    6. 消融研究(Ablation Study)
      • 分析了理性计划(Rational Plan)和节点选择(Node Selection)对GraphReader性能的影响。
      • 评估了不同初始节点数量对性能的影响,以及块大小(Chunk Size)对GraphReader性能的影响。
    7. 进一步分析(Further Analysis)
      • 对推理成本(Inference Cost)进行了分析,比较了ReadAgent和GraphReader的平均令牌消耗。
      • 对支持事实的召回率(Recall Rate Analysis)进行了评估,分析了不同方法在HotpotWikiQA-mixup数据集上的表现。

    这些实验结果表明GraphReader在处理长文本和复杂问题时的性能优于现有的方法,并且能够高效地利用有限的上下文窗口来处理长距离依赖和多跳关系。

    Q: 有什么可以进一步探索的点?

    A: 尽管GraphReader在处理长文本方面取得了显著的成果,但仍有一些潜在的研究方向可以进一步探索:

    1. 开放源代码:目前GraphReader使用的是闭源的GPT-4 API。未来的工作可以包括收集数据、训练模型,并将其开源,以便更广泛地贡献于学术界和工业界。
    2. 提高代理的效率:代理的效率依赖于其规划和推理能力。未来的研究可以探索如何增强这些功能,以提高方法的有效性。
    3. 处理更长文本:尽管GraphReader在长文本处理方面表现出色,但可以进一步研究如何扩展其能力以处理更长的文本,例如通过改进图结构的构建和探索策略。
    4. 优化图结构:研究不同的图结构优化技术,如节点聚类、边剪枝等,以提高图的可扩展性和探索效率。
    5. 多模态输入:探索将GraphReader扩展到多模态输入,例如结合文本、图像和其他数据类型,以处理更丰富的信息。
    6. 跨领域应用:研究GraphReader在不同领域(如医疗、法律、金融等)的应用,并针对特定领域进行优化。
    7. 用户交互:开发更复杂的用户交互机制,允许用户在探索过程中提供反馈,以指导代理更有效地搜索和推理。
    8. 实时性能:研究如何提高GraphReader的实时性能,以便在需要快速响应的应用场景中使用。
    9. 鲁棒性和泛化能力:进一步研究GraphReader在面对噪声数据、不完整信息或领域外数据时的鲁棒性和泛化能力。
    10. 可解释性:提高GraphReader的决策过程的可解释性,帮助用户理解其推理过程和答案生成的逻辑。
    11. 能耗和环境影响:评估和优化GraphReader在训练和推理过程中的能耗,以减少对环境的影响。
    12. 多语言支持:扩展GraphReader以支持多种语言,使其能够处理不同语言的长文本数据。

    这些探索点可以帮助GraphReader系统不断进步,更好地适应各种复杂和动态的环境。

    Q: 总结一下论文的主要内容

    A: 这篇论文介绍了GraphReader,一个基于图的代理系统,旨在增强大型语言模型(LLMs)处理长文本的能力。以下是论文的主要内容总结:

    1. 问题背景:传统的LLMs在处理长文本时面临上下文窗口和内存使用的限制,尤其在处理多跳问题时可能会忽略重要细节。
    2. GraphReader系统:提出了GraphReader,一个通过将长文本结构化为图并使用代理自主探索该图来处理长文本的系统。
    3. 系统组成
      • 图构建:将文本分割成块,提取关键元素和原子事实,构建图结构以捕捉长文本中的长距离依赖和多跳关系。
      • 代理操作:代理基于问题制定理性计划,选择初始节点,并使用预定义函数探索图结构。
    4. 方法论
      • 代理初始化:包括制定解决问题的步骤计划和选择起始节点。
      • 图探索:代理通过读取节点内容、邻居信息,并在探索过程中记录新见解。
      • 答案推理:代理收集完信息后,使用链式思考策略生成最终答案。
    5. 实验:在多个长文本问答基准上评估GraphReader的性能,包括单跳和多跳问题,并与现有方法进行比较。
    6. 结果:GraphReader在不同上下文长度的长文本任务上均优于基线方法,显示出在处理长文本方面的优势。
    7. 消融研究:分析了理性计划和节点选择对性能的影响,以及不同初始节点数量和块大小对系统性能的作用。
    8. 进一步分析:评估了GraphReader在推理成本和支持事实召回率方面的表现。
    9. 结论:GraphReader成功地通过图结构和代理探索方法增强了LLMs的长文本处理能力。
    10. 局限性和未来工作:讨论了GraphReader的局限性,并提出了未来可能的研究方向。

    整体而言,这篇论文提出了一个创新的系统,通过结构化长文本和代理探索的方法,有效地提高了LLMs处理长文本和复杂问题的能力。

  • 理解策略梯度算法

    引言

    策略梯度(Policy Gradient)是解决强化学习问题的一种方法。如果你对强化学习领域还不太了解,建议先阅读“A (Long) Peek into Reinforcement Learning » Key Concepts”一文,了解问题定义和基本概念。

    符号说明

    为了帮助大家更好地理解文中的公式,以下是一些常用符号的解释:

    符号含义
    (s \in \mathcal{S})状态
    (a \in \mathcal{A})动作
    (r \in \mathcal{R})奖励
    (S_t, A_t, R_t)在时间步 (t) 的状态、动作和奖励
    (\gamma)折扣因子;用于惩罚未来奖励的不确定性,(0 < \gamma \leq 1)
    (G_t)回报(或折扣后的未来奖励),(G_t = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1})
    (P(s’, r \vert s, a))从当前状态 (s) 通过动作 (a) 转移到下一个状态 (s’) 并获得奖励 (r) 的概率
    (\pi(a \vert s))随机策略(代理行为策略),(\pi_\theta(.)) 是参数化的策略
    (\mu(s))确定性策略;我们也可以用 (\pi(s)),但用不同的字母可以更好地区分随机策略和确定性策略
    (V(s))状态值函数,衡量状态 (s) 的期望回报;(V_w(.)) 是参数化的值函数
    (V^\pi(s))跟随策略 (\pi) 时状态 (s) 的值,(V^\pi(s) = \mathbb{E}_{a\sim \pi} [G_t \vert S_t = s])
    (Q(s, a))动作值函数,类似于 (V(s)),但评估的是状态和动作对 ((s, a)) 的期望回报;(Q_w(.)) 是参数化的动作值函数
    (Q^\pi(s, a))跟随策略 (\pi) 时状态和动作对 ((s, a)) 的值,(Q^\pi(s, a) = \mathbb{E}_{a\sim \pi} [G_t \vert S_t = s, A_t = a])
    (A(s, a))优势函数,(A(s, a) = Q(s, a) – V(s));它可以被看作是另一种具有较低方差的 (Q) 值

    策略梯度的核心思想

    强化学习的目标是找到一个最优的行为策略,使智能体获得最大的奖励。策略梯度方法直接针对策略进行建模和优化。策略通常用参数 (\theta) 表示为 (\pi_\theta(a \vert s))。奖励(目标)函数的值依赖于这个策略,然后可以应用各种算法来优化 (\theta) 以获得最佳奖励。

    奖励函数定义为:

    [ J(\theta) = \sum_{s \in \mathcal{S}} d^\pi(s) V^\pi(s) = \sum_{s \in \mathcal{S}} d^\pi(s) \sum_{a \in \mathcal{A}} \pi_\theta(a \vert s) Q^\pi(s, a) ]

    其中,(d^\pi(s)) 是 (\pi_\theta) 的马尔可夫链的平稳分布(跟随策略 (\pi) 时的状态分布)。

    通过梯度上升,我们可以沿着梯度 (\nabla_\theta J(\theta)) 的方向调整 (\theta),以找到能产生最高回报的最佳 (\theta)。

    策略梯度定理

    计算 (\nabla_\theta J(\theta)) 比较复杂,因为它既涉及动作选择(直接由 (\pi_\theta) 决定)又涉及状态分布(间接由 (\pi_\theta) 决定)。由于环境通常是未知的,因此难以估计策略更新对状态分布的影响。

    幸运的是,策略梯度定理提供了一种简化梯度计算的优雅方法,不需要涉及状态分布 (d^\pi(.)) 的导数:

    [
    \begin{aligned}
    \nabla_\theta J(\theta)
    &= \nabla_\theta \sum_{s \in \mathcal{S}} d^\pi(s) \sum_{a \in \mathcal{A}} Q^\pi(s, a) \pi_\theta(a \vert s) \
    &\propto \sum_{s \in \mathcal{S}} d^\pi(s) \sum_{a \in \mathcal{A}} Q^\pi(s, a) \nabla_\theta \pi_\theta(a \vert s)
    \end{aligned}
    ]

    策略梯度定理的证明

    这一部分内容较为密集,我们将通过推导来证明策略梯度定理的正确性。

    首先,从状态值函数的导数开始:

    [
    \begin{aligned}
    & \nabla_\theta V^\pi(s) \
    =& \nabla_\theta \left(\sum_{a \in \mathcal{A}} \pi_\theta(a \vert s) Q^\pi(s, a) \right) \
    =& \sum_{a \in \mathcal{A}} \left( \nabla_\theta \pi_\theta(a \vert s) Q^\pi(s, a) + \pi_\theta(a \vert s) \color{red}{\nabla_\theta Q^\pi(s, a)} \right) \quad \text{(乘积法则)} \
    =& \sum_{a \in \mathcal{A}} \left( \nabla_\theta \pi_\theta(a \vert s) Q^\pi(s, a) + \pi_\theta(a \vert s) \color{red}{\nabla_\theta \sum_{s’, r} P(s’,r \vert s,a)(r + V^\pi(s’))} \right) \quad \text{(扩展 (Q^\pi) 以包含未来状态值)} \
    =& \sum_{a \in \mathcal{A}} \left( \nabla_\theta \pi_\theta(a \vert s) Q^\pi(s, a) + \pi_\theta(a \vert s) \color{red}{\sum_{s’, r} P(s’,r \vert s,a) \nabla_\theta V^\pi(s’)} \right) \quad \text{(使用 (P(s’,r \vert s,a)))}
    \end{aligned}
    ]

    可以看到,导数中的一项涉及 (V^\pi(s’)) 的导数,而这又会引入更多的状态和动作。然而,通过数学推导和一些运算技巧,我们可以逐步简化并得出最终的策略梯度公式。

    策略梯度算法

    接下来,我们介绍几种常见的策略梯度算法:

    1. REINFORCE

    REINFORCE 是一种基本的策略梯度方法,它通过采样轨迹来估计梯度,并利用这些估计值来更新策略参数。

    2. Actor-Critic

    Actor-Critic 方法结合了策略评估(critic)和策略改进(actor),使得算法在估计策略梯度时更加高效和稳定。

    3. Off-Policy Policy Gradient

    这种方法允许我们使用行为策略(behavior policy)来收集数据,并使用目标策略(target policy)来进行学习,从而提高数据利用率。

    4. A3C & A2C

    A3C(Asynchronous Advantage Actor-Critic)和 A2C(Advantage Actor-Critic)是 Actor-Critic 方法的改进版本,通过异步更新和同步更新来提高算法的效率和性能。

    5. DDPG & TD3

    DDPG(Deep Deterministic Policy Gradient)和 TD3(Twin Delayed Deep Deterministic Policy Gradient)适用于连续动作空间,利用深度神经网络来近似策略和值函数。

    6. PPO & TRPO

    PPO(Proximal Policy Optimization)和 TRPO(Trust Region Policy Optimization)通过引入信赖域和裁剪机制来确保策略更新的稳定性和有效性。

    7. SAC

    SAC(Soft Actor-Critic)引入了熵正则化项,使策略在探索和利用之间取得平衡。SAC 还可以自动调整温度参数,以优化探索过程。

    8. 其他算法

    除了上述几种常见的策略梯度算法,还有一些其他的变种和改进方法,如 SVPG(Stein Variational Policy Gradient)、IMPALA、DPG(Deterministic Policy Gradient)及其多智能体版本 MADDPG 等。

    策略梯度算法的应用

    策略梯度算法在强化学习的各个领域中有广泛的应用,包括但不限于以下几个方面:

    1. 游戏和娱乐:策略梯度算法被广泛应用于训练游戏 AI,例如 OpenAI 的 Dota 2 机器人和 DeepMind 的 AlphaGo。
    2. 机器人控制:用于复杂的机器人控制任务,如机械手臂的操作和无人机的导航。
    3. 自动驾驶:帮助自动驾驶系统在复杂的道路环境中进行决策和规划。
    4. 金融交易:用于优化交易策略,提高投资组合的收益率。
    5. 医疗诊断:辅助医疗决策,优化治疗方案。

    结论

    策略梯度算法提供了一种直接优化策略的方法,使得强化学习在解决复杂决策问题时更加高效和灵活。尽管计算过程相对复杂,但通过合理的算法设计和优化,可以在实际应用中取得显著的效果。

    如果你对策略梯度算法感兴趣,不妨深入研究本文提到的各种算法和数学推导。通过不断实践和探索,你将能够掌握这一强大的工具,并将其应用于各种实际问题中。

    参考文献

    • Sutton, R. S., & Barto, A. G. (2018). Reinforcement Learning: An Introduction. MIT Press.
    • Lilian Weng. (2018). Policy Gradient Algorithms. Retrieved from Lil’Log

    希望这篇文章能帮助你更好地理解策略梯度算法及其应用。如果有任何问题或建议,欢迎在评论区留言讨论。


  • RLHF 家族的奇巧魔改:On Policy 与 Off Policy 路线大PK

    随着 [Llama3] 的开源,Alignment 的重要性日益凸显,而作为 Alignment 中坚力量的 RLHF 家族也愈发繁荣。今天,我们就来一起探索一下 RLHF 领域中那些令人拍案叫绝的魔改思路吧!

    On Policy vs. Off Policy:究竟谁更胜一筹?

    在 LLM 领域,RLHF 主要分为两大路线:

    • On Policy 路线: 以 [PPO] 为代表,需要 LLM 在训练过程中实时生成文本。
    • Off Policy 路线: 以 [DPO] 为代表,不需要 LLM 在训练过程中实时生成文本,而是利用已有的数据进行学习。

    On Policy 方法通常需要更大的算力支持,训练时间也更长,但理论上具有更高的效果上限。

    On Policy:让模型亲自上阵

    On Policy 方法强调让模型在训练过程中“亲力亲为”,根据自身生成结果的好坏来学习改进。

    举个例子,想象一下你正在学习玩王者荣耀:

    • On Policy: 你亲自上阵,旁边有一位教练实时指导你的操作,当你成功推塔时给予鼓励,当你失误被杀时及时提醒。
    • Off Policy: 你观看大量职业选手和青铜玩家的对局视频,学习前者的优秀操作,避免后者的低级失误。

    On Policy 方法的优势在于训练数据与模型能力完全匹配,因为所有数据都是由当前模型生成的。

    Off Policy:站在巨人的肩膀上学习

    Off Policy 方法则侧重于利用已有数据进行学习,模型不需要亲自生成答案,因此训练速度更快,对算力要求更低。

    然而,Off Policy 方法的效果很大程度上取决于训练数据的质量和与模型能力的匹配程度。如果数据质量不高,或者与模型能力相差太远,那么训练效果就会大打折扣。

    1. On Policy 路线:PPO 及其优化

    1.1 ReMax:丢掉 Critic,轻装上阵

    [ReMax] 提出了一种大胆的想法:丢弃 PPO 中的 Critic 网络,让 Actor 直接与 Reward Model 对齐。

    这样做的好处显而易见:

    • 减少模型参数: 从 4 个模型减少到 3 个,参数量大幅降低。
    • 加速训练: 不再需要更新 Critic 网络,反向传播速度更快。

    ReMax 的核心在于使用“当前策略”认为最好的行为来作为 baseline,从而在没有 Critic 的情况下降低方差,稳定训练。

    1.2 GRPO:暴力求均值,效果依旧惊艳

    [DeepSpeek-v2] 中提出的 [GRPO] 算法则采取了另一种思路:保留 PPO 中 importance sampling 和 clip 等先进机制,但使用暴力采样求均值的方式来代替 Critic 网络。

    GRPO 的优势在于:

    • 简化模型结构: 无需 Critic 网络,降低了模型复杂度。
    • 保留 PPO 优势: 保留了 PPO 中的优秀机制,保证了训练效果。

    1.3 其他 On Policy 优化方向

    除了 ReMax 和 GRPO 之外,研究人员还探索了其他优化 PPO 算法的方向,例如:

    • 分布式 PPO: 将训练任务分配到多个 GPU 或 TPU 上,加快训练速度。
    • 基于 Transformer 的 PPO: 利用 Transformer 模型强大的表征能力,提升策略网络的性能。

    2. Off Policy 路线:DPO 及其改进

    2.1 DPO:最大化概率差,简单高效

    [DPO] 算法的思路非常直观:对于同一个 prompt,通过降低“坏答案”的采样概率,提升“好答案”的采样概率,从而训练模型。

    DPO 的优势在于:

    • 训练高效: 无需模型生成文本,训练速度快。
    • 数据利用率高: 可以充分利用已有的 pair 数据。

    2.2 DPOP:添加正则项,防止模型“训崩”

    DPO 算法存在一个问题:在某些情况下,”好答案” 和 “坏答案” 的采样概率会同时降低,导致模型效果不佳。

    为了解决这个问题,[DPOP] 算法在 DPO loss 的基础上加入了一个正则项,旨在:

    • 当模型对 “好答案” 拟合不足时,鼓励模型更多地学习 “好答案”。
    • 当模型对 “好答案” 拟合较好时,着重降低 “坏答案” 的采样概率。

    2.3 TDPO:引入 KL 惩罚,平衡效率与多样性

    与 PPO 类似,[TDPO] 算法也在 DPO 的 loss 函数中引入了 KL 惩罚项,用于限制模型更新幅度,防止过拟合。

    与 PPO 不同的是,TDPO 使用的是 forward KL,而不是 backward KL。这样做的好处是:

    • 输出多样性更高: forward KL 鼓励模型覆盖更广泛的概率分布,从而生成更多样化的文本。

    2.4 ORPO:抛弃参考模型,化繁为简

    [ORPO] 算法则更进一步,试图连 reference model 也一并省去。

    ORPO 的 loss 函数由两部分组成:

    • SFT Loss: 保证模型对 chosen response 的基本拟合。
    • Odds Ratio Loss: 通过最大化“好答案”与“坏答案”的 odds 值之比,来提升模型对“好答案”的偏好。

    结语

    无论是 On Policy 还是 Off Policy,RLHF 家族的“魔改”之路都充满了奇思妙想。相信随着研究的深入,RLHF 技术将会在 Alignment 领域发挥越来越重要的作用。

  • ChatGPT 背后的“功臣”——RLHF 技术详解

    OpenAI 推出的 ChatGPT 对话模型掀起了新的 AI 热潮,它能够流畅地回答各种问题,其表现令人惊叹,仿佛已经打破了机器与人类之间的界限。这一成就的背后,离不开大型语言模型 (LLM) 生成领域的一种全新训练范式:RLHF (Reinforcement Learning from Human Feedback),意为以强化学习方式依据人类反馈优化语言模型

    传统 LLM 评价体系的局限性

    过去几年,各种 LLM 在根据人类输入的提示 (prompt) 生成多样化文本方面取得了显著进展。然而,对于生成结果的评估却是一个主观且依赖于具体语境的难题。例如,我们可能希望模型生成一个充满创意的故事、一段真实可靠的信息性文本,或者是一段可执行的代码,而这些结果难以用现有的、基于规则的文本生成指标 (如 BLEU 和 ROUGE) 进行准确衡量。

    此外,传统的 LLM 通常以预测下一个单词的方式构建,并采用简单的损失函数 (如交叉熵) 进行训练,而没有显式地将人类的偏好和主观意见纳入考量。

    RLHF 的核心思想

    如果我们能够将人工反馈作为衡量生成文本质量的标准,甚至将其作为损失函数来优化模型,岂不是更好?这正是 RLHF 的核心思想:利用强化学习的方式,根据人类反馈直接优化语言模型。RLHF 使得基于通用文本数据训练的语言模型能够与复杂的人类价值观相一致。

    RLHF 技术分解

    RLHF 涉及多个模型和不同的训练阶段,可以概括为以下三个步骤:

    1. 预训练语言模型 (LM)
    2. 聚合问答数据并训练奖励模型 (Reward Model,RM)
    3. 利用强化学习 (RL) 微调 LM

    Step 1. 预训练语言模型

    首先,我们需要使用经典的预训练目标训练一个基础语言模型。例如,OpenAI 在其首个 RLHF 模型 InstructGPT 中使用了较小版本的 GPT-3;Anthropic 则采用了 1000 万到 520 亿参数不等的 Transformer 模型;DeepMind 则使用了自家的 2800 亿参数模型 Gopher。

    Step 2. 训练奖励模型

    奖励模型 (RM) 的训练是 RLHF 区别于传统训练范式的关键所在。RM 接收一段文本作为输入,并返回一个标量奖励值,该值代表了人类对这段文本的偏好程度。

    RM 的构建方式可以是端到端的 LM,也可以是模块化的系统 (例如,先对多个输出进行排序,再将排序结果转换为奖励值)。

    Step 3. 用强化学习微调

    长期以来,由于工程和算法上的原因,人们普遍认为使用强化学习训练 LLM 是不切实际的。然而,目前多个研究机构已经找到了可行的解决方案,即使用策略梯度强化学习 (Policy Gradient RL) 算法,特别是近端策略优化 (Proximal Policy Optimization,PPO) 算法,对初始 LM 的部分或全部参数进行微调。

    RLHF 的未来

    尽管 RLHF 取得了一定的成果,但它仍然存在一些局限性。例如,RLHF 模型仍然可能生成有害或不真实的文本。

    此外,RLHF 的成功很大程度上取决于人类偏好数据的质量和数量。生成高质量的回答需要雇佣专业的标注人员,而训练 RM 通常需要大量的奖励标签,这对于许多研究机构来说是一笔不小的开销。

    参考资料

    结语

    RLHF 是 LLM 领域的一项突破性技术,它为构建更符合人类价值观的 AI 系统开辟了新的道路。 随着研究的深入,我们可以预见 RLHF 将在未来发挥更大的作用。


    近端策略优化 (PPO) 算法

    在 RLHF 的第三阶段,我们需要利用强化学习对预训练的语言模型进行微调。近端策略优化 (Proximal Policy Optimization, PPO) 算法作为一种高效且常用的强化学习算法,在这一阶段扮演着至关重要的角色。

    为什么选择 PPO 算法?

    长期以来,由于工程和算法上的挑战,人们普遍认为使用强化学习训练大型语言模型 (LLM) 是不切实际的。然而,PPO 算法的出现改变了这一现状。

    PPO 算法具有以下优点,使其成为 RLHF 中的理想选择:

    • 高效性: PPO 算法在训练过程中能够高效地利用数据,并且收敛速度较快。
    • 稳定性: PPO 算法通过限制策略更新幅度,有效地避免了训练过程中的剧烈震荡,提高了训练的稳定性。
    • 易于实现: PPO 算法的实现相对简单,现有的深度学习框架 (如 TensorFlow 和 PyTorch) 都提供了相应的库和工具。

    PPO 算法的工作原理

    PPO 算法的核心思想是在每次迭代中,通过优化一个代理目标函数来更新策略,同时限制策略更新幅度,以确保训练的稳定性。

    具体来说,PPO 算法会维护两个策略:

    • 当前策略 (Current Policy): 用于与环境交互并生成训练数据的策略。
    • 旧策略 (Old Policy): 用于计算代理目标函数的策略,其参数在每次迭代开始时会被更新为当前策略的参数。

    PPO 算法的目标函数包含两个主要部分:

    • 策略改进项: 鼓励当前策略在旧策略的基础上取得更高的奖励。
    • 策略约束项: 限制当前策略与旧策略之间的差异,以确保训练的稳定性。

    PPO 算法在 RLHF 中的应用

    在 RLHF 中,我们将语言模型视为一个策略,该策略接收提示 (prompt) 作为输入,并生成文本作为输出。奖励模型 (RM) 则用于评估生成文本的质量,并提供相应的奖励值。

    PPO 算法通过迭代优化策略,使得语言模型能够生成获得更高奖励的文本,从而逐步提高语言模型与人类偏好的匹配程度。

    结语

    PPO 算法作为一种高效且稳定的强化学习算法,在 RLHF 中发挥着至关重要的作用。随着研究的深入,我们可以预见 PPO 算法将在未来推动 LLM 领域取得更大的突破。

  • Analysis of “xCOMET-lite: Bridging the Gap Between Efficiency and Quality in Learned MT Evaluation Metrics”

    This paper addresses the growing concern of computational cost associated with state-of-the-art Machine Translation (MT) evaluation metrics. While models like xCOMET achieve high correlation with human judgment, their large size (up to 10.7B parameters) makes them inaccessible for researchers with limited resources.

    The authors investigate three main compression techniques to create efficient alternatives to xCOMET:

    1. Quantization: Reducing the precision of model parameters and activations from 32/16 bits to lower bit representations (8, 4, 3, 2 bits). This reduces memory footprint and allows for faster computations.

    • Methods: GPTQ (data-aware, weight-only), LLM.int8() (data-free, dynamic), QLoRA (data-free, double quantization).
    • Advantages: Significant speed improvements with minimal quality degradation.
    • Limitations: Requires careful selection of quantization method and bit precision to balance speed and accuracy.

    2. Pruning: Removing less significant parts of the model, such as specific parameters, blocks, or entire layers.

    • Methods: Layer pruning with parameter-efficient fine-tuning (tuning only biases, LayerNorm parameters, attention weights, and head parameters).
    • Advantages: Reduces model size and can improve inference speed.
    • Limitations: Removing too many layers can significantly impact performance. Careful fine-tuning is crucial to regain lost accuracy.

    3. Distillation: Training a smaller “student” model to mimic the behavior of the larger “teacher” model (xCOMET-XXL).

    • Methods: Black-box distillation using a large dataset labeled by the teacher model.
    • Advantages: Can significantly reduce model size while retaining most of the teacher’s performance.
    • Limitations: Requires a large, high-quality dataset for training the student model.

    Key findings:

    • Quantization: 3-bit quantization effectively reduces hardware requirements for xCOMET without compromising quality.
    • Pruning: Pruning up to 25% of layers provides speed improvements with minor quality loss, but removing more layers significantly degrades performance.
    • Distillation: The authors introduce xCOMET-lite, a distilled version of xCOMET with only 2.6% of the original parameters. xCOMET-lite achieves 92.1% of xCOMET-XXL’s quality, outperforming other small-scale metrics.
    • Interaction between methods: Distillation combines well with quantization, but not with pruning in the conducted experiments.

    Novel contributions:

    • Comprehensive study of compression methods for a large-scale MT evaluation metric like xCOMET.
    • Introduction of a novel data collection pipeline for black-box distillation, resulting in a 14M example dataset.
    • Development of xCOMET-lite, a highly efficient and accurate distilled metric.
    • Analysis of interactions between different compression methods.

    Impact:

    This work significantly contributes to making advanced MT evaluation metrics more accessible. xCOMET-lite and the insights on quantization and pruning provide valuable tools for researchers and practitioners with limited resources, enabling them to benefit from state-of-the-art evaluation techniques.

    Furthermore, the paper promotes environmentally conscious research by highlighting the computational cost and carbon footprint associated with large models and offering efficient alternatives.

  • 如何准确计算词语概率:揭秘语言模型中普遍存在的“错误”

    近年来,语言模型(LMs)在自然语言处理领域取得了巨大成功,其核心在于能够估计自然语言序列的概率分布。这种分布对于计算语言学研究中的困惑度和惊异度至关重要。虽然我们通常关心的是如何测量词语的这些值,但大多数语言模型实际上是基于子词进行操作的。尽管看起来很简单,但要根据一种单元的概率准确计算另一种单元的概率,需要格外小心。事实上,我们发现许多最近的语言学研究都错误地计算了这些值。

    本文推导了计算词语概率的正确方法,重点介绍了依赖使用词首标记(bow)分词器的语言模型(例如 GPT 系列)时出现的问题。实证结果表明,纠正概率计算中普遍存在的“错误”会影响句子理解和词汇优化分析中的测量结果。

    1. 引言

    语言模型定义了概率分布。在接受语言数据训练后,这些模型可以用来估计字符序列 c ∈ C∗ 或上下文词 wt ∈ W 中词的概率,其中 w<t ∈ W ∗。虽然推导这种估计现在已经很少作为训练这种模型的明确目标,但这种用例在一些领域仍然至关重要。例如,估计字符序列的概率对于计算模型的困惑度是必要的,这是语言模型训练中的一个核心评价指标。估计一个词在上下文中的概率对于计算一个词的惊异度是必要的:− log p(wt | w<t),这是心理语言学和计算语言学中的一个重要值。

    值得注意的是,大多数最近的语言模型都是在子词上运行的:经常一起出现的字符序列。这样做既是为了优化,也是为了效率。然而,子词并不一定构成实际的词,正如语言词典所定义的那样。至少从表面上看,从子词 p(s) 的概率分布转换为字符 p(c) 或词 p(w) 的概率分布似乎很简单。然而,一些技术细节很容易被忽视。例如,几个子词序列 s 可以映射到一个字符序列 c,这意味着准确计算 p(c) 应该边缘化这些选项。

    在这项工作中,我们讨论了如何正确计算一个词的上下文概率:p(wt | w<t)。这个值的计算取决于用来定义语言模型词汇的分词器的选择。当使用词尾标记(eow)分词器时,计算 p(wt| w<t) 很简单。然而,当使用词首标记(bow)分词器时,正确计算这个值就不那么简单了。我们推导了这些分词方案的方法,我们将在图1中介绍。由于许多广泛使用的语言模型都采用了词首标记分词器(例如,GPT 模型、Pythia、Mistral),这突出了大多数最近的心理语言学和计算语言学工作在计算词语概率方面普遍存在的“错误”。

    实证结果表明,纠正这种计算会影响先前两项实证分析的结果:一项是关于句子理解的,另一项是关于词汇的交际效率的。虽然这些研究的结论没有改变,但我们确实观察到,当使用正确的方法和有缺陷的方法计算词语概率时,测量结果之间存在统计学意义上的显著差异。我们得出结论,这种方法的选择有可能影响实证分析,未来的工作应该采用我们的修正。

    2. 什么是词?

    尽管经过了几十年的讨论和辩论,但对于什么是词,并没有一个统一的、被广泛接受的定义。通常,定义是针对语言中的某些系统做出的,例如其拼写法、音系学或语法。作为一个具体的例子,人们可以使用一种语言的声音系统来划分词语,假设它们划分了某些音系过程(如元音和谐)运作的范围。或者,人们可以将词语定义为语法元素(例如,词根加词缀),这些元素具有凝聚力,以固定的顺序出现,并具有连贯的意义。值得注意的是,语法词和音系词之间并不是一一对应的关系。例如,英语中的连字符元素,如 editor-in-chief 或 mother-in-law,通常被分析为一个包含多个音系词的语法词。

    我们在此不讨论这个更广泛的问题。虽然我们使用的是自然语言处理应用程序中常见的定义——词语是按拼写法定义的——但我们的方法只假设存在一组确定性的规则,用于将字符串分割成词语。

    3. 词语及其分布

    令 W 为一个词典——一种语言中所有词语的(可能是无限的)集合——而 w ∈ W 是这个词典中的一个词语。此外,令 w ∈ W ∗ 为一个词语序列;W ∗ 表示所有有限长度词语序列的集合。现在,假设分布 p 描述了这种语言的用户产生序列 w 的概率。我们可以自回归地将这些概率分解为:

    $$
    p(w) = p(eos | w) \prod_{t=1}^{|w|} p(w_t | w_{<t})
    $$

    其中 eos 是一个特殊的序列结束符号,它使这个在 W ∗ 上的概率分布有效。本文关注的是使用预先训练好的语言模型来计算一个词在上下文中的概率的正确方法,即 p(wt | w<t)。为此,我们首先讨论它与其他量的等价性,这将最终揭示先前计算方法中的一个缺陷。我们首先定义一个概率函数 PW,它在字符串集 ΨW ⊆ W ∗ 上运行。

    定义 1. 给定分布 p(w),我们定义概率函数 PW : P(W ∗) → [0, 1],它返回任何事件 w ∈ ΨW ⊆ W ∗ 发生的概率。由于这些事件是不相交的,PW(ΨW) 可以定义为:

    $$
    P_W(\Psi_W) \stackrel{\text{def}}{=} \sum_{w \in \Psi_W} p(w)
    $$

    现在,令 ◦ 表示连接(在字符串或字符串集之间),而 w ◦ W ∗ 表示所有以 w 为前缀的字符串的集合:{w◦w′ | w′ ∈ W ∗}。我们可以通过对 PW 的两次评估来计算我们想要的条件分布:

    $$
    p(w | w_{<t}) = \frac{P_W(w_{<t} ◦ w ◦ W^∗)}{P_W(w_{<t} ◦ W^∗)}
    $$

    请注意,这是对概率联合规则的简单调用:条件 p(w | w<t) 等于观察到前缀 w<t ◦ w 的概率(由 PW(w<t ◦ w ◦ W ∗) 表示)除以观察到前缀 w<t 的概率(由 PW(w<t ◦ W ∗) 表示)。我们称 PW(w ◦ W ∗) 形式的概率为 w 的前缀概率。

    拼写法. 我们在这里假设这种语言可以书写,并且它有一个标准化的拼写惯例。形式上,给定一种语言的字母表 C,每个字符串 w 都可以通过函数 S W ∗→C∗ : W ∗→ C∗ 映射到一个字符序列 c ∈ C∗。此外,我们假设这种语言允许从拼写法中直接进行分割。因此,给定一个字符序列 c,我们可以提取一个词语序列,如

    $$
    S^{-1}_{C∗→W ∗} (c) = w.
    $$

    4. 子词和语言模型

    大多数现代语言模型不是直接定义为词语 w 的分布,而是定义为子词的分布。这些子词本身是由分词器的选择来定义的。在本节中,我们将首先介绍分词器,以及它们如何将词语映射到子词(以及反向映射)。然后,我们将使用这些构建块来展示如何从子词概率中计算出词语概率。

    4.1 从词语到子词,再回到词语

    分词器带有一个词汇表 S,其元素是子词 s ∈ S;每个子词代表一个字符序列 c ∈ S∗→C∗ : S ∗ → C∗。然后,可以通过简单地将一个子词序列映射到它们所代表的字符并将它们连接在一起来定义一个去分词化函数 S S∗→C∗。分词器还提供了一个分词化函数 C∗ → S ∗,它接受一个字符序列作为输入,并将其映射到一个子词序列。值得注意的是,多个子词序列可以映射到同一个字符序列;然而,大多数分词器会选择其中一个子词序列作为规范选择,并使用一个确定性的分词化函数。

    总的来说,我们定义的映射函数使我们能够在词语和子词之间进行转换,这在使用子词分布计算词语概率时是必要的。我们将词语到子词的映射写成:

    $$
    S_{W ∗→S∗} \stackrel{\text{def}}{=} S_{W ∗→C∗} \cdot S_{C∗→S∗},
    $$

    $$
    S_{S∗→W ∗} \stackrel{\text{def}}{=} S_{S∗→C∗} \cdot S_{C∗→W ∗}
    $$

    重要的是,这些函数在应用为 S S∗→W ∗ (S W ∗→S∗ (w)) = w 时会相互逆转,但在以相反顺序应用时却不一定。这意味着每个 w 都映射到一个唯一的 s,并且每个 w 都可以用某个 s 来表示;但是,有些子词序列不会被我们的分词化函数映射到。例如,如果一个分词器将词语 probability 映射到子词 [_prob, ability],那么子词序列 [_p, r, o, b, …] 就永远不会被映射到。我们将未映射的子词序列表示为:

    $$
    S^x \stackrel{\text{def}}{=} S^∗ \setminus {S_{W ∗→S∗}(w) | w ∈ W ∗}
    $$

    4.2 从词语概率到子词概率

    现在,令 pθ 为一个具有参数 θ 和词汇表 S 的语言模型。这个模型定义了所有有限子词序列 s ∈ S ∗ 的集合上的概率分布,并且它的参数经过优化,以便在给定以下条件的情况下,对子词的真实分布提供良好的估计:

    $$
    p(s) = \sum_{w \in W ∗} p(w) \mathbf{1} {s = S_{W ∗→S∗}(w)}
    $$

    由于并非所有子词序列都被映射到,并且因为 W ∗→S∗ 中的每个映射都是唯一的,所以我们可以将此分布改写为:

    $$
    p(s) =
    \begin{cases}
    p(w) & \text{if } s = S_{W ∗→S∗}(w) \
    0 & \text{if } s ∈ S^x
    \end{cases}
    $$

    在本文中,我们关注的是精确的语言模型,我们将其定义为与 p 具有相同支持度的 pθ;形式上,当 p(s) = 0 时,pθ(s) = 0。然而,我们将在下一节简要讨论如何将我们的发现推广到非精确模型。

    4.3 从子词概率到词语概率

    等式 (7) 提出了一种从语言模型中提取词语概率的方法;我们可以简单地使用以下等价关系:

    $$
    p(w) = p(s), \text{ for } s = S_{W ∗→S∗}(w)
    $$

    值得注意的是,为了在实践中将这种等价关系应用于语言模型 pθ(s),该模型需要是精确的。虽然我们在这里关注的是精确分布,但我们注意到,将我们的结果扩展到非精确分布只需要边缘化潜在的歧义:也就是说,计算给定词语的 p(w) 需要对映射到它的(有限)子词序列集求和。等式 (8) 的含义是,如果我们可以创建一个与所选词语集 ΨW “等价” 的子词集 ΨS,那么我们就可以通过对 ΨS 中的子词求和来计算 ΨW 的概率。形式上,我们将两个集合之间的等价关系定义为:

    $$
    \Psi_W \stackrel{\Delta}{=} \Psi_S \implies (w ∈ \Psi_W ⇐⇒ S_{W ∗→S∗}(w) ∈ \Psi_S)
    $$

    现在,令 PS 为一个类似于 PW(在定义 1 中)定义的概率函数。然后可以得出:

    $$
    P_W(\Psi_W) = P_S(\Psi_S), \text{ for } \Psi_W \stackrel{\Delta}{=} \Psi_S
    $$

    我们现在可以根据子词概率来定义我们感兴趣的量 p(w | w<t):它只是两个不同集合 ΨS 的 PS(·) 的商。

    引理 1. 可以使用子词上的概率分布来计算词语的上下文概率,如下所示:

    $$
    p(w | w_{<t}) = \frac{P_S(\Psi’_S)}{P_S(\Psi”_S)}
    $$

    其中 Ψ′ S ∆= w<t ◦ w ◦ W ∗,而 Ψ′′ S ∆= w<t ◦ W ∗。

    证明. 这个结果来自于将等式 (10) 中的等价关系简单地应用于等式 (3) 中 p(w | w<t) 的定义。

    幸运的是,找到引理 1 所需的集合 Ψ′ S 和 Ψ′′ S 很简单。这是因为,对于给定的词语集 ΨW,子词集

    $$
    \Psi_S = {S_{W ∗→S∗}(w) | w ∈ \Psi_W}
    $$

    满足等价关系 ΨW ∆= ΨS。根据构造,我们有 w ∈ ΨW =⇒ S W ∗→S∗ (w) ∈ ΨS。此外,由于 S W ∗→S∗ 的单射性,它必须是 W ∗→S∗(w) ∈ ΨS =⇒ w ∈ ΨW,证明了等式 (9) 中等价关系的两边。

    然而,在使用等式 (11) 计算上下文概率之前,还有一个障碍需要克服:两个集合 Ψ′ W = (w<t ◦ w ◦ W ∗) 和 Ψ′′ W = (w<t ◦ W ∗) 都是无限的。因此,我们必须找到一种比对(也是无限的)集合 Ψ′ S 和 Ψ′′ S 求和更有效的策略来计算概率。

    4.4 利用语言模型的自回归性

    我们现在讨论如何利用大多数语言模型以自回归方式计算概率这一事实来有效地计算引理 1 中的概率。简而言之,大多数语言模型提供了条件概率的估计:p(s | s<t)。根据等式 (3) 和 PS(S ∗) = 1 的事实,我们可以使用这些条件来有效地计算前缀概率。

    引理 2. 我们可以使用条件概率来计算前缀概率,如下所示:

    $$
    P_S(s ◦ S ∗) = \prod_{t=1}^{|s|} \frac{P_S(s_{<t} ◦ s_t ◦ S ∗)}{P_S(s_{<t} ◦ S ∗)} = \prod_{t=1}^{|s|} p(s_t | s_{<t})
    $$

    因此,如果我们可以找到一组子词前缀 ΨS = {s(k)} k=1 K,对于这些前缀,我们有等价关系 w ◦ W ∗ ∆= ∪ s∈ΨS s ◦ S ∗,那么我们可以计算前缀概率,如下所示:

    $$
    P_W(w ◦ W ∗) = P_S \Bigg( \bigcup_{s∈\Psi_S} s ◦ S ∗ \Bigg) = \sum_{s∈\Psi_S} P_S(s ◦ S ∗)
    $$

    反过来,这些让我们可以有效地计算 p(w | w<t)。

    5. 映射的细微之处:依赖于分词器的策略

    我们剩下的任务是找到一组子词前缀,这些前缀将允许我们计算 Ψ′ W 和 Ψ′′ W 的概率。在本节中,我们将讨论分词器的规范——特别是它在其词汇表中是使用词尾标记还是词首标记——如何影响这项任务。

    5.1 感知分割的分词器

    在接下来的章节中,我们将考虑 W ∗→S∗,它们在一个序列 w 中独立地对词语进行操作。这对于我们下面的方法是必要的,并且是自然语言处理中的一种常见做法(通常称为预分词),其中文本在被分词器转换为子词之前,会根据某些标准(例如,空格)进行分割。在这里,我们认为预分词是 W ∗→S∗ 实现的步骤之一。我们在下面的定义中将其形式化。

    定义 2. 我们将感知分割的分词器定义为其操作可以跨序列中的词语分解的分词器,即:

    $$
    S_{W ∗→S∗}(w) = S_{W ∗→S∗}(w_{t}) = S_{W→S∗}(w_1) ◦ S_{W→S∗}(w_2) ◦ · · · ◦ S_{W→S∗}(w_{|w|})
    $$

    虽然可以创建词汇表中子词可以跨越词语边界的分词器,但大多数分词器都满足此标准。例如,sentencepiece 库有一个选项,允许在学习分词器的词汇表时允许多词子词,但默认情况下它不允许这样做。

    定义 2 中的分解有一个重要的含义。如 4.1 节所述,(序列级)分词化函数 W ∗→S∗ 必须是单射的,这意味着每个词序列必须映射到唯一的子词序列。因此,词级分词化函数 W→S∗ 必须具有以下属性:连接其输出始终会导致唯一的字符串。此属性在压缩文献中称为唯一可解码性。虽然有几种方法可以保证唯一可解码性,但大多数分词器依赖于相对简单的策略:它们使用 S 中子词的子集标记词尾或词首(eow 或 bow)。我们将在接下来讨论这些策略。

    5.2 词尾标记

    我们现在考虑 eow 标记分词器。这些分词器使用其词汇表 S eow ⊆ S 的一个子集来指示词尾,其余词汇表 S mid def= S \ S eow 映射回词首或词中。

    定义 3. eow 标记分词器是一种感知分割的分词器,它标记词尾。它的词级分词化函数可以写成 Seow W→S∗ : W → S ∗ mid ◦ S eow.

    重要的是,根据上面的定义,当观察到子词 st ∈ S eow 时,这意味着当前子序列 st′:t(其中 t′ ≤ t)可以映射回一个词,并且表示新词的子序列将从 st+1 开始。(当前子序列 st′:t 由最小的 t′ 确定,其中 st′:t−1 ∈ S ∗ mid;请注意,这意味着 t′ = 1 或 st′−1 ∈ S eow。)此属性的含义是 eow 标记分词器提供瞬时可解码性:带有 st ∈ S eow 的前缀 s≤t 是瞬时可解码的,因为它始终映射到相同的词,而不管其后续 s>t 如何。瞬时可解码性使我们能够计算词的上下文概率,如下所示。

    定理 1. 令 W ∗→S∗ 为 eow 标记分词器。此外,令 sw def= S W ∗→S∗ (w)。我们可以证明以下等价关系:

    $$
    P_W(w_{<t} ◦ W ∗) = P_S(s_{w_{<t}} ◦ S ∗)
    $$

    $$
    P_W(w_{<t} ◦ w ◦ W ∗) = P_S(s_{w_{<t}} ◦ s_w ◦ S ∗)
    $$

    此外,我们可以计算词的概率,如下所示:

    $$
    p(w | w_{<t}) = \prod_{t’=1}^{|s_w|} p(s_{w_{t’}} | s_{w_{<t}} ◦ s_{w_{<t’}})
    $$

    证明. 有关正式证明,请参见附录 C.1。

    等式 (16) 来自瞬时可解码性,因为 sw◦S ∗ 中的每个序列 s 都映射回 w◦W ∗。等式 (17) 然后来自引理 1 和 2 的简单应用:

    $$
    p(w | w_{<t}) = \prod_{t’=1}^{|s_w|} p(s_{w_{t’}} | s_{w_{<t}} ◦ s_{w_{<t’}})
    $$

    值得注意的是,等式 (17) 相当简单,并且是大多数自然语言处理从业者计算词概率的方式。然而,在下一节中,我们将看到,如果使用 bow 标记分词器,它将无法计算出正确的概率。

    5.3 词首标记

    我们现在考虑 bow 标记分词器。与 eow 情况类似,bow 标记分词器词汇表 S bow ⊆ S 的一个子集专门用于指示词首。然后,其余词汇表 S mid def= S \ S bow 表示词中或词尾。我们在下面提供此分词器的正式定义。

    定义 4. bow 标记分词器是一种感知分割的分词器,它标记词首。它的词级分词化函数可以写成 Sbow W→S∗ : W → S bow ◦ S ∗ mid.

    根据上面的定义,当观察到子词 st ∈ S bow 时,这意味着先前的子序列 st′:t−1 可以映射回一个词,并且表示新词的子序列从 st 开始。(先前的子序列 st′:t−1 由 st′ ∈ S bow 和 st′+1:t−1 ∈ S ∗ mid 确定。)因此,此类分词器不是瞬时可解码的。它们只提供我们所说的近乎瞬时可解码性:前缀 s≤t 并不总是映射到相同的词,因为它的映射取决于以下子词 st+1 是否在 S bow ∪{eos} 中。因此,使用近乎瞬时代码计算概率需要 discounting 延续 st+1 /∈ S bow ∪ {eos} 的概率;我们将此折扣因子标记为 Bug Fix 1 。

    定理 2. 令 W ∗→S∗ 为 bow 标记分词器。此外,令 · 表示集合与 eos 的并集,例如,S bow = S bow ∪ {eos}。我们可以证明以下等价关系:

    $$
    P_W(w_{<t} ◦ W ∗) = P_S(s_{w_{<t}} ◦ \overline{S_{bow}} ◦ S ∗)
    $$

    $$
    P_W(w_{<t} ◦ w ◦ W ∗) = P_S(s_{w_{<t}} ◦ s_w ◦ \overline{S_{bow}} ◦ S ∗)
    $$

    证明. 有关正式证明,请参见附录 C.2。

    等式 (19) 来自近乎瞬时可解码性,因为每个序列 sw ◦S bow ◦ S ∗ 都映射回 w ◦ W ∗,但 sw ◦ S mid ◦ S ∗ 中的序列则不然。此外,我们可以计算词的概率,如下所示:

    $$
    p(w | w_{<t}) = \frac{\prod_{t’=1}^{|s_{w_{<t}}◦w|} p(s_{w_{<t}◦w_{t’}} | s_{w_{<t}◦w_{<t’}})}{\prod_{t’=1}^{|s_{w_{<t}}|} p(s_{w_{<t_{t’}}} | s_{w_{<t_{<t’}}})} \frac{\sum_{s∈S_{bow}}p (s | s_{w_{<t}} ◦s_w)}{\sum_{s∈S_{bow}}p (s | s_{w_{<t}})}
    $$

    5.4 实际问题和极端情况

    在本节中,我们将讨论值得特别考虑的极端情况。许多此类情况的出现是由于实际需求,例如确保在适当的位置存在或不存在空格。值得注意的是,对这些极端情况的需求通常取决于语言,因为它们是由于拼写惯例而产生的。我们讨论了两种处理特殊情况的分词器惯例的含义:序列开头和结尾的处理。

    未标记词尾的最终词. 一些 eow 标记分词器不会像等式 (15) 中那样完全分解,而是以不同的方式处理序列中的最终词。具体来说,它们会覆盖这些词上的 W→S∗ 的行为,并且不使用 S eow 中的子词来标记其结尾。这通常也是对紧跟在标点符号后面的词应用的处理方法。这种机制允许分词器避免暗示不存在的空格的存在,例如在字符串的末尾。值得注意的是,这打破了瞬时可解码性——使此代码仅近乎瞬时。令 sw mid def= Smid W→S∗ (w),其中 Smid W→S∗ : W → S ∗ mid。在观察到子序列 sw mid 后,我们无法立即将其映射回 w,并且必须等待下一个符号:如果 sw mid 后面跟着 eos 或标点符号,则将其映射回 w;如果不是,则将其映射到另一个词。因此,处理这种情况需要以下修复(此处称为 Bug Fix 2):

    $$
    p(w | w_{<t}) = \frac{p(s_{w_{mid}}| s_{w_{<t}})}{\sum_{s∈\overline{S_{!?}}}p(s| s_{w_{<t}}◦ s_{w_{mid}}) + p(s_w| s_{w_{<t}})}
    $$

    未标记词首的初始词. 正如 eow 标记分词器通常以不同的方式处理最终词一样,bow 标记分词器也以不同的方式处理序列中的初始词,以便适当地处理空格。这些分词器通常不会用 bow 标记初始词,而是将 Smid W→S∗ 应用于 w1。这会影响序列中第一个词的概率计算。在这种情况下,第一个词的前缀 w<t 为空(此处表示为 “”)。虽然根据等式 (19) 计算词的上下文概率需要计算 PS(S bow ◦ S ∗),但序列中的第一个子词将不在 S bow 中,而是在 S mid 中。因此,此类词的概率计算需要以下修正(Bug Fix 3 ):

    $$
    p(w | “”) = p(s_{w_{mid}} | “”) \frac{\sum_{s∈S_{bow}} p (s | s_w)}{\sum_{s∈S_{mid}} p (s | “”)}
    $$

    6. 实验

    我们现在研究修正词概率的计算如何影响先前研究的结果。我们探讨了两种设置:围绕句子理解的心理语言学实验和评估词汇交际效率的计算语言学实验。我们遵循这些工作的实验方法,观察使用修正后的惊异度估计如何影响最初使用其标准(有缺陷的)惊异度估计得出的结论。

    模型. 在我们的第一个实验中,我们使用 GPT-2 和 Pythia 估计上下文概率;在第二个实验中,我们只关注 Pythia。这两个套件都包含各种规模的语言模型。我们使用 transformers 库中这些模型的开源版本。GPT-2 和 Pythia 使用 bow 标记分词器,这意味着我们采用 5.3 节中讨论的方法来计算词的上下文概率。

    6.1 句子理解

    惊异度理论假设读者在阅读时会对含义保持一个信念分布;因此,在观察到句子中的每个词后,他们必须更新此分布。在关于如何执行这些信念更新的一些假设下,惊异度理论然后预测它们的成本与词的惊异度有关,惊异度定义为负对数概率:

    $$
    h(w_t) \stackrel{\text{def}}{=} − log p(w_t | w_{<t})
    $$

    惊异度理论被广泛接受为理解努力的模型,许多工作都凭经验支持它。值得注意的是,计算惊异度所需的真实上下文概率 p(wt | w<t) 是未知的,必须进行近似。以上所有工作都使用语言模型来做到这一点,而最近的工作使用的是在 bow 标记分词器生成的子词之上运行的语言模型。值得注意的是,这些工作使用“有缺陷的” p(wt | w<t) 版本计算惊异度估计。在本节中,我们将重现先前一些工作的 结果,观察此修正如何影响结果。

    设置摘要. 我们在 4 个阅读时间数据集上运行分析——Brown、Dundee、Natural Stories 和 Provo。此外,根据先前的工作,我们通过测量在使用和不使用惊异度作为预测变量的线性回归器下数据对数似然的変化 ∆llh 来评估惊异度对阅读时间的预测能力。有关我们实验设置的更多详细信息,请参见附录 A.1。

    结果. 图 3 显示了在使用和不使用惊异度作为预测变量的回归器下数据对数似然的変化;值在附录中的表 1 中详细列出。我们首先注意到,惊异度的预测能力随着语言模型规模的增加而降低,如先前工作中所观察到的那样。然而,在这里,我们更感兴趣的是我们的修正对这些结果的影响——标记为有缺陷的惊异度与修正后的惊异度。有趣的是,我们观察到由于我们的修正,预测能力只发生了很小的変化,并且这些変化对于每个模型来说 individually 并不显着。然而,当对所有模型进行汇总分析时,我们发现这种积极的改进对于 Brown、Natural Stories 和 Provo 来说是一致且显着的(在我们 的排列检验中 α < 0.01)。这些结果可以在表 1 中看到。

    6.2 交际效率

    几十年来,人们一直在研究语言的词汇,以期更好地了解塑造自然语言的力量。人们特别感兴趣的一个特征是词长以及交际效率的趋势如何影响词长。关于这种趋势究竟是如何发挥作用的,有几种假设。Zipf 认为说话者倾向于最小化话语长度,因此词长应该与频率相关。Piantadosi 等人认为说话者会最大化信息传递,因此词长应该与词的预期惊异度相关联:

    $$
    E[h(w_t)] \stackrel{\text{def}}{=} E_{w_{<t}}[− log p(w_t | w_{<t}) | w_t]
    $$

    我们遵循 Pimentel 等人的说法,将此称为信道容量假设 (CCH)。最后,Pimentel 等人指出了 Piantadosi 等人解决方案中的一个问题,并认为为了最大化信息传递,长度应该与以下值相关联:

    $$
    \frac{E[h^2(w_t)]}{E[h(w_t)]} \stackrel{\text{def}}{=} \frac{E_{w_{<t}}[(− log p(w_t | w_{<t}))^2 | w_t]}{E_{w_{<t}}[− log p(w_t | w_{<t}) | w_t]}
    $$

    设置摘要. 我们使用英语维基百科语料库 Wiki-40B 的一个子集进行分析。我们比较了上面的三个值(单字频率,以及等式 (24) 和 (25));根据它们与词长的相关性来评估它们。其中两个值取决于词的上下文概率,因此我们也比较了它们的修正版本和有缺陷的版本。

    结果. 图 4 中的结果与 Pimentel 等人的发现一致:一旦使用更大(且更好)的语言模型来估计词的惊异度,CCH 假设(Piantadosi 等人的版本和 Pimentel 等人的版本)下的指标就会成为词长的较弱预测因子。有趣的是,修正惊异度的计算也会导致 CCH 预测因子与词长之间的相关性下降。因此,改进 CCH 的预测因子始终会损害其对词长的预测能力——无论是在使用更好的模型、Pimentel 等人对 CCH 最优解的修正,还是我们对概率计算的修正时。我们得出结论,与 Pimentel 等人一样,词长最好由 Zipf 的假设来预测。

    7. 结论

    这项工作阐述了使用语言模型准确计算上下文词概率的复杂性。我们关注使用子词词汇表带来的挑战。我们表明,使用词首 (bow) 分词器定义的子词词汇表(在许多现代语言模型中很常见)引入了经常被忽视的复杂性。我们指出,这导致了各种先前实证分析中概率估计的潜在不准确性。我们的方法修正导致了结果的显着差异,尽管我们探讨的先前研究的总体结论保持不变。这一发现强调了精确计算方法在语言学研究中的重要性。未来的工作应确保采用这些修正,以提高其分析的可靠性。

    局限性

    作者认为这项工作的理论和实证方面都存在局限性。也许主要的理论局限性是没有考虑到分词器可能实现的所有潜在极端情况(类似于例如在 5.4 节中讨论的那些)。空格的使用因语言而异,并且许多分词器行为的极端情况都是专门为处理这种情况而设计的。可能需要推导出其他概率计算的修正,以处理 5.4 节中未讨论的范例。例如,在西班牙语中,”¿” 后面的词通常没有 bow 标记,因此可能需要使用类似于 Bug Fix 3 的方法。我们的理论结果也仅限于自回归模型。虽然当今大多数语言模型都满足此标准,但未来的语言模型可能会以不同的方式设计,因此我们的方法不一定适用。在经验方面,我们工作的一大局限性是仅在两项研究中探讨了我们方法的影响。此外,我们的实验仅限于英语。因此,需要进行更多研究来了解我们的修正对其他语言以及计算语言学(以及更广泛地说,自然语言处理)其他领域中经验结果的影响程度。


    Q: 这篇论文试图解决什么问题?

    A: 这篇论文试图解决的问题是在使用基于子词(subword)的语言模型(Language Models, LMs)来估计自然语言中单词序列的概率分布时,如何正确地计算给定上下文的单词概率。尽管基于子词的语言模型在自然语言处理(NLP)任务中表现出色,但它们通常操作的是子词而非单词,这就需要将子词概率转换为单词概率。这个过程需要特别注意,因为一些技术细节容易被忽视,导致概率计算不准确。

    论文的主要贡献包括:

    1. 指出许多最近的语言学研究在计算这些值时存在错误。
    2. 推导出使用基于子词的语言模型来正确计算单词概率的方法。
    3. 特别强调了在使用以词首标记(beginning-of-word, bow)的分词器的语言模型时,正确计算单词概率的复杂性,例如GPT系列模型。
    4. 通过实证分析,展示了纠正概率计算中普遍存在的错误如何影响句子理解以及词汇优化分析中的测量结果。

    简而言之,论文的核心目标是提供一种准确的方法来从基于子词的语言模型中计算出单词的概率,以支持语言学研究中的各种应用,如计算句子的困惑度(perplexity)和单词的惊奇度(surprisal)。

    Q: 有哪些相关研究?

    A: 论文中提到了多个与语言模型、概率计算、句子理解、词汇优化等相关的研究。以下是一些关键的参考文献和它们的贡献概述:

    1. Hale (2001): 提出了句子理解中的惊奇度理论,这是计算语言理解努力的一个模型。
    2. Levy and Jaeger (2007): 研究了说话者如何通过句法缩减来优化信息密度。
    3. Piantadosi et al. (2011): 提出了词汇的通信效率理论,即词汇长度与单词的预期惊奇度相关。
    4. Sennrich et al. (2016): 探讨了使用子词单元进行神经机器翻译的方法。
    5. Kudo and Richardson (2018): 提出了SentencePiece,一个简单且语言独立的子词分词器和反分词器。
    6. Radford et al. (2019): 展示了语言模型在无监督多任务学习中的应用。
    7. Touvron et al. (2023): 提出了LLaMA,一个开放且高效的基础语言模型。
    8. Cao and Rimell (2021): 讨论了在评估语言模型时考虑边际可能性的重要性。
    9. Chirkova et al. (2023): 探讨了在计算概率时是否需要考虑所有可能的分词。
    10. Gallé (2019): 研究了较短序列在字节对编码(BPE)中的有效性。
    11. Mielke et al. (2021): 提供了NLP中开词库建模和分词的简要历史。
    12. Oh and Schuler (2023a, 2023b, 2024): 研究了基于Transformer的语言模型惊奇度与人类阅读时间的拟合度,并指出了计算单词概率时的混淆问题。
    13. Pimentel et al. (2023a, 2023b): 重新审视了词汇长度的最优性,并研究了预期对阅读时间的影响。
    14. Smith and Levy (2008, 2013): 提供了关于阅读时间的最优处理时间的正式模型和实证研究。
    15. Shain (2019): 研究了在自然阅读中单词频率和可预测性的影响。
    16. Wilcox et al. (2020, 2023): 探讨了神经语言模型对人类实时理解行为的预测能力。

    这些研究为理解语言模型在计算单词概率、句子理解、词汇优化等方面的应用提供了理论基础和实证分析。论文通过指出现有研究中的计算错误,并提出纠正方法,进一步推动了这一领域的研究进展。

    Q: 论文如何解决这个问题?

    A: 论文通过以下步骤解决了如何准确计算基于子词的语言模型中单词概率的问题:

    1. 理论推导:首先,论文提出了计算单词概率的理论方法,包括在不同分词器(如词首标记beginning-of-word, bow和词尾标记end-of-word, eow)情况下的具体计算公式。
    2. 区分分词器类型:论文区分了两种类型的分词器:使用词首标记的分词器和使用词尾标记的分词器。对于每种类型的分词器,论文提供了不同的计算方法。
    3. 推导正确公式:对于使用词尾标记的分词器,计算相对简单。而对于使用词首标记的分词器,论文推导出了正确的计算公式,这涉及到对模型概率的调整以考虑子词序列的映射。
    4. 实证分析:论文通过实证分析展示了在句子理解(psycholinguistics)和词汇优化(computational linguistics)研究中,使用正确的计算方法与之前错误方法相比,对结果的影响。
    5. 提出修正方法:论文提出了修正方法(例如,Bug Fix 1, Bug Fix 2, Bug Fix 3),这些修正方法考虑了分词器在处理特殊案例(如序列的开始和结束)时的特定行为。
    6. 实验验证:通过使用不同的语言模型(例如GPT-2和Pythia)和不同的数据集进行实验,论文验证了修正方法的有效性,并展示了这些修正如何影响对阅读时间数据的预测。
    7. 讨论影响:论文讨论了这些修正对于之前研究结论的潜在影响,指出虽然修正方法会导致统计上显著的差异,但并不会改变之前研究的基本结论。
    8. 提出建议:最后,论文建议未来的研究应该采用这些修正方法,以提高分析的可靠性。

    通过这一系列步骤,论文不仅解决了准确计算单词概率的问题,还为未来的语言学研究提供了一种更加精确的计算框架。

    Q: 论文做了哪些实验?

    A: 论文进行了两类实验来评估纠正单词概率计算方法的影响:

    1. 句子理解实验 (Sentence Comprehension Experiments):
      • 目的:探索纠正单词概率计算对于句子理解研究的影响。
      • 数据集:使用了四个阅读时间数据集,包括Brown、Dundee、Natural Stories和Provo。
      • 方法:通过测量在线性回归模型中加入和不加入惊奇度(surprisal)作为预测因子时数据对数似然(log-likelihood)的变化(Δllh),来评估惊奇度的预测能力。
      • 结果:发现使用修正后的惊奇度估计方法对于模型的预测能力有正面影响,尤其是在Brown、Natural Stories和Provo数据集上。
    2. 词汇通信效率实验 (Communicative Efficiency Experiments):
      • 目的:研究纠正单词概率计算对于评估词汇通信效率假设的影响。
      • 数据集:使用了Wiki-40B数据集的英文部分。
      • 方法:比较了单词长度与几种不同假设(包括Zipf的最小化假设、Piantadosi等人的通道容量假设CCH以及Pimentel等人提出的修正CCH假设)的相关性。
      • 结果:发现使用修正后的惊奇度估计方法会导致CCH假设预测单词长度的相关性降低,这表明Zipf的假设仍然是预测单词长度的最佳模型。

    这两类实验都使用了基于Transformer的语言模型,包括GPT-2和Pythia,它们都使用了词首标记的分词器。实验结果表明,修正单词概率的计算方法虽然对原有研究的结论没有根本性影响,但在统计上产生了显著差异,这强调了在语言学研究中采用精确计算方法的重要性。

    Q: 有什么可以进一步探索的点?

    A: 尽管这篇论文在准确计算基于子词的语言模型中的单词概率方面取得了重要进展,但仍有一些潜在的研究方向可以进一步探索:

    1. 多语言模型的评估:论文中的实验主要限于英语和几种特定的语言模型。未来的研究可以在更多语言和不同类型的语言模型上评估修正方法的有效性。
    2. 更广泛的NLP任务:论文主要关注了句子理解和词汇优化两个领域。可以探索这些修正方法在其他NLP任务,如机器翻译、文本摘要、情感分析等中的应用和影响。
    3. 非自回归模型:论文的理论和方法主要适用于自回归模型。研究者可以探索非自回归或其他新型语言模型架构中如何应用这些概率计算方法。
    4. 更复杂的分词策略:论文讨论了一些特定的分词器行为,但可能还有其他复杂的分词策略需要考虑。研究者可以探索这些策略对概率计算的影响,并提出相应的修正方法。
    5. 实际应用中的效率问题:在实际应用中,计算效率是一个重要因素。研究者可以探索如何优化这些修正方法,以减少计算成本并提高效率。
    6. 用户研究和心理学实验:虽然论文通过数据集评估了修正方法的影响,但进行用户研究或心理学实验可以提供更深入的理解,了解这些修正如何影响人类理解和处理语言的方式。
    7. 模型泛化能力:研究这些修正方法是否提高了语言模型对未见数据的泛化能力,特别是在处理罕见词汇或特定领域语言时。
    8. 模型解释性:提高模型的解释性是NLP中的一个重要研究方向。研究者可以探索这些修正方法是否有助于更好地解释模型的预测。
    9. 与其他语言学理论的结合:将这些概率计算方法与其他语言学理论结合,比如语用学、话语分析等,以探索它们在更广泛的语言学研究中的应用。
    10. 算法的鲁棒性分析:研究这些修正方法在面对不同类型的输入噪声、异常值或数据不平衡时的鲁棒性。

    这些方向不仅可以推动语言模型概率计算方法的发展,还可能对NLP领域的其他方面产生深远的影响。

    Q: 总结一下论文的主要内容

    A: 这篇论文《How to Compute the Probability of a Word》由Tiago Pimentel和Clara Meister撰写,主要探讨了在使用基于子词的语言模型(LMs)时,如何准确地计算给定上下文的单词概率。以下是对论文主要内容的总结:

    1. 问题背景:语言模型(LMs)在自然语言处理(NLP)中用于估计字符或单词序列的概率分布,这对于计算困惑度(perplexity)和惊奇度(surprisal)等指标至关重要。然而,大多数现代语言模型操作的是子词而非单词,这就需要将子词概率转换为单词概率。
    2. 研究问题:论文指出,尽管这一转换看似直接,但在实际操作中存在技术细节容易被忽视,导致许多研究在计算这些概率时出现错误。
    3. 方法论:论文提出了正确的方法来计算单词概率,特别是针对使用词首标记(bow)分词器的语言模型,如GPT系列。论文还讨论了词尾标记(eow)分词器的情况。
    4. 实证分析:通过实证分析,论文展示了在句子理解研究和词汇优化分析中,使用正确和错误方法计算概率时的统计差异。
    5. 实验结果:实验结果表明,修正概率计算方法虽然对之前研究的结论没有根本性影响,但在统计上产生了显著差异。
    6. 理论贡献:论文提出了一系列定理和引理,为在不同分词器下计算单词概率提供了理论基础。
    7. 修正方法:论文提出了针对特定分词器行为的修正方法(Bug Fixes),以确保概率计算的准确性。
    8. 研究建议:论文建议未来的研究应该采用这些修正方法,以提高分析的可靠性。
    9. 局限性:论文讨论了其理论局限性,包括未考虑所有可能的分词器行为,以及理论结果可能不适用于非自回归模型。
    10. 未来工作:论文提出了未来研究的方向,包括在更多语言和NLP任务中评估修正方法的有效性,以及探索计算效率和模型泛化能力等。

    总的来说,这篇论文为理解和改进基于子词的语言模型中单词概率的计算提供了重要的理论基础和实证分析,对语言学研究和NLP实践具有指导意义。