面向数百万用户的嵌入式新闻推荐
- 雅虎
- KDD2017
摘要
- 基于ID的方法,如协同过滤和低阶分解,以推荐著称,但不适合用于新闻推荐,因为候选文章很快过期,并在短时间内被新的文章替换。
-
信息检索中经常使用的基于词的方法系统性能表现良好,但存在很多问题(处理同义词、拼写变体以及定义用户历史活动中的“查询”的能力等问题。)
因此本文提出了一种基于嵌入的三步 end-to-end方法分布式表示。
(1)从基于去噪自动编码器变体的文章分布式表示开始
(2)使用以浏览历史为输入序列的递归神经网络(RNN)生成用户表示
(3)通过考虑系统性能,根据内部产品操作为用户匹配、列出文章。
介绍
新闻推荐的三个要点是:
- 理解文章内容
- 理解用户偏好
- 根据内容和偏好为单个用户列出选定的文章。
另外,重要的是在现实世界中提出建议,以应对学习数据中的可扩展性和噪声,还需对每次用户访问及时响应。
一个最基础的做法是将文章看作是文本中词的集合,将用户看做历史浏览过的文本所包含词的集合,在推荐时根据两者的相关性将两者匹配进行推荐。这样做足够简单,同时也易于迭代,可以满足新闻推荐的基本需求。
但是这样做也有很多问题:
- 第一个就是词的表征问题,两个同样意思的词,却是完全不同的表示,所以这样会导致完全相同的事件,用了不一样的词,变成了完全不同的两个商品
- 第二就是如何处理用户的浏览历史,浏览历史往往是一个序列,如何从序列中获取用户偏好转变的信息也很重要。
雅虎新闻推荐的APP主要分了三部分,第一部分是header,一个导航栏,下面是topics module,是人为维护的新闻,再往下是personalized module,是推荐的部分。
主要的推荐由五个部分组成
- identify,提前计算用户的特征
- matching,文章与用户相匹配
- ranking,排序
- de-duplication,去重
- advertising,有可能需要广告植入
word-Based作为文章特征的方法,这种方法在某些情况下不能很好地提取和消除重复。本节描述将项目作为distributed representation处理的方法。
对于文章的处理,作者采用了DAE来进行特征提取
因为需要快速计算用户和文章的匹配度,所以作者采用了内积的形式来快速计算匹配度,所以在训练文章的特征时,就需要考虑匹配相似的影响
LR(yn,xn)LR(yn,xn) 表示重构的误差,描述对xx本身的表示能力。
LT(h0,h1,h2)LT(h0,h1,h2)表示对相似对和不相似对的区分能力(弱监督部分)。
(x0,x1,x2)∈X3(x0,x1,x2)∈X3,其中x0和x1x0和x1是相同策略(或者是相似的),x0和x2x0和x2是不同的策略。
在应用测试时,使用固定衰减输入而非随机衰减输入来计算hidden-layer的embedding值,如下:
x˜=(1−p)x⟶h=f(Wx˜+b)−f(b)
notice: pp是从哪里来的?
notice: 文中隐藏掉了xx的样子,很重要的部分但没对外公开。
User Embedding
这个最后用的是GRU(Gated Recurrent Unit),也试了LSTM但效果不如GRU。一个用户的浏览和点击交互历史日志如下所示:
两个非常经典的RNN结构如下图,左为LSTM,右为GRU。
在这个应用场景下,怎么利用历史行为来计算用户的embedding呢?这才是我们关心的,也是用户的embedding最核心的地方。
在GRU下,我们看下变成了什么样子的?