目录
论文阅读准备
课前基础知识
学习目标
论文导读
论文研究背景、成果及意义
知识树:
研究背景
经典的数据集----文本相似度
经典的数据集-----自然语言推理/文本蕴含识别
经典的数据集-----问答/对话
经典的数据集-----机器阅读理解
两种思路:
- 句子编码模型
句子编码模型主要专注于学习每个句子的特征表示,然后通过在这个特征表示之上,去做一些聚合,做一些处理,做成一个向量,然后在模型的顶层,通过一些向量距离来衡量计算语义相关性。 - 句子对交互模型
句子做交互、做融合,而不是直接上来只做编码,即在聚合之前会做各种attention运算或对齐运算,然后去计算一些交互信息,这种模型也可以加入一些自定义特征,比如句法分析或浅层语义分析等,ESIM也属于这种模型。
研究成果
- 1.在四个著名的文本匹配任务上取得了SOTA的成果(SNLI,SciTail,QQP,WikiQA)
- 2.提升效果的同时,大大减少网络规模,大大提升预测阶段效率
- 3.多种特征融合,可以避免人工特征构建,设计结构可以有效进行特征聚合。
研究意义
RE2历史意义
- 对抗Bert最后的荣光
- 特征对齐模型的集大成者
RE2模型价值 - 工业界落地的绝佳模型
- 不在依赖人工构造特征或者复杂网络来实现alignment结构
- 改造成分类模型效果很好
论文泛读
论文结构
上图中序号5为序号3,序号3为序号5
摘要
摘要核心
- 1.在四个著名的文本匹配领域task上取得SOTA或者同等的结果
- 2.使用三种关键特征向量,设计了一个快速且表现优秀的文本匹配模型RE2
- 3.RE2:Residual vectors、Embedding vectors、Encoded vectors
- 4.与同等效果的模型比较,此模型参数更少,推理速度提升至少6倍
- 5.不再依赖人工构造特征或者复杂网络来实现alignment结构
论文小标题
论文精读
论文算法模型总览
RE2结构知识树
RE2结构
- [Embedding + Residual] -> Encoder
- [Encoder + Embeding] -> Alignment <- [Encoder + Embedding]
- Alignment -> Fusion -> Pooling -> Prediction
搞清楚模型,首要一点就是要弄清楚数据流。
Encoder:Conv1d
文章的Embedding表示做一个特征聚合。
Augmented Residual Connections(强化的残差连接)
训练网络,在更新参数的时候,每一步求偏导、梯度更新,例如对(F(x)+x)求偏导,x对应的是一个常数项,在反向传播过程中,是一种梯度连乘,不会造成梯度消失。有了这种设计模式,加入残差层,对数值的变化更加敏感,会让整个模型训练的更快。
Alignment->attention(对齐层)
对对齐的理解:这个网络的输入是左边和右边,所谓的对齐就是对左边某一个值(token)、右边一个值,对某一个任务是相关的,通过一些方法,让他们之间进行对齐。
Pooling -> 降维/聚合
Maxpool可能提取出最相关的特征
Fusion Layer,Prediction Layer : Linear + activations
线性层,为啥要加一个激活函数呢?加激活函数是为了将它变成一个非线性的,因为在很多场景里面,这种线性的是无法区分的分布,但是非线性的可以很好的去区分这种分布。构造一个模型或用机器学习去解决一个问题,其实是想要找一个曲线,自己构造的方程或者是最终的参数,它其实就是生成了一条曲线。 非线性的可以更好的去拟合更复杂的分布。
论文算法模型的细节
词向量:Glove
- 1.最小二乘法构造目标函数
- 2.输入数据是特定窗口全局共现特征矩阵
- 3.利用矩阵中非零值训练:让目标函数来拟合非零值
- 4.参数即看作词向量
Augmented Residual Connections
o(n)为第n个block的输出,x(n)为第n个block的输入。
Alignment Layer
对左、右两边的序列做位置上的对齐或token上的对齐。
用a、b表示左、右两个的序列,eij表示左边第i个与右边第j个的交互,先进行一个简单的前馈网络再进行点积操作。eij表示相似度矩阵。
Fusion Layer
ai表示对齐层前的向量,ai’表示对齐层后的向量,融入了bi的信息
减法操作可以理解为突出两者的不同,矩阵点乘操作可以理解为为了突出他们的相同。
通过这三种策略可以充分的对左、右两边的特征同时做信息的聚合。
具体实现:
Prediction Layer
对左、右两边最终的结果去做聚合
v1、v2分别是左、右两边pooling层的输出
模型训练细节/技巧
Implementation Details
将输入全部转换成小写,可以减小词典大小;
去除标点符号、stop word等;
将batch序列设置成统一的长度;
在训练过程中,保持了Glove词向量表示;
Dropout的作用是为了防拟合。
Adam
优化策略,即为如何更新参数的一种方法。
最简单的一种优化算法SGD,公式如下:
下面为Adam:
使用一阶动量(使用历史梯度和当前梯度来共同决定当前的更新梯度,对应第一个公式)、二阶动量(对不同的参数做不同的更新步长,对低频的参数做比较大的更新,对高频的参数做更小的更新,所谓低频或高频即为每个参数更新的频率,对应第二、三个公式)
exponentially decaying(指数化的衰减策略)
训练神经网络时,开始时是比较好训练的,因此开始时的步长应该稍微大一点,但是随着训练的进行,这是需要慢慢的减小学习率。
【分类】
-
Step Decay
-
Exponential Decay指数式衰减
-
cosine Decay
warmup
0.0001 to 0.003 最佳学习率的一个搜索
warmup的作用是对最佳学习率的探索,
实验设置及结果分析
**Accuracy:**对于给定的测试数据集,分类器正确分类的样本数与总样本数之比
MAP(Mean average precision)
MRR(Mean reciprocal rank)
实验结果
论文总结
关键点
- Residual vectors + Embedding vectors + Encoded vector
- strong performance
- high inference speed
创新点
- 很巧妙的对三种特征(REE)进行对齐,层次结构实现
- 引入加强的残差层
- 网络精简,参数少
- 各种task上都表现优秀,模型鲁棒性强
启发点
- 众多“武器”组合在一起才能更强大
- what about Transformer?Bert?
- 多层结构,如何继承上一层的结果往往很关键
- paper想要得高分?让实验部分更good-looking