0%

《深度学习推荐系统》阅读笔记(二)

Embedding作用及应用

Embedding也是编码方式的一种,主要作用是将稀疏向量转换成稠密向量。

Embedding是深度学习的基础核心操作,主要有一下三个原因

1、推荐场景下会使用one-hot对类别和id进行编码,造成大量稀疏数据,神经网络无法很好地处理这种稀疏数据

2、Embedding本身是极强的特征向量,可以引入任何信息进行编码。

3、Embedding对物品、用户的相似度计算是常用的推荐系统召回技术。

所以Embedding对应的应用方向主要有一下三个:

  • 作为Embedding层,完成高维稀疏特征向量到低维稠密特征向量的转换
  • 作为预训练的特征向量,在与其他特征向量连接之后,一同输入深度学习网络进行训练
  • 计算物品和用户的相似度做Embedding

Word2Vec和Item2Vec

Word2vec主要用于计算词向量相似度,Item2Vec是Word2Vec在推荐上面的应用,只是两者优化目标不同。并且Item2Vec使用的物品序列是由用户历史行为产生的物品序列。

假设Word2Vec中有一个长为$T$的句子为$w_1,w_2,…,w_T$,其优化的目标为

而对于Item2Vec,w表示历史记录,其优化目标为:

Item2Vec摒弃了时间窗口,认为任意两个物品都是相关的,而不仅仅是时间窗口之类的物品对数和。

缺点:只能利用序列型数据,对网络化数据捉襟见肘

Graph Embedding

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

DeepWalk

主要思想是在由物品组成的图上随机游走,产生大量物品序列,然后将这些序列利用Word2Vec进行训练,得到物品的Embedding向量。

DeepWalk算法流程

1、基于用户行为构建关系图,例如用户先买A再买B,就会产生A到B的有向边,一次类推,将用户行为构建成物品关系图。

2、采用随机游走算法选择起始点,重新产生物品序列。

3、将产生序列输入到Word2Vec模型中

在DeepWalk算法流程中,唯一需要形式化定义的就是随机游走的跳转概率。假设遍历到节点$v_i$,那么跳转到其邻节点的概率是$v_j$的概率为:

其中$M_{ij}$是节点$v_i$到$v_j$的边的权重。

优点:简单

缺点:随机游走抽样性不强

Node2vec

通过调整随机游走权重的方法使Graph Embedding的结果更加趋向于体现网络的同质性或结构。网络的同质性指距离相近的节点的Embedding应尽量相似。结构性是指结构上相似的节点Embedding应尽量相似。

为了表达网络的结构性,游走更加倾向于BFS。对于BFS,不同的节点例如局部中心节点、边缘节点、连接性节点,其生成的序列节点数量和顺序必然不同。

为了表达同质性,游走通常采用DFS。DFS通常在一个大的集团内部游走,这就使得社区内部节点Embedding更加相似。

Node2vec主要是通过节点间的跳转概率空值游走时DFS和BFS的倾向

如图所示(图先欠着),Node2Vec算法从节点$t$跳到节点$v$,再从$v$跳节点$x$的概率为$\pi_{vx}=a_{pq}(t,x)\cdot w_{vx}$

其中$d_{tx}$表示节点$t$到节点$x$的距离,参数$p$和$q$共同控制这随机游走的倾向性,当$p$月小的时候,随机游走返回$t$的可能性越高,当$q$越小的时候,随机游走返回远方的可能性越大。

直观理解:同质性的物品很有可能是相似的物品或者经常被一同购买的物品,结构性可能是各类爆款、各品类的最佳凑单商品等拥有类趋势或结构性的商品。

优点:可以有效的挖掘不同的网络特征

缺点:需要较多的人工调参工作

EGES

Enhanced Graph Embedding with Side information基本思想是在DeepWalk生成Graph Embedding的基础上引入补充信息,以解决冷启动问题。

可以利用物品相同属性、相同类别等信息建立物品之间的边,生成基于内容的知识图谱,基于知识图谱生成的物品Embedding向量作为补充信息,并且采用平均池化将不同物品的Embedding平均起来,为了防止平均池化导致有效信息丢失,对每个Embedding向量进行加权(Enhance 的体现)。在实际加权的过程中,采用了$e^{a_j}$而不是$a_j$进行加权,主要原因有两点:一:避免权重为0,二:指数函数在梯度下降的过程中有良好的数学性。因此EGES更多的是工程上的尝试,缺乏学术上的创新。

局部敏感哈希

传统Embedding在做召回的时候,以为着要对所有物品进行Embedding进行遍历,效率比较低。在推荐系统中,通常物品总数动达几百万,因此会导致线上模型过程的巨大延迟。

局部敏感哈希则是为了解决这个问题,其基本思想是然相邻的点落入到同一个桶里面。

优点:解决利用Embedding作为推荐系统召回层的快速计算方法

缺点:存在小概率的最近邻遗漏的可能,需要进行较多的人工调参

坚持原创技术分享,您的支持将鼓励我继续创作!