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

article/2025/6/17 18:02:59

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

很多深层网络只拥有一层alignment layer,导致模型需要很多额外的语义信息或手工特征或复杂alignment机制或后处理。

本文的创新点就在于用multiple alignment processes。

R - Residual vectors:previous aligned features

E - Embedding vectors:original point-wise features

E - Encoded vectors:contextual features

简称RE2

具体代表什么呢?让我们往下看。

Model

在这里插入图片描述

空白格子表示embedding vectors,斜线方格表示augmented residual connections,经过一个encoder生成的context vectors用黑色方格表示。如图所示,把这三个向量concat起来都放进alignment layer里,再用alignment layer的input和output都concat起来放入fusion layer中。一个block包含encoding、alignment和fusion三层,重复N次且每个block都是独立的参数。 fusion layer的output经过池化层,得到最后的固定长度向量。利用左右两侧的固定长度向量做预测,Loss采用交叉熵。

Augmented Residual Connections

为了给alignment layer(attention layer)提供更丰富的特征,RE2用了残差网络来连接连续的n个blocks。

The input of the n n n-th block x ( n ) x^{(n)} x(n)( n n n ≥ 2), is the concatenation of the input of the first block x ( 1 ) x^{(1)} x(1) and the summation of the output of previous two blocks (denoted by rectangles with diagonal stripes in Figure 1):

x i ( n ) = [ x i ( 1 ) ; o i ( n − 1 ) + o i ( n − 2 ) ] x^{(n)}_i=[x^{(1)}_i;o^{(n-1)}_i+o_i^{(n-2)}] xi(n)=[xi(1);oi(n1)+oi(n2)]

Alignment Layer

alignment的方法仍是采取点积(可指路上一篇【文本匹配】之 经典ESIM论文详读)。 F F F指identity function或单层前向神经网络,这个作为超参数自行指定。

e i j = F ( a i ) T F ( b j ) e_{ij}=F(a_i)^TF(b_j) eij=F(ai)TF(bj)

求得相似度e后,我们用同样的方法得到加权和。 a i ′ a'_i ai就是 { b j } j = 1 l b \{b_j\}^{l_b}_{j=1} {bj}j=1lb中关于 a i a_i ai的内容。

a i ′ = ∑ j = 1 l b e x p ( e i j ) ∑ k = 1 l b e x p ( e i k ) b j , ∀ i ∈ [ 1 , . . . , l a ] b j ′ = ∑ i = 1 l a e x p ( e i j ) ∑ k = 1 l a e x p ( e k j ) a i , ∀ j ∈ [ 1 , . . . , l b ] a'_i=\sum^{l_b}_{j=1}\frac{exp(e_{ij})}{\sum^{l_b}_{k=1}exp(e_{ik})} b_j, \forall i\in [1,...,l_a]\\b'_j=\sum^{l_a}_{i=1}\frac{exp(e_{ij})}{\sum^{l_a}_{k=1}exp(e_{kj})} a_i, \forall j\in [1,...,l_b] ai=j=1lbk=1lbexp(eik)exp(eij)bj,i[1,...,la]bj=i=1lak=1laexp(ekj)exp(eij)ai,j[1,...,lb]

Fusion Layer

对输入sequence a ˉ \bar{a} aˉ进行以下三个计算,并进行concat。这里的 G G G是单层前向神经网络,因为参数不共享所以用不同角标进行区别。

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 ] ) \bar{a}_i^1=G_1([a_i;a_i'])\\\bar{a}_i^2=G_2([a_i;a_i-a_i'])\\\bar{a}_i^3=G_3([a_i;a_i \odot a_i'])\\\bar{a}_i=G([\bar{a}_i^1;\bar{a}_i^2;\bar{a}_i^3])\\ aˉi1=G1([ai;ai])aˉi2=G2([ai;aiai])aˉi3=G3([ai;aiai])aˉi=G([aˉi1;aˉi2;aˉi3])

相减主要是为了提取difference,相乘是为了提取similarity。

Prediction Layer

输入 v 1 , v 2 v_1,v_2 v1,v2两个vector,输出的值为:

y ^ = H ( [ v 1 ; v 2 ; v 1 − v 2 ; v 1 ⊙ v 2 ] ) \hat{y}=H([v1;v2;v1-v2;v1\odot v2]) y^=H([v1;v2;v1v2;v1v2])

其中H为多层前向神经网络。

简化版,这个也作为超参数调试:

y ^ = H ( [ v 1 ; v 2 ] ) \hat{y}=H([v1;v2]) y^=H([v1;v2])

Difference with ESIM

从公式来看,和ESIM还是比较相似,最大的不同点在于使用残差网络进行信息增强。由于每个block都含有alignment层,从单一的alignment process变成了multiple alignment processes。这个方法放弃了复杂的计算alignment方式(complicated multi-way alignment mechanisms, heavy distillations of alignment results, external syntactic features, or dense connections to connect stacked blocks when the model is going deep),所以在保证性能的基础上尽可能地快。

作者给出了github地址:

tf1.x:alibaba-edu/simple-effective-text-matching

pytorch:alibaba-edu/simple-effective-text-matching-pytorch


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

相关文章

文本匹配、文本相似度模型之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…

DB9 ------ 接口定义

下图是母座和公座的接口定义: 特别提醒:以上是公座和母座的接口定义,如果是串口线,RXD就变成TXD,以此类推。 转载于:https://www.cnblogs.com/god-of-death/p/9368120.html

硬件DB9接口定义

DB9接口定义及串口芯片定义连接 双向同头线交叉,双向异头线直通

RS232 DB9引脚定义

DB9 各引脚定义 1 DCD 载波检测 2 RX 接收数据 3 TX 发送数据 4 DTR 数据终端准备好 5 GND 地信号 6 DSR 数据准备好 7 RTS 请求发送 8 CTS 清除发送 9 RI 振铃提示 RS232常用的是Rx、Tx和GND这三条线 也就是 2-RX 3-TX 5-GND引脚,RS23…

db9串口(db9串口定义及颜色)

串口(DB9)连接线的制作方法是什么?串口(DB9)连接线的制作 (2)DB9:在AT机及以后,不支持20mA电流环接口,使用DB9连接器,作为提供多功能I/O卡或主板上COM1和COM2两个串行接口的连接器 串口显示器-DB9串口有什么用&#xf…

DB9串口定义及含义

原文:http://hi.baidu.com/askhua520/item/e4736b27213cf9d2a417b65f RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。   它的全名是“数据终端设备&#xff08…

傅里叶变换的性质

第三章:3.7 傅里叶变换性质(二) https://blog.csdn.net/einstellung/article/details/77619150 该篇博文末尾处总结的傅里叶变换的图非常好,贴一下,以备查询。

傅里叶变换尺度变换性质_ENVI基础操作——傅里叶变换

点击上方蓝字关注我吧 傅里叶变换是将图像从空间域转换到频率域,首先把图像波段转换成一系列不同频率的二维正弦波傅里叶图像;然后,在频率域内对傅里叶图像进行滤波、掩膜等各种操作,减少或者消除部分高频或低频成分;最…

傅里叶变换的缩放性质

傅里叶变换的缩放性质 简介代码结果1.缩放前后小孔2.缩放前后频谱 简介 \qquad 傅里叶变换的缩放性质是其最基本的性质之一。假设图像 g ( x , y ) g(x,y) g(x,y)是一个关于 x x x和 y y y的二维信号,那么它们在空域作缩放变换之后,频域坐标也会发生缩放…