前言
前面已经将结果很多推荐系统+深度学习的基础模型了,从这篇文章开始也进入到了注意力机制的章节。在AFM开始,大家都不再局限于将特征进行两两交互问题上面,而是开始探索一些新的结构。"Attention Mechanism"这个词现在已经不是新东西了,它来源于人类自然的选择注意习惯, 最典型的例子就是我们观察一些物体或者浏览网页时,不会聚焦于整个物体或者页面,而是会选择性的注意某些特定区域,忽视一些区域,往往会把注意力放到某些显眼的地方。 如果在建模过程中考虑到注意力机制对预测结果的影响,往往效果会更好。 近年来,注意力机制在各个领域大放异彩,比如NLP,CV等, 2017年开始,推荐领域也开始尝试将注意力机制加入模型,比如今天的AFM。
今天也是先介绍一些推荐系统+注意力机制的开胃菜AFM,首先还是看一下王喆老师的《深度学习推荐系统》已经梳理好了的知识体系。
1、AFM模型
AFM(Attentional Factorization Machines)模型也是2017年由浙江大学和新加坡国立大学研究员提出的一个模型,AFM模型其实就是从前面讲解过的NFM模型的进化升级版, 该模型和NFM模型结构上非常相似, 算是NFM模型的一个延伸,在NFM中, 不同特征域的特征embedding向量经过特征交叉池化层的交叉,将各个交叉特征向量进行“加和”, 然后后面跟了一个DNN网络,但是NFM中的加和池化,它相当于“一视同仁”地对待所有交叉特征, 没有考虑不同特征对结果的影响程度,作者认为这可能会影响最后的预测效果, 因为不是所有的交互特征都能够对最后的预测起作用。 没有用的交互特征可能会产生噪声。或者说加大对预测结果重要的特征,抑制噪声特征。
举个例子来说如果应用场景是预测一位男性用户是否购买一款键盘的可能性, 那么“性别=男且购买历史包含鼠标”这个交叉特征, 很可能比“性别=男且用户年龄=30”这一个交叉特征重要。所以对于NFM来说对所有的二阶交叉特征进行无差别加和池化就不是很合理了。因此引入注意力机制就显得非常合理!
首先来看一下AFM的模型架构:
可以看到的是,在这个模型之中并没有DNN模块,但是保存了NFM的二阶交叉特征池化层。
2、二阶交叉池化层
这里的二阶交叉池化层和前面讲过的NFM是一模一样的,在这里我也就不多做叙述了。但是在这里需要注意的是Attention的加入,并不是单单给某一个二维交叉特征一个权重,这样子的话对于未在训练数据中出现的交叉特征就无法进行权重赋予。所以在上图中