摘要:先说一个有趣的事儿,预测阶段思考长度的scaling law最近越来越成为大家所关注的对象,https://mp.weixin.qq.com/s/e1YnTxZlzFvjcmrLLTA8fw,模型在数学竞赛上的得分与测试所允许思考的长度紧密相关。红色实线展示了
文章转自公众号老刘说NLP
今天,我们里详细讲讲OpenAI-O1的推理模式以及多模态RAG的一个混合增强思路,可以看起组合策略以及对应的安全策略。
我们可以从中找到一些思路。
一、先看关于OpenAI O1的推理模式分析
先说一个有趣的事儿,预测阶段思考长度的scaling law最近越来越成为大家所关注的对象,https://mp.weixin.qq.com/s/e1YnTxZlzFvjcmrLLTA8fw,模型在数学竞赛上的得分与测试所允许思考的长度紧密相关。红色实线展示了模型所能达到的准确率与所给定的推理长度呈正相关。相比传统的多次采样+投票(MajorityVoting),模型思维链长度增加展现出了更高的效率。
带着这个结论,我们来看看其始祖, OpenAI's o1的具体实现机制,主要发现来自于《A Comparative Study on Reasoning Patterns of OpenAI's o1 Model》(https://arxiv.org/abs/2410.13639)这个工作不错,可以看看openai O1对不同任务的推理步骤case。
从推理模式的几种对比方法说起,如下表所示,给定具体问题,如果不直接使用大模型进行推理,会有几个基线的方案,如BoN、Step-wise BoN、Self-Refine、Agent Workflow,这几个理解下挺有意思,学术名词叫Test-time Compute methods,测试时间计算方法。
1、BoN策略
首先是BoN(Best-of-N),是一种在推理阶段增强大模型(LLM)性能的测试时计算方法,即通过在推理阶段生成和选择多个候选响应来提高LLM的性能,从而弥补单纯增加模型参数带来的性能提升瓶颈。不过,BON方法,主要依赖于两个变量,一个是奖励模型的能力,一个是搜索空间N的大小,前者能力越强,效果越好,后者不一定越大越好,越大空间越大,时耗越大,奖励模型的判定范围就越大,越难选择。其实现步骤如下:
首先,生成多个候选响应。对于给定的输入,LLM会生成多个候选响应(通常是N个)。这些候选响应是通过模型的多次输出生成的。
其次,选择最佳响应。从这N个候选响应中,使用一个奖励模型来选择最合适的响应作为最终输出。奖励模型会对每个候选响应进行评估,并根据某种预定义的标准(如相关性、准确性等)给出评分。
最后,优化推理过程。通过搜索多个可能的响应,BoN方法能够在推理阶段找到更优的答案,而不是仅仅依赖于单一的直接输出。这种方法展示了在推理阶段通过扩展时间来搜索更多可能响应的必要性。
2、Stepwise BoN策略
所以,又进一步有了个新的概念,叫Stepwise BoN(逐步最佳选择),一种改进的测试时计算方法,旨在通过逐步分解问题和选择最佳响应来增强大模型的性能。优点在于它能够通过逐步分解和选择最佳响应来处理复杂的多步骤推理任务,避免了直接生成长文本响应时可能出现的错误累积问题。然而,由于需要处理多个中间步骤,逐步BoN方法对模型的长上下文跟随能力要求较高,这在某些复杂任务上可能会限制其性能。其实现步骤如下:
首先,分解问题。Stepwise BoN将复杂的问题分解成多个子问题。对于每个子问题,模型生成N个候选响应。
然后,逐步选择。对于每个子问题的N个候选响应,使用奖励模型(如GPT-4o)选择一个最佳响应。这个过程是迭代进行的,直到所有子问题都得到解决。
接着,形成最终答案。通过逐步选择最佳响应,逐步BoN方法能够逐步构建出对原始问题的最终答案。
最后,迭代改进。在每一步中,模型不仅生成新的响应,还会根据前一步的结果进行调整和优化,从而逐步改进最终的输出。
3、Self-Refine
这个在RAG考的很多,Self-Refine ,通过迭代反馈和改进来提升大模型的初始输出质量,核心思想是通过多次迭代和反馈来逐步优化模型的输出,从而提高其准确性和质量,特别适用于那些需要精细调整和优化的任务。但是迭代终止条件并不好设置。主要包括的步骤如下:
首先,初始输出,LLM 生成一个初始的输出;
然后,迭代反馈使用某种反馈机制(例如用户反馈、自动评估指标等)对初始输出进行评估;
接着,改进输出,根据反馈信息,LLM 对初始输出进行改进,生成一个新的输出。
最后,重复迭代。这个过程会不断重复,直到输出达到满意的水平或达到预设的迭代次数。
3、AGent flow策略
进一步的,又在想,直接做任务拆解是不是更好,减少不必要的推理步骤,通过使用域特定的系统提示以减少不必要的长上下文推理过程,从而提高模型的效率。所以又有了AGent flow,也就是目前慢思考的玩法,其实现的步骤如下:
首先,任务分解:将复杂任务分解成更小的子任务。通过这种方式,模型可以更有效地处理和解决这些子任务,而不是一次性处理整个复杂任务。
其次,结构化工作流:设计一系列域特定的系统提示,用于规划更好的推理过程。这些提示帮助模型在处理每个子任务时更有条理地进行推理。
最后,使用工具:利用各种工具来辅助完成任务。例如,在常识推理数据集(如HotpotQA和Collie)上,Agentflow使用了现有kg agent框架;在代码和数学数据集(如USACO和AIME)上,选择代码助手和数学求解器。
我们看很多的推理工作,这几个方案都会作为base line去做对比,但这个本质我觉得还是牺牲时间来换取性能提升。但是,引入的步骤越多,变量越多,效果其实越不可控。流畅的工业方案应该是大道至简,一步到位。 而在这个工作的测试结论上,Agentflow较大地提高了模型的性能(所以慢思考在这里是有只支撑依据的),并且与o1的性能相对接近,而分步BoN对模型能力的影响主要体现在HotpotQA(多跳问答,这个其实也好理解)任务中。
并且,不同的任务,其使用的策略应该是不一样的,所以也可以看OpenAI-O1的几个模式,这个工作总结成了六种推理模式(即系统分析(SA)、方法复用(MR)、分而治之(DC)、自我完善(SR)、上下文识别(CI)和强调约束(EC)。
可以看几个形象化的例子:
1、系统分析Systematic Analysis (SA)。从问题的总体结构出发,首先分析输入和输出以及约束条件,然后决定算法的选择和数据结构的使用。
2、方法复用Method Reuse (MR)。对于一些可以转化为经典问题(如最短路径或背包问题)的问题,o1可以快速复用现有的方法来解决它们。
3、分而治之Divide and Conquer (DC)。将复杂问题分解为子问题,并通过解决子问题来构建整体解决方案。
4、自我完善Self-Refinement (SR) 。在推理过程中评估其推理过程,以确定是否存在任何问题并纠正任何错误。
5、上下文识别Context Identification (CI)。对于一些需要额外信息输入的数据集(例如,HotpotQA),首先总结与查询相关的不同方面的上下文,然后给出相应查询的响应。
6、强调约束Emphasizing Constraints (EC)。对于一些对生成文本有约束的数据集(例如,Collie),在推理过程中通常会强调相应的约束。
既然是模式总结,那么久应该会有对应的量化数据支撑,因此,观察到o1最常用的推理模式是DC和SR,这可能是o1成功的关键。
此外,不同任务中的推理模式也有所不同对于常识推理任务,openai o1倾向于使用CI上下文识别和EC强调约束。相比之下,在数学和编码任务中,openai o1主要依赖于MR方法复用和DC分而治之。
但是,但这个本质我觉得还是牺牲时间来换取性能提升。但是,引入的步骤越多,变量越多,效果其实越不可控。流畅的工业方案应该是大道至简,一步到位。
例如这个图是deepseek的推理步骤,其实很长,这个对推理的速度是个大的考验;
二、再次看下多模态RAG的进展
关于多模态RAG进展,我们看个新的一个思路,《CUE-M: Contextual Understanding and Enhanced Search with Multimodal Large Language Model》(https://arxiv.org/abs/2411.12287),可以看看其所用多模态嵌入方式跟组合范式,核心打的点是多模态查询需要细粒度的推理或文本和视觉上下文的整合以及安全过滤机制需要动态适应实例和类别特定的风险。
再次温习下,多模态RAG的常规实现方式。
可以单纯基于MLLM,基线MLLM具有相同的骨干模型和直接比较的答案生成提示。也可以是MLLM+图像搜索,但这种方式基于图像搜索检索文档,限制了多模态性。 也可以是MLLM+图像搜索+图像增强检索,将图像进一步转化为文本描述和图像标签,用户查询增强检索。
但在此上面,还可以有很多新的玩法,如加一堆检索的过滤步骤,可以是在query端做优化,也可以在检索端做优化,也就是底下这张表:
其中:
Image-Enriched Information Retrieval,图像描述策略,使用MLLM生成图像的一般描述,以提供对输入图像的总体理解;相似图像搜索策略基于用户查询图像,检索包含类似图像和相关文本的文档,并从这些文档中提取标签;图像标签文本搜索策略,利用前一步骤中提取的图像标签,进行基于文本的搜索,检索与这些标签相关的文档,从而提供更广泛的信息。
Intention Refinement,使用少量提示的LLM(意图精炼器)将用户查询精炼为明确的意图和相关查询,具体地,将用户查询与从初始文档检索和图像描述中提取的摘要结合在一起,然后使用少样本提示的LLM,将这些摘要整合成一个明确的信息需求。通过这种方式,LLM能够将用户查询中的模糊或隐含意图澄清为清晰且相关的意图。
Query generation查询生成,根据精炼后的意图,使用额外的LLM提示生成补充查询。
Relevance Classifier答案生成,使用相关性分类器选择最相关的文档,并使用MLLM生成最终答案。
进而就可以得到整个的技术流程图:
其中,还有个safety filter pipeline,
其思想在于,使用基于文本的分类器对用户查询进行分类,以及基于图像的分类器对视觉内容进行分类,以提供快速的初步过滤。对于需要推理的复杂多模态不安全内容,使用少样本提示的LLM,利用细化后的意图数据来澄清用户目的。此外,还设置实例级安全和类别级安全。实例级安全利用预定义的查询-响应对数据库,如果用户查询与数据库中的不安全条目匹配,则提供预定义的安全答案。类别级安全则通过API选择器(如购物API、地图API等)应用类别过滤,并提供安全的类别级响应。
总结
本文主要OpenAI-O1的推理模式以及多模态RAG的一个混合增强思路,可以看起组合策略以及对应的安全策略。
目前多模态RAG以及o1后的模仿工作越来越多,是最近的热点,大家可以多关注。
参考文献
1、https://mp.weixin.qq.com/s/e1YnTxZlzFvjcmrLLTA8fw
2、https://arxiv.org/abs/2410.13639
3、https://arxiv.org/abs/2411.12287
来源:360亿方云