Poly-encoder
Poly-encoder
- Poly-encoder
- Bi-encoder
- cross-encoder
- poly-encoder
Poly-encoder
论文《Poly-encoders: Transformer Architectures and Pre-training Strategies for Fast and Accurate Multi-sentence Scoring》开放了一种新的transformer体系结构,即Poly-encoder。
Poly-encoder学习全局而不是token级别的self-attention特征,同时解决了Bi-encoder匹配质量低的问题以及 ARC-II、BERT等交互式的cross-encoder匹配速度慢的问题。
Bi-encoder
如图,Bi-encoder采用两个相同的网络(如BERT)得出两个句子各自的特征向量,再进行相似度计算。
计算context向量:ycxt=red(T1(CTXT))y_{cxt}=red(T_1(CTXT))ycxt=red(T1(CTXT))
计算candidate向量:ycand=red(T1(CAND))y_{cand}=red(T_1(CAND))ycand=red(T1(CAND))
red()的三种计算方法:·List item取第一个位置(CLS)的向量
·求所有位置向量的平均
· 求前n个位置向量的平均相似度得分:dot-product(点积),即s{CTXT,CAND}=ycxt⋅ycandy_{cxt} ·y_{cand}ycxt⋅ycand
训练,cross-entopy(交叉熵)
总体来讲,利用2个网络分别将context和candidate编码成向量,最后再通过一个相似性判别函数(如cosine、dot-product)计算两个向量间的相似度。
Bi-encoder的特点是context和candidate编码成向量的过程独立(编码过程不交互),最后才开始交互,速度快但匹配质量不高。
因此,这种独立编码的方式可以使我们离线计算出所有candidates的向量,线上服务时,只需要计算query的向量再进行相似度匹配,匹配速度快但质量不能达到最佳。
cross-encoder
如图:
- 计算context和candidate的向量yctxt,cand=h1=first(T(ctxt,cand))y_{ctxt,cand}=h_1=first(T(ctxt,cand))yctxt,cand=h1=first(T(ctxt,cand))
- 相似度得分:s(ctxt,cand)=yctxt,candWs(ctxt,cand)=y_{ctxt,cand}Ws(ctxt,cand)=yctxt,candW
- 训练:cross-entopy(交叉熵)。
cross-encoder的特点是context和candidate输入至同意网络结构中,编码过程完全交互(即context和candidate时时刻刻应相互交互),但匹配速度慢,同时无法离线计算出所有candidates的表征向量,没处理一个context必须与所有candidates进行交互,模型非常耗时。
poly-encoder
- 计算context向量
用多个向量表示context,(简化版:直接去前m个向量) - 利用一个独立的encoder编码出candidate的表示特征。
- 二者交互,
- 相似度得分:dot-product。
参考1
参考2
Poly-encoder相关推荐
- 他山之石 | 丁香园 医疗领域图谱的构建与应用
作者 | 付子玉 编辑 | DataFun 大家好,这里是NewBeeNLP.今天分享丁香园nlp组联合华师大团队发表的文章SMedBERT,在医疗垂直领域下将知识图谱的医学实体和实体的结构化信息引入 ...
- 图谱实战 | 丁香园医疗领域图谱的构建与应用
分享嘉宾:付子玉 观澜网络 算法工程师 编辑整理:孙佩霞 中国电信研究院 出品平台:DataFunTalk 导读:丁香园大数据组旨在为用户提供更优质的内容与服务,使用知识/概念图谱.预训练模型挖掘更深 ...
- 付子玉:丁香园医疗领域图谱的构建与应用
本文约4500字,建议阅读10+分钟 本文介绍了丁香园nlp组联合华师大团队发表的文章SMedBERT,并介绍了丁香园在业务场景下的一些应用. 分享嘉宾:付子玉 观澜网络 算法工程师 编辑整理:孙佩霞 ...
- Poly-encoders(2020 ICLR)
Poly-encoders: architectures and pre-training strategies for fast and accurate multi-sentence scorin ...
- 面向开放域密集检索多视图文档表示学习,微软提出MVR,性能SOTA!(ACL 2022)...
关注公众号,发现CV技术之美 本文分享 ACL 2022 论文『Multi-View Document Representation Learning for Open-Domain Dense Re ...
- Dissecting BERT Part 1: The Encoder 解析BERT解码器(transformer)
原文:https://medium.com/dissecting-bert/dissecting-bert-part-1-d3c3d495cdb3 A meaningful representatio ...
- H.265 HD 和H.265 4K Video Encoder IP Core
H.265 HD 和H.265 4K Video Encoder IP Core H.265 HD Video Encoder IP Core(H.265 HD Video/Audio Encoder ...
- Blender从头到尾创建低多边形角色学习教程 Low Poly Characters – Blender Bitesize Course
从头到尾创建低多边形角色. 你会学到: Blender界面的基础. 基本建模技术. 如何遵循字符引用? 如何创造和塑造自己的角色(不同风格.发型和服装). 纹理字符. 索具和动画介绍(用于你的游戏引擎 ...
- gram矩阵_ZEN-基于N-gram的中文Encoder
相关背景 深度学习的encoder都是基于大规模的未标注数据,但是这些encoder是否完整利用了语料的所有信息,这是未被证实的.类似于Bert的这些预训练模型使用的是文本的最小单位--字.但是中文的 ...
- 亚马逊推出VR/AR开发平台Sumerian,功能强大不同于Poly
(52VR对原译文进行了润饰和编辑) (文末有同类软件的介绍链接哟,方便大家比对选择.) 亚马逊推出了一个名为"Sumerian"平台,它提供的工具和资源可以允许任何人轻松创建和 ...
最新文章
- 【推荐】Flex与Flash组合开发最佳实践__Combain FlexFlash
- c#中的long类型示例_C#中带示例的带符号字节数组
- 梦如果实现以后。。。。。。
- 步进电机工作原理 驱动 _28BYJ-48 以及程序实例下载
- 用python写一个简单的贪吃蛇游戏(附代码)
- Windows Boot Manager、Bootmgfw.efi、Bootx64.efi、bcdboot.exe 文件的关系
- linux xps文件,XPS文件擴展名: 它是什麼以及如何打開它?
- 数据结构之树的操作大全
- DOTCPP:有关1148心得
- xp访问win10计算机名,xp连接win10共享打印机提示凭证不足怎么办
- 普通人怎样投资区块链
- 深度学习中的优化函数optimizer SGD Adam AdaGrad RMSProp
- Thinkphp5威客任务平台网站源码
- matlab 水波模拟 代码,matlab - 在Matlab中模拟一艘在水波中航行的船 - SO中文参考 - www.soinside.com...
- 2020年程序员技能展望:平均年薪5.4万美元,JavaScript与Python最受欢迎
- 程序员的吐槽大会,动机何在?
- BCA签约艺术家大悲宇宙NFT作品在苏富比拍卖以14万美元价格成交
- 汇编一日一学(12)--求最小偶数
- 小型机 PC服务器 性能,大型机、小型机、x86服务器的区别
- 微信卖生鲜,他们是怎么做到的
热门文章
- MOS管的各项参数解释
- Android开发读取通讯录信息
- mysql mysqldataadapter_MySql中MySqlDataAdapter类的用法
- MATLAB编程-弹簧振动动画
- 《基于数字信号处理的相干光通信技术》读书笔记chapter II——单载波先进调制格式
- 如何设置亚马逊code促销活动?
- SpringBoot - OAuth2第三方登录之新浪微博登录
- 从精英云到普惠云,青云QingCloud的“性格”变了
- MySQL讲义第 40 讲——select 查询之函数(3):数学函数
- 极客领航 C/C++|MCU|软件|物联网|嵌入式|Linux|辅助设计|飞行器