原文链接:https://openreview.net/attachment?id=SkxgnnNFvH&name=original_pdf
ICLR2020

概述

问题

预测句子对之间关系一般有两种方法:cross-encoders(通过自注意力从全局实现编码)Bi-encoder(对输入的context和label分别进行编码),前者由于每次都需要将input和label进行concate后进行编码,因此虽然可以得到更好的效果,但是其速度会很慢。

IDEA

作者想基于精度和速度之间找到一个balance,提出了Poly-encoder,将label进行分别编码后,再与能够表示全局特征的input向量去计算注意力,从而使得到比Bi-encoder更高的精确度以及比Cross-encoder更快的速度。

方法

Bi-encoder

模型结构如下图所示:

首先将输入的context和candidate label分别送入到两个transformer中,得到对应的向量表征,然后通过函数red(.)将序列向量投影为一个向量,最后进行点积得到最终预测分数。如以下公式所示:

其中T1(x)、T2(x)分别表示两个预训练transformer的输出,red(.)函数将序列向量投影为一个向量。对于red函数,作者考虑了三种方法:1)直接使用transformer的第一个输出(也就是特殊token[S],这里作者将输入的contex和label都插入了特殊token[S]);2)取所有输出的额平均值;3)取前m个输出的平均值;通过实验证明,方法1的效果更好,因此作者选用特殊token[S]的输出来代表整个句子。

在对已知候选标签进行检索的情况下,Bi-encoder允许提前计算所有的候选embedding,在计算ytext后,只需要将其与每个候选embedding进行点乘就能得到对应的结果。这也是Bi-encoder的速度快的原因。

Cross-encoder

模型结构如下图所示:

cross-encoder允许输入文本与标签之间更充分的交互。首先将带有特殊token[S]的context和candidate进行concate成一个向量,并且将transformer的第一个输出向量作为他们的embedding。最后使用一个线性层W,来将yctxt,cand这个向量还原为一个标量,得到每个candidate的得分。如以下公式表示:

由于context和candidate是在一个transformer中,有比Bi-encoder更丰富的交互机制,通过注意力机制的计算,能够生成candidate-sensitive的context表征。也正是因为每个candidate都要和context进行concatenate一起计算,因此不能和Bi-encoder一样,重复的使用candidate的embedding,这也导致该方法在较多candidate的情况下速度很慢。

Ploy-encoder

ploy-encoder的结构就是结合这两个模型的优点,为了保持较快的推理速度,candidate同Bi-encoder中一样使用一个向量来进行表示,同时将context和candidate一起进行attention,得到更多的信息。整体结构如下图所示:

该结构分别使用两个transformer用于context和label的编码,candidate被编码成一个单一的向量y_{candi},因此poly-encoder就能使用缓存的candidate。context由于通常比label要长,由m个向量进行表示(y_{ctxt}^{1}....y_{ctxt}^{m}),然后与candidate的embedding做attention,最后使用y_{ctxt}y_{candi}的点积作为预测的分数。

其中y_{ctxt}^{i}通过学习(随机初始化后进行学习)m个上下文编码(c_{1}...c_{m})来表示,即 ci 用来抽取第 i 个隐层来表示y_{ctxt}^{i}

实验

作者使用测试表征:Recall@k,表示其中每个测试例子有C个可能的候选者可供选择,简称为R@k/C。

作者负样本的多少进行了实验,结果如下:

可以看出在更大规模的batch下(即更多负样本的情况下)能获得更好的性能,对于其他任务,由于数据集中存在较长的序列会使用更多的内存,因此作者在Bi-encoder中,使用batch=256,将其他batch中的元素视为负样本;cross-encoder的计算量更大,其batch设置为16,并从训练集中提供随机负样本。

作者在多个任务上对Bi、Cross、Poly三个模型进行了比较,实验结果如下:

在前三个任务中,Bi-encoder和cross-encoder都比之前提出的模型表现更好,总体来说cross-encoder在三个对话任务上的表现超过了以前的所有方法。ploy-encoder16表示上下文向量m=16。可以看出ploy-encoder的表现比Bi-encoder更好,与cross-encoder稍微差一点。

作者对多个模型在ConvAI2上从C个可能的候选人中预测下一个对话话语的平均时间进行了对比,实验结果如下:

当模型只有1000个candidate需要考虑时,Bi-encoder和Poly-encoder之间的时间差异是相当小的。当考虑到10万个候选者时,差异就更明显了,这是一个更现实的设置,因为我们看到Poly-encoder变体的速度下降了5-6倍。cross-encoder比Bi-encoder和ploy-encoder慢2个数量级,使得它无法用于实时推理。因此,考虑到其理想的性能和速度权衡,Poly-encoders是首选方法。

总结

本文作者对于深度双向transformer在选择任务上提出了一种新结构和一种新的预训练策略,ploy-encoder提出了一种context和label candidate进行融合的机制,同时保持了预先计算每个candidate的表征,使得在生产中可以快速实时的推理,在准确性和速度中找到了一个平衡。在训练这些结构方面,作者表明与下游任务更相关的预训练策略会有更好的一个效果。

Poly-encoders: architectures and pre-trainingstrategies for fast and accurate multi-sentence scorin相关推荐

  1. Transformer Architectures and Pre-training Strategies for Fast and Accurate Multi-sentence Scoring

    目录 论文导读 课前基础知识 学习目标 知识树 研究背景 初始BERT 研究成果 研究意义 论文结构 摘要 论文精读 模型总览BERT.Poly-encoder BERT的出现 BERT结构 BERT ...

  2. The genome polishing tool POLCA makes fast and accurate corrections in genome assemblies

    The genome polishing tool POLCA makes fast and accurate corrections in genome assemblies  基因组抛光工具POL ...

  3. Fast and accurate short read alignment with Burrows-Wheeler transform

    Fast and accurate short read alignment with Burrows-Wheeler transform 快速和准确的短读对准Burrows-Wheeler变换 本文 ...

  4. 论文Fast and accurate short read alignment with Burrows-Wheeler transform

    Fast and accurate short read alignment with Burrows-Wheeler transform BWT(Burrows–Wheeler transform) ...

  5. Que2Search: Fast and Accurate Query and Document Understanding for Search at Facebook论文笔记

    0.论文资料 论文地址:Que2Search: Fast and Accurate Query and Document Understanding for Search at Facebook | ...

  6. 消失点:Fast and Accurate Vanishing Point Detection in Complex Scenes

    消失点:Fast and Accurate Vanishing Point Detection in Complex Scenes 1.韦伯定律 1.1 WLD 1.2 WOD 算法实现 获得WOD ...

  7. 【CVPR2020视频超分辨率】Zooming Slow-Mo: Fast and Accurate One-Stage Space-Time Video Super-Resolution 阅读笔记

    paper:Zooming Slow-Mo: Fast and Accurate One-Stage Space-Time Video Super-Resolution code:Zooming-Sl ...

  8. FCHD: A fast and accurate head detector快速准确的人头检测代码预测出来的边界框位置不准确的解决方法

    算法简介 人头检测在视频监控中非常重要,而公交车.商场或者大型场馆的拥挤人群计数则是其重要应用场景. 算法思想 作者称拥挤人群计数目前主要有两种实现路径: 1.使用回归的算法思路,直接根据图像回归出拥 ...

  9. Cascaded Partial Decoder for Fast and Accurate Salient Object Detection

    CVPR2019发布,在看参考文献时发现的一篇显著性目标检测文章 有些博客讲的还是蛮详细的,放在下面了 Cascaded Partial Decoder for Fast and Accurate S ...

  10. Deep Laplacian Pyramid Networks for Fast and Accurate Super-Resolution

    时间 期刊 方法 训练集 测试集 损失函数 效果 评价指标 2017年 cvpr 一种从粗到细逐步预测的方法. 291数据集.使用三种方式进行数据扩充. SET5 [2], SET14 [39], B ...

最新文章

  1. HTML SVG 如何下载svg文件,png文件,jpge文件
  2. python画柱形图-python绘制双柱形图代码实例
  3. 使用Jquery插件jsonview来展示json数据
  4. FlatNCE:小批次对比学习效果差的原因竟是浮点误差?
  5. 360公司2019秋招空中宣讲会开启,送海量面试直通卡!
  6. html 拖放实现拼图游戏,Canvas drag 实现拖拽拼图小游戏
  7. 二分匹配和一般图匹配
  8. spark学习-Spark性能调优(1)
  9. xml中出现“文档中根元素后面的标记必须格式正确” 的错误
  10. Leetcode 817.链表组件
  11. SDN第四次上机作业
  12. JAVA环境变量安装
  13. root用户配置免密登录_ssh免密登录(普通用户和root用户)
  14. httpflv 格式分析
  15. UART(Universal Asynchronous Receiver/Transmitter)
  16. 2022-2027年中国精华素行业市场深度分析及投资战略规划报告
  17. 几个IDS开源系统介绍
  18. TreeView的图标个性化和动态数据加载
  19. 大神崛起必备的10大练手的Python项目 墙裂建议收藏!
  20. 软件开发测试男友花束,心理测试:4款花束,你最喜欢哪款?测出你最近最需要什么...

热门文章

  1. Multisim10.0 软件安装教程
  2. 更改电脑默认打开的浏览器
  3. 基于 Java 机器学习自学笔记 (第63-65天:集成学习之AdaBoost)
  4. 【java初学】面向对象多态
  5. 入手评测 骁龙888Plus、骁龙888和苹果a15哪个好
  6. 前端css 页面高斯模糊效果
  7. 使用FileZilla配置FTP服务器
  8. 班主任工作总结(2013年度)
  9. 电子学会 全国青少年软件编程等级考试(三级--八级)
  10. 一起来吐槽:来自暗网的公链项目VAS,竟然内含十级分销?