字节李航书中的深度匹配模型演化图谱【详解】

如果说推荐机器学习入门书籍,则李航博士的《统计学习方法》蓝皮书肯定是经典中的经典。

值得一提的是,李航博士任字节AI Lab主任 期间又出了一本书 《Deep Learning for Matching in Search and Recommendation》。该书由简入繁,一步步介绍了召回模型在搜索和推荐两个领域中传统算法和深度学习方法的发展,是指导大规模机器学习算法落地的一本好书,非常值得大家深入学习思考。关注【眼罩的世界】公众号,回复"deep match" 免费获得此书。

 本文提炼出书中的推荐领域召回模型图谱,并详细介绍各个算法细节,让大家不用读论文就能了然于心。

召回演化图谱

召回模型可以分为两个大类:

  1. representation learning,表征学习主要是学习user 和item 各自的向量表达。特点是为了计算快速,不会使用user和item 的交叉特征,建模后的概率只要求与后验点击率趋势相同即可。
  2. matching function learning就是用于精排的点击率预估模型。建模目标是拟合后验点击率,直接使用模型中某层的嵌入向量当做user 和item 的表征向量。

一. 无序用户行为--attantion-based method: NAIS

NAIS 是第一次尝试设计基于协同过滤的神经网络模型,在传统的基于item的CF中加入了注意力网络,用以区分用户哪些历史行为对预测更重要。

 如下面的模型打分公式,其中P_{i}代表target item; q_{j} 代表用户历史行为;a_{ij} 代表对于target item ,历史行为[公式] 的权重。最终的匹配得分是用户向量与商品向量的乘积,而用户的向量表达就是历史行为的加权求和。

 Attention Network 用于建模得到aij 。如下图,作者提出了两种Attention Network 的建模方式,一种是将 Pi 和  qj  concat连接之后输入到全连接网络中,另一种是将两者点乘之后输入网络。使用embedding 交叉作为attention network 的输入,既保证了记忆性,又保证了泛化性,对于没有见过的 (i, j) 组合也会有一个分数。

作者发现使用在Attention Network 中使用标准softmax 来做归一化的效果并不好,因为 a_{ij} 的分母是用户历史行为的累和,标准softmax 会过度惩罚多数历史悠久的活跃用户。 假如所有用户的平均长度为166,而最大长度为2313。也就是说,最活跃的用户的平均注意力权重是1/2313,而所有用户平均注意力权重是1/166,也就是说所有用户人均平均注意力权重是最活跃用户注意力权重的14倍之多,这显然是不合理的。

所以作者使用的 a_{ij} 公式中分母有平滑因子β来平滑softmax。β取值为0-1之间,当β为1时,它就是标准softmax; 当β小于1时,分母的值将被抑制,attention权重不会因为用户的活跃而受到过度惩罚。

二. RNN based--GRU4Rec

GRU4Rec 是最早提出使用RNN 对用户session行为序列建模的先驱之一,其也是基于用户协同的改进,网络中没有加入用户category特征,只使用了用户session 内点击行为序列。

如下图,GRU4Rec 的网络结构比较简单。对于一个Session中的点击序列 x = [ x_{1} , x_{2}  , ..., [公式] , [公式] ],依次将 [公式]、 [公式] ... [公式] 输入到模型中,预测下一个被点击的是哪一个Item。首先,序列中的每一个物品 lookup 到对应的embedding之后,经过 N 层GRU 之后,经过一个全联接层并 softmax 归一化得到预测概率。

  • 2.1 实现细节

值得注意的是,为了保证效果,类似word2vec 实现时,在输入端和输出端使用两个独立的词嵌入矩阵。GRU4Rec 也使用了两套物品嵌入矩阵,一个是输入层对应的输入embedding的矩阵,记为input embedding table;另一个是最后 softmax 计算候选点击概率的 embedding 矩阵,记为softmax embedding table。

举例说明, x_{1} ,  ..., x_{r-1} 各自在input embedding table查到对应embedding,并在经过多层的 GRU 单元建模之后,得到了一个输出向量 [公式]。然后要预估下一个点击物品是 [公式] 的概率,[公式] 在 softmax embedding table 查找对应的 embedding 向量记为 [公式] , 那么 [公式] 的预估概率就是 [公式] × [公式] 之后再softmax 归一化。

另外,最后的softmax 如果预估商品全集的商品,模型输出的维度过多,计算量会十分庞大,因此在实践中一般采取负采样的方法。论文采用了巧妙的方法来进行负采样,即选取了同一个batch 中其他序列中“下一个点击的 item” 作为负样本,用这些正负样本来训练整个神经网络。

  • 2.2 rank loss

论文提出了两种loss。一种是如下的bpr loss,i 代表正样本,j 代表负样本。

使用传统的bpr loss进行优化时,可能会面临正负样本的得分都持续增长的问题。于是还提出了如下的 top1 loss,增加了负样本得分的正则项。

三.RNN based--NARM

Neural Attentive Session-based Recommendation 这篇文章是继GRU4Rec 一年后发出,提出了 attention 的改进方法。

在电商场景下,用户在session内浏览上衣的同时可能由于偶然因素会浏览到牛仔裤,使用GRU4Rec 的话,则可能推荐的下一个点击商品不仅是上衣,还可能是牛仔裤或者鞋子。毕竟站在全局角度,浏览完上衣之后点击牛仔裤或者鞋子的概率也很高。但是本着引导用户购买的角度,模型应该能发现本次session用户的主要意图,推荐下一个商品时应该更关注主要意图。

 NARM输入为session内点击序列,但是分为Global encoder 和 Local encoder两个部分。Global encoder 建模用户整体的序列行为,Local encoder 表达用户主要意图。

 Global encoder 将最后一个GRU单元的隐状态作为整体序列行为的表达。但是如果只使用Global encoder,很难捕捉到用户精准的意图。

 Local encoder 设计了attention 单元 a_{tj} 来降低序列中与主要意图不相关浏览商品的权重,提升与主要意图相关的商品权重。如下面公式,将序列中每个行为 h_{j} 都与最后一个行为 h_{t}​​​​​​​输入attention 单元,得到该行为的权重。之后加权求和得到的 [公式] 代表抽取出来的session内主要意图。 

Global encoder 与 Local encoder 的输出向量concat 之后的 c_{t} 作为用户兴趣表达,分别与候选集item embi 进行相似度计算。由于 GRU 状态因子 c_{t} 的维度会大于候选item embi 的维度,所以如下图公式中,通过 B 矩阵来把维度转换成一致的,让两者可以点乘计算相似度。而最终的loss 就是常规的logloss。 

四. CNN based

虽然RNN有强大的序列建模能力,但是通常当包含很强的序列模式时才能表现较好。而在推荐系统中,用户历史相邻的行为之间并没有很强的关联关系,比如用户在看完 A 之后看了 B,只是因为用户喜欢 B,而 A 和 B 之间本身并没有关系。

下面的这篇文章详细的介绍了CNN 在推荐系统中的常用方法。

来看看 “基于卷积神经网络的推荐系统“是怎样的.

参考

  1. NAIS:Neural Attentive Item Similarity Model for Recommendation,2018.
  2. GRU4Rec code:https://github.com/Songweiping/GRU4Rec_TensorFlow
  3. GRU4Rec paper: Session-based Recommendations with Recurrent Neural Networks,2016
  4. NARM paper: Neural Attentive Session-based Recommendation, 2017(https://arxiv.org/pdf/1711.04725.pdf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值