一、背景
Non-invasive Self-attention for Side Information Fusion in Sequential Recommendation
序列推荐系统的目标是基于用户的历史行为对用户的兴趣进行建模,从而进行时间相关的个性化推荐。早期模型,比如CNN和RNN等深度学习方法在推荐任务中都取得了显著的提升。近年来,BERT框架由于其在处理序列数据时采用的self-attention机制,在许多任务上都取得了SOTA的效果,如Bert4Rec。
但是BERT框架也存在局限性:只考虑自然语言符号的一个输入源,其最初设计为只接受一种类型的输入(即wordId),限制了side信息的使用。在BERT框架下如何充分利用side信息仍然是一个悬而未决的问题。side信息,如商品的类别或tag标签,在进行更全面的描述和更好的推荐中具有重要意义。一些简单的方法直接将不同类型的side信息融合到商品embedding中,通常只带来很少甚至负面的影响。
因此,本文在BERT框架下提出了一种有效利用边信息的无创自注意机制(NOVA,NOninVasive self-Attention mechanism),充分利用side信息来产生更好的注意力分布,而不是直接改变商品embedding(这会导致信息泛滥)。
本文的核心贡献有三点:
-
提出了NOVA-BERT框架,该框架可以有效地利用各种side信息进行序列化的推荐任务;
-
提出了非侵入(non-invasive)的self-attention机制(NOVA),这是一种新的设计,可以实现对复合序列数据的self-attention;
-
基于可视化给出了模型的可解释性。
1.1 Item Information(传统)
对用户的行为序列进行建模,是推荐系统中非常重要的一部分。以前常用CNN和RNN对其进行处理,后来Bert被提出,在推荐系统中也取得了很好的效果。一般在推荐系统中的行为序列都是由用户有操作行为的商品构成,作者称之为“item information”
1.2 Side Information(辅助信息)
除了用户的行为序列,还有其他很多可以用到的特征,如品类、描述词、物品的历史点击率、时间、地点、天气、上下文等信息,每个特征都可以形成一个与行为序列一一对应的序列,输入模型以辅助预测。这类信息作者统称为“side information”。side信息是为推荐系统提供额外有效的信息,可以分为两种类型:商品相关信息或行为相关信息。
-
基于商品的side信息是商品的固有信息,除了商品ID,还包括price、商品的日期、生产者等等
-
基于行为相关的side信息与用户的交互有关,例如操作类型(购买、打分)、执行时间或用户反馈分数,每个交互的顺序(即原始BERT中的位置ID)也可以作为一种行为相关的side信息
1.3 Fusing(信息融合)
side information可以有很多,但Bert的输入只能有一个,所以常见的做法是将行为序列与辅助信息分别Embedding,再融合成一个“大”的向量。
作者将这一步称为“fuse”,并列举了常见的fusing方法:
-
相加(summation)
-
拼接(concatination)
-
门控加权(gated sum)
二、 实验
2.1. Invasive(信息入侵)
在很多时候往模型中加入更多新的side信息给模型带来的提升实际上很小,有时甚至会让模型变得更差。
作者认为暴力的信息融合方法,虽然可以把item和各种side用一个向量表示(或者说在同一个向量空间中表示),但也会导致side信息不可逆地入侵(invasion)item的信息空间,导致在模型的深层越来越难以利用到原始的item信息,从而导致Bert无法学习到最佳的Attention分布和深层Embedding表示。
为什么侵入式融合的效果差?
作者在一些先导性试验上验证了侵入式的信息融合并不能取得一个明显的提升效果,甚至会导致效果变差。其中可能的原因有两个:
-
直接在item表征上加入额外相关信息后,会造成item信息淹没;
-
side信息不一定在每一层都有用,有的信息更有助于浅层Attention的学习,有的则更适合在深层发挥作用。而随着网络加深,很多side信息自己都变得亲妈都认不出来了。从这个角度看,将side信息不加区别地送入所有层确实不太合理;
-
一般情况下,模型利用self-attention层堆叠进行自动编码,融合额外信息后的映射空间会形成一个混合空间映射,在对item表征进行解码时带来混乱或困难。
这里的直接相加是一种融合方式,此外如拼接、有门控制的相加等融合方式同样无法解决这两种问题。“信息入侵”并不是一定会出现的,但如果按照现有的暴力方法进行信息融合,这种入侵显然是不可避免的。并且Bert层数的增加、Side信息数量的增加都会加剧这种入侵。
2.2. 解决方法
从Self-attention说起
self-attention机制可以理解为对输入序列的加权和,而其中的加权系数也就是所谓的Attention了,那么self主要表达了这些加权系数是由输入序列计算而来并且作用于输入的token,这与传统的attention机制有所不同。当然这里主要是针对Transformer模型中的encoder进行说明。其计算过程可以由下图来说明
|
self-attention layer softmax |
length = 8
dim = 16
# 随机生成向量
id = rand(length, dim) # shape=[8, 16]
f1 = rand(length, dim) # shape=[8, 16]
f2 = rand(length, dim) # shape=[8, 16]
b1 = rand(length, dim) # shape=[8, 16]
# fusion 选择 add
fused_item_representation = id + f1 + f2 + b1 # shape=[8, 16]
Q = Linear(in_features=dim, out_features=dim)(fused_item_representation)
K = Linear(in_features=dim, out_features=dim)(fused_item_representation)
V = Linear(in_features=dim, out_features=dim)(fused_item_representation)
# [8, 16] * [16, 8] = [8, 8]
attention = (matmul(Q, K.t()) / sqrt(torch.tensor(dim))).softmax(dim=-1)
# [8, 8] * [8, 16] = [8, 16]
output = matmul(attention, V)
#softmax
# [1, 2, 3] -> [0.0900, 0.2447, 0.6652]
# 0.0900 + 0.2447 + 0.6652 = 1
a = torch.tensor([1., 2., 3.])
b = torch.exp(a) / torch.exp(a).sum()
有了前面的铺垫,作者提出的解决方案也就水到渠成且不难理解了。
为了避免side信息对原始item信息的入侵,作者将Bert中的信息流一分为二:
-
Integrated Embedding:同原始方法,将item和side的Embedding通过某种方法融合后的信息
-
ID Embedding:只含item的embedding信息
Integrated Embedding为Bert的每一层提供Query和Key,ID Embedding为Bert的每一层提供Value。这样在计算注意力分布的时候充分考虑到了item和side的信息,但通过注意力权重加权得到更深一层的Embedding分布时仍然只有item信息。可以说是从物理层面阻断了side对item信息的入侵。这就是作者提出的NOVA框架。
用学术一点话来说:NOVA框架确保了Bert中每一层的Value向量始终都是不同位置上item信息的线性加权,从而保证了每一层的输出始终维持在item信息所在的空间。
|
|
NOVA-BERT
每个NOVA层接受两个输入:side信息和item表示序列,然后输出相同的更新表示,再将这些表示输送送到下一层。对于第一层的输入,商品表示是纯item ID嵌入。由于只使用side信息作为辅助来学习更好的注意分布,side信息不会随着NOVA层传播,为每个NOVA层提供相同的side信息集。
三、结论
3.1 不同side信息的贡献
-
None:是原始的Bert+position ID;
-
商品相关和行为相关的side信息并未带来准确率的明显提升;
-
如果结合了与行为相关的side信息,则改进的效果明显大于其中任何一个带来的改进的总和;也就是说不同类型的side信息并不是独立的;
-
NOVA-BERT从综合信息中获益更多,能够充分利用丰富的数据,并且不受信息的困扰;
3.2 Attention可视化分布
传统Bert(左)和 Nova-Bert(右)
-
NOVA-BERT的注意力得分在局部性方面表现出更强的模式,大致集中在对角线上。另一方面,在基线模型的图中没有观察到。对整个数据集的观察,这种对比是普遍存在的。side信息导致模型在早期层次形成更明显的attention。
-
实验结果表明,NOVA-BERT算法以side信息作为计算attention矩阵的辅助工具,可以学习目标的注意分布,从而提高计算的准确性。
原文始发于微信公众号(风物长宜 AI):Transformer优化之Side Information
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论