美文网首页
论文阅读“Multi-View Document Represe

论文阅读“Multi-View Document Represe

作者: 掉了西红柿皮_Kee | 来源:发表于2022-09-19 17:14 被阅读0次

    Zhang S, Liang Y, Gong M, et al. Multi-View Document Representation Learning for Open-Domain Dense Retrieval[C]//Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). 2022: 5990-6000.

    摘要导读

    密集检索(dense retrieval)在大规模文档集合的第一阶段检索中取得了令人瞩目的进步,这种检索是建立在双编码器架构(bi-encoder)上,以生成查询(q)和文档(d)的单一向量表示。 但是,一个文档通常可以回答来自不同视图的多个潜在查询。 因此文档的单个向量表示很难与多视图查询匹配,并且面临语义不匹配问题。 本文提出了一种多视图文档表示学习框架,旨在生成多视图嵌入来表示文档并强制它们与不同的查询保持一致。首先,本文提出了一种通过viewer生成多个嵌入的简单而有效的方法。 其次,为了防止多视图嵌入崩溃到同一个,进一步提出了一种具有annealed temperature的全局-局部损失,以鼓励多个viewer更好地与不同的潜在查询保持一致。

    所涉及到的问题描述和解决方法的思路如下所示: 主要的思路是从每个文本中学习多种视图的嵌入表示,用于和查询问题匹配。
    现有方法
    论文中介绍了多种现有的方法用于比较说明
    • 依托于PLM并且最早出现的模型应该是cross-encoder,其主要的做法是将给定的查询和所有的文本都进行拼接,得出[CLS]位相应的score,然后对其进行排序,找到最能匹配查询的文本。在实际的应用中,这种方式的性能相对较高,但是其算法的复杂度与文本集合的大小成正比,因此不太适用于大规模的检索任务。
    • bi-encoder则是为每个查询和文档都生成基于BERT的唯一表示,然后利用相似性度量方式给出匹配的score。对score进行排序得出检索对应的文档。
    • colBERT是通过对query的每个token embedding都与doc中每个token做相似性评估,为query的每个token选到最大的score,然后把query的每个token得到的最大score相加,得到当前query和doc的匹配得分。这里并不需要考虑文档长度对得分的影响,因为最终的得分是由query的长度决定的。给定query,文档得分sum的个数是确定的。
    • polyEncoder在query部分考虑了每个token的输出,用pooling技术得到query的embedding。在doc中则是采用了压缩器并生成了候选的doc嵌入表示e_1,\cdots,e_k,引入attention机制得出文档的最终表示e_d,与query表示e_q计算相似度score。由此找出最匹配的文档。
    方法浅析
    • 基础架构Bi-Encoder
      得分计算方式: 其中sim为相似度计算函数,这里使用的是内积;E_Q{(q)}E_D{(d)}分别为query和doc经BERT之后,[CLS]token的嵌入表示。为了增加query和匹配文档d^+的相似性,使其远离非匹配文档,在fine-tune时引入了传统的对比损失: \tau是影响优化的超参数。
    • 改进架构 Multi-Viewer Based Architecture
      其基础架构和Bi-Encoder一致,只不过添加了多个view的文本表示。
      相比于BERT的[CLS]覆盖的是文档的全部信息,本文提出的模型关注的是每个句子中涵盖的精细的信息。因此本文添加了多个viewer token -- [VIE_i],(i=1,2,...,n)来代替原始的句子表示[CLS]。具体来说, 在文档的开头添加了不同的[VIE_i],并对其进行随机初始化,定义其position id为0,使得文档的position embedding不发生改变。然后,使用dual encoder对query和doc进行编码: 其中,○代表拼接操作,[VIE][SEP]是BERT中的特殊字符。并且文中说明是使用最后一层的输出作为query和doc的表示。分别记为:E_0(q)以及E_i(d), d=0,1,..,n-1。因为query通常比doc短很多,因此本文只为其设置了一个[VIE]。当然,笔者认为设置几个除了在计算score时计算量大一点,好像也没啥影响。
      query只对应一个token的score计算很直观,即分别计算E_o(q)E_i(d)之间的相似性f_i(q,d),最终的得分表示为:
      这里给出在BERT中添加special tokens的方式:
    special_tokens_dict = {'vie_token': '<VIE>'}
    num_added_toks = tokenizer.add_special_tokens(special_tokens_dict)
    print('We have added', num_added_toks, 'tokens')
    model.resize_token_embeddings(len(tokenizer))
    print(tokenizer.vie_token)
    

    更多细节可以移步这里

    • 全局-局部损失
      为了训练上述的多视图结构,本文引入了Global-Local loss作为优化目标: 具体来说,全局损失考虑的是文档级别的损失,即与query对应的正例样本和其余负例样本之间相似性;局部损失,则考虑的是当前文档中,maxscore对应[VIE_i]与多视图token表示之间的相似性。
      因此,全局采用的是前序提到的文档对比学习损失:
      局部损失可以坐看一个logits多分类损失: 为了进一步鼓励更多不同的viewer被激活,作者采用退火温度,逐步调整viewer的 softmax 分布的清晰度。
      \alpha是控制退火的超参数,t是迭代次数,并且\tau在每个迭代中都进行改变。在实验中,L_{global}L_{local}使用了相同的\tau。在训练的开始阶段(使用较大的\tau),softmax 值倾向于在viewers中均匀分布,以使每个viewer都可以公平地被选择并从训练数据中获取梯度。 随着训练过程的进行,\tau会降低以使优化更加稳定。

    实验部分没有细看。反正效果很不错。整体来说,doc对应multi-viewer的思路很新颖,至少让我耳目一新。这也是为啥大佬能中ACL的原因吧。

    相关文章

      网友评论

          本文标题:论文阅读“Multi-View Document Represe

          本文链接:https://www.haomeiwen.com/subject/fstportx.html