第四章
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)
局部敏感哈希基本思想:
让相邻的点落入同一个桶,这样在进行最近邻搜索时,仅需要在一个桶内,或相邻的几个桶内的元素中进行搜索即可。
如果保持每个桶中的元素个数在一个常数附近,就可以把最近邻搜索的时间复杂度降低到常数级别。