知乎上有同类的解读 见:https://zhuanlan.zhihu.com/p/556283928
原论文:https://storage.googleapis.com/pub-tools-public-publication-data/pdf/28195006135023ef2c41f65ac16b60fa6ac99cb8.pdf

abstract

切入点是说,当前的单一向量表示没法很好的体现query和doc在某些方面的相关性,比如电商场景中的query是"白色耐克袜子",Dense Retrieval可能召回"白色阿迪袜子",即没有捕捉到品牌意图。由此,增加了一个aspect预测的任务,让模型用不同的 aspect embedding来体现不同的 aspect信息,并设计了一个轻量级的融合网络来融合这些aspect embedding,在一个电商数据集上高于比较好的Dense Retrieval模型,同时也发现aspect embedding可以加强dense Retrieval的可解释性

Method

整个模型结构如下图所示:
2023-11-28T16:27:01.png
主要是以下三个方面

Aspect Extraction Network based on Attention

基于attention的aspect提取网络,在过BERT后,再增加一个attention,将BERT的token embedding做attention映射到若干个aspect embedding上,其中kv是BERT中的token embedding,q是随机初始化可学习的一个向量,有多少个aspect,就有多少个q向量,假设aspect有k个,会生成k+1个q向量,每个q向量和原始bert输出的token embedding 作 attention算出对应的权重,再按权重聚合这些token embedding得到最终的aspect embedding,其中多出来的一个embedding是OTHER,因为可能有其他的aspect没有考虑到,CLS token embedding会被mask掉,因为CLS是融合了所有的token的信息,不太适合做attention ,文中举了一个例子来说明,aspect为category和brand,输入的query是"ugg sandals",aspect下每个词对应的attention分如下table所示:
2023-11-28T16:51:03.png
从attention分上看,不同的aspect注重不同的token,比如category哪一行,sandals对应的attention分很高,表明该aspect embedding对sandals更加重视,即整个query中sandals这个词的category信息最强

aspect prediction task

每个aspect都会有若干个标签,比如brand 可能的标签是 {ugg,nike,...},将aspect embedding的维度从hidden_size 映射到label_size上,让对应的label值最大,这个需要一些标注数据,比如定义query的aspect有品牌和类目,那么需要搜集到query对应的实际品牌和类目是什么,然后使用softmax crossentropy loss学习,这里有个疑惑:前面提到除了aspect外,还会有OTHER,那other怎么学习呢:文中提到了不去单独学习 OTHER aspect enbedding
2023-11-29T02:01:20.png

lightweight Aspect Fusion Networks

(1)Weighted Sum
简单的做线性融合,aspect的权重是可学习的参数过softmax得到,即假设aspect有k个,则有k个可学习的超参数,那么对于不同的query,这k个超参数是一样的,因此没法适配不同的输入,比如一个query没有brand,那对应的aspect embedding权重应该比较低,但是这个aspect 权重是固定的,因此这种方案不合适
(2)Presence Weighting
为了解决上面第一种方案的问题,将权重拆分为两部分,一部分是预测该aspect是否存在,即下面的Pa(Q),另一部分是一个可学习的参数:
2023-11-29T02:27:43.png
2023-11-29T02:00:40.png
Pa(Q)借助aspect prediction task的标签来学习,如果有标签,则该aspect预测值为1,否则预测值为0(是对每个token都做这个操作):
2023-11-29T02:29:51.png
(3)CLS-Gating
将CLS通过线性层映射到aspect个数上,得到每个aspect embedding对应的权重,然后加权求和得到最终每个token的embedding,这个理解起来比较合理一点

Training

pretrain阶段,由 MLM loss、AP loss和APP loss组成:
2023-11-29T02:35:08.png
finetune阶段,有如下loss组成,其中fusion阶段使用presence weighting才会使用APP loss,ce loss是判断query和doc是否相似的loss,sce是batch内样本作为负样本,有点奇怪,具体组pair中有负样本吗,如果有负样本,sce怎么算呢,有必要ce和sce分开吗
2023-11-29T02:35:49.png

experiment

没细看,query最大长度设置为32,doc侧包含了title、description、entities、keywords特征,直接将这些特征concat上,最大长度设置为128
关于aspect embedding融合的实验:
2023-11-29T03:29:42.png
消融实验:
2023-11-29T03:30:08.png