Learning From Failure Integrating Negative Examples when Fine-tuning Large Language Models as Agents

828 篇文章

已下架不支持订阅

本文探讨了大型语言模型(LLM)在充当代理时,如何从失败中学习以提高性能。研究发现,通过在微调中加入失败轨迹,可以显著提升模型在数学推理、多跳问答和策略问答任务的表现。提出的NAT方法成功地利用了失败轨迹,同时减少了错误学习,增强了模型的知识获取。未来将评估NAT在更多代理框架和任务中的应用潜力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文是LLM系列文章,针对《Learning From Failure: Integrating Negative Examples when Fine-tuning Large Language Models as Agents》的翻译。

从失败中学习:将大型语言模型作为代理进行微调时的反例整合

摘要

大型语言模型(LLM)在充当代理方面取得了成功,代理通过搜索引擎等工具与环境交互。然而,LLM是为语言生成而优化的,而不是在训练或调整过程中使用工具,这限制了它们作为代理的有效性。为了解决这个问题,之前的工作首先收集了LLM和环境之间的交互轨迹,只使用成功完成任务的轨迹来微调较小的模型,这使得微调数据稀缺,获取数据既困难又昂贵。丢弃失败的轨迹也会导致数据和资源的显著浪费,并限制微调过程中可能的优化路径。在本文中,我们认为不成功的轨迹提供了有价值的见解,LLM可以通过适当的质量控制和微调策略从这些轨迹中学习。通过简单地添加前缀或后缀,告诉模型是否在训练过程中生成成功的轨迹,我们在数学推理、多跳问答和策略问答任务中大幅提高了模型性能。我们进一步分析了推理结果,发现我们的方法在有价值的信息和不成功轨迹中的误差之间提供了更好的折衷。据我们所知,我们是第一个证明负轨迹的价值及其在代理优化场景中的应用的人。我们的研究结果为开发更好的代理调优方法和低资源数据使用技术提供了指导。

1 引言

2 相关工作

3 负意识训练

4 实验

5 分析

已下架不支持订阅

### 可解释性AI中的基于一致性框架整合大语言模型的研究与实现 #### 背景介绍 近年来,随着大型语言模型(LLMs)的发展及其在各种领域中的广泛应用,其黑箱性质逐渐成为关注焦点。为了提高这些模型的透明性和可信度,研究人员提出了多种方法来增强它们的可解释性。其中,“基于一致性框架”的方法因其能够通过逻辑推理验证模型预测的一致性而受到广泛关注[^1]。 #### 基于一致性的框架概述 一致性框架的核心理念在于评估模型输出与其内部知识表示之间是否存在矛盾。具体而言,在医疗诊断系统开发中提到的一种策略是利用外部数据源或先验知识库作为参照物,从而验证模型推断过程的有效性。这种方法不仅适用于特定应用场景下的性能优化,还扩展到了更广泛的多模态人工智能历史重建等领域[^2]。 #### 大型语言模型的应用场景分析 当我们将这一概念应用于大型语言模型时,可以考虑以下几个方面: 1. **输入-输出一致性检测** 对于给定的任务,可以通过设计测试集或者合成样本的方式检查不同条件下模型行为是否保持稳定。例如,在自然语言处理任务中设置一系列具有相似语义结构但表达方式略有差异的问题组合,观察对应答案间关系如何变化。 2. **跨模态信息融合机制探索** 结合视觉、听觉等多种感官信号共同作用下产生的综合判断往往更加可靠准确。因此引入多媒体素材辅助训练有助于提升最终成果质量的同时也增加了系统的复杂程度以及对其管理维护的要求。 3. **伦理考量和技术挑战应对措施建议** 随着技术进步带来的便利同时也伴随着新的风险因素出现,比如隐私保护问题、偏见放大效应等等都需要引起足够的重视并采取相应手段加以解决。这包括但不限于制定严格的数据访问权限控制政策;定期审查算法公平性指标确保不会无意间强化某些负面刻板印象等方面的工作内容。 #### 实现案例分享 目前已有部分开源项目致力于此方向上的实践尝试,像Sotaro Kaneda在其GitHub仓库`MLCarbon`里就记录了一些初步实验结果可供参考学习[^3]。尽管如此,由于该课题本身仍处于快速发展阶段,所以未来还有很大改进空间等待进一步挖掘发现。 ```python # 示例代码片段展示了一个简单的函数用于计算两个字符串之间的编辑距离, # 这种基础操作可能是构建更大规模文本比较工具的一部分。 def levenshtein_distance(s1, s2): if len(s1) < len(s2): return levenshtein_distance(s2, s1) if len(s2) == 0: return len(s1) previous_row = range(len(s2) + 1) for i, c1 in enumerate(s1): current_row = [i + 1] for j, c2 in enumerate(s2): insertions = previous_row[j + 1] + 1 deletions = current_row[j] + 1 substitutions = previous_row[j] + (c1 != c2) current_row.append(min(insertions, deletions, substitutions)) previous_row = current_row return previous_row[-1] print(levenshtein_distance("kitten", "sitting")) # 输出应为3 ``` 上述例子虽然简单,但它展示了如何量化两段文字间的差异程度&mdash;&mdash;这是衡量一致性过程中可能需要用到的一个基本组件之一。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UnknownBody

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值