DIN
阿里巴巴在其深度学习推荐模型中引入注意力机制,是一次基于业务观察的模型改进。相比于之前很多“学术风”的深度学习模型吸纳然更具业务气息。它的应用场景是阿里巴巴的电商广告推荐,因此在计算一个用户u是否点击一个广告a时,模型的输入特征自然分为两大部分:一部分是用户u的特征组(如下图的用户特征组所示)。无论是用户还是广告,都含有两个非常重要的特征–商品id和商铺id。用户特征里的商品id是一个序列,代表用户曾经点击过的商品集合,商铺id同理;而广告特征里的商品id和商铺id就是广告对应的商品id和商铺id(阿里巴巴平台上的广告大部分是参与推广计划的商品)。
在原来的基础模型中(Base模型),用户特征组中的商品序列和商铺序列经过简单的平均池化操作后就进入上层神经网络进行下一步训练,序列中的商品既没有区分重要程度,也和广告特征中的商品id没有联系。
然而事实上,广告特征和用户特征的关联程度是非常强的。假设广告中的商品是键盘,用户的点击商品序列中有几个不同的商品id,分别是鼠标、T恤和洗面奶。丛常识出发,”鼠标”这个历史商品id对预测“键盘”广告的点击率的重要程度应大于后两者。从模型的角度来说,在模型过程中投给不同特征的“注意力”理应有所不同,而且“注意力得分”的计算理应与广告特征有关性。
将上述“注意力”的思想反映到模型中也是直观的。利用候选商品和历史行为商品之间的相关性计算出一个权重,这个权重就代表了“注意力”的强弱,加入了注意力权重的深度学习网络就是DIN模型,其中注意力部分的形式化表达如下图所示。
其中Vu是用户的Embedding向量,VA是候选广告商品的Embedding向量,ej是用户u的第j次行为的Embedding向量。这里用户的行为就是浏览商店或商铺,因此行为的Embedding向量就是那次浏览的商品或店铺的Embedding向量。
因为加入了注意力机制,所以Vu从过去ej的加和变成了ej的加权和,Vi的权重a就由ej和VA的关系决定,也就是a(ej,VA),即”注意力得分“。
那么,a(ej,Va)函数到底采用什么形式比较好呢?答案是使用一个注意力激活单元来生成注意力得分。这个注意力激活单元本质上也是一个小的神经网络,其具体结构如上图右上角所示。
可以看出,激活单元的输入层是两个Embedding向量,经过元素减操作后,与原Embedding向量一同连接后形成全连接层的输入,最后一通过单神经元输出层生成注意力得分。
可以发现商铺id只跟用户历史行为中商铺id序列发生作用,商品id只跟用户的商品id序列发生作用,因为注意力的轻重更应该由同类信息的相关性决定。
DIN模型与基于FM的AFM模型相比,是一次更经典的改进深度学习网络的尝试,而且由于出发点是具体的业务场景,也给推荐系统工程师更多实质性的启发。
注意力机制对推荐系统的启发
注意力机制的数学形式上只是将过去的平均操作或加和操作换成了加权和或者加权平均操作。这一机制对深度学习推荐系统的启发是重大的。因为”注意力得分“的引入反映了人类天生的”注意力机制“特点。对这一机制的模拟,使得推荐系统更加接近于人类天生的”注意力机制“特点。对这一机制的模拟,使得推荐系统更加接近用户真实的思考过程,从而达到提升推荐效果的目的。
从”注意力机制“开始,越来越多对深度学习模型结构的改进是基于对用户行为的深刻观察而得出。相比于学术界更加关注理论上的创新,业界的推荐系统工程师更需要基于对业务的理解来推进推荐模型的演化。