文章目录
前言
本文于2022年9月发布在axiv上。文章针对于CRS引入过多的外部知识进行改进,聚焦于语境信息,企图以较少的外部知识用于模型来获得更好的推荐效果。
原文链接:https://arxiv.org/pdf/2209.11386v1.pdf
代码链接:暂未发布
一、原文摘要
对话式推荐系统已经成为一个新兴的研究课题,它试图通过交互式对话来执行推荐,通常包括生成和推荐模块。CRS之前的工作倾向于合并更多的外部和领域特定的知识,如项目评审,以提高性能。尽管外部领域特定信息的收集和注释需要大量的人工努力,并降低了泛化能力,但过多的额外知识会增加平衡这些信息的难度。因此,我们建议从语境中充分发现和提取内部知识。我们捕获实体级和上下文级表示,以联合为推荐建模用户偏好,其中具有时间感知的注意力机制被设计为强调实体级表示中最近出现的项目。我们进一步使用预训练的BART初始化生成模块,以缓解数据的稀缺性和增强上下文建模。除了在流行数据集(ReDial)上进行实验外,我们还包括一个多领域数据集(OpenDialKG)来展示我们模型的有效性。在两个数据集上的实验表明,我们的模型在外部知识较少的情况下,在大多数评估指标上取得了较好的性能,并能很好地推广到其他领域。对推荐和生成任务的其他分析证明了我们的模型在不同场景中的有效性。
二、为什么要提出
- 一方面,此前的CRS例如KBRD、KGSF等,都是利用增加外部知识图谱、或是特定的领域知识增强推荐的效果。但是引入庞大的外部知识不仅难以在单一系统中平衡这些信息,而且还需要大量人工进行收集、注解、并且引入的外部知识往往都是特定领域,模型不具有推广普适性。
- 另一方面,由于CRS的目标之一是引导用户通过对话的形式来明确表达自己的偏好,作者认为时间或序列信息将是进一步提高CRS性能的关键因素。以往的工作在很大程度上忽略了时间或序列信息,他们将上下文中出现的项目视为一个集合而不是一个序列,这与系统的目标背道而驰。
所以,作者选择在上下文充分挖掘提取内部知识,并提出了一个时间感知的用户偏好建模。
简单来说。在推荐模块上:作者提出的时间感知模型能够通过用户话语中出现的项目总结实体表示,上下文编码器能够提取上下文表示:反映了语句级、语篇级的用户偏好。这两种表示相互补充,增强推荐效果。在对话模块上,作者没有采用此前工作的encoder-decoder模型,而是采用了预训练模型BART,可以在捕获上下文特征时减轻数据稀疏的效应。这是因为CRS数据集量级小,encoder-decoder模型在数据量比较小的情况下存在过拟合的问题,预训练模型更适合、且模型在其他领域的普适性强。
三、相关工作
用于提取语义中的偏好以及进行对话生成的预训练BART模型:BART是一个基于Transformer的预训练模型,它对大规模的书籍、维基百科进行了多个去噪目标的训练,即恢复经过屏蔽、删除、填充、排列和文档旋转处理后的噪声输入。因此这些去噪目标能使BART学习无标记数据的上下文表示。
四、模型
符号设定:对话C=(
t
1
t_1
t1,…,
t
m
t_m
tm ),其中
t
i
t_i
ti为对话中的话语的编号,共有
m
m
m条。话语中单词序列为
t
i
t_i
ti=(
w
i
,
1
w_{i,1}
wi,1,…,
w
i
,
n
i
w_{i,n_i}
wi,ni )。
I
I
I为对话中的项目集,
I
i
I_i
Ii为第
i
i
i个项目。对话模块基于上下文C生成的一条回应为
R
=
(
y
1
,
y
2
…
,
y
n
)
R=(y_1,y_2…,y_n)
R=(y1,y2…,yn),共有n个token,模块会将项目
I
i
I_i
Ii嵌入至R中。
4.1 基于BART的对话生成模块
对话生成模块为一个基于Transformer的seq2seq框架。公式(3)-(5)为Transformer的公式。
BART是一个基于Transformer的预训练模型,它对大规模的书籍、维基百科进行了多个去噪目标的训练,即恢复经过屏蔽、删除、填充、排列和文档旋转处理后的噪声输入。因此这些去噪目标能使BART学习无标记数据的上下文表示。
由于CRS数据集的对话数量少,单纯依靠语料库学习很难。所以作者对BART预训练模型进行微调。不过BART所基于的语言模型都是一般的外部知识,不属于特定领域的外部知识,所以与前人的工作相比,并不是引入了更多的外部知识,BART更具有普适性。
为了使BART生成项目感知的响应,作者将项目集
I
I
I扩展至BART的原始词汇
V
V
V,即
V
′
V~'
V ′=
I
∪
V
I∪V
I∪V。再使用CRS语料库对模型进行微调。具体来说,在C中,每个语句都按时间顺序添加了标记:输入为x=[
t
1
t_1
t1;
<
E
O
T
>
<EOT>
<EOT>;
t
2
t_2
t2;
<
E
O
T
>
<EOT>
<EOT>⋯;
t
m
t_m
tm]。并且还最大化了ground truth回应R的概率。最后在输出环节加入一个集成模块。
4.2 上下文-时间感知的推荐模块
为充分了解用户在上下文C中的偏好,在推荐模块中,作者提取了两种信息:实体级的信息、上下文级的信息。
4.2.1 实体级用户偏好提取
生成实体级表示 h e h_e he
提取思路:从C中提取实体(包括项目集I中的项目),并将它们应用至一个外部关系知识图谱来进行实体链接。再通过time-aware的注意力机制来生成实体级的用户表示。
具体方法:
实体级表示由从观察到的上下文C中提取的项目及其相关实体所捕获和表示(例如,如果项目是电影,相关实体可以是作者、导演等)。考虑到语料库的数据稀疏性,我们使用DBpedia来增强实体建模。接下来的工作和KBRD的处理一样,将项目与DBpedia进行实体链接,用R-GCN获取实体级的表示。结果得到实体e的实体级表示
h
e
h_e
he
生成用户实体偏好概率
P
e
P_e
Pe
将C中出现的项目提取出来,主要包括上下文所提到的项目
I
i
I_i
Ii(包含在项目集中)和话语中提及到的其他上下文项目(例如电影的导演、演员),即用
T
u
T_u
Tu={
e
1
e_1
e1,
e
2
e_2
e2,
e
3
e_3
e3,…,
e
∣
T
u
∣
e_|T_u|
e∣Tu∣ }该集合表示用户所提到的项目与非项目,并按照顺序排序。在通过R-GCN学习实体表示后,可得到序列(
h
1
h_1
h1,
h
2
h_2
h2,…,
h
∣
T
u
∣
h_|T_u|
h∣Tu∣ )。
此前的工作在总结所有的实体表示时,都是用的self-attention机制,但考虑自注意力机制忽略了项目之间的顺序信息,且在语料库小的情况下没有考虑监督信号,学习效果不好。作者采用time-aware attention机制来总结实体表示,公式如(7)所示。
公式中的
λ
λ
λ控制“近因效应”,
λ
λ
λ往往大于1,意味着最近一次的项目对于下次项目预测的影响最大。计算生成用户实体偏好表示
P
e
P_e
Pe的公式如(8)所示
4.2.2 语义级用户偏好提取
提取思路:利用 BART预训练模型生成上下文信息。
具体做法:将Transformer编码器部分的输出
H
c
H_c
Hc作为上下文表示,并对所有
H
C
H_C
HC取平均后输入MLP中得到用户上下文偏好表示
p
c
p_c
pc。公式如(9)所示。
4.2.3 实体级与上下文级结合的用户偏好表示
通过公式(10),作者将实体级与上下文级的用户偏好表示相结合。其中,
μ
μ
μ为平衡二者的超参数。
公式(11)为推荐模块的目标函数,
r
i
r_i
ri表示第i轮推荐待推荐的目标项目,
M
M
M表示从训练语料库中提取的需要推荐的项目数量。
4.3 模块集成
为了使推荐结果能够更好的融入至对话模块,作者引入了一种集成机制合并推荐结果,引导对话模块生成与用户偏好一致的回应。受到KBRD在集成方式的启发,作者也在最高层的解码器中加入了vocabulary bias
b
u
b_u
bu,不过KBRD的
b
u
b_u
bu是通过建模后的用户表示计算得到的,而本工作的
b
u
b_u
bu直接来自于推荐概率
p
r
e
c
p_{rec}
prec。计算公式如(12)所示:
其中[;]表示聚合操作,0为V维的向量,
G
(
p
r
e
c
G(p_{rec}
G(prec)表示索引选择操作。具体做法就是在生成语句的过程中,在最顶层输出的预测中动态加入
b
u
b_u
bu,且仅当该预测项目属于项目集时才会添加,这样,推荐概率会加入到原始的概率中。
公式(13)即为整个模型的目标。
γ
γ
γ为平衡两个模块的超参数,作者将二者的目标函数联合,使得这两个模块能够相互受益。
五、实验
实验环节共分为推荐模块与对话模块。
5.1 推荐模块
在此实验中,本文分别在Redial电影推荐数据集和OpenDialKG多领域推荐的数据集上进行实验。
1、上表记录了本文模型在Redial的实验,选择指标Recall@K。由上表可知,前人所提出的基线模型所输入的外部知识很多,但效果却不及本文所提出的模型,可推测其忽略了提取对话间的内部信息。
通过消融实验可知,Time-aware的注意力机制在推荐性能上要优于自注意力机制;且引入了BART预训练模型产生上下文表示后,模型推荐性能也得到了提升,这也说明了用户偏好表示不仅来自于项目实体,还隐藏在对话上下文中。
2、在OpenDialKG上进行实验
在OpenDialKG上的实验效果普遍要优于在Redial数据集上的效果。这说明了本文模型更具有普适性,不仅仅局限于单个领域,模型的泛化性更强。
5.2 对话生成模块
- 自动评价
本文选取了
D
i
s
t
−
n
Dist-n
Dist−n评判对话的丰富性(是否只是单一的应答:是啊,好啊)、
B
L
E
U
BLEU
BLEU评判准确性,
P
P
L
PPL
PPL指标。
可见,本文所提出的模型更能够产生丰富、连贯流利的回应。通过BART的消融实验可见,它能够大幅度增加语言的丰富性;但是也可见,Distnct和PPL之间是呈一定的负相关的,要求语句丰富的同时,生成回应的可读性就越差; 通过“BS”(集束搜索)/“DBS”(多样化集束搜索)的消融实验,可发现这种搜索能够在一定程度上缓解这一负相关性。
- 人工评价
上表为人工评价的结果,所采用的指标为Fluency、Informativeness、Coherence。在流利程度上,所有模型都表现很好,但在其余两项的表现不尽相同。ReDial、KBRD、KGSF在Informativeness上较低,这反映了这些模型生成的对话中安全回应比较高。同时,他们的连贯得分较低,这反映了他们没有很好的根据上文语境产生有意义的回复。
5.3 验证本文改进点的有效性
- 上下文表示的有效性
当提到的数字为0或1时,ContextM模型的性能优于EntityM-TimeA。因为当项目历史信息很少甚至缺失时,实体级表示不足以产生可靠的推荐,而上下文级表示可以从文本中捕获有用的信息。当提到的数量增加时,EntityM-TimeA的性能始终优于ContextM。随着提及的项目越来越多,含有EntityM的模型效果更优,当项目达到了10以上时,推荐效果大幅下降。但实际上,推荐中提及到的项目往往只有1-3个。因此,本文的完整模型(即EntityM-TimeA-ContextM)结合了两种表示,并在所有情况下产生最佳性能。
-
BART预训练模型的效果
上表显示了BART预训练的实验,括号内表示添加了BART后提升的百分比。这一实验在每个模型都做了消融实验,可见,所有模型在去除了BART了之后,效果都不及以前,因为在大规模单语数据集上的预训练有助于模型学习更好的语义特征。对于完整模型在去除联合推荐时,性能退化变小,说明上下文与实体级的信息是可以互补的。
5.4 参数分析
- 时间感知λ
对于公式7中时间感知的λ,图a显示了推荐效果随着λ的变化。当
λ
<
1
λ<1
λ<1表示越早出现的项目
越重要,而推荐的效果也随着项目越早,变得越差;当
λ
>
1
λ>1
λ>1与
λ
=
1
λ=1
λ=1时相比,推荐效果越来越好。这也验证了近因效应,
λ
λ
λ应该大于1。
另一方面,当
λ
λ
λ增加时,Recall@1和Recall@10呈现不同的趋势:Recall@1持续增加,而Recall@10在
λ
>
2
λ>2
λ>2时开始下降。这是因为当
λ
λ
λ太大时,有时间意识的注意力倾向于关注最近出现的项目。这有助于找到最相关的项目,但不利于整体推荐
- Dist-n指标的限制
搜索策略会大幅度影响Dist-n指标。而通过探讨Length Penalt,如图b所示,发现生成答复的长度也会影响Dist-n的打分,长度越长,得分越高;但这显然不符合常识,生成的长度越长,效果不一定会更好。所以评估生成模块需要其他的指标综合显示评估对话性能。 - 实体级和上下文级表示之间的权衡
对于公式10中,用户实体偏好表示p_e和用户上下文偏好表示 p c p_c pc通过μ来平衡权重。当 μ μ μ值从0到0.1(或1到0.9)变化时,Recall@50评分显著提高。这验证了这两种表示可以从不同的角度捕捉用户偏好,并能够相互补充以获得更好的推荐性能。此外,Recall@1和Recall@10的趋势与Recall@50相似。最好的结果是在 µ = 0.5 µ=0.5 µ=0.5左右,即两种表示都很重要。
六、结论
在这项工作中,作者提出了一种改进的对话推荐系统,在推荐模块中,提出了捕捉实体级和上下文级表示,其中使用到了时间感知机制的用户偏好建模,以用来更好地捕捉用户兴趣,和预训练的BART模型,以用来增强上下文级的用户偏好建模和提高生成的响应的多样性。
本文的模型在两个公开数据集上进行了实验。结果表明,该模型可以在引入较少的外部特定领域知识的情况下达到更好的性能,并且模型的推广性强。
作者在后续中会探索更精确的用户偏好建模机制。本文目前的时间感知建模方法不能处理更复杂的现实场景。后续可以将时间感知与其他特征相融合,例如情感因素。然而,目前可用的数据集很难训练出一个强大的用户偏好学习框架。未来可能需要大规模、多样化和多领域的数据集。