双塔模型的瓶颈,究竟在哪?
开放域问答系统的泛化性和鲁棒性一直是一个业界难题,其中位于最顶层的稠密检索模型(Dense Retriever)常常被诟病其OOD泛化能力不如传统的BM25算法。
今天分享一篇来自Google的工作,其实稠密检索模型的泛化能力并不是天生就差,它只是需要更强大的编码器和更多更好的训练数据而已。
Large Dual Encoders Are Generalizable Retrievers
https://arxiv.org/abs/2112.07899
干货推荐
- 浙大博士导师深度整理:Tensorflow 和 Pytorch 的笔记(包含经典项目实战)
- 深度盘点:机器学习这6套技术资料真香啊
- 比 PyTorch 的官方文档还香啊,吃透PyTorch中文版来了
- 赶快收藏,PyTorch 常用代码段PDF合辑版来了
自BEIR基准数据集提出以来,稠密检索模型的域外泛化能力得到了广泛的关注。目前学术界的一种普遍的看法是,稠密检索模型的性能瓶颈主要在于query和doc仅靠单个稠密向量的点积做交互,而单个向量的表示能力是有限的,很难依靠简单的点积来捕捉query和doc的语义相关性,因此极大地限制了模型的泛化能力,导致模型的域外泛化性能不如传统的BM25。
为了克服query和doc的交互瓶颈,一种普遍的做法是构建多向量表示模型,从而引入轻量级的交互算子,比如ColBERT、ME-BERT、Poly-encoder、COIL等。但这些模型通常会带来更大的查询时延和更大的存储开销。
但是,单向量表示模型的性能瓶颈真的完全在于简单的点积交互吗?「如果我们固定表示向量的维度,增大编码模型的尺寸,模型性能是不是也会像大规模预训练模型那样服从Scaling Law呢?」
为了回答这个问题,作者在固定稠密向量维度()不变的条件下,采用不同尺寸的T5-encoder(base、large、3B、11B)训练稠密检索模型。实验结果表明,「稠密检索模型的瓶颈并不完全在于单个向量的表示能力不足,编码器的能力也会在很大程度上影响模型的泛化能力。」
本文提出的GTR模型(Generalizable T5-based dense Retriever)在BEIR基准上大幅超越了当前所有的稀疏/稠密检索模型,取得了SOTA结果。
Generalizable T5 Retriever
接下来简要地介绍GTR模型的训练过程,给定训练数据集,我们首先用共享参数的T5-encoder分别对和编码,然后使用平均池化获取向量表示,并计算批内负采样的交叉熵损失:
其中为余弦相似度,为softmax的温度系数。当有额外的困难负样本可用时,我们可以将其加入到分母部分:
另外,我们还可以计算反向损失:
最终求得的损失为双向损失。本文采用的参数设置为,。
另外,为了有效地利用大模型的容量优势,训练出泛化性能更好的模型,作者还设计了一个预训练+微调的训练策略。
如上图所示,在预训练阶段,作者从Reddit、Stack-Overflow等网站爬取了20亿个社区问答对数据来为模型提供丰富的语义相关信息,这部分数据通常易于收集,但噪声很大,因此在微调阶段,模型将在人工标注的检索数据集(MS-MARCO)上进一步学习更好的语义匹配模式,这样就得到了作者提出的GTR模型。
Results
作者在BEIR基准上测试了GTR模型的零样本域外泛化能力,其中BEIR包含了来自9个领域的18个信息检索任务。实验结果表明,尽管query和doc仅依靠点积交互,但增大编码器的尺寸依旧能够较大幅度地提升稠密检索模型的域内和域外泛化能力,超越了之前所有的稀疏和稠密检索模型。
Data efficiency for large retrievers
稠密检索模型的训练通常是data-hungry的,因此样本效率也是一个重要的研究方向。而作者发现使用大模型除了能提指标,同时也提升了样本效率。作者尝试仅使用10%的训练数据来微调模型,并对比了不进行预训练的模型(GTR-FT)和进行预训练的模型(GTR),结果如下表所示。
神奇的是,「虽然仅使用10%的训练数据会导致模型的域内泛化能力下降,但却提升了模型的域外泛化能力」,这表明预训练能够同时提升模型的域内和域外泛化能力,也表明MS MARCO的数据分布并不能代表通用领域(general domain)的分布,使用全量的MS MARCO数据训练模型会导致模型对MS MARCO的数据分布产生轻微的过拟合。
Ablation Study and Analysis
接下来,作者也对模型大小和训练策略进行了消融实验,结果如下表所示。一方面,随着模型的增大,除了GTR-PT(仅预训练)以外,其余模型的性能都变得越来越好;另一方面,微调对模型的域外泛化能力也有较大的影响,如果没有在MS MARCO数据集上微调,模型在BEIR基准上的NDCG@10会差10个点,说明高质量的人工标注数据依旧是很必要的。
另外作者也对比了模型分别在MS MARCO和在Natural Questions上微调的表现。如下表所示,由于NQ数据集只包含了Wikipedia的文档,且数据量级更小,因此训练出来的模型域外泛化性能更差,这也表明训练数据的通用性也是很重要的。
Document length vs model capacity
BEIR原文指出,使用余弦相似度度量训练的模型会偏向于检索出短文档,而使用点积相似度训练的模型会偏向于检索出长文档,作者想要验证当模型尺寸变大之后,这一论点是否还成立,因此作者在BEIR基准上计算了召回Top-10文档的平均长度,如下图所示。
可以看到,当模型尺寸变大时,某些数据集的平均召回长度会变长,尤其是在Touche-2020这个测试集上,GTR-XXL的平均召回长度几乎是GTR-Base的两倍,而该数据集整个语料库的平均文档长度更接近于GTR-XXL的平均召回长度,因此当模型尺寸变大之后,模型能够生成更优质的文档编码,上面提到的长度偏差问题也许就没那么严重了。
Discussion
谷歌的这篇论文再一次指出了当前NLP领域反复出现的一个主题:虽然深度学习是一项很棒的技术,但它也许永远无法解决域外泛化/组合泛化/因果推理问题,而目前唯一有效的办法似乎只有遵循Scaling Law,每当我们将模型/数据扩大十倍以上,上述问题均能得到明显的缓解。本篇论文的结论也一样,更多的数据和更大的模型总能产生更好的结果,修改模型结构或损失函数只能算是锦上添花的trick。
双塔模型的瓶颈,究竟在哪?相关推荐
- 双塔模型的瓶颈究竟在哪?
作者 | Maple小七 整理 | NewBeeNLP 开放域问答系统的泛化性和鲁棒性一直是一个业界难题,其中位于最顶层的稠密检索模型(Dense Retriever)常常被诟病其OOD泛化能力不如传 ...
- 涨点利器:推荐系统中对双塔模型的各种改造升级(上)
双塔各种改造方法概览: 大型推荐系统通常会将整个推荐链路拆分成召回.粗排.精排和重排等多个模块,以达到推荐效果和计算性能之间的平衡. 由于召回模型的候选item通常是海量的全库物品.粗排模型的候选it ...
- SENet双塔模型:在推荐领域召回粗排的应用及其它
前言 目前,双塔结构在推荐领域里已经是个常规方法了,在召回和粗排环节的模型选型中,被广泛采用.其实,不仅仅是在推荐领域,在其它领域,双塔结构也已经被越来越多得用起来了.比如,在当代搜索引擎的召回环节, ...
- 【推荐系统】双塔模型中的负采样
作者:十方 推荐模型中双塔模型早已经普及.一个塔学用户表达.一个塔学item表达.很多双塔模型用各种各样的in-batch负采样策略.十方也是如此.往往使用比较大的batchsize,效果会比较好,但 ...
- Facebook向量召回双塔模型
不知道多少人还记得 <做向量召回 All You Need is 双塔>那篇,那篇介绍了国内外各个大厂做召回的用的双塔模型,其中提到一篇<Embeding-based Retriev ...
- 从DSSM语义匹配到Google的双塔深度模型召回和广告场景中的双塔模型思考
▼ 相关推荐 ▼ 1.基于DNN的推荐算法介绍 2.传统机器学习和前沿深度学习推荐模型演化关系 3.论文|AGREE-基于注意力机制的群组推荐(附代码) 4.论文|被"玩烂"了的协 ...
- 【推荐算法】双塔模型介绍
双塔模型的结构不仅在推荐领域的召回和粗排环节中被广泛采用:而且在其它领域,如文档检索.问答系统等都有它的应用场景. 我们常说的双塔模型的结构,并不是一个固定不变的网络,而是一种模型构造思路:即把模型分 ...
- 双塔模型-语义索引策略 [In-batch Negatives]
背景介绍 语义索引(可通俗理解为向量索引)技术是搜索引擎.推荐系统.广告系统在召回阶段的核心技术之一.语义索引模型的目标是:给定输入文本,模型可以从海量候选召回库中快速.准确地召回一批语义相关文本.语 ...
- 推荐系统中的双塔模型
文章目录 1. 为什么要学习DSSM双塔模型 2. DSSM模型理论知识 2.1 DSSM模型的原理 2.2 DSSM深度语义匹配模型整体结构 2.2.1 输入层 2.2.2 表示层 2.2.3 匹配 ...
- 双塔模型DSSM及各种变体塔
本文是由参考1和参考2整合而来. 本文主要介绍项目中用于商业兴趣建模的DSSM双塔模型.作为推荐领域中大火的双塔模型,因为效果不错并且对工业界十分友好,所以被各大厂广泛应用于推荐系统中召回阶段. 通过 ...
最新文章
- 音视频同步(播放)原理
- 简单描述构造方法和析构方法的区别
- java header file_javah 生成header file 报错 问题解决
- 看雪学院荣获TSRC 2018年度峰会优秀合作伙伴
- 欢迎使用CSDN-markdown编辑器,以及markdown的使用说明
- pyqt5制作定时关机软件
- 差分进化算法求解函数最优解matlab实现
- 研发部工作日志使用教程
- html表格列文字自动换行,Table文字自动换行
- 基于控制的角度无人机集群——目标追踪
- Horner法则(霍纳法则)及其C语言描述
- INSTALL_PARSE_FAILED_NO_CERTIFICATES 解决办法
- SQLyog重置试用时间
- 闭锁java_Java 闭锁实例
- 异形滚动轮播图---jquery实现
- phpredis 和 predis
- 学C/C++想提升功底 可以花点时间看看这篇博客---C语言程序环境和预处理
- 手撕算法系列之冒泡排序
- python基于PHP+MySQL的物流配送管理系统平台
- servlet基于JavaWeb实现疫情环境下校园宿舍寝室管理系统