论文笔记:StructFormer: Joint Unsupervised Induction of Dependency and Constituency S

162 阅读15分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情

前言

本文为我之前在CSDN平台上的一篇博客记录。原链接为:blog.csdn.net/u011426236/…

导语

摘要

自然语言语法主要有两类:一类是对单词之间一对一对应进行建模的依存句法分析,另一类是对一个或几个对应单词的组合进行建模的成分句法分析。以往的无监督语法分析方法大多只关注于归纳一类语法,而我们引入了一种新的模型StructFormer,它可以同时归纳依存句法结构和成分句法结构。为了实现这一目标,我们提出了一个新的解析框架,该框架可以共同生成成分句法树和依存关系图。然后,我们通过一种新的dependency-constrained self-attention机制,以可微的方式将归纳依存句法关系集成到Transformer中。实验结果表明,该模型在无监督的成分句法分析、无监督的依存句法分析和遮罩语言建模方面都取得了较好的效果。

1 简介

人类语言具有丰富的潜在结构。这种结构是多方面的,语法的两大类是依存结构和成分结构。最近有一项令人兴奋的工作,旨在以数据驱动的无监督方式学习这种结构。从数据中归纳出结构的方法背后的核心原则很简单——提供一种能将结构信息作为一些自监督训练模型的副产品出现的归纳偏差,例如,语言建模。为此,人们提出了一系列能够成功学习语法结构的模型。然而,这些工作大多只专注于成分句法结构或依存句法结构。

在本文中,我们做出了两个重要的技术贡献。首先,我们引入了一种新的神经模型StructFormer,该模型能够同时归纳依存句法结构和成分句法结构。具体来说,我们的方法旨在统一同一框架内不同类型语法的潜在结构归纳。其次,StructFormer能够以端到端无监督的方式从原始数据中归纳出依存结构。大多数现有的方法从其他语法信息(如词性标签)中归纳出依赖结构。以往的工作只从单词进行训练,往往需要额外的信息,如预训练的单词聚类、预训练的单词嵌入、声学线索或来自相关语言的注释数据。 在这里插入图片描述

本文引入了一个新的归纳偏差,它使Transformer模型能够以完全无监督的方式归纳一个有向依存关系图。为了避免在训练过程中使用语法标签,文章使用了基于距离的解析机制。这种解析机制可以预测一个序列的句法距离TT和一个序列的句法高度Δ\Delta来同时表示依存关系图和成分句法树。图1a为句法距离和句法高度的示意图。基于句法距离和句法高度,我们提出了一种新的dependency-constrained self-attention层来替换掉标准transformer模型中的multi-head self-attention层。更具体地说,新的注意头在预测的依存关系结构中只能关注它的中心词或依赖词,这是通过图1b所展示的所有关系的加权求和来实现的。通过这种方法,我们将标准Transformer模型中的完整图(这里是说Transformer的self-attention中,每个单词会与所有单词都attention,所以它们的关系图是一个完全图)替换为可微分的有向依赖图。在对下游任务(如遮罩语言模型)进行训练的过程中,模型会通过梯度下降逐渐收敛到一个合理的依赖图。

结合新的解析机制、dependency-constrained self-attention层和Transformer体系结构,本文引入了一个名为StructFormer的新模型。该模型可以同时执行无监督的依存句法分析和成分句法分析,并利用解析结果在遮罩语言模型任务上获得较好的性能。

2 相关工作

以往对无监督依赖句法分析的研究主要基于DMV模型及其扩展。为了有效地学习DMV模型以提高解析精度,人们提出了各种归纳偏差和手工特征,如涉及不同词性标签的语法规则参数之间的相关性,将先验信息纳入学习。最近的进展是神经网络DMV模型,该模型利用神经网络模型来预测基于POS(Part Of Speech即词性)标签分布表示的语法规则概率。然而,大多数现有的无监督依存句法分析算法都要求提供词性标记作为输入。这些POS标签是由人工标记的,对于大型语料库来说,获取这些标签可能非常困难(或者非常昂贵)。Spitkovsky et al.(2011)提出了一种解决这个问题的无监督词聚类方法,该方法可以根据上下文动态地为每个词分配标签。He et al.(2018)通过将DMV模型与可逆神经网络相结合,共同建模离散的句法结构和连续的词表示,克服了这个问题。

无监督的成分句法分析最近受到了更多的关注。PRPN(参考论文笔记:Ordered Neurons: Integrating Tree Structures into Recurrent Neural Networks)和ON-LSTM (论文笔记:Neural Language Modeling by Jointly Learning Syntax and Lexicon)通过在递归神经网络中引入归纳偏差来归纳树形结构。PRPN提出了一个解析网络来计算所有词对的句法距离,而阅读网络则利用句法结构来关注相关记忆。ON-LSTM通过一种新颖的门控机制和激活功能使隐藏的神经元学习长期或短期信息。(后面提到的模型不了解,略)

尽管大规模预训练模型在大多数自然语言处理任务中占主导地位,但最近的一些工作表明,神经网络模型可以通过利用句法信息而不是忽略它来获得准确性的提高。Strubell等人(2018)引入了基于语法的自我注意,它迫使一个注意力头关注输入token的语法调控器。Omote et al.(2019)和Deguchi et al.(2019)认为,dependency-informed selfattention可以提高Transformer在机器翻译上的性能。Kuncoro等人(2020)表明,句法偏差有助于大规模的预训练模型(如BERT)实现更好的语言理解。

3 句法距离和句法高度

3.1 句法距离

Shen等人(2018b)提出了句法距离来量化将句子分割成更小成分的过程。 定义3.1TT是句子(w1,,wn)(w_1,\cdots,w_n)的成分句法树。设向量的两个单词xix_ixi+1x_{i+1}在成分句法树中的最小公共祖先的高度为τ~i\tilde{\tau}_i。句法距离T=(τ1,,τn1)T=(\tau_1,\cdots,\tau_{n-1})(注意,这里的T是句法距离,不是句法树,作者原论文里第一个T是加粗的。)是一个n-1长的标量序列,同时它拥有与(τ~1,,τ~n1)(\tilde{\tau}_1,\cdots,\tilde{\tau}_{n-1})相同的大小顺序关系。

在这里插入图片描述

换句话说,每一个句法距离did_i都与句子序列中的一个分割点(i,i+1)(i,i+1)相关联并指定句子将被分割成更小的部分的相对顺序。因此,任何包含n-1个实值的序列都可以通过算法1明确地映射到具有n个叶子的未标记的二叉成分句法树(Shen et al., 2018b)。句法距离反映了成分之间的信息交流。更准确的来说,一个大的句法距离τi\tau_i表示短期或者局部的信息不应该在(xi)(x_{\le i})(x>i)(x_{>i})之间交流(意思就说说它们之间更可能是通过更大的句法成分在更长期的结构上有所关系)。在结合适当的神经网络架构的同时,可以利用这个特性来构建无监督的依存句法解析模型。

3.2 句法高度

句法高度是Luo等人(2019)提出的,用来捕获依赖图中到根节点的距离。一个高句法高度的单词意味着它离根节点很近。为了匹配句法距离的定义,本文将句法高度重新定义为:

定义3.2DD是句子(w1,,wn)(w_1,\cdots,w_n)的依存关系图。DD中一个token wiw_i的高度是δ~i\tilde{\delta}_i。同样,DD的句法高度可以是任意的n个实值序列Δ=(δ1,,δn)\Delta=(\delta_1,\cdots,\delta_n),但要与(δ~1,,δ~n)(\tilde{\delta}_1,\cdots,\tilde{\delta}_n)保持同样的大小关系顺序。

在这里插入图片描述

虽然语法高度是基于依存关系结构定义的,但我们不能仅通过语法高度来重建原始的依存关系结构,因为没有关于token应该附加到左边还是右边的信息。然而,给定一个未标记的成分句法树,我们可以借助句法距离将其转换为依存关系图。转换过程类似于将成分句法树库转换为依存句法树库的标准过程(Gelbukh et al., 2005)。本文不使用成分标签和词性标注来判别每个成分的父元素,而是简单地将最大语法高度的token分配为每个成分的父元素。转换算法在算法2中描述。在附录a .1中,我们还提出了一个联合算法,以TTΔ\Delta为输入,联合输出一个成分句法树和依存关系图。

3.3 句法距离与句法高度的关系

如前所述,句法距离控制着分割点两边的信息通信。语法高度量化了依存关系图中每个token的中心性。句法高度大的token往往具有更长的依赖关系,将句子的不同部分连接在一起。在StructFormer中,我们在相同的尺度上量化了句法距离和句法高度。对于一个给定的分割点(i,i+1)(i,i+1)和对应于它的句法距离δi\delta_i,只有那些满足句法高度τj>δi\tau_j>\delta_i的token可以“跨越”这个分割点去注意到另外的token。因此,语法高度小的token被限制用于处理附近的token。图2形象的展示了这一点。比如x4x_4可以跨越分割点(4,5)(4,5)(即x4x_4x5x_5之间的分割点)注意到后面的内容,但却无法跨越分割点(3,4)(3,4)注意到前面的内容(因为3.5<4)。

在这里插入图片描述 但是如果对于一个成分[l,r][l,r]的两边边界的句法距离都太大的话,那所有的[l.r][l.r]之内的单词就都只能注意到[l.r][l.r]内部的其他单词了。它们的上下文嵌入将无法编码整个上下文。为了解决这种情况,文章提出了一种校正TT的方法,见附录A.2。

4 StructFormer

在这里插入图片描述

图3a显示了StructFormer的体系结构,它包括一个parse network和一个Transformer模块。Parse network预测TTΔ\Delta,然后将它们传递给一组可微函数以生成依赖分布。Transformer模块将这些分布和句子作为输入,计算每个位置的上下文嵌入。可以在遮罩语言模型任务上以端到端方式训练StructFormer。在这种设置中,梯度通过关系分布反向传播到解析器中。

4.1 Parsing network

如图3b所示,parsing network的输入是句子中各个单词的embedding,然后将他们送入几个卷积层: 在这里插入图片描述 sl,is_{l,i}代表第l层的第i个位置输出。s0,is_{0,i}即输入token wiw_i的embedding,卷积窗口大小为2W+12W+1。然后用网络预测句法距离为: 在这里插入图片描述 句法高度的预测也类似: 在这里插入图片描述

4.2 预测依存关系分布

给出预测好的句法距离和句法高度,我们来预测依存关系的分布。所谓依存关系分布,其实就是第j个token是第i个token的概率p(xjxi)p(x_j|x_i)

首先,要找出最小的合法的句法成分C(xi)C(x_i)C(xi)C(x_i)包含xix_i,但同时xix_i不是C(xi)C(x_i)的中心词。这里举个例子,如图2所示,C(x2)C(x_2)就是(x1,x2)(x_1,x_2),且C(x2)C(x_2)的中心词是x1x_1

注意:论文中为了避免与Transformer中的多头机制里的head混淆,所以依存关系中的head为parent,本博客中还是称为中心词

第二步就是判别这个句法成分的中心词,假设xj=Pr(C(xi))x_j=Pr(C(x_i))(这里的Pr不是概率的意思,而是Parent,也就是上面解释过的中心词的意思)。在3.2中我们讨论过,一个成分C(xi)C(x_i)的中心词一定是xix_i的中心词。因此,判别xix_i的中心词的两个阶段过程可以概括如下: 在这里插入图片描述 在StructFormer中,C(xi)C(x_i)被表示为一个成分[l,r][l,r],其中ll是成分C(xi)C(x_i)的开始位置下标,rr是成分C(xi)C(x_i)的结束位置下标。

在依存关系图中,xix_i仅仅与中心词和依赖词相连接。这意味xix_i不会和C(xi)C(x_i)之外的单词有连接。(这里解释一下,这是因为C(xi)C(x_i)就是包含xix_i的最小句法成分,且前面说了xix_i不是C(xi)C(x_i)的中心词)。换句话说,C(xi)=[l,r]C(x_i)=[l,r]就是满足以下关系的最小句法成分: 在这里插入图片描述 其中τl1\tau_{l-1}τ<i\tau_{<i}中向后看时第一个比δi\delta_i大的,τr\tau_r则是τi\tau_{\ge i}中向前看时第一个比δi\delta_i大的。

举个例子,如图2所示,δ4=3.5,τ3=4>δ4,τ8=>δ4\delta_4=3.5,\tau_3=4>\delta_4,\tau_8=\infty>\delta_4,所以C(x4)=[4,8]C(x_4)=[4,8]。为了让以上过程变得可微分(即可以求梯度),定义τk\tau_k是一个实数,δi\delta_i是一个概率分布p(δ~i)p(\tilde{\delta}_i)。为了提高计算效率和简化流程,本文直接将累计概率分布函数(包含sigmoid函数)参数化: 在这里插入图片描述 其中,δi\delta_i是分布p(δ~i)p(\tilde{\delta}_i)的均值,μ1\mu_1是一个学习的参数。那么预测ll在成分C(xi)C(x_i)中的概率就等于δ~i\tilde{\delta}_illii之间所有的句法距离τ\tau都要大的概率: 在这里插入图片描述 然后,我们就可以计算出左边界为ll的概率(这里思想其实很简单,ll在左边界的概率等于ll在成分C(xi)C(x_i)中减去l1l-1C(xi)C(x_i)中的概率): 在这里插入图片描述 同理,也可以求出有边界为r的概率: 在这里插入图片描述 然后,句法成分C(xi)=[l,r]C(x_i)=[l,r]的概率即: 在这里插入图片描述 接着,要判别C(xi)C(x_i)的中心词,这里直接选择arg maxk[l,r](δk)\argmax_{k\in[l,r]}(\delta_k)作为中心词。例如之前例子中,δ6=4.5\delta_6=4.5最大,则选x6x_6作为中心词。同时用Softmax计算节点jj是成分[l,r][l,r]中心词的概率(我猜这里的hh就是句法高度δ\delta): 在这里插入图片描述 最后,我们就可以得到xjx_jxix_i的中心词的概率为: 在这里插入图片描述

4.3 Dependency-Constrained Multi-head Self-Attention

标准Transformer中的多头自我注意力机制可以被认为是一种在完全图G=(V,E)G=(V,E)中的信息传播机制,其中节点集XX就是句子中的n个token,而边集合EE则是这些节点之间的所有可能的连边(xi,xj)(x_i,x_j)。StructFormer用一个软化的依赖图D=(X,A)D=(X,A)代替了GG,其中Aij=pD(ji)A_{ij}=p_{D}(j|i)是第j个token依赖第i个token的概率。信息在每个StructFormer的每个head中传播是有方向的,仅允许从headdependenthead \rightarrow dependent或者dependentheaddependent \rightarrow head,其传播概率为:

在这里插入图片描述 所以就可以得到信息从节点j传递到节点i的概率为:

在这里插入图片描述 不同的attention head往往与不同类型的依赖关系(包括nsubj, obj, advmod等)相关联,但没有通用的attention head可以与所有不同的关系相关联。为了适应这一点,我们为每个attention head和一对token (xi,xj)(x_i, x_j)计算: 在这里插入图片描述

这里将原来的softmax函数替换为一个sigmoid函数。最后可以将dependency-constrained self-attention计算过程总结为:

在这里插入图片描述 其中pi,jp_{i,j}是信息从j传递到i的概率,qi,jVjq_{i,j}V_j则是要传递的信息。

5 实验

5.1 Masked Language Model

实验结果如下: 在这里插入图片描述

5.2 无监督成分句法分析

使用StructFormer模型预测出的句法距离TT来预测成分句法树,结果如下: 在这里插入图片描述 在这里插入图片描述

5.3 无监督依存句法分析

在这里插入图片描述 在这里插入图片描述

6 总结

本文介绍了一种新颖的将成分句法和依存句法联合解析的框架。基于该框架,我们提出了StructFormer——一种新的无监督句法解析算法,它同时进行无监督依存句法和成分句法解析。我们也介绍了一种受约束的依存自注意力机制允许每个attention head都集中在依赖关系的特定混合上。这使transformer更接近于对有向依赖图建模。实验结果表明,StructFormer可以归纳出有意义的依存结构和成分结构,并在遮罩语言模型任务中获得更好的性能。本研究为在预训练语言模型中构建更多的语言偏差提供了一种新的方法。

A 附录

A.1 Joint Dependency and Constituency Parsing

在这里插入图片描述

A.2 Calibrating the Syntactic Distance and Height

为了避免3.3中所提到的问题,我们首先计算每个成分中最大的句法高度。 在这里插入图片描述 然后,我们计算\delta_{[l,r]][l,r][l,r]的左右边界中的最小差距。因为我们只关心边界距离大于其最大高度的成分,所以我们使用ReLU激活函数只保留正的值: 在这里插入图片描述 为了确保所有的成分不是孤立的并且保持TT的排序,我们用ϵ\epsilon的最大值减去所有的TT在这里插入图片描述

A.3 Dependency RelationWeights for Self-attention Heads

在这里插入图片描述

A.4 Dependency Distribution Examples

在这里插入图片描述

A.5 The Performance of StructFormer with different mask rates

在这里插入图片描述