推荐系统深度学习读书笔记-4

第四章

Embedding技术在推荐系统中的应用

Embedding主要作用是将稀疏向量转换成稠密向量

  • 用一个低维稠密的向量表示一个对象
  • 该向量能够表达相应对象的某些特征
  • 向量之间的距离反映了对象之间的相似性

视频推荐往往使用用户的观看序列进行电影的Embedding化

电商平台会使用用户的购买历史作为训练样本

为什么Embedding技术对于深度学习那么重要?

  • 类别、id类特征使用one-hot编码导致样本向量极其稀疏,深度学习模型不利于稀疏特征向量的处理,因此模型中的embedding层会将高维稀疏特征向量转换成稠密低维向量
  • embedding向量表达能力更强,包含很多潜在的信息
  • 在LSH等快速最近邻搜索技术应用于推荐系统后,Embedding更适用于海量备选item进行初筛

word2vec

word2vec的两种模型:

  • CBOW:每个词都是由相邻的词决定的
  • Skip-gram:每个词决定了相邻的词(经验上,这个模型效果更好)

为了减轻训练负担,采用负采样,优化目标从一个多分类问题退化成一个近似二分类问题

加快word2vec训练速度的方法还有层级softmax

Item2vec

相比word2vec利用词序列生成词embedding,item2vec利用的物品序列是由特定用户浏览、购买等行为产生的历史行为记录序列

item2vec与word2vec唯一不同:

  • item2vec摒弃了时间窗口的概念,认为序列中任意两个物品都相关
  • 因此在item2vec的目标函数中可以看到,其是两两物品的对数概率的和,而不仅是时间窗口内物品的对数概率之和

局限性:

  • 只能利用序列型数据
  • 处理网络化数据时捉襟见肘,因此出现GraphEmbedding

GraphEmbedding

一种对图结构中的节点进行Embedding编码的方法

最终生成的Embedding向量一般包含图的结构信息及附近节点的局部相似性信息

几种不同的GraphEmbedding:

  • DeepWalk—基础的GraphEmbedding方法

    在由物品组成的图结构上进行随机游走,产生大量的物品序列,然后将这些物品序列作为训练样本输入word2vec进行训练,得到物品的embedding

    可以看作是连接序列embedding和graph embedding的过渡方法

    随即游走的跳转概率:DeepWalk的跳转概率就是跳转边的权重占所有相关出边权重之和的比例

  • Node2vec—同质性和结构性的权衡

    调整随机游走权重的方法,使GraphEmbedding结果更倾向于网络的homophily或structural equivalence

    homophily(同质性):指的是距离相近节点的embedding应尽量近似

    structural equivalence(结构性):结构上相似的节点的embedding应尽量相似

    结构性:BFS

    同质性:DFS

    同质性相同的物品很可能是同品类、同属性或者经常被一同购买的商品

    结构性相同的物品则很可能是爆款,最佳凑单商品等拥有类似趋势或者结构性属性的商品

  • EGES—综合性GraphEmbedding方法

    DeepWalk生成的Graph Embedding基础上引入补充信息

    引入更多的补充信息(side info)来丰富embedding信息来源,解决冷启动问题

    融合多种embedding的方法,降低了某类信息缺失造成的冷启动问题

  • LINE、SDNE

Embedding与深度学习的结合

作为embedding层,高维稀疏->低维稠密

embedding的加入会拖慢整个神经网络的收敛速度,工程上放弃end2end的训练,用预训练embedding层的方式替代

embedding的预训练方法

embedding作为推荐系统召回层的方法

局部敏感哈希

k维的embedding空间中,物品总数为n,那么遍历计算物品和用户向量相似度的时间复杂度是O(kn)

简历kd-tree进行最近邻搜索是常用的快速最近邻搜索方法,时间复杂度可以降低到O(log2n)

局部敏感哈希基本思想:

让相邻的点落入同一个桶,这样在进行最近邻搜索时,仅需要在一个桶内,或相邻的几个桶内的元素中进行搜索即可。

如果保持每个桶中的元素个数在一个常数附近,就可以把最近邻搜索的时间复杂度降低到常数级别。