《DREEAM Guiding Attention with Evidence for Improving Document-Level Relation Extraction》阅读笔记
代码
原文地址
预备知识:
1.什么是K-L散度(Kullback-Leibler Divergence)?
2.什么是自训练(self-training)?
1 Introduction

2 Preliminary
2.1 Problem Formulation
,它由一组句子
和一组实体
组成。DocRE的目标是预测文档中每一对实体之间的所有可能的关系。文档中的每一个实体
至少有一个专有名词指称,用
表示。文档中的每一对实体
可以有多种关系,构成一个关系子集
,其中
是一个预定义的关系集合。用
表示两个实体之间没有关系,
也属于
。另外,如果两个实体
之间有一个有效的关系
,ER的目标是从文档中找出能够支持预测三元组
的证据句子集合
。2.2 ATLOP
Text Encoding
中的词元
进行编码,得到每个词元的嵌入和跨词元的依赖。虽然原始的ATLOP只使用了最后一层的输出,但本文采用了最后三层的平均值(试点实验表明,使用最后3层比只使用最后一层的性能更好)。具体来说,对于每个Transformer层有d个隐藏维度的预训练语言模型,词元嵌入
和跨词元依赖
的计算公式如下:
是每个词元在最后三层的隐藏状态的平均值,
是最后三层所有注意力头的注意力权重的平均值。Entity Embedding

表示每个实体
的嵌入,它是由它的所有提及
的信息汇总而来的。具体而言,ATLOP采用了logsumexp池化方法。logsumexp池化的公式是:
是提及
开始位置的特殊标记“*”的嵌入。Localized Context Embedding
的重要性来选择词语。直观地说,对
和
都有贡献的词语应该被更多地考虑。每个词语的重要性由公式1得到的词语之间的依赖关系
决定。对于实体
,它的所有提及
的词语依赖关系被收集并平均,得到每个词语对
的重要性
。然后,每个词语对实体对
的重要性
,由
和
计算得到:
表示哈达玛积。
是一个分布,反映了每个词语对实体对
的重要性。接下来,ATLOP执行一个局部上下文池化:
是所有词语嵌入的加权平均,权重由
决定。Relation Classification
之间的关系,ATLOP 首先生成了考虑上下文的头实体和尾实体表示:
表示两个向量的拼接,其中
为可训练参数。然后,在上下文感知表示上应用双线性分类器来计算关系分数
:
和
是可训练参数。因此,实体
与
之间关系
成立的概率为
,其中
为sigmoid函数。Loss Function
,作为每个关系类
的动态阈值。对于每一对实体
,ATL 强制模型对正向关系类
产生高于
的分数,对负向关系类
产生低于
的分数,如下式所示:
3 Proposed Method: DREEAM

3.1 Teacher Model
来为每一对实体
生成一个基于证据的局部上下文嵌入。
可以给出
和
的词级别的重要性,但句级别的证据只能从人工标注中得到,如图1所示。为了弥补这个差距,本文对每个句子中的每个词的权重求和。具体来说,对于一个由词
组成的句子
,计算句子级别的重要性为:
,它反映了文档中每个句子对实体对
的重要性。本文还用人工标注的证据分布来指导
。首先,对于每个有效的关系标签
,定义一个二值向量
,它标记了文档中的每个句子
是否是关系三元组
的证据。如果是,就设为1,否则为0。例如,如果
是
的证据,那么
就设为1,否则为0。
:
是一个全1向量。公式9的原理是,在关系分类器之前的模块并不显式地知道具体的关系类型。因此,引导编码器中的注意力模块产生与关系无关的词依赖。Loss Function
之间关系的局部上下文嵌入
,本文利用人工标注的证据
来指导每个实体对的证据分布
。用K-L散度损失来训练模型,使
,从而减少两者之间的统计差异:
来调节ER损失和RE损失的权重,使模型能够同时优化两个目标:
3.2 Student Model
的证据分布
。然后,让学生模型学习复现每个实体对
的证据分布
。Loss Function

是学生模型对实体对
的证据分布,由公式2得出。
和
有两点不同。第一,
是用句子级别的监督信号,而
是用词级别的监督信号。这是因为词级别的证据分布更容易获得。在人工标注的数据上,要从句子级别的标注中得到词级别的证据分布很困难。在远程监督的数据上,词级别的证据分布可以从教师模型的预测中直接得到。所以,本文用词级别的证据分布来给ER自训练提供微观的监督。第二,
只在有有效关系的实体对上计算,而
在文档中的所有实体对上计算。这是因为远程监督数据上的关系标签不太可靠。这些关系标签是自动收集的,可能有些标注的关系和文档无关。所以,从自动标注中很难分辨哪些关系是有效的,哪些是无效的。为了避免漏掉重要的实例,本文对所有实体对计算损失。总的损失是由公式11中的超参数
来平衡的,公式如下:
3.3 Inference
和它的证据预测
,从
中收集证据句子
,构建一个伪文档
。然后,把伪文档输入训练好的模型,重新给关系三元组评分。为了把伪文档和整个文档的预测结合起来,用一个只有一个参数
的混合层,
是一个阈值。只有当一个三元组
在整个文档和伪文档上的得分之和大于
时,才把它作为最终的预测结果。调整
,让RE在开发集上的二元交叉熵损失最小。4 Experiments
4.1 Setting
Dataset

Configuration
和
作为预训练语言模型(PLM)编码器。参考前人的工作,通过网格搜索从
中选取了合适的参数,分别为
的0.1和
的0.05,来平衡ER损失和RE损失。在训练和评估DREEAM时,使用单个Tesla V100 16GB GPU来运行
,使用单个NVIDIA A100 40GB GPU来运行
。超参数和运行时间的细节见附录A。Evaluation
值,筛选出
大于0.2的句子
,作为证据的来源。在评估阶段,使用DocRED的官方评估指标,分别对RE和ER进行Ign F1和F1、Evi F1的评估。Ign F1是在去除了训练集中已有的关系后,对开发集和测试集进行的评估,以消除训练集的影响。用不同的随机种子,对系统进行了五次训练,并给出了这些训练的平均分数和标准误差。4.2 Main Results

Performance of the Student Model
甚至能够与在弱监督设置下使用
的SSAN (Xu等人, 2021a)相比肩。当使用
作为PLM编码器时,DREEAM在开发集和测试集上仍然保持优势。这些结果证明了本文的假设,即ER自训练能够改善RE,这是之前的工作未能展示的。Performance of the Teacher Model
Effectiveness of ER Self-Training
4.3 Ablation Studies
Teacher Model

,以分析证据指导训练的影响,发现本文的方法能够有效地将注意力集中在相关的上下文上。更多细节可以参见附录B。此外,本文还从关闭ER训练的教师模型中检索出证据,作为重要性超过预设阈值的句子。通过这种方式,发现Evi F1与开启ER训练的教师模型相差无几。这一观察说明,ER是一个与RE紧密相关的任务。Student Model
4.4 Memory Efficiency
对于实体对
的证据分数:
是一个句子嵌入,
是根据公式3得到的局部上下文嵌入,
和
是可训练的参数。EIDER和其他现有的系统因此需要对所有的(句子,实体对)组合进行计算。具体来说,假设一个文档
有
个句子
,和
个实体
,则有
个实体对。为了得到证据分数,EIDER必须通过公式14进行
次双线性分类,导致巨大的内存消耗。相比之下,DREEAM直接用注意力权重在词上的求和作为证据分数,因此无需引入新的可训练参数,也无需进行昂贵的矩阵计算。因此,可以看到,DREEAM比它的竞争对手更节省内存。
作为预训练语言模型(PLM)编码器时,现有方法和提出的方法的内存消耗和可训练参数的数量。数值是在使用相应的官方仓库和批量大小为四的情况下训练系统时测量的。本文发现,DREEAM的内存消耗只有EIDER的27.4%和SAIS的25.5%。值得注意的是,DREEAM的内存消耗也比KD-DocRE少,突出了本文提出的方法的内存效率。4.5 Performance on Re-DocRED

5 Related Work
6 Conclusion
Limitations
《DREEAM Guiding Attention with Evidence for Improving Document-Level Relation Extraction》阅读笔记的更多相关文章
- 阅读《RobHess的SIFT源码分析:综述》笔记
今天总算是机缘巧合的找到了照样一篇纲要性质的文章. 如是能早一些找到就好了.不过“在你认为为时已晚的时候,其实还为时未晚”倒是也能聊以自慰,不过不能经常这样迷惑自己,毕竟我需要开始跑了! 就照着这个大 ...
- RobHess的SIFT源码分析:imgfeatures.h和imgfeatures.c文件
SIFT源码分析系列文章的索引在这里:RobHess的SIFT源码分析:综述 imgfeatures.h中有SIFT特征点结构struct feature的定义,除此之外还有一些特征点的导入导出以及特 ...
- RobHess的SIFT源码分析:综述
最初的目的是想做全景图像拼接,一开始找了OpenCV中自带的全景拼接的样例,用的是Stitcher类,可以很方便的实现全景拼接,而且效果很好,但是不利于做深入研究. 使用OpenCV中自带的Stitc ...
- 阅读《RobHess的SIFT源码分析:综述》笔记2
今天开始磕代码部分. part1: 1. sift特征提取. img1_Feat = cvCloneImage(img1);//复制图1,深拷贝,用来画特征点 img2_Feat = cvCloneI ...
- element-ui button组件 radio组件源码分析整理笔记(一)
Button组件 button.vue <template> <button class="el-button" @click="handleClick ...
- element-ui 组件源码分析整理笔记目录
element-ui button组件 radio组件源码分析整理笔记(一) element-ui switch组件源码分析整理笔记(二) element-ui inputNumber.Card .B ...
- element-ui Carousel 走马灯源码分析整理笔记(十一)
Carousel 走马灯源码分析整理笔记,这篇写的不详细,后面有空补充 main.vue <template> <!--走马灯的最外层包裹div--> <div clas ...
- STL源码分析读书笔记--第二章--空间配置器(allocator)
声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...
- element-ui MessageBox组件源码分析整理笔记(十二)
MessageBox组件源码,有添加部分注释 main.vue <template> <transition name="msgbox-fade"> < ...
- element-ui switch组件源码分析整理笔记(二)
源码如下: <template> <div class="el-switch" :class="{ 'is-disabled': switchDisab ...
随机推荐
- PyTorch 中自定义数据集的读取方法
显然我们在学习深度学习时,不能只局限于通过使用官方提供的MNSIT.CIFAR-10.CIFAR-100这样的数据集,很多时候我们还是需要根据自己遇到的实际问题自己去搜集数据,然后制作数据集(收集数据 ...
- Elasticsearch安装ik分词器,并配置扩展词典
1.首先安装好elasticsearch,这里我用的是docker安装 2.去GitHub下载ik分词器,GitHub地址 3.下好了解压 4.使用远程客户端工具(我用的是finalShell)将整个 ...
- C++ Qt开发:TabWidget实现多窗体功能
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍TabWidg ...
- Swagger2的接口配置
Swagger2的接口配置 /** * Swagger2的接口配置 * * @author ruoyi */ @Configuration public class SwaggerConfig { / ...
- C#新鲜面试题出炉(2024)
总所周知 C#这门语言 没有Java的八股文,所以面试题一般都是问的业务, 那么对于新手来讲,最起码也要会一些基础性问题, 以下就是包含C# 和sqlserver几个常见的面试题 1) Dele ...
- android Handler应用
android在运行时改变ui需要在ui线程中修改才行,不然就会报错或者无法启动应用. 我们怎么可以做事不管呢? 既然不能在ui线程外的地方运行修改ui的代码,我们可以用Handler解决这个问题, ...
- Unity3D学习笔记5——创建子Mesh
目录 1. 概述 2. 详论 2.1. 实现 2.2. 解析 3. 参考 1. 概述 在文章Unity3D学习笔记4--创建Mesh高级接口通过高级API的方式创建了一个Mesh,里面还提到了一个Su ...
- Java程序员都要懂得知识点:原始数据类型
摘要:Java原始数据类型有short.byte.int.long.boolean.char.float.double.原始数据是未处理的或简化的数据,它构成了物理存在的数据,原始数据具有多种存在形式 ...
- 快来一起玩转LiteOS组件:RHas
摘要:RHash是一个C语言编写的哈希函数库,用于计算和验证磁力链接和各种消息摘要的控制台实用程序. 本文分享自华为云社区<LiteOS组件尝鲜-玩转RHas>,作者:Lionlace . ...
- [ERROR] Error executing Maven. [ERROR] 1 problem was encountered while building the effective settings
原因: maven 的配置文件 setting.xml 有错. 比如在配置文件中多了一行: 导致配置文件的格式不正确.