【NLP】文本匹配——Simple and Effective Text Matching with Richer Alignment Features阅读与总结(RE2)

article/2025/6/17 14:06:26

背景

前文已经介绍了【NLP】文本匹配——Enhanced LSTM for Natural Language Inference,其实2017年发表的,文中使用了两个LSTM进行特征提取,总的来说参数多,速度慢,还不能并行处理。今天我们再来看看阿里巴巴和南京大学发表的在2019年发表的一篇文本匹配论文:Simple and Effective Text Matching with Richer Alignment Features,没有使用LSTM进行特征提取,支持了并行化处理以及参数也少了很多。具体怎么做的,我们看看该论文的介绍。主要看模型的结构设计,模型相关实验可以看看原文。论文中将该算法简称为RE2.

RE2

首先说一下为什么叫做RE2吧。主要是该模型的结构包含三个重要的部分:Residual vectors、Embedding vectors、Encoded vectors。

该模型的结构如下:
在这里插入图片描述
由于我们的输入包含两个句子,即sentence1和sentence2。对于输入的两个句子的处理方式相同,故省略了另一半。论文中的核心内容在section2,模型的第一层是常规的Embedding层,第二层是中间处理层,里面有N个相同的block,每个block不共享,参数独立,第三层就是输出层。

下面我们来详细看看这几层是如何做的。

Augmented Residual Connections(增强的残差连接)

为了为对齐过程提供更丰富的特性,RE2采用了增强版的残差连接来连接连续的块。对于一个长度为 l l l的序列,对于第n个块的输入与输出做以下定义,输入: x ( n ) = ( x 1 ( n ) , x 2 ( n ) , ⋯ , x l ( n ) ) x^{(n)}=(x_1^{(n)},x_2^{(n)},\cdots,x_l^{(n)}) x(n)=(x1(n),x2(n),,xl(n)),输出 o ( n ) = ( o 1 ( n ) , o 2 ( n ) , ⋯ , o l ( n ) ) o^{(n)}=(o_1^{(n)},o_2^{(n)},\cdots,o_l^{(n)}) o(n)=(o1(n),o2(n),,ol(n)) o ( 0 ) o^{(0)} o(0)设置为0向量。 x ( 1 ) x^{(1)} x(1)是Embedding层的输出结果。接下来的第 n ( n ≥ 2 ) n(n\geq 2) n(n2)块的表示如下:
x i ( n ) = [ x i ( 1 ) ; o i ( n − 1 ) + o i ( n − 2 ) ] x_{i}^{(n)}=\left[x_{i}^{(1)} ; o_{i}^{(n-1)}+o_{i}^{(n-2)}\right] xi(n)=[xi(1);oi(n1)+oi(n2)]
其中 [ ; ] [;] [;]表示拼接。

对于增强的残差连接,对齐和融合层的输入有三个部分,即沿途保持不变的原始点向特征(嵌入向量),由以前的块(残差向量)处理和细化的先前对齐向量,以及来自编码器层的上下文特征(编码向量)。这三个部分在文本匹配过程中都起着互补的作用。

Alignment Layer 对齐层

对齐层将两个序列中的特征作为输入,并计算对齐的表示作为输出。从长度为 l a l_a la的第一个序列输入的输入表示为 a = ( a 1 , a 2 , ⋯ , a l a ) a=(a_1,a_2,\cdots,a_{l_a}) a=(a1,a2,,ala),长度为 l b l_b lb的第二个序列表示为 b = ( b 1 , b 2 , ⋯ , b l b ) b=(b_1,b_2,\cdots,b_{l_b}) b=(b1,b2,,blb) a i a_i ai b j b_j bj的相似度得分如下:
e i j = F ( a i ) T F ( b j ) e_{i j}=F\left(a_{i}\right)^{T} F\left(b_{j}\right) eij=F(ai)TF(bj)
F是一个指定的函数或一个单层前馈网络。该选择被视为一个超参数。对齐结果 a ′ a^{\prime} a b ′ b^{\prime} b计算如下:

a i ′ = ∑ j = 1 l b exp ⁡ ( e i j ) ∑ k = 1 l b exp ⁡ ( e i k ) b j b j ′ = ∑ i = 1 l a exp ⁡ ( e i j ) ∑ k = 1 l a exp ⁡ ( e k j ) a i \begin{aligned} a_{i}^{\prime} &=\sum_{j=1}^{l_{b}} \frac{\exp \left(e_{i j}\right)}{\sum_{k=1}^{l_{b}} \exp \left(e_{i k}\right)} b_{j} \\ b_{j}^{\prime} &=\sum_{i=1}^{l_{a}} \frac{\exp \left(e_{i j}\right)}{\sum_{k=1}^{l_{a}} \exp \left(e_{k j}\right)} a_{i} \end{aligned} aibj=j=1lbk=1lbexp(eik)exp(eij)bj=i=1lak=1laexp(ekj)exp(eij)ai
求和通过当前位置和另一个序列中相应位置之间的相似性得分进行加权,还是一种attention。

Fusion Layer 融合层

融合层在三个角度中比较局部和对齐表示,然后将它们融合在一起。第一个序列 a ‾ \overline a a的融合层的输出计算如下:
a ˉ i 1 = G 1 ( [ a i ; a i ′ ] ) , a ˉ i 2 = G 2 ( [ a i ; a i − a i ′ ] ) , a ˉ i 3 = G 3 ( [ a i ; a i ∘ a i ′ ] ) , a ˉ i = G ( [ a ˉ i 1 ; a ˉ i 2 ; a ˉ i 3 ] ) , \begin{aligned} &\bar{a}_{i}^{1}=G_{1}\left(\left[a_{i} ; a_{i}^{\prime}\right]\right), \\ &\bar{a}_{i}^{2}=G_{2}\left(\left[a_{i} ; a_{i}-a_{i}^{\prime}\right]\right), \\ &\bar{a}_{i}^{3}=G_{3}\left(\left[a_{i} ; a_{i} \circ a_{i}^{\prime}\right]\right), \\ &\bar{a}_{i}=G\left(\left[\bar{a}_{i}^{1} ; \bar{a}_{i}^{2} ; \bar{a}_{i}^{3}\right]\right), \end{aligned} aˉi1=G1([ai;ai]),aˉi2=G2([ai;aiai]),aˉi3=G3([ai;aiai]),aˉi=G([aˉi1;aˉi2;aˉi3]),
其中G1、G2、G3、G为参数独立的单层前馈网络, ∘ \circ 为元素级乘法。减法算符突出了两个向量之间的差异,而乘法突出了相似性。 b ‾ \overline b b的公式类似,在这里省略了。

Prediction Layer 预测层

预测层从池化层中获取两个序列 v 1 v_1 v1 v 2 v_2 v2的向量表示作为输入,并预测接下来的最终目标,如下:
y ^ = H ( [ v 1 ; v 2 ; v 1 − v 2 ; v 1 ∘ v 2 ] ) \hat{\mathbf{y}}=H\left(\left[v_{1} ; v_{2} ; v_{1}-v_{2} ; v_{1} \circ v_{2}\right]\right) y^=H([v1;v2;v1v2;v1v2])
H是一个多层前馈神经网络。

总结

从公式来看,了解ESIM的会发现,该模型与ESIM还是比较相似,最大的不同点在于使用残差网络进行信息增强。除此之外,由于没有使用LSTM进行特征提取,其速度也会比ESIM快。


http://chatgpt.dhexx.cn/article/NPNmwcgZ.shtml

相关文章

Re2:读论文 CS-GNN Measuring and Improving the Use of Graph Information in Graph Neural Networks

诸神缄默不语-个人CSDN博文目录 论文下载地址:https://openreview.net/attachment?idrkeIIkHKvS&nameoriginal_pdf 代码:yifan-h/CS-GNN: Measuring and Improving the Use of Graph Information in Graph Neural Networks 论文引用方式&#xf…

ctfshow re2

打开附件如下 勒索病毒我去上网查了一下,发现是通过加密数据,所以这个题可能和加密有关,除了勒索病毒还有一个enflag.txt打开如下 先不管这个 第一步查壳这个exe程序 无壳。 第二步用ida32位打开这个 shiftf12查看字符 有个充值成功&#xf…

CTFShow re2 (RC4

参考:CTFSHOW re2 本文:跟着大佬的博客一步一步做CTFShow re2的记录 IDA分析 有个比较函数 re一下 s "DH~mqqvqxB^||zllJq~jkwpmvez{" s1 for i in s:s1 chr(ord(i) ^ 0x1f) print(s1)得到 再四处看看 跟进sub_401028 四个sub点进去看看…

2023年天津市逆向re2.exe解析-比较难(超详细)

2023年天津市逆向re2.exe解析(较难) 1.拖进IDA里进行分析2.动态调试3.编写EXP脚本获取FLAG4.获得FLAG1.拖进IDA里进行分析 进入主程序查看伪代码 发现一个循环,根据行为初步判定为遍历输入的字符并对其ascii^7进行加密 初步判断sub_1400ab4ec为比较输入和flag的函数 跟进u…

RE2..

RE2 Simple and Effective Text Matching with Richer Alignment Features Simple and Effective Text Matching with Richer Alignment Features 论文提出了一种快速且高效的文本匹配模型,建议保留三个可用于序列间对齐的关键特征:原始点对齐特征、先前…

RE2正则表达式引擎资料

2019独角兽企业重金招聘Python工程师标准>>> 官网RE2,C正则表达式库实战《自动机理论 语言和计算导论》 转载于:https://my.oschina.net/letiantian/blog/280743

Go与Re2正则

Golang支持Re2正则标准(实际上并不支持全部,只是Re2语法的子集),本文介绍一些Golang正则支持语法的解释。 1、Regex Flags 1、贪婪和非贪婪: 正则匹配的时候一个个字符向后找。贪婪就是即使已经匹配了还会尝试向后找…

【文本匹配】之 RE2论文详解

RE2 - Simple and Effective Text Matching with Richer Alignment Features 这篇论文来自阿里,19年的ACL论文。《Simple and Effective Text Matching with Richer Alignment Features》:https://arxiv.org/abs/1908.00300 Intro 很多深层网络只拥有…

文本匹配、文本相似度模型之RE2

简单有效的文本匹配,具有更丰富的对齐功能 github: https://github.com/daiyizheng/shortTextMatch/blob/master/src/DL_model/classic_models/models/RE2.py 本文作者提出了一种快速、强神经网络的通用文本匹配方法。保持序列间对齐可用的三个关键特征:原始点方向…

RE2,C++正则表达式库实战

RE2简介 RE2是,一个高效、原则性的正则表达式库,由Rob Pike和Russ Cox两位来自google的大牛用C实现。他俩同时也是Go语言的主导者。Go语言中的regexp正则表达式包,也是RE2的Go实现。 RE2是,一个快速、安全,线程友好,PC…

DB9接口定义

注意上表是公头的引脚定义,公头与母头的引脚编号是轴对称的,因此将公头和母头连接时是相同序号的引脚相连接。 作为串口使用时要注意,公头的2号是RXD,因而母头的2号是TXD,公头的3号是TXD,因而母头的3号是RX…

LIN DB9定义

没找到合适的图片所以用上图代替,在LIN中,图中CAN_H(7)为LIN线, GND(3)接地. 实物图如下

DB9串口接口定义

公头 母头 定义不同 连线都是2 3 5 但是 公头 2是RXD 3是Txd 母头 2是TXD 3是RXD而且两者的排列顺序,画pcb时注意 以上是公头接线方法~ 母头原理图接线 交叉 但是上图的db9的原理图是母的画法啊,应该是直接从ad的库中调去的,ad的库中只有着一种画法 例子…

DB9定义图

DB9接口定义图

DB9接口定义 串口接口定义 MAX232电路

我们知道老式电脑主板上面都会有9针的串口,即使到了现在, 很多人还是用串口来通信,这是做嵌入式与工控的一上很好的上位要与下位机通信的方案, 因为他接口简单,编程容易。 我们来讲一下定义: 首先普通主…

计算机九针孔什么接口,db9接口-USBCAN-I设备的DB9针串口头中的针脚是如何定义的-电气资讯 - 电工屋...

db9接口定义RXD和TXD接线的颜色怎么接 1)使用串口直通线。 设计电路时,单片机的RXD连接电路板DB9的TXD,单片机的TXD连接电路板DB9的RXD,具体实现可在232电平转换芯片处反接。 (2)使用串口交叉线。 设计电路时,因为串口线已做交叉&…

RS-232C接口定义(DB9)

RS-232C接口定义(DB9)引脚 定义 符号 1 载波检测 DCD(Data Carrier Detect) 2 接收数据 RXD(Received Data) 3 发送数据 TXD(Transmit Data) 4 数据终端准备好 DTR(Data Terminal Rea…