WWW24因果论文(1/8) | 利用强化学习(智能体)进行因果问答

【摘要】因果问题询问不同事件或现象之间的因果关系。它们对于各种用例都很重要,包括虚拟助手和搜索引擎。然而,许多当前的因果问答方法无法为其答案提供解释或证据。因此,在本文中,我们旨在使用因果关系图来回答因果问题,因果关系图是名词短语之间因果关系的大规模数据集以及关系的来源数据。受到强化学习在知识图谱任务(例如链接预测和事实核查)中的近期成功应用的启发,我们探索了强化学习在因果关系图上的应用,以回答因果问题。我们引入了一个基于 Actor-Critic 的代理,它学习通过图来回答因果问题。我们使用监督学习程序引导代理来处理大动作空间和稀疏奖励。我们的评估表明,代理通过访问每个问题少于 30 个节点(相比之下,简单的广度优先搜索需要访问超过 3,000 个节点),成功地精简了搜索空间以回答二元因果问题。我们的消融研究表明,我们的监督学习策略为我们的强化学习代理的改进提供了坚实的基础。我们的代理返回的路径解释了原因产生结果的机制。此外,对于路径上的每条边,我们的因果关系图提供了其原始来源,从而可以轻松验证路径。

原文:Causal Question Answering with Reinforcement Learning
地址:https://arxiv.org/abs/2311.02760
代码:https://github.com/ds-jrg/causal-qa-rl
出版:WWW 24
机构: Paderborn University

写的这么辛苦,麻烦关注微信公众号“码农的科研笔记”!

1 研究问题

本文研究的核心问题是: 如何设计强化学习算法在因果图上回答二元因果问题。

假设在一个医疗诊断系统中,医生询问"肺炎是否会导致贫血?"。这是一个典型的二元因果问题,即问题中给出了一个原因(肺炎)和一个结果(贫血),要求判断两者是否存在因果关系,即原因是否会导致结果。传统方法通过从文本中提取因果对,训练分类模型来判断。本文则希望利用因果图这种结构化的知识,设计智能体在图上搜索从原因到结果的路径,以回答因果问题。

本文研究问题的特点和现有方法面临的挑战主要体现在以下几个方面:

  • 因果推理需要多步搜索,而非单跳问题回答。智能体从原因实体出发,需要在图上搜索多步,才能到达结果实体。这就要求智能体能记忆历史轨迹,规划未来路径。

  • 动作空间(每步要选择的邻接实体)很大。与之前在知识图谱上做链接预测等任务的研究不同,因果图的所有边都是因果关系,没有边的类型区分。这导致每一步的候选动作数量等于当前实体的邻接实体总数,远大于一般图谱中特定关系类型下的邻接实体数。大动作空间给学习带来困难。

  • 奖励信号稀疏。只有在最后一步到达目标实体时,智能体才能得到奖励反馈。而在此之前的探索过程,难以为智能体提供有效的学习信号。

  • 需要可解释性。与端到端的分类模型相比,基于图搜索的方法的一大优势在于能展示推理链条,解释模型判断的依据。如何在强化学习框架下输出可解释的推理路径也是一个挑战。

针对这些挑战,本文提出了一种基于Actor-Critic算法的"因果问答"强化学习方法:

本文将因果问答建模为在因果图上的序贯决策过程。智能体从原因实体出发,通过选择动作(即选择下一跳前往的邻接实体)在图上搜索,目标是找到一条从原因到结果的路径。为了应对大动作空间和稀疏奖励的挑战,本文采用了 Advantage Actor-Critic (A2C)算法,引入Critic网络来估计状态-动作值函数,指导 Actor 网络更新策略。同时,本文还设计了一种监督学习方式来预训练 Actor 网络,利用最短路径作为专家知识,引导智能体学习更优路径搜索策略。另一方面,为了提高推理解释性,本文利用 beam search 解码多条高概率路径,基于因果图中边上的元信息(如边对应的原始句子),生成易于人类理解的推理链。总的来说,本文巧妙地将因果推理与图上的强化学习相结合,既利用了图谱的结构化知识,又学习到了多步推理策略,在保证较高准确率的同时,提供了可解释的推理依据。

2 研究方法

2.1 因果问题回答任务定义

论文研究了如何使用因果图来回答二元因果问题。给定一个自然语言因果问题,如"X是否导致Y",其中X和Y分别代表一个原因和结果概念。论文的目标是学习在因果图上找到一条从原因概念指向结果概念的路径。如果能找到这样的路径,则问题的答案为"是",否则答案为"否"。

图1展示了一个因果图的例子以及如何在图上回答因果问题"肺炎是否导致贫血"的过程。首先原因概念"肺炎"和结果概念"贫血"被链接到因果图中对应的实体节点。然后从"肺炎"节点开始搜索指向"贫血"节点的路径。该例子中存在一条路径(pneumonia, sepsis, kidney failure, anemia),因此问题的答案为"是"。找到的路径可进一步用于分析原因如何导致结果的内在机制。

2.2 因果问题回答的马尔可夫决策过程建模

论文将在因果图上搜索路径的过程建模为一个马尔可夫决策过程(MDP),其中包含状态空间、动作空间、状态转移函数和奖励函数。

在每一个时刻,智能体的状态定义为,其中表示问题的嵌入向量,表示当前的实体,表示当前实体的嵌入向量,表示已访问路径的隐藏状态(由LSTM建模),表示问题中的结果实体。在起始时刻,被初始化为问题中的原因实体,被初始化为全零向量。

在状态下,动作空间被定义为当前实体在因果图中所有邻居节点的集合,即,其中表示因果图的三元组集合,表示因果关系。此外动作空间中还加入了一个特殊的STAY动作,使得不同因果问题的路径可对齐为相同长度。

在时刻,智能体根据策略执行一个动作,状态根据转移函数转移到,其中。同时环境根据奖励函数反馈奖励值。只有在最后一步,如果即到达目标节点,环境返回奖励1,否则返回0。其他时刻的奖励都为0。

2.3 基于Actor-Critic的强化学习算法

论文使用Actor-Critic算法来训练策略网络和值函数网络。如图2所示,论文采用LSTM来建模状态特征,在每一步将问题嵌入和实体嵌入拼接输入LSTM,产生隐藏状态:

然后在LSTM层之上分别搭建Actor和Critic的前馈网络。Actor网络对所有可能动作的嵌入向量进行评分并经过softmax函数生成动作概率分布:

其中是可学习的权重矩阵, 表示将因果图中的边信息也编码到每个动作的嵌入向量中。

Critic网络输出一个标量值来评估状态的值函数:

其中是可学习的权重矩阵。

在训练时,论文采用Generalized Advantage Estimate (GAE)来更新策略网络的参数:

其中是基于值函数估计的优势函数,B是采样的batch大小。同时论文还加入熵正则化项来鼓励策略的探索。

Critic网络的参数使用TD()误差进行更新:

其中是基于-回报估计的状态真实值。

2.4 引入监督学习加速训练(核心)

因果图上路径空间巨大,奖励函数稀疏,纯粹使用强化学习难以有效训练。为此,论文引入监督学习来为智能体提供先验知识,缩小动作空间。具体地,论文首先对因果图运行广度优先搜索(BFS),获得监督训练的样本。对于每个训练样本(因果问题),BFS尝试搜索从原因指向结果的所有路径。然后基于搜集到的路径,论文使用REINFORCE算法训练一个初始策略网络:

其中在监督学习阶段,每一步的奖励都被设为1。之后,论文在监督学习的基础上,继续使用Actor-Critic算法优化强化学习智能体,期望以更少的探索代价快速收敛到最优策略。

2.5 推理阶段的Beam Search策略

在推理阶段,对于给定的因果问题"X是否导致Y",智能体先将X和Y链接到因果图的实体节点。然后从开始,智能体根据策略采样多条路径直到达到最大长度T。

为了权衡解码效率和精度,论文采用Beam Search策略。在每一步,保留前K个概率最大的部分路径,直到达到最大长度T。图1展示了在一个例子中,Beam Search找到的两条候选路径及其对应的边缘概率。

推理时如果在采样路径中出现了目标节点,则问题的答案为"是",否则答案为"否"。此外,我们还可以利用采样路径上各个边对应的概率值来分析模型做出决策的依据。

综上,论文基于因果图提出了一种强化学习方法来回答因果问题,同时引入监督学习加速模型训练,并采用Beam Search平衡推理效率和精度。相比于穷举搜索,该方法能更高效地剪枝搜索空间,并通过可解释的推理路径来佐证其判断结果。

4 实验

4.1 实验场景介绍

本文提出了一个基于强化学习在因果图上进行二元因果问答的代理模型。实验旨在评估该模型相比基线方法在回答二元因果问题的性能,以及分析模型关键组件的有效性。

4.2 实验设置

  • Datasets: 从MS MARCO和SemEval中抽取二元因果问题,数据集统计如表1所示。使用CauseNet作为因果知识图谱。

  • Baselines: (1) 在CauseNet上进行BFS搜索的基线;(2) 直接用语言模型UnifiedQA-v2和GPT-4进行问答的基线

  • Implementation details:

    • 使用AdamW优化器,梯度范数裁剪为0.5

    • 实体和问题嵌入使用GloVe向量

    • 所有实验在NVIDIA A100 40GB GPU上进行

  • metrics: 使用准确率、F1值、精确率、召回率评估二元问答性能;比较代理模型与BFS访问图节点的数量

4.3 实验结果

4.3.1 实验一、RL代理与基线方法的性能对比

目的: 评估强化学习代理相比BFS和语言模型在二元因果问答任务上的性能

涉及图表: 表2

实验细节概述: 比较不同跳数(1-4跳)的RL代理、BFS以及语言模型在MS MARCO和SemEval测试集上的二元问答表现

结果:

  • RL代理访问节点数量只有BFS的1%左右,有效剪枝了搜索空间

  • RL代理在精确率上优于BFS,接近GPT-4,但召回率略低于二者

  • RL代理产生的答案具有可解释和可验证性,每条路径上的边都可提供web来源作为证据

4.3.2 实验二、RL代理关键组件的消融实验

目的: 研究关键组件(监督学习、Actor-Critic、beam search等)对模型性能的影响

涉及图表: 表3

实验细节概述: 通过移除RL代理的不同组件,比较它们对MS MARCO和SemEval测试集性能的影响

结果:

  • Beam search对性能影响最大,移除后准确率显著下降

  • 初始监督学习次之,为RL建立了良好的起点

  • Actor-Critic、反向边、LSTM的移除也会略微降低性能

4.3.3 实验三、监督学习步数对RL代理学习效率的影响

目的: 验证初始监督学习步数对RL代理学习效率的影响

涉及图表: 图2,图3

实验细节概述: 设置不同步数进行对比实验

结果:

  • 随监督学习步数增加,RL代理的起始准确率提高,不确定性降低

  • 过多监督学习步数(>300)对性能提升效果变弱

  • 初始监督学习有效建立RL代理的良好起点,加速了探索和学习过程

4.3.4 实验四、推理阶段beam width对模型性能的影响

目的: 分析推理阶段beam width大小对模型性能的影响

涉及图表: 图4

实验细节概述: 在MS MARCO测试集上评估beam width为1、5、10、50时,RL代理在不同训练步后的准确率

结果:

  • Beam width越大,准确率越高,但提升幅度递减

  • Beam search可视作贪心解码与BFS的折中,随width增大逼近穷举搜索

  • 即使width为50的beam search准确率也显著低于监督学习,说明50仍是合理的beam width

4.3.5 实验五、人工评估代理找到的因果路径

目的: 人工评估RL代理找到的因果路径的正确性

涉及图表: 表6,表7

实验细节概述: 人工检查3跳RL代理针对每个问题找到的top 1因果路径,判断证据支持下的路径正确性

结果:

  • 在MS MARCO上53%的路径正确,27%可疑,20%错误;在SemEval上64%正确,25%可疑,11%错误

  • 许多错误来自图谱中引入的反向边

  • 结果强调了未来改进因果图谱和问答方法的必要性

4 总结后记

本文针对因果问答(Causal Question Answering)任务,提出了一种基于强化学习在因果图上进行寻路的方法。通过Actor-Critic框架训练一个智能体,使其能够在图上搜索到连接因和果的路径,从而回答二元因果问题。此外,论文还引入了监督预训练来缓解大规模动作空间和稀疏奖励问题。实验结果表明,所提出的方法能够有效剪枝搜索空间,每个问题平均访问不到30个节点即可给出高置信度的答案,大幅优于BFS的3000+节点。

疑惑和想法:

  1. 当前方法仅支持二元因果问题,如何扩展到开放式因果问题?一个思路是将路径末端出现频率最高的实体作为答案。

  2. 在训练时如何引入反例(即答案为"No"的问题)?现有因果图往往只包含正例边,缺乏显式的否定信息。

  3. 图神经网络(GNN)能否进一步增强状态表示?例如用GNN捕获当前节点的k-hop邻域信息。

可借鉴的方法点:

  1. 基于强化学习的因果推理框架可以拓展到其他推理任务,如常识问答、逻辑推理等。

  2. 引入监督预训练来指导智能体探索并加速收敛的思想值得借鉴,特别是在动作空间巨大、奖励函数稀疏时。

  3. 将搜索历史编码为状态向量,避免马尔可夫假设,增强状态表示能力的思路可广泛应用于其他序列决策问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/18461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS-05拷贝继承

目录 1 前置问题 2 拷贝继承实现 3 拷贝封装 4 浅拷贝和深拷贝 5 应用广泛 场景:想使用某个对象中的属性,但是又不能直接修改它,于是就可以创建一个该对象的拷贝 1 前置问题 直接将一个对象source赋值给另一个对象target,此…

【Flutter】显式动画

🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏:Flutter学习 🌠 首发时间:2024年5月29日 🦋 欢迎关注🖱点赞👍收藏🌟留言🐾 目…

微服务项目搭建之技术选型

1、什么是微服务 Java微服务是一种架构风格,通过将单个Spring Boot应用程序拆分为一组小型、独立的Spring Boot服务来构建分布式系统。每个微服务都运行在自己的进程中,并使用轻量级通信机制(如HTTP或消息队列)来进行相互之间的通…

【C++】从零开始构建红黑树 —— 节点设计,插入函数的处理 ,旋转的设计

送给大家一句话: 日子没劲,就过得特别慢,但凡有那么一点劲,就哗哗的跟瀑布似的拦不住。 – 巫哲 《撒野》 🌋🌋🌋🌋🌋🌋🌋🌋 ⛰️⛰️…

Vue组件通讯$attrs和$listeners例子

在Vue中,$attrs 和 $listeners 是两个非常有用的特性,它们允许你更轻松地实现组件间的通讯,特别是当你需要创建可复用的组件时。 $attrs 包含了父组件中未被子组件声明的属性 (class 和 style 除外)。当你不想在子组件中逐个声明父组件传递的…

在豆包这事上,字节看得很明白

大数据产业创新服务媒体 ——聚焦数据 改变商业 导语: 1.基于豆包的话炉/猫箱APP市场反响一般 2.价格战对于豆包来说是副产物 3.价格战对大模型市场是良性的 4.豆包接下来会推广至国际社会 因为宣称价格比行业便宜99.3%,豆包成功出圈了。根据火山引擎公…

笔试强训week6

day1 Q1 难度⭐⭐ 小红的口罩_牛客小白月赛41 (nowcoder.com) 题目: 疫情来了,小红网购了 n 个口罩。 众所周知,戴口罩是很不舒服的。小红每个口罩戴一天的初始不舒适度为 ai​。 小红有时候会将口罩重复使用(注:…

【Linux】数据链路层协议+ICMP协议+NAT技术

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:Linux 目录 👉🏻数据链路层👉🏻以太网以太网帧格式网卡Mac地址对比ip地址 👉🏻MTUMTU…

gtest的使用和简单例子

首先需要安装gtest的库,命令如下: git clone https://github.com/google/googletest.git cd googletest mkdir build cd build cmake .. sudo make install后续就可以直接包含gtest头文件进行测试了。 这里给出一个测试的简单例子,这里使用…

温度传感器安装热套管介绍

热套管(Thermowell)是一段末端封闭的金属管,主要通过焊接、螺纹或法兰连接的方式安装到过程容器或管线上,可保护温度传感器免受流致应力、高压和腐蚀性化学品等严苛工况的影响。此外,热套管使传感器可以轻松方便地拆下…

介绍图片懒加载的几种实现方法

在 JavaScript 中,懒加载(Lazy Loading)主要用于延迟加载资源,例如图片、视频、音频、脚本等,直到它们真正需要时才加载。这样可以提高页面的加载速度和性能。 以下是几种常见的 JavaScript 懒加载实现方式&#xff1…

【管理咨询宝藏116】某大型国有集团公司战略落地保障方案

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏116】某大型国有集团公司战略落地保障方案 【格式】PDF版本 【关键词】战略落地、大型国企、战略报告 【核心观点】 - 资产规模以提高资产质量、…

第三部分:领域驱动设计之通过重构得到更深层的理解

通过重构得到更深层的理解 通过重构得到更深层的理解是一个涉及很多方面的过程。有三件事情是必须要关注的: 以领域为本;用一种不同的方式来看待事物;始终坚持与领域专家对话。 开始重构 获得深层理解的重构可能出现在很多方面。一开始有可能是为了解决代码中的问题——一段…

Linux的线程状态

在Linux中,每个进程都有一个当前的状态,这个状态用于标识进程当前正在做什么。你可以通过ps命令配合不同的选项来查看进程的状态。以下是常见的进程状态及其含义: R (running or runnable): 进程正在运行或在运行队列中等待运行。这并不是说进程正在CPU上执行,而是说它处于…

项目十三:搜狗——python爬虫实战案例

根据文章项目十二:简单的python基础爬虫训练-CSDN博客的简单应用,这一次来升级我们的技术,那么继续往下看,希望对技术有好运。 还是老样子,按流程走,一条龙服务,嘿嘿。 第一步:导入…

华为诺亚等发布MagicDrive3D:自动驾驶街景中任意视图渲染的可控3D生成

文章链接:https://arxiv.org/pdf/2405.14475 项目链接:https://flymin.github.io/magicdrive3d 虽然可控生成模型在图像和视频方面取得了显著成功,但在自动驾驶等无限场景中,高质量的3D场景生成模型仍然发展不足,主…

Neo4J中构建的知识图谱,如何使用推理算法

在Neo4j中构建的知识图谱中,推理算法的使用可以极大地增强数据分析和洞察能力。Neo4j提供了多种推理和查询工具,主要通过Cypher查询语言和内置的图算法库来实现。以下是几种常见的推理算法和使用场景: 1. 规则推理(Rule-based Re…

2951. 找出峰值 Easy

给你一个下标从 0 开始的数组 mountain 。你的任务是找出数组 mountain 中的所有 峰值。 以数组形式返回给定数组中 峰值 的下标,顺序不限 。 注意: 峰值 是指一个严格大于其相邻元素的元素。 数组的第一个和最后一个元素 不 是峰值。 示例 1&#xf…

关于宏的理解

关于宏的理解, 用宏函数举例 宏会把我们的内容编程一段代码,但是我们宏用的一切都不是变量,就是一个构建代码的符号。 比如下面的例子 char str1[] "1234"; const char* str2 "1234"; char st3[5] { 1,2,3,4,\0 };…

Linux网络编程:应用层协议|HTTP

前言: 我们知道OSI模型上层分为应用层、会话层和表示层,我们接下来要讲的是主流的应用层协议HTTP,为什么需要这个协议呢,因为在应用层由于操作系统的不同、开发人员使用的语言类型不同,当我们在传输结构化数据时&…