今天是2024年3月23日,星期六,北京,天气晴。
我们先来看看大模型进展,来关注RAG进展、高效参数微调以及长文本的一些事情。
其中,关于高效微调的综述方面,推荐大家关注,《Parameter-Efficient Fine-Tuning for Large Models: A Comprehensive Survey》(https://arxiv.org/pdf/2403.14608)一文对各种高效微调(PEFT)算法进行了全面研究,对其性能和计算开销进行综合。此外,该工作概述了使用不同PEFT算法开发的应用,并讨论了用于降低PEFT计算成本的常用技术。
例如,关于lora的一些变体如下:
另外,大模型用于文档图表理解(layoutllm)以及关于RAG(RAG2.0)的一些进展,我们也可以看看,供大家一起参考并思考。
我们昨天回顾了关于大模型用于文档图表理解的综述工作《From Pixels to Insights: A Survey on Automatic Chart Understanding in the Era of Large Foundation Models》(https://arxiv.org/pdf/2403.12027.pdf),其对当下大模型进行图表理解的工作进行了综述,值得一看。
我们则继续关注文档理解,LayoutLLM: 大模型指令微调用于视觉丰富文档理解的工作。
丰富视觉的文档理解(VrDU)专注于分析文档图像(例如发票),以自动提取和组织结构化信息。不同的文档有不同的风格、格式和内容,因此与传统的文本信息提取任务不同,VrDU同时依赖于文本和视觉信息因此,利用视觉丰富的文档的多模式特性至关重要。
之前的工作,例如LayoutLMs,提出通过联合预训练文本、视觉和布局信息来获取特征表示。在单个模型中进行最终调整,如图1所示:
微调过程是对每个任务进行的,如图1(a)所示。然而,这种方法需要对每个任务和数据集进行复杂的微调步骤,从而显着增加培训和运营成本。
大模型LLM由于在自然语言处理任务中的成功而受到了广泛关注,可以通过根据输入文本的响应微调知识来执行各种任务,例如翻译和摘要,虽然它们可以通过提示(输入指令)执行各种任务,但它们只能处理一维文本信息序列,必须改进它们以处理具有重要二维结构的文本,例如文档图像。
《LayoutLLM: Large Language Model Instruction Tuning for Visually Rich Document Understanding》 一文提出了一种新方法LayoutLLM,它通过结合VrDU模型和LLM的优点来解决传统模型的局限性。
编码器采用了擅长文档布局理解的模型,而作为解码器,使用了擅长语言理解的LLM,所提出的单一模型可以通过微调多个VrDU任务来灵活地执行多个任务,例如文档图像分类、信息提取和文档视觉问答,使用预训练的LayoutLMv3作为编码器和预训练的Llama-7B解码器及其官方权重
具体地,
在编码器方面,首先使用预先训练的LayoutLMv3架构对文档图像中的ORed文本和视觉信息进行编码,用于捕获文档的布局结构和文本,并生成与文档相对应的特征,生成成最大序列长度为512的一维序列输入到后续的Llama中,最大序列由LayoutLMv3配置确定。此外,还使用一个线性层来对应Llama的输入维度,输入到Llama。
在解码器方面,使用Llama接收输入数据和任务指令,并产生相应的输出,本研究中使用了7B参数模型,文档特征和VrDU任务指令提示用作VrDU任务的输入,其在对任务指令提示进行标记化和编码之后,首先将文档特征输入到LLM,然后是任务指令信息,该特征与嵌入自然语言提示后的特征在同一阶段输入,微调方法完全遵循Alpaca。
地址:https://arxiv.org/pdf/2403.14252
1、关于RAG进展, Adaptive-RAG:学习适应检索增强的大模型以解决问题复杂性
《Adaptive-RAG: Learning to Adapt Retrieval-Augmented Large Language Models through Question Complexity》一文提出了一个新颖的自适应框架,根据查询的复杂程度,从最简单到最复杂,动态地为(检索增强的)LLM 选择最合适的策略。
如下图所示,包括三种方式:
(A)在回答查询时,这种单步方法先检索相关文档,然后生成答案。但是,对于需要多步骤推理的复杂查询,这种方法可能还不够。
(B) 这种多步骤方法会迭代检索文档并生成中间答案,虽然功能很好,但对于简单查询来说效率很低,因为它需要多次访问LLM和检索器。
(C) 自适应方法可以根据分类器确定的给定查询的复杂性,为检索增强 LLM 选择最合适的策略,包括迭代、单一甚至无检索方法。
其中,这种选择过程通过分类器来实现,分类器是一个较小的LLM,经过训练,利用自动收集的标签来预测传入查询的复杂程度。
这块的核心在于如何训练这个分类器,为了训练较小的分类器语言模型,采用两种特殊策略来自动构建训练数据集。
首先根据三种不同的检索增强LLM策略的结果,对查询复杂度进行标注,以便根据需要确定标注。例如,如果最简单的非基于检索的方法正确生成了答案,那么其对应查询的标签就是"A"。
此外,为了打破不同模型在为查询提供标签方面的平局,会为更简单的模型提供更高的优先级。换句话说,如果单步方法和多步方法都产生了相同的正确答案,而基于非检索的方法却失败了,就会给其相应的查询分配标签"B",但这种标注策略有一个局限性,即并非所有查询都能得到标注,因为所有三种检索增强方法都可能无法生成正确答案。
另一方面,考虑到基准数据集的创建方式(例如,需要顺序推理的质量保证数据集通常需要多步骤方法;而使用单步骤方法可以理想地回答那些标注了单个文档的查询),基准数据集可能已经对最适合其查询的检索增强LLM策略产生了有意义的归纳偏差。因此,对于那些在第一步标注后仍未标注的查询,给单跳数据集的查询赋予"B",给多跳数据集的查询赋予"C"。
最后,利用这些自动收集的查询复杂度对,通过交叉熵损失来训练分类器。在推理时,可以确定查询的复杂度,即{o=Classifier(q)。
可以看一个具体的例子:
地址:https://arxiv.org/pdf/2403.14403
2、关于RAG2.0,使用上下文优化的端到端RAG方案
今天有个词很火,叫RAG2.0(来自https://contextual.ai/introducing-rag2/),RAG最初的发明者现任Contextual AI 的CEO Douwe Kiela等人对外发布了RAG 2.0。该方法将所有组件作为单个集成系统进行预训练、微调和对齐,通过语言模型和检索器进行反向传播以最大化性能。【看了全篇,也无细节,但可以跟进】
其中有几个图很有意思:
例如,对RAG1.0和RAG2.0的对比:
对RAG1.0和RAG2.0在pretrain、SFT、强化上的流程对比:
本文主要回顾了关于RAG以及文档智能的一些事情,其中所涉及到的一些分流策略(引入小模型做分类)以及关于文档智能的结合(针对文档进行版式识别分析特征建模+大模型做解码)的方案,都很有意思。
文档智能在RAG流程中扮演着十分重要的角色,大家可以多关注这方面的进展。
1、https://arxiv.org/pdf/2403.14608
2、https://contextual.ai/introducing-rag2
老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。
对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。