学习论文《Neural Snowball for Few-Shot Relation Learning》笔记

笔记在一定程度上参考了AI科技评论的用于少次关系学习的神经网络雪球机制1.文章的创新点关系增长的关系抽取关系抽取(RelationExtraction)是自然语言处理当中的一个重要研究课题,其探究如何从文本中抽取结构化的关系事实。例如,从句子“比尔盖茨是微软的创始人”中,我们可以抽取出(比尔盖茨,创始人,微软)这样一个关系三元组,并用于知识图谱补全等下游任务中。与关系抽取相关的工作有很多...
摘要由CSDN通过智能技术生成

笔记在一定程度上参考了AI科技评论的用于少次关系学习的神经网络雪球机制

1.文章的创新点

关系增长的关系抽取

关系抽取(RelationExtraction)是自然语言处理当中的一个重要研究课题,其探究如何从文本中抽取结构化的关系事实。例如,从句子“比尔盖茨是微软的创始人”中,我们可以抽取出(比尔盖茨,创始人,微软)这样一个关系三元组,并用于知识图谱补全等下游任务中。
与关系抽取相关的工作有很多,但他们大多针对预定义的关系类型,即给定一个人为定义好的关系集合,在抽取时仅考虑集合内的关系类型。然而,我们面临着开放式的关系增长,随着新领域、新知识的出现,关系类型也在不断增多。因此,我们需要能够应对关系增长的关系抽取模型。

知识度量:通过RSN来在已有关系上的大规模数据上训练距离度量,迁移到新的关系类型上,利用新关系的少量数据作为启动种子,从大规模的无监督数据中挖掘有用信息,挖掘越多的有用信息,我们就能得到越好的关系抽取模型。

2. Related Work

2.1 Three different kinds of data

目前的研究当中,主要有以下几种关系抽取的场景,他们所针对的关系类型和利用的数据都有所不同:

  • 有监督的关系抽取(Supervised Relation Extraction):其针对预定义的关系集合,使用大规模的监督数据
  • 半监督的关系抽取(Semi-Supervised Relation Extraction):其针对的也是预定义的关系集合,希望使用相对较少的监督数据,在大量无监督数据的帮助下,能够取得与有监督关系抽取类似的效果。
  • 少次学习关系抽取(Few-Shot Relation Extraction):其针对的新的(没见过的)关系类型,通过在已有关系类型上的大规模数据预先训练,再快速迁移到新关系类型的少量数据上,达到少次学习的目的。
  • 自启动关系抽取(Bootstrapping Relation Extraction):其面向的也是开放的关系场景,对于新的关系类型,仅给定少量的启动样本,以迭代的方式从大规模的数据中挖掘更多的信息,从而得到更加强大的关系抽取模型。

从上面的分析中可以看出,这些方法涉及到了三种类型的数据:

  • 在已有关系类型上的大规模监督数据(large-scale existing relations data)
  • 对于新关系的少量标注数据(The new relation few-shot ins)
  • 以及大规模的无监督数据,从语料库中得到的unseen或unlabelled data(large-scale Unlabelled Corpora data)

我们希望能够充分的利用这三种数据,于是作者提出了一种新的关系抽取方法——Snowball方法

2.2 Nerual Snowball

三种数据类型的Nerual Snowball模型如下
在这里插入图片描述

如上图所示,Neural Snowball通过在已有关系上的大规模数据上训练距离度量,迁移到新的关系类型上,利用新关系的少量数据作为启动种子,从大规模的无监督数据中挖掘有用信息,挖掘越多的有用信息,我们就能得到越好的关系抽取模型。

3. Methodology

Nerual Snowball的构成如下
在这里插入图片描述

  • 种子集Seed: 对于一个新的关系类型,给定少量样本作为Seed集 S r S_r Sr,在每一轮迭代iteration后,种子集都会扩充经过选择的unlabelled ins(上文中的大规模无监督数据),得到的新的 S r S_r Sr再次参与迭代。
  • 候选集C1: C1中的instance是通过远程监督(distant supervision)挖掘得到的,如下图所示,可以看出如果我们新的关系是founder,那么对于种子集中的少量正确标注样例"Bill founder Microsoft",远程监督只会获得含有Bill 和 Microsoft的实体对所包含的句子,因此容易引入并不含有founder这层关系的句子(Bill mentioned Microsoft)。这些不能体现新的关系"founder"的句子是我们不需要的,所以C1称之为候选集:

  • RSN: 判断远程监督挖掘的信息是否是有用信息的过滤器
  • Relation Classifier g ( x ) g(x) g(x): 是我们模型最终想要得到的二分类器。从C1过滤后的instances与labelled instance有监督训练这个relation classifer。用这个分类器对candidate1做分类,得到candidate2。
  • C2: 因为从C1得到的数据并不是完全过滤干净的,也就是说二分类器Relation Classifier模型还不是很强,所以C2也是候选candidate的集合。因此需要再加一个fliter。经过再次过滤后就基本放心了通过二分类器得到的句子(Steven Jobs Apple),再将该句作为待选句子扩充入种子集参与下一轮迭代。

Neural Snowball 的整个流程如下:

  • 输入:一个新的关系类型,以及少量的标注数据(启动种子)
  • 目标:训练一个该关系类型的二分类器。用二分类器是因为这样更具可扩展性,当关系类型增加的时候,可以将多个二分类器放在一起使用。
  • 训练:以启动种子开始,迭代式的从无监督数据中挖掘有用信息。

每一轮迭代主要分为两个阶段:

(1) 利用远监督获取待选句子;
(2) 利用新的关系分类器获取待选句子。

远监督(Distant Supervision)是指,如果已有数据告诉我们,实体h、t之间有关系r,我们就找到所有包含h、t的句子,并假设他们真的表达了关系r。第一步获取了新的训练数据之后,Neural Snowball会训练新的关系分类器,这个新的分类器会从无监督数据中挖掘它认为属于关系r的数据,这些新数据可以帮助训练更好的分类器。

4.Neural Modules

Nerual Snowball有两个关键的components:RSN和Relation Classifier

4.1 RSN s ( x , y ) s(x,y) s(x,y)
  • 输入是两个instance,比如上图通过远程监督获得的两句话,其中的instance:“Bill founder Microsoft” 和 “Bill mentioned Microsoft”(显然这两个Instance并不是表示同一种relation的)
  • 输出是0或1
Structure of RSN

RSN由两个encoder f s f_s fs和一个distant function组成,结构如下图,其输入两个句子,输出这两个句子是否表达的是同一种关系。我们在已有关系的大规模数据上预先训练RSN,并将它用在Neural Snowball中,对所有从无监督数据中选出来的候选数据,用RSN将它们与启动种子进行比较,仅留下置信度较高的样本。

在这里插入图片描述

RSN中的encoder:输入instance,输出它们的representation vectors(表示向量)。其中这两个encoder是权值共享(parameter sharing)的,也就是如果用CNN作编码器,那么卷积核就是权值共享,加快算力。(权值共享:CNN中的权值共享理解

RSN中的distance function就是用来计算similarity的: s ( x , y ) = σ ( w s T ( f s ( x ) − f s ( y ) ) 2 + b s ) s(x,y)=\sigma (\mathcal{w}_s^T(f_s(x)-f_s(y))^2+b_s) s(x,y)=σ(wsT(fs(x)fs(y))2+bs)
可被当作加权的L2 distance范数,w和b式训练得到的,越高的输出得分表明关系越近。

4.2 Relation Classifier g ( x ) g(x) g(x)

RC中有neural encoder f f f,用来将新的关系类型 x x x转化成real-valued vector;一个线性层可以得到输入的instance是属于relation的概率 g ( x ) : g(x): g(x): g ( x ) = σ ( w T f ( x ) + b ) g(x)=\sigma (w^Tf(x)+b) g(x)=σ(wTf(x)+b)
如果需要分类多个关系,可以使用N个RC二分类器,因为新的关系类型(raw data)不断增加所以作者不使用N-way classifier。

4.3 Pre-training and Fine-tuning
Pre-training

预训练就是训RSN和RC的网络模型,在以后的迭代过程中这些参数就不改变了。
我们通过已标注的数据集(existing labeled dataset S N S_N SN)对其进行有监督训练。

对于RSN,先采样 S N S_N SN(没错 S N S_N SN就是上面那个large-scale corpus,最右边的那一种数据)中具有相同关系类型或不同关系类型的instance pairs(均可),接着train RSN with cross entropy loss.

对于RC,通过从 S r S_r Sr(seed set)中采样minibatch个正样例,从 S N S_N SN中采样minibatch个负样例从而对RC中的linear layer 参数W和b训练优化(估计是Fully-connected layer),loss表达式: L S b , T b ( g w , b ) = ∑ x ∈ S b l o g g w , b ( x ) + μ ∑ x ∈ T b l o g ( 1 − g w , b ) L_{\mathcal{S}_b,\mathcal{T}_b}(g_{w,b})=\sum_{x\in{\mathcal{S_b}}}log g_{w,b}(x)+\mu \sum_{x\in{\mathcal{T_b}}}log (1-g_{w,b}) LSb,Tb(gw,b)=xSbloggw,b(x)+μxTblog(1gw,b)

Fine-tuning

因为预训练就是训RSN和RC的网络模型,在以后的迭代过程中这些参数就不改变了。所以微调只针对baseline-model进行微调,禁止套娃不展开。

5.瞅瞅代码

RSN的训练:encode是RSN中的编码函数,forward_infer是采用文中的方法进行计算score,另外forward_infer_sort是对应Snowball类下phase1部分的method B方法。但是无论是那种forward,他们都是集成在forward方法下。具体可以看一下注释

class Siamese(nn.Module):

    def __init__(self, sentence_encoder, hidden_size=230, drop_rate=0.5, pre_rep=None, euc=True):
        nn.Module._
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值