天天看点

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

论文:Real-time Personalization using Embeddings for Search Ranking at Airbnb

作者:Mihajlo Grbovic and Haibin Cheng Airbnb, Inc. San Francisco, California, USA

作者针对一个房屋出租市场特点分析,实现一个推荐系统有效地让出租人(host)找到符合要求的承租用户(user),而承租人(user)找到满足要求的房屋(listing)。

首先让相似的listing在embedding空间中具有相似的向量。作者使用skip-gram的embedding技术通过训练出来的listing的embedding余弦距离较近验证在房屋特点等方面具有相似性。

作者从短期和长期不同特点提出不同的训练模型。从长期来说,虽然用户和房屋都在变化,但用户和房屋归入某种类型后,它们在向量空间中具有相关性。因此关心的是一个用户的user type和listing type。作为host,关心的是一类用户(user_type);但作为user关心的是listing_type。利用NLP的skip-gram的embedding技术,对user_type和listing_type进行embedding,从而能满足host要求的相似user_type推荐给host,或者满足相似的listing_type推荐给user。

1.概述

和以前关于embedding的作品相比,本文的新颖贡献是:

  • 实时个性化推荐 - 以前关于个性化推荐的大部分工作使用embedding技术是通过在离线时形成的user-item,item-item的表进行部署到生产中,然后在推荐的时间读取这个表。我们实现了一个解决方案,其中以在线方式组合用户最近与之交互的item,计算与需要排名的item的相似性。
  • 适应网络搜索的"集中搜索训练"-搜索在旅行平台上经常被聚合,用户往往只搜索特定市场,如巴黎,很少跨不同的市场。我们调整了训练算法,以考虑进行负抽样时,从而在市场内发现更好的item相似性。
  • 利用转化作为全局上下文-在我们的案例中的预订,我们认识到在转换中结束的点击在会话的重要性。在items embeddings时,我们将已预订的item视为全局上下文,始终在窗口在会话中移动时进行预测。
  • 用户类型(user_type)embedding - 以前训练用户embedding是以捕获其长期兴趣点为目的,为每个用户训练一个唯一的embedding。但作为出租市场特点,其特定用户在一定时期是没有检索记录,因此没有足够的数据来为每个用户训练良好的embedding表示形式。更何况,为每个用户存储embedding以执行联机计算将需要大量内存。因此,我们建议在用户类型级别训练embedding,其中具有相同类型的用户组将具有相同的embedding。
  • 拒绝作为明确的负采样-为了减少那些带来拒绝的推荐,通过负采样,把host的偏好编码到user_type,listing_type的embedding中。

对于短期的兴趣个性化,我们使用超过8亿次搜索点击次数训练listembedding,从而获得高质量的listing向量表示。我们对实际搜索流量进行了广泛的离线和在线评估,结果表明在排名模型中添加embedding功能可以获得显着的预订收益。除了搜索排名算法,我们还成功测试了listing embedding,并推出了类似的list推荐,现有的算法点击率(CTR)提高20%。

对于长期兴趣个性化,我们使用5000万用户使用预订list序列训练usert_type和listing_type 的embedding。在同一向量空间中学习user_type和listing_type的embedding,以便我们可以计算user类型和listing类型之间的相似性进行排名。相似性被用作搜索排名模型的附加功能。

2.相关研究

在NLP领域,使用神经网络训练的低维度embedding代替以前以语言模型训练的高维度稀疏的词向量。神经网络训练考虑到词序,共现度,以及基于这样的假设:经常一起出现在一个句子中的单词,共享更多的统计相关性。embedding技术以CBOW和Skip-gram为代表的词向量技术。

目前,embedding技术已经超越了NLP领域,应用到其他领域。例如搜索引擎,电子商务,市场领域等。如果把一个句子看成单词序列,同样用户在网络的行为就形成一个序列有点类似一个句子的单词序列。用户的行为包括:点击,购买,查询,点击广告等。我们把用户session内的用户作为一种有相关联的上下文序列。通过用户对listing交互序列可以学习到用户和商品的embedding。对于冷启动推荐系统,仍然要使用文本embedding技术对于描述listing和用户的文字进行embedding。

3.方法论(METHODOLOGY)

下面我们将介绍用在Airbnb的搜索中推荐列表以及列表排名的推荐的方法。我们两种不同的方法:listing(商品) embedding用于短期实时个性化推荐和user_type和listing_type的embedding用于长期个性化推荐。

3.1 Listing Embeddings

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

个用户访问Airnb的会话(Session)集合。每个会话

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

记录了一个用户点击了一连串的

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

个商品序列。如果两次连续的点击时间间隔超过了30分钟,会启动一个新的session。给定数据集学习用一个d维的实数向量

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

来表示一个

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

。相似的listing在embedding空间中会聚集在附近。

目标函数如下:

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

.......................(1)

其中

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

是窗口大小,对任意

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

,让在窗口内的

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

发生的概率最大化。训练这个目标函数得到listing的embedding使用skip-gram的embedding技术。

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

使用softmax表示如下:

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

........................(2)

其中,

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

是作为训练的输入输出优化的listing向量。

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

表示数据集中unique的listing的个数。

从式(1)和(2)我们看到建议的方法点击序列模拟了文字的上下文序列,具有相似上下文的列表(即具有相似的相邻列表序列在会话中)将有相似的表示embedding。

计算式(2)中分母由于

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

非常大成为计算不可能。因此需要对式(2)进一步优化提出:

出现在窗口内的样本属于正样本,不在窗口的样本属于负样本。目标函数写成:

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐
实现实时个性化推荐_利用embeddings技术实现实时个性化推荐
实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

.......................(3)

其中式(3)中

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

是指那些

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

在以

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

为中心词在窗口中的

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

的集合是以

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

为中心不在窗口中的

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

,因为不在窗口中的

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

非常大,所以

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

是随机从

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

中抽取的样本。

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

是训练需要学习的

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

。使用SGA算法优化。

在一个具体的session,有的用户做了预定,有的用户最后没有预定。对预定的session,在skip-gram训练模型的基础上,把已经被用户预定的listing作为一个全局的上下文,请参照下图的虚线表示。

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

式(3)写成:

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

.....(4)

对没有进行预定的session,使用(3)式。

集中检索的适应性训练

:对于一个出差预定租用住宿的用户,典型的特点是只对单一的市场进行检索。因此非常大的可能是

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

中是一个市场的listing。另一方面,由于是随机负采样,

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

中的listing大部分和

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

是来自不同相同的市场。这种不平衡导致学习同一市场内listing相似性高。 解决这个问题我们建议添加一组随机负采样

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

,取样时和

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

有相同的市场。则式(4)改写为下式(5)

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

................(5)

冷启动时的listing embedding:

每天都有host提供新的listing,这些listing在以前的embedding训练中从来就不存在。怎样使用存在的listing的embedding去为新的listing进行embedding呢?

host为这个listing创建时会提供一些关于这个listing的一些属性:位置,价格,listing 类型等。用这些属性找到在地里位置最近的,价格区间一致,listing类型一样的3个已经embedding的listing。计算这三个listing embedding的平均值作为新listing的embedding。

验证和评价listing embeddings:

评价通过8亿个session点击训练出来的32维embedding。首先,进行k均值聚类embedding评估是否编码了地理相似性。图2显示了在加利福尼亚州产生的100个集群来自相似位置的列表聚集在一起。

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

接下来,我们评估来自洛杉矶不同listing类型(表1)和不同listing价格之间(表2)的平均余弦相似度。

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

从表1,2看出,相同的listing类型之间比不相同类型之间的相似度要高,同一价位之间与不同价位之间的相似度要高。因此,我们可以得出结论,这两个listing的特征能很好地编写到listing enbeddings中。也是如此。虽然一些listing特征,如价格,不需要学习,因为他们可以从列出元数据中提取,其他类型的listting特征,如建筑,风格并且感觉更难以以列表功能的形式提取。至评估我们可以通过embedding来捕获这些特征检查独特建筑列表的k-最近邻居列出嵌入空间。图3显示了一个这样的情况,最相似的listing具有相同的风格和建筑。

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

另外开发了一种能迅速在embedding空间中找到相似listing的检索工具。

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐
3.2 User-type & Listing-type Embeddings

listing embeddings是使用会话里的点击序列来训练的,它能很好找到在同一市场内相似的listing。然而,listing embeddings是使用于短期,它的目的是向用户显示被用户点击过的相似的listing。

但是,除了会话中的个性化,它是基于发生在同一个会话中的信号,我们也希望基于来自用户的长期的信号历史来个性化搜索是有用的。例如,给定当前正在在洛杉矶市场搜索的用户,以前的预订过约克和伦敦的历史记录,推荐列表里希望有类似于以前预定记录的listing。

怎样去训练这种跨市场范围的相似性的listing呢?虽然在使用点击训练的listing embedding中捕获了一些跨市场的相似性,但是学习这种跨市场相似性的更主要方式是从特定用户随时间预订的列表构建的会话中学习。 具体来说,让我们假设我们从N个用户那里获得了一个预订的集合

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

,并且用户

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

按照时间顺序定义了一个序列号

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

。 尝试使用这种类型的数据为每个listing id学习embedding

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

在很多方面都具有挑战性:

  • 首先,预订会话数据
    实现实时个性化推荐_利用embeddings技术实现实时个性化推荐
    远小于点击会话数据S,因为预订的事件频率较低。
  • 其次,许多使用者在过去只是booking一个listing,当然不能从长度为1的序列中学到什么。
  • 第三,从上下文信息中容忍最大限度地从内容信息中获取至少5-10次出现的实体需要的数据,并且在该平台上至少有5到10倍的时间。
  • 最后,长时间间隔可以通过用户进行连续预订,并且用户偏好会发生变化随职业的变化发生便哈。例如价格方面等。

在现实中,以上的挑战非常普遍,因此我们建议训练listing_type 而不是listing_id。

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

表3和表4,是分别将listing meta 数据映射为listin_type和将用户映射为user_type。例如,一个来自美国的整套房子,有2人容量,1床,1卧室和1浴室,每晚平均价格为$ 60.8,每位客人每晚平均价格$ 29.3,5评论,全部5星级,以及100%新客人接受率映射到listing_type =US_lt1_pn3_pg3_r3_5s4_c2_b1_bd2_bt2nu3。它的好处是很多listing会映射到一个listingtype。同样可以将用户映射为user_type。

训练过程:

我们将

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

序列写成:

(user_type, listing_type)二元组序列:
实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

。目标函数如下训练

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐
实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

使用如下目标函数训练

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

:

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

通过两个目标函数交叉执行分别更新

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

对预定拒绝作为明确的负样本来训练。

不像点击序列,它只反映了user的偏好。但预定也反映了host的偏好。存在一些来自于host的明确反馈,接受或者拒绝预订请求。host拒绝常常由于一些原因如:不良客人的星级评分,不完整或空客的个人资料,没有个人资料图片等,具体参照表4的例子。

除了客户偏好信号之外,在训练期间可以利用host拒绝来编码embedding空间中的host偏好信号。结合拒绝信号的整个目的是一些listing_types对user_types不太敏感。

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

目标函数进一步写为如下:

对更新用户类型embedding的目标函数:

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

对更新listing类型embedding的目标函数:

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

给定所有user_types和listing_types的学习embedding,我们可以根据用户当前user_type embedding和候选listing的listing_type embedding之间的余弦相似性向用户推荐最相关的列表。例如,在表5中,我们显示user_type =SF_lg1_dt1_fp1_pp1_nb3_ppn5_ppg5_c4_nr3_l5s3_g5s3之间的余弦相似性 他们通常在美国预订高质量,宽敞的房源,并提供大量好评和几种不同的listing_types。 可以观察到,最符合这些用户偏好的列表类型,即整个家庭,大量好评,大且高于平均价格,具有高余弦相似性,而不匹配用户偏好的那些,具有较小空间,较低的那些价格和少量评论具有低余弦相似性。

实现实时个性化推荐_利用embeddings技术实现实时个性化推荐

参考:

[1] Tomas Mikolov,Ilya Sutskever,KaiChen,GregSCorrado,and Jeff Dean.2013. Distributed representations of words and phrases and their http://compositionality.In Advances in neural information processing systems.3111–3119.

[2] Mihajlo Grbovic and Haibin Cheng Airbnb, Inc. San Francisco, California, USA Real-time Personalization using Embeddings for Search Ranking at Airbnb