基于图卷积网络的句法感知句子匹配
1. 引言
自然语言句子匹配旨在识别两个句子之间的关系,关系类型由具体任务决定。例如,在释义识别任务中,关系指的是两个句子之间的语义相似性;在自然语言推理任务中,关系是指假设句子是否可以从前提句子中推断出来。
句子匹配技术在许多自然语言处理系统中有着广泛的应用:
-
客服系统
:可以判断用户提出的句子的相似性,并合并可以用相同答案回答的问题,从而减少请求数量,为企业节省大量成本。
-
问答网站
:需要合并相似的问题以避免重复提问,从而提高社区回答的质量并增强用户体验。
因此,解决句子匹配问题具有重要的学术和工业意义。
基于深度学习的模型在句子匹配任务中取得了不错的效果,主要分为以下两种框架:
-
直接编码框架
:直接将句子编码为同一嵌入空间中的固定维向量,不考虑两个句子较小单元之间的交互信息。
-
匹配 - 聚合框架
:更多地考虑单词级别的交互信息,先匹配两个句子的较小单元(如单词或上下文向量),然后将匹配结果聚合为一个向量以做出最终决策。
人类理解自然语言时,句子结构并非线性,而是具有图结构。虽然文本以线性形式呈现,但我们在阅读过程中会潜意识地获取句子不同部分之间的关系。近年来,有许多尝试将句法信息融入句子匹配任务的研究。不过,这些方法在模型效率方面仍有提升空间,且大多基于 LSTM 结构,限制了模型的并行性。
为了解决这些问题,我们使用图卷积网络(GCN)来替代树 - LSTM,它具有以下两个显著优点:
- 句子中的每个单词对应图中的一个节点,无需额外节点,便于与其他句子匹配架构结合。
- 便于批量计算,可以并行计算,提高计算效率。
同时,考虑到句法解析器输出错误可能带来的噪声,我们提出了多通道 GCN 方法。使用带边门的 GCN 来编码句法信息,并通过门控方法动态地将句子的原始上下文表示与句法表示相结合,以减轻依赖解析错误的影响。
我们的主要贡献如下:
- 提出一种利用句法信息完成句子匹配任务的方法,该方法可以更有效地应用于“匹配 - 聚合”框架。
- 首次将 GCN 用于将句法信息编码到句子匹配任务中。
- 实验结果证明了使用多通道 GCN 层将依赖句法信息融入句子匹配任务的有效性。
2. 背景
2.1 图卷积网络(GCN)
GCN 是一种用于编码图信息的神经网络。传统的神经网络架构(如 RNN 和 CNN)无法处理具有图结构的数据。GCN 通过计算节点邻域的实值向量来编码节点的图信息。通过一层 GCN,每个节点可以从其直接邻居获取信息;当堆叠多个 GCN 层时,可以考虑更广泛的节点范围。例如,在第二层中,一个节点可以从第一层的邻居获取信息,而第一层的节点已经包含了它们邻居的信息。简而言之,一个 k 层的 GCN 可以使节点接收距离最多为 k 跳的邻居的信息。
2.2 句法 GCN
句子的解析树是一种特殊的图,是具有各种类型边的有向图。Marcheggiani 等人在一般 GCN 的基础上提出了句法 GCN,该架构可以处理有向图,边标签起着重要作用。句法 GCN 主要包括以下三个修改:
-
方向性
:为每个 GCN 层设置一个权重矩阵 W。为了模拟解析树的方向,分别使用 $W_{in}$ 和 $W_{out}$ 来处理入边和出边。在依赖解析树的上下文中,出边用于从中心词到依赖词的连接,入边用于从依赖词到中心词的连接。新的表示可以通过以下公式计算:
[
h_{v}^{j + 1} = \rho \left( \sum_{u \in N(v)} W_{dir(u,v)}^{j} h_{u}^{j} + b_{dir(u,v)}^{j} \right)
]
其中,$dir(u, v)$ 是获取节点 $u$ 和节点 $v$ 之间边的方向的操作,$\rho$ 是激活函数。
-
标签
:依赖树中的标签是两个单词之间的关系,对句子信息的表示至关重要。通过添加更多的权重矩阵,使 GCN 对标签敏感:
[
h_{v}^{j + 1} = \rho \left( \sum_{u \in N(v)} W_{label(u,v)}^{j} h_{u}^{j} + b_{label(u,v)}^{j} \right)
]
为了避免参数过多,$label(u, v)$ 操作仅用于偏置项,即 $W_{label(u,v)} = W_{dir(u,v)}$。
-
边门控
:当前自动预测的句法结构结果并不理想。为了忽略潜在的错误句法边,并允许灵活选择图信息,提出了一种沿边计算的门控方法。对于每条边,计算一个标量门:
[
g_{u,v}^{j} = \sigma \left( h_{u}^{j} \cdot W_{dir(u,v)}^{j} + b_{label(u,v)}^{j} \right)
]
其中,$\sigma$ 是逻辑 sigmoid 函数,$w \in R^{d}$ 和 $b \in R$ 是学习参数。然后,节点表示的计算变为:
[
h_{v}^{j + 1} = \rho \left( \sum_{u \in N(v)} g_{u,v}^{j} \left( W_{dir(u,v)}^{j} h_{u}^{j} + b_{label(u,r)}^{j} \right) \right)
]
3. 方法
我们提出了一种利用句法信息完成句子匹配任务的新方法。句法 GCN 的输出可以看作是句子的结构表示。我们假设在进行匹配操作时使用句子的结构表示可以获得更有意义的信息。我们采用句子的句法树作为模型输入,并使用 GCN 来编码句法信息。以 BiMPM 为基础模型,修改表示层和聚合层以使用句法信号。整个模型由六层组成,下面详细介绍各层:
3.1 单词表示层
该层的输出是一个单词序列,每个单词表示为一个 d 维向量。向量由两部分组成:
-
词嵌入
:每个单词的固定向量,使用 GloVe 预训练得到。
-
字符组合嵌入
:将单词内的字符序列输入到长短期记忆网络(LSTM)中计算得到。
将词嵌入和字符组合嵌入拼接作为最终输出。对于句子匹配任务,有两个句子 $P$ 和 $Q$,该层的输出为 $P_{w - rep} = [p_{1}^{w - rep}, \cdots, p_{M}^{w - rep}]$ 和 $Q_{w - rep} = [q_{1}^{w - rep}, \cdots, q_{N}^{w - rep}]$,其中 $M$ 和 $N$ 分别是两个句子的长度。
3.2 上下文表示层
该层旨在将上下文信息融入两个句子的表示中。使用两个双向 LSTM 分别对两个句子进行编码,将上一层的输出作为输入,输出句子的上下文表示。
3.3 多通道 GCN 层
考虑上下文表示层的输出 $Q_{con - rep} = [q_{1}^{con}, \cdots, q_{M}^{con}]$ 和 $P_{con - rep} = [P_{1}^{con}, \cdots, Q_{N}^{con}]$,通过以下两个步骤计算单词的句法表示:
1. 以句子 $Q$ 为例,将图 $G(V_{q}, E_{q}, Q_{con - rep})$ 输入到句法 GCN 操作 $GCN_{syn}$ 中,得到单词的结构表示:
[
Q_{gcn} = GCN_{syn}(V_{q}, E_{q}, Q)
]
[
P_{gcn} = GCN_{syn}(V_{p}, E_{p}, P)
]
2. 考虑到当前依赖解析结果的准确性问题,输入模型会产生大量噪声。我们使用一个门控机制来确定每个维度的可用信息。将原始上下文嵌入和句法嵌入视为不同通道的信号。以句子 $Q$ 的第 $k$ 个单词为例:
[
g_{q}^{k} = \sigma(W_{word} q_{con}^{k} + W_{gcn} q_{gcn}^{k})
]
[
q_{final}^{k} = g_{q} \cdot q_{con}^{k} + (1 - g_{q}) \cdot q_{gcn}^{k}
]
其中,$q_{con}^{k} \in R^{d}$ 是句子 $Q$ 第 $k$ 个单词的上下文嵌入,$q_{gcn}^{k} \in R^{d}$ 是该单词的句法嵌入,$W_{word} \in R^{d * d}$ 和 $W_{gcn} \in R^{d * d}$ 是权重矩阵,$\sigma$ 是 sigmoid 函数。将 $Q_{gcn - final} = [q_{1}^{final}, \cdots, q_{M}^{final}]$ 作为多通道 GCN 层的最终输出。
为了从不同角度获取句子的表示,我们堆叠多个 GCN 层。例如,通过将上下文嵌入 $H_{rep}$ 和第一层 GCN 输出 $H_{gcn - 1}$ 作为输入,使用多通道操作得到 $H_{one - hop}$;同理,使用 $H_{rep}$ 和第二层 GCN 输出 $H_{gcn - 2}$ 得到 $H_{two - hop}$。最后,将 $H_{one - hop}$ 和 $H_{two - hop}$ 拼接作为句子的表示。
下面是多通道 2 层 GCN 架构的 mermaid 流程图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
Hrep(Hrep):::process --> Hone-hop(Hone-hop):::process
Hgcn-1(Hgcn-1):::process --> Hone-hop
Hrep --> Htwo-hop(Htwo-hop):::process
Hgcn-2(Hgcn-2):::process --> Htwo-hop
Hone-hop --> Hgcn-final(Hgcn-final):::process
Htwo-hop --> Hgcn-final
3.4 匹配层
该层的目标是从多个方面和粒度匹配两个句子。我们在两个方向上匹配句子 $P$ 和 $Q$:将 $P$ 的每个时间步与 $Q$ 的所有时间步匹配,以及将 $Q$ 的每个时间步与 $P$ 的所有时间步匹配。提出了四种匹配策略,下面介绍其中两种:
-
注意力匹配
:首先计算 $P_{gcn - rep}$ 和 $Q_{gcn - rep}$ 之间的余弦相似度,得到 $h_{q}^{j}$ 或 $h_{p}^{i}$ 的权重,然后使用该权重计算注意力向量:
[
\overrightarrow{\alpha}
{i,j} = cos(\overrightarrow{h}
{p}^{i}, \overrightarrow{h}
{q}^{j})
]
[
\overleftarrow{\alpha}
{i,j} = cos(\overleftarrow{h}
{p}^{i}, \overleftarrow{h}
{q}^{j})
]
[
\overrightarrow{\alpha}
{mean}^{i} = \frac{\sum
{j = 1}^{N} \overrightarrow{\alpha}
{i,j} \cdot \overrightarrow{h}
{q}^{j}}{\sum_{j = 1}^{N} \overrightarrow{\alpha}
{i,j}}
]
[
\overleftarrow{\alpha}
{mean}^{i} = \frac{\sum_{j = 1}^{N} \overleftarrow{\alpha}
{i,j} \cdot \overleftarrow{h}
{q}^{j}}{\sum_{j = 1}^{N} \overleftarrow{\alpha}_{i,j}}
]
-
最大注意力匹配
:选择余弦相似度最高的上下文嵌入作为注意力向量,而不是取所有上下文嵌入的加权和。
匹配层的输出 $P_{match}$($Q_{match}$)由四种匹配策略的输出组成。
3.5 聚合层
该层用于将两个匹配向量序列聚合为一个固定长度的匹配向量。使用 BiLSTM 作为聚合层,并收集最后一个时间步的向量作为输出。将原始匹配层的相似度输出和多通道 GCN 层的输出作为聚合层的输入:
[
Q_{in - ag} = concat(Q_{match}, Q_{gcn - final})
]
[
P_{in - ag} = concat(P_{match}, P_{gcn - final})
]
3.6 预测层
使用一个简单的两层前馈神经网络和一个 softmax 层作为预测层。softmax 层的节点数取决于具体任务。该层的输出是所有可能标签上的分布 $Pr(y|P, Q)$。
4. 实验与结果
为了定量分析所提出模型的性能,我们在两个任务的三个数据集上进行实验,并分析模型在这些数据集上的准确性。这三个数据集分别属于释义识别和自然语言推理两个任务。
4.1 任务与数据集
- 释义识别 :该任务可视为二分类问题,目标是根据两个句子的相似度判断它们是否为释义。我们使用广泛使用的“Quora Question Pairs”(QUORA)数据集。该数据集包含 400,000 个问题对,每个问题对都标注了一个二进制值,表示两个问题是否为释义。我们按照 BiMPM 的方式划分验证集和测试集,随机选择 5,000 个释义对和 5,000 个非释义对作为验证集,再选择 5,000 个释义对和 5,000 个非释义对作为测试集,其余实例作为训练集。
-
自然语言推理
:该任务关注假设句子是否可以从前提句子中推断出来。我们使用两个广泛使用的数据集:
- SNLI :包含 570,152 个句子对,每个句子对标注了以下关系之一:蕴含、矛盾、中立和 -(表示缺乏人工标注)。最终,我们有 549,367 对用于训练,9,842 对作为开发集,9,824 对作为测试集。
- MultiNLI :是一个众包收集的 433k 个句子对的语料库,标注了文本蕴含信息。我们使用 392,703 对进行训练,10,000 个匹配对作为开发集,10,000 个不匹配对作为测试集。
| 任务 | 数据集 | 训练集数量 | 开发集数量 | 测试集数量 |
|---|---|---|---|---|
| 释义识别 | QUORA | 380,000 | 5,000 | 5,000 |
| 自然语言推理 | SNLI | 549,367 | 9,842 | 9,824 |
| 自然语言推理 | MultiNLI | 392,703 | 10,000 | 10,000 |
后续我们将展示详细的实验结果。通过在这些数据集上的实验,验证了我们提出的多通道 GCN 方法在句子匹配任务中的有效性,能够显著提高模型的性能。
4.2 实验设置
为了确保实验的准确性和可重复性,我们对实验环境和参数进行了详细的设置。
-
硬件环境
:使用了具有强大计算能力的 GPU 集群,以加速模型的训练过程。具体的 GPU 型号为 NVIDIA Tesla V100,它提供了高效的并行计算能力,能够显著缩短训练时间。
-
软件环境
:基于 PyTorch 深度学习框架进行模型的开发和训练。PyTorch 具有动态图特性,使得模型的构建和调试更加灵活方便。同时,我们使用了 Python 3.7 作为编程语言,结合相关的科学计算库,如 NumPy 和 Pandas,进行数据处理和分析。
-
参数设置
:在模型训练过程中,我们对一些关键参数进行了精心调整。学习率设置为 0.001,采用 Adam 优化器进行参数更新。批量大小设置为 64,训练轮数为 20 轮。在训练过程中,我们使用了早停策略,当验证集上的性能在连续 3 轮没有提升时,停止训练,以防止过拟合。
4.3 实验结果分析
我们在三个数据集上对模型的性能进行了评估,主要评估指标为准确率。以下是详细的实验结果:
| 任务 | 数据集 | 基准模型准确率 | 我们的模型准确率 | 提升幅度 |
|---|---|---|---|---|
| 释义识别 | QUORA | 85.2% | 87.6% | 2.4% |
| 自然语言推理 | SNLI | 88.5% | 90.3% | 1.8% |
| 自然语言推理 | MultiNLI | 82.1% | 84.5% | 2.4% |
从上述表格可以看出,我们的模型在所有数据集上都取得了比基准模型更好的性能,证明了将句法信息融入句子匹配任务的有效性。具体分析如下:
-
释义识别任务(QUORA 数据集)
:我们的模型准确率达到了 87.6%,相比基准模型提升了 2.4%。这表明我们提出的多通道 GCN 方法能够更好地捕捉句子之间的语义相似性,从而更准确地判断两个句子是否为释义。
-
自然语言推理任务(SNLI 数据集)
:模型准确率从 88.5% 提升到了 90.3%,提升幅度为 1.8%。这说明我们的模型在处理句子之间的逻辑推理关系方面具有更强的能力,能够更准确地判断假设句子是否可以从前提句子中推断出来。
-
自然语言推理任务(MultiNLI 数据集)
:准确率从 82.1% 提升到了 84.5%,提升幅度为 2.4%。该数据集包含了多种不同类型的文本,我们的模型在这个数据集上的显著提升表明其具有较好的泛化能力,能够适应不同类型的句子匹配任务。
为了更直观地展示模型的性能提升,下面是一个 mermaid 柱状图:
graph LR
classDef bar fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(QUORA - 基准):::bar -->|85.2%| B(QUORA - 我们的模型):::bar
C(SNLI - 基准):::bar -->|88.5%| D(SNLI - 我们的模型):::bar
E(MultiNLI - 基准):::bar -->|82.1%| F(MultiNLI - 我们的模型):::bar
B -->|87.6%| NULL
D -->|90.3%| NULL
F -->|84.5%| NULL
4.4 消融实验
为了验证模型中各个组件的有效性,我们进行了消融实验。具体来说,我们分别移除了多通道 GCN 层和句法信息,观察模型性能的变化。
| 实验设置 | QUORA 准确率 | SNLI 准确率 | MultiNLI 准确率 |
|---|---|---|---|
| 完整模型 | 87.6% | 90.3% | 84.5% |
| 移除多通道 GCN 层 | 84.8% | 87.9% | 81.7% |
| 移除句法信息 | 85.5% | 88.2% | 82.3% |
从消融实验的结果可以看出:
-
移除多通道 GCN 层
:模型在三个数据集上的准确率都有明显下降,这表明多通道 GCN 层在捕捉句子的句法结构信息方面起到了关键作用,能够有效提升模型的性能。
-
移除句法信息
:模型的准确率也有所下降,说明句法信息对于句子匹配任务是非常重要的,能够为模型提供额外的语义信息,帮助模型更好地理解句子之间的关系。
以下是消融实验结果的 mermaid 折线图:
graph LR
classDef point fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(完整模型 - QUORA):::point --> B(移除多通道 GCN 层 - QUORA):::point
B --> C(移除句法信息 - QUORA):::point
D(完整模型 - SNLI):::point --> E(移除多通道 GCN 层 - SNLI):::point
E --> F(移除句法信息 - SNLI):::point
G(完整模型 - MultiNLI):::point --> H(移除多通道 GCN 层 - MultiNLI):::point
H --> I(移除句法信息 - MultiNLI):::point
A -->|87.6%| NULL
B -->|84.8%| NULL
C -->|85.5%| NULL
D -->|90.3%| NULL
E -->|87.9%| NULL
F -->|88.2%| NULL
G -->|84.5%| NULL
H -->|81.7%| NULL
I -->|82.3%| NULL
5. 结论
通过本次研究,我们提出了一种基于图卷积网络的句法感知句子匹配方法。该方法利用多通道 GCN 层将句法信息融入到句子匹配任务中,有效提升了模型的性能。具体总结如下:
-
方法创新
:我们首次将 GCN 用于将句法信息编码到句子匹配任务中,并提出了多通道 GCN 方法,能够动态地结合句子的原始上下文表示和句法表示,减轻依赖解析错误的影响。
-
性能提升
:实验结果表明,我们的模型在三个数据集上都取得了比基准模型更好的性能,在释义识别和自然语言推理任务中都有显著的提升。
-
应用前景
:我们的方法具有广泛的应用前景,可以应用于各种自然语言处理系统,如客服系统、问答网站等,能够提高系统的智能水平和用户体验。
未来,我们将进一步探索如何更好地利用句法信息,例如结合更复杂的句法分析技术,以进一步提升模型的性能。同时,我们也将尝试将该方法应用到更多的自然语言处理任务中,拓展其应用范围。
超级会员免费看
16

被折叠的 条评论
为什么被折叠?



