作者 Yong Xie Aitzaz Ahmad Raghvender Arni Karan Aggarwal Qingwei Li发布日期 2024年3月28日来源 Amazon Machine Learning 金融服务,生成性AI
大语言模型LLMs一般是在大型公开可用的数据集上进行训练,这些数据集是不特定领域的。例如,Meta的Llama模型是基于CommonCrawl、C4、维基百科及ArXiv等数据集进行训练的。这些数据集涵盖了大量话题和领域。尽管结果模型在文本生成和实体识别等通用任务上表现出色,但是有证据表明,使用领域特定数据集进行训练的模型能够进一步提升LLM的性能。例如,BloombergGPT的训练数据中有51是领域特定文档,包括金融新闻、文件及其他金融材料。测试表明,该模型在金融特定任务上表现优于基于非领域特定数据集训练的模型,且在Bloomberg的内部金融任务测试中,与其他模型相比提供更好的性能,提升幅度甚至达到60分满分100。
本文将提供一个专门面向金融领域训练LLMs的指南,涵盖以下几个关键领域:
数据收集与准备:如何有效获取和整理相关金融数据以便于模型训练。持续预训练与微调:在优化LLM性能时,何时采用各自的技术。高效的持续预训练:简化持续预训练过程的策略,以节省时间和资源。该文结合了亚马逊金融科技的应用科学研究团队以及AWS全球金融行业专家团队的专业经验,部分内容基于论文《高效的持续预训练以构建领域特定的大语言模型》。
领域的持续预训练需要大型、高质量的领域特定数据集。以下是领域数据集整理的主要步骤:
识别数据源:领域语料库的潜在数据源包括开放网络、维基百科、书籍、社交媒体及内部文档。领域数据过滤:需应用额外的步骤以过滤与目标领域不相关的样本,从而减少无用数据,提高训练效率。数据预处理:通过一系列预处理步骤提高数据质量和训练效率,如去重、修剪无关短句等。在开发金融LLMs时,可以使用两个重要的数据源:新闻CommonCrawl与SEC报告。SEC文件是根据美国证券交易委员会SEC要求,上市公司定期提交的财务报表或其他正式文档。随着时间的推移,创建了大量文档。而新闻CommonCrawl是一个由2016年发布的全球新闻网站的新闻文章数据集。
新闻CommonCrawl可以通过Amazon简单存储服务Amazon S3在commoncrawl桶下以crawldata/CCNEWS/的路径找到。你可以使用AWS命令行接口AWS CLI通过以下命令获取文件列表:
bashaws s3 ls recursive s3//commoncrawl/crawldata/CCNEWS/
在论文《高效的持续预训练以构建领域特定的大语言模型》中,作者使用了基于URL和关键词的方法过滤金融新闻。具体来说,维护一个重要的金融新闻媒体列表及一组与金融新闻相关的关键词。如果某篇文章来自金融新闻媒体或URL中包含任何关键词,便被识别为金融新闻。这样的简单有效的方法使得可以从不仅限于金融新闻媒体中识别金融相关的内容。
SEC文件通过SEC的EDGAR电子数据收集、分析与检索数据库提供在线访问。你可以直接从EDGAR抓取文件,或使用Amazon SageMaker的API,以几行代码检索任意时间段和大量股票代码即SEC分配的标识符的数据。有关更多信息,请参考SEC文件检索。
以下表格总结了上述两个数据源的关键细节。
新闻CommonCrawlSEC文件覆盖范围2016202219932022大小258亿词51亿词作者在将数据输入训练算法前,进行了几个额外的预处理步骤。首先,SEC文件的内容常常有噪声,比如会移除表格和图表,因此,作者会删除被认为是表格或图表标签的短句。其次,使用局部敏感哈希算法去重新文章和文件。最后,将文档连接成一个长字符串进行标记,并将标记数据分块成模型支持的最长输入长度,从而提高持续预训练的处理量。
目前大多数可用的LLMs都是通用型的,缺乏领域特定能力。领域LLMs在医学、金融或科学领域的表现显著。为使LLM获得领域特定知识,有四种方法可供选择:从头训练、持续预训练、针对领域任务的指令微调以及基于检索增强生成RAG。
在传统模型中,微调通常用于创建特定任务的模型,这意味着要为多个任务维持多个模型,例如实体提取、意图分类、情感分析或问答。随着LLMs的出现,使用像上下文学习或提示等技术,维护多个模型的需求已显得不再必要。这极大节省了为相关但独立任务保持模型所需的精力。
选择从头训练模型以使用领域特定数据是直观的选择。然而,创建领域LLMs的绝大多数工作集中在从头训练上,且成本十分高昂。例如,GPT4模型的训练费用超过了1亿美元。这些模型在领域数据和开放域数据的混合上进行训练。持续预训练可以帮助模型获得领域特定知识而不需要从头再来,因为它是针对已有的开放域LLM进行领域数据的预训练。
通过任务的指令微调,模型不可能获取领域知识,因为LLM获得的仅是指令微调数据集中包含的领域信息。除非使用非常大的指令微调数据集,否则其不足以获取领域知识。获得高质量的指令数据集通常非常困难,这也是使用LLMs的一个原因。此外,针对单个任务的指令微调可能会影响到其他任务的性能如这篇论文所示。然而,指令微调比其他预训练替代方案更具成本效益。
以下图示比较了传统的特定任务微调与LLMs中的上下文学习范式。
RAG是引导LLM生成基于领域的响应的最有效方法。尽管通过提供领域的事实作为辅助信息能够引导模型生成响应,但它仍无法获得领域特定的语言风格,因为LLM仍依赖于非领域语言风格生成响应。
持续预训练在成本和获得领域特定知识及风格的强大替代方法中处于一个中间地带。它可以提供一个通用模型,然后在有限的指令数据上进行后续的指令微调。对于下游任务集较大或未知,且标注指令微调数据有限的专业领域,持续预训练是一种具有成本效益的策略。而在其他场景下,指令微调或RAG可能更为合适。
要了解更多关于微调、RAG和模型训练的信息,请参阅微调基础模型、基于检索增强生成RAG及使用Amazon SageMaker训练模型。本文将专注于高效的持续预训练。
持续预训练的方法论包括以下几个方面:
领域适应持续预训练DACP:在论文《高效的持续预训练以构建领域特定的大语言模型》中,作者将Pythia语言模型在金融语料上持续预训练以适应金融领域。目标是通过将来自整个金融领域的数据传递给开源模型,从而创建金融LLMs。由于训练语料包含该领域中的所有整理好的数据集,所得到的模型应该能获得金融特定知识,从而成为各种金融任务的通用模型。这就导致了FinPythia模型的产生。任务适应持续预训练TACP:作者进一步在带标签和无标签的任务数据上对模型进行预训练,以使其专门针对特定任务。开发人员可能希望模型在一定任务组上表现更好,而不是使用通用领域模型。TACP旨在在专注于目标任务的同时进行持续预训练,而无需标签数据。具体而言,作者在任务tokens无标签上对开源模型进行持续预训练。TACP的主要限制在于构建任务特定LLMs,而不是基础LLMs,因为仅使用无标签的任务数据进行训练。尽管DACP使用更大的语料库,但这种方案的成本也是不可承受的。为了平衡这些限制,作者提出了两种方法,旨在构建领域特定的基础LLMs,同时在目标任务上保持优秀性能:高效任务相似的DACPETSDACP:作者提出采用与任务数据高度相似的金融语料子集进行持续预训练。具体而言,作者在从金融语料库中提取的与目标任务分布相关的小语料上持续预训练开源LLM。这有助于提高任务性能,因为我们根据任务tokens的分布调整模型,而无需标签数据。高效任务无关的DACPETADACP:作者提出使用不依赖任务数据的困惑度和token类型熵等指标,从金融语料中选择样本以进行高效持续预训练。该方法旨在处理任务数据不可用的情况或更倾向于构建更通用的领域模型。作者通过两个维度选择对从预训练领域数据的子集获取领域信息的重要数据样本:新颖性和多样性。新颖性是由目标模型记录的困惑度衡量的,指的是LLM之前未见过的信息。高新颖性的数据表明对LLM来说是新的知识,并且这些数据被视为更难学习的数据。在持续预训练过程中,这使得通用LLMs能够获取丰富的领域知识。而多样性则捕捉到域语料中token类型的分布多样性,这在语言建模的课程学习研究中被证明是一项有用特征。以下图示例比较了ETSDACP左与ETADACP右。
我们采用两种采样方案主动选择来自整理好的金融语料的样本:硬采样和软采样。前者是通过按相应指标对金融语料进行排序,然后选择前k个样本进行,k的值根据训练预算预先确定;后者则根据每个数据点的指标值分配采样权重,然后随机抽取k个数据点以满足训练预算。
西部世界vqn作者对产生的金融LLMs在多项金融任务上进行了评估,以探讨持续预训练的效果:
金融短语库:基于金融新闻的情感分类任务。FiQA SA:基于金融新闻和头条的方面情感分类任务。头条:对某金融实体的头条是否包含特定信息的二分类任务。命名实体识别NER:基于SEC报告信用风险评估部分的金融命名实体提取任务。该任务中的单词标注为人名PER、地点名LOC、组织名ORG和其他MISC。由于金融LLMs经过指令微调,作者在每个任务中以5shot设置评估模型的鲁棒性。平均来说,FinPythia 69B在四个任务上比Pythia 69B的表现提高了10,这证明了领域特定持续预训练的有效性。对于1B模型,改善幅度不如69B模型显著,但表现仍提高了2。
以下图示展示了DACP方法对两种模型在性能上的影响。
以下图显示了Pythia 69B与FinPythia 69B生成的两个定性示例。在关于一位投资经理和一个金融术语的两个与金融相关的问题中,Pythia 69B未能理解术语或识别姓名,而FinPythia 69B则正确生成详细答案。这些定性示例展示了持续预训练使LLMs在此过程中获得领域知识的能力。

以下表比较了各种高效持续预训练方法。ETADACPppl是基于困惑度新颖性的ETADACP,ETADACPent是基于熵多样性的方案。ETSDACPcom类似于DACP,通过三种指标进行数据选择。以下是结果的几个要点:
数据选择方法高效:在仅使用10的训练数据下,它们超越了标准的持续预训练。包括任务相似的DACPETSDACP、基于熵的任务无关DACPESADACPent和基于三种指标的任务相似DACPETSDACPcom都在平均上表现优于标准DACP,尽管其仅在10的金融语料上进行训练。任务感知数据选择效果最佳:ETSDACP在所有方法中记录了最佳的平均性能,并且根据三种指标记录了第二好的任务性能。这表明在LLMs的情况下,使用无标签任务数据仍然是提升任务性能的有效方法。任务无关数据选择作为近年第二好的选择:ESADACPent紧随任务感知数据选择方法的表现,这表明通过主动选择不与特定任务绑定的高质量样本,仍然能提升任务性能。这为在整个金融领域构建LLMs铺平了道路,同时达到更优异的任务表现。关于持续预