Bilateral Multi-Perspective Matching for Natural Language Sentences阅读笔记及复现

本文详细介绍了Bilateral Multi-Perspective Matching(BiMPM)模型,包括词向量层、上下文表示层、匹配层、聚合层和预测层。匹配层的关键在于多角度匹配操作,通过多种策略捕捉句子间的细致联系。实验部分展示了模型在Paraphrase Identification、Natural Language Inference和Answer Sentence Selection等任务上的应用和效果,并提供了复现代码链接。


论文贡献: 提出了一种双向的多角度匹配模型(bilateral multi-perspective matching).

Method

Model Overview

1. Word Representation Layer

The goal of this layer is to represent each word in P and Q with a d-dimensional vector.
输入向量由两部分组成:一部分是固定的词向量(Glove或者word2vec),另一部分是字符向量构成的词向量.字符向量是随机初始化然后输入到LSTM学习得到的.

2. Context Representation Layer

这一层目的是将上下文信息融合到 P 和 Q 每个 time-step 的表示中,这里利用 Bi-LSTM 去得到 P 和 Q 每个time-step 的上下文向量。

3. Matching Layer

模型的关键层.
比较句子 P 的每个上下文向量(time-step)和句子 Q 的所有上下文向量(time-step),比较句子 Q 的每个上下文向量(time-step)和句子 P 的所有上下文向量(time-step)。为了比较一个句子中某个上下文向量(time-step)和另外一个句子的所有上下文向量(time-step),这里设计了一种 multi-perspective 的匹配方法 ⊗ \otimes ,用于获取两个句子细粒度的联系信息。

这层的输出是两个序列,序列中每一个向量是一个句子的某个 time-step 相对于另一个句子所有的 time-step 的匹配向量。

4. Aggregation Layer

这层主要功能是聚合两个匹配向量序列为一个固定长度的匹配向量。对两个匹配序列分别使用 Bi-LSTM,然后连接 Bi-LSTM 最后一个 time-step 的向量(4个)得到最后的匹配向量。

5. Prediction Layer

这层目的是计算概率 P r ( y ∣ P , Q ) Pr(y|P, Q) Pr(yP,Q).前一次的输出连接两层前馈神经网络,之后再加上softmax输出结果.

Multi-prespective Matching Operation

重点介绍下论文提出的多角度匹配算法.
论文中提到多角度匹配运算 ⊗ \otimes 有以下两步:

1.定义多角度余弦匹配方程 f m f_m fm来比较两个向量 m = f m ( v 1 , v 2 ; W ) m = f_m(v_1, v_2;W) m=fm(v1,v2;W)
这里 v 1 , v 2 v_1,v_2 v1,v2是两个d-dimensional向量, W W W是一个 l × d l\times d l×d维的学习参数, m m m是一个 l l l维向量,其中 m k m_k mk表示第k个角度,具体计算方式 m k = c o s i n e ( W k ∘ v 1 , W k ∘ v 2 ) m_k = cosine(W_k\circ v_1, W_k\circ v_2) mk=cosine(Wkv1,Wkv2) 这里 ∘ \circ 表示element-wise multiplication.

2.基于上步提到的 f m f_m fm, 定义了四种匹配策略来比较一个句子的某个 time-step 与另一个句子的所有 time-step.

  • 第一种 Full-Matching
    取一个句子的某个 time-step 和另一个句子的最后一个 time-step 做比较
  • 第二种 Maxpooling-Matching
    取一个句子的某个 time-step 和另一个句子的所有 time-step 比较后取最大
  • 第三种 Attentive-Matching
    首先计算一个句子的某个 time-step 和另一个句子的所有 time-step 的余弦相似度,类似 Attention 矩阵。
然后计算attentive向量
最后, 计算
  • 第四种 Max-Attentive-Matching
    和第三种类似,不过最后attentive vector是求max而不是mean.

    对句子每一个time-step都使用了以上四种匹配策略,之后将这8个匹配向量进行concatenate.

实验

实验设置

word_embedding: 300(freeze)
OOV: initialize randomly
character-composed embedding: 初始化为20维向量, 然后将每个词输入到50维的lstm
BiLSTM hidden layer: 100
dropout: 0.1
损失函数: cross entropy
optimizer: ADAM
learning rate: 0.001

实验结果

实验了三个任务:

  • Paraphrase Identification
  • Natural Language Inference
  • Answer Sentence Selection
    数据集1 Quora Question pairs

数据集2 SNLI

数据集3 TREC-QA WikiQA

复现

论文复现github地址

### 关于Ultra-Definition Image Dehazing via Multi-Guided Bilateral Learning的代码实现 此方法的核心在于通过深度卷积神经网络(CNN)构建仿射双边网格,这是一种高效的特征表示方式,能够保留图像中的细节边缘和纹理信息[^2]。为了实现这一目标,算法设计了多个指导矩阵来帮助仿射双边网格更好地恢复高质量特征。 #### 主要组件解析 1. **仿射双边网格** 构建仿射双边网格是为了有效地捕捉并处理图像的空间和色彩信息。这种结构允许模型在不同尺度下操作,并且能够在保持局部特性的前提下去除雾霾影响。 2. **多导引机制** 多个制导矩阵用于辅助仿射双边网格的工作。这些矩阵提供了额外的信息通道,使得模型可以从不同的角度分析输入数据,从而提高最终输出的质量。 3. **高效推理引擎** 该框架不仅关注准确性,同时也注重效率。实验结果显示其能在实际应用中达到每秒超过一百帧的速度,适用于实时场景下的超高清视频流处理。 #### Python 实现概览 下面是一个简化版Python伪代码示例,展示了如何使用PyTorch库搭建上述提到的主要模块: ```python import torch from torchvision import models, transforms import numpy as np class AffineBilateralGrid(torch.nn.Module): def __init__(self): super(AffineBilateralGrid, self).__init__() # 定义仿射变换参数初始化逻辑 def forward(self, input_image): # 执行前向传播过程,返回经过仿射双边网格处理后的结果 def create_guidance_matrices(input_tensor): """ 创建一组或多组指导矩阵作为附加信息源给到仿射双边网格层 :param input_tensor: 输入张量 :return: list of guidance matrices """ pass if __name__ == "__main__": device = "cuda" if torch.cuda.is_available() else "cpu" model = AffineBilateralGrid().to(device) preprocess = transforms.Compose([ transforms.Resize((512, 512)), # 调整大小至固定尺寸 transforms.ToTensor(), # 将PIL图片转换为tensor形式 transforms.Normalize(mean=[0.485], std=[0.229]) # 归一化预处理 ]) img_path = 'path_to_your_hazy_image.jpg' image = Image.open(img_path).convert('RGB') tensor_input = preprocess(image).unsqueeze_(0).to(device) guidances = create_guidance_matrices(tensor_input) output = model(tensor_input) ``` 这段代码仅作为一个概念验证性质的例子,并未完全按照论文描述的具体架构进行编码;具体实现还需要参照原始文献以及官方发布的训练脚本或开源项目来进行调整优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值