推荐系统遇上深度学习(六十四)-通过自注意力机制来自动学习特征组合

本文要介绍的论文题目是《AutoInt: Automatic Feature Interaction Learning via Self-A entive Neural Networks》
论文下载地址为:t.cn/AipG8aXz

这篇文章使用Multi-Head self-Attention进行自动的特征提取,整体思路相对而言比较简单易懂,但是论文结构比较完整。除介绍论文外,最后本文介绍了如何使用Python绘制热力图,一起来看一下吧。

1、背景

点击率预估问题对推荐系统来说比较重要,但是目前存在许多挑战:
1)特征数量巨大,离散特征多,存在特征稀疏问题。
2)高阶特征组合对于提升点击率预估的性能至关重要,但发现一些有实际意义的特征组合需要依靠专业知识,这一过程费时费力,需要通过模型自动去学习高阶特征组合。
3)现有的方法如FM,它只能学习低阶的特征组合,而DeepFM等通过神经网络的方法往往进行隐式的特征组合,缺乏一定的可解释性。

基于上述问题,本文提出了AutoInt,通过目前比较火热的Multi-Head Attention来自动进行特征组合。一起来看一下。

2、AUTOINT框架

2.1 整体框架

AUTOINT框架的整体框架比较简单,如下图:

接下来,我们逐层进行介绍。

2.2 输入层

这里咱们的目标是预测用户u点击某个物品i的概率,因此输入层包含用户相关的特征和物品相关的特征:

上面的M是特征域的个数,一个离散特征和一个连续特征都属于一个单独的特征域。

2.3 Embedding层

在Embedding层,我们对三种不同的特征分别进行了处理,这三种特征分别是单值离散特征、多值离散特征和连续特征。

对于单值离散特征,直接通过Embedding词表得到对应的Embedding表示:

对于多值离散特征,通过Embedding词表得到对应Embedding之后,还需要通过avg-pooling的方式对同一个field的Embedding进行平均:

上面的q就是多值离散特征中取值的个数。对于离散特征来说,上面的xi是one-hot向量或者multi-hot向量,取值非0即1,而对于连续特征,直接就是一个标量,我们将标量的取值直接与其对应的Embedding相乘:

2.4 交互层

交互层是Transformer的encoder部分,由多层进行堆叠来学习特征之间的高阶组合。Transformer中最重要的是multi-head attention,其简单的示意图如下:

有关Transformer,咱们这里也不讲了,可以参考之前的文章。

2.5 输出层

输出层的计算公式如下:

首先将交互层得到的输出进行对位相加,然后经过一层全连接层并进行sigmoid变换得到点击率的预估值。

而模型的损失采用的是logloss:

2.6 特征组合学习

接下来,我们来解释一下,模型是如何来学习高阶特征之间的组合的。假设我们有4个field的输入,分别是x1、x2、x3、x4。这里重点介绍二阶和三阶特征组合。

二阶特征组合

在第一层的交互层,通过attention map我们可以学习不同特征的相关性,并通过加权求和的方式进行组合。假设第一个field的输出为e1,e1中就包含了第一个field和4个field之间的交互。

三阶特征组合

对于三阶特征组合,在第二层的交互层就可以学习到。我们知道,在transformer中encoder的每一个block中,存在residual connection的过程,这样输出e1中不仅包含了第一个field和其他field组合的信息,还包含第一个field自身的信息,这样在与e3(第三个field在第一个交互层的输出)进行multi-head attention时,就可以得到第一个field和第二三个field的交互结果。

3、实验结果

3.1 实验结果分析

文中使用了不同的数据集,与一些base模型进行了效果的对比,结果如下:

可以看到,AutoInt在所有的数据集上,AUC都是最优的。

3.2 可解释性分析

最后再来看看如何对推荐过程中的特征组合进行一定的解释性分析,这主要需要观察multi-head attention过程中的attention map:

上图中,左边是针对一条电影推荐数据的结果,对于该条数据,通过attention map可以得到的结论是18-24岁的年轻人比较喜欢看恐怖片或者动作片。

而右图是对所有训练数据集中对应field的attention score的一个平均值,可以看到性别和电影类别、年龄和电影类别等都具有更高的相关性。

4、Python绘制热力图

论文整体上就介绍完了。有一说一,整体上的创新点不是很足,不过相比于其他的论文,对于特征组合的构建、以及可解释性的分析比较充分,论文结构相对来说更加完整。最后,咱们也一起来学习一下3.2节中提到的热力图的绘制:

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

# cmap(颜色)


np.random.seed(20180316)

x = np.random.randn(4, 4)

f, (ax1, ax2) = plt.subplots(figsize=(6,6),nrows=2)

sns.heatmap(x, annot=True, ax=ax1)

sns.heatmap(x, annot=True, ax=ax2, annot_kws={'size':9,'weight':'bold', 'color':'blue'})

plt.show()

上面结果的如下:

其中,最重要的函数是sns.heatmap函数,这里我们用到了四个参数,第一个参数是我们的输入数据,也就是热度矩阵,这里是4*4大小的;第二个参数是annot,代表是否要标注热力值大小,默认为false;第三个参数ax是指定我们的画布;第四个参数annot_kws是对显示的字体进行一定的设定。

好了,今天就到这里了,大伙假期注意劳逸结合哇!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容