Fork me on GitHub

Embedding 在深度推荐系统中的 3 大应用方向

作为深度学习推荐系统模型和 CTR 模型中不可或缺的“基本操作”,如何强调 Embedding 技术的重要性都是不为过的。

这篇文章中,我们将 Embedding 技术单独抽取出来进行讲解。介绍在深度学习推荐系统中,Embedding 主要的三个应用方向:

  1. 在深度学习网络中作为 Embedding 层,完成从高维稀疏特征向量到低维稠密特征向量的转换;
  2. 作为预训练的 Embedding 特征向量,与其他特征向量连接后一同输入深度学习网络进行训练;
  3. 通过计算用户和物品的 Embedding 相似度,Embedding 可以直接作为推荐系统或计算广告系统的召回层或者召回方法之一。

一、深度学习网络中的 Embedding 层

由于高维稀疏特征向量天然不适合多层复杂神经网络的训练,因此如果使用深度学习模型处理高维稀疏特征向量,几乎都会在输入层到全连接层之间加入 Embedding 层完成高维稀疏特征向量到低维稠密特征向量的转换。典型的例子是微软的 Deep Crossing 模型和 Google 的 Wide&Deep 模型的深度部分。

图 1 微软 Deep Crossing 模型

图 2 Google Wide Deep 模型

图 1 中可以清晰的看到 Deep Crossing 模型中的 Embedding 层将每一个 Feature 转换成稠密向量,图 2Wide&Deep 模型中 Deep 部分的 Dense Embeddings 层同样将稀疏特征向量进行转换。广义来说,Embedding 层的结构可以比较复杂,只要完成高维向量的降维就可以了,但一般为了节省训练时间,深度神经网络中的 Embedding 层是一个高维向量向低维向量的直接映射(如图 3)。

null

图 3 稀疏 one hot 向量向稠密向量的映射

一般来说,推荐系统的输入向量中包含大量稀疏的 one hot 特征,图 3 展示了典型的稀疏向量向稠密 embedding 向量的最简单的 embedding 层结构。

用矩阵的形式表达 Embedding 层,本质上是求解一个 m(输入高维稀疏向量的维度) x n(输出稠密向量的维度)维的权重矩阵的过程。如果输入向量是 one-hot 特征向量的话,权重矩阵中的列向量即为相应维度 one-hot 特征的 embedding 向量

将 Embedding 层与整个深度学习网络整合后一同进行训练是理论上最优的选择,因为上层梯度可以直接反向传播到输入层,模型整体是自洽和统一的。但这样做的缺点同样显而易见的,由于 Embedding 层输入向量的维度甚大,Embedding 层的加入会拖慢整个神经网络的收敛速度。

这里可以做一个简单的计算。假设输入层维度是 100,000,embedding 输出维度是 32,上层再加 5 层 32 维的全连接层,最后输出层维度是 10,那么输出层到 embedding 层的参数数量是 32100,000= 3,200,000,其余所有层的参数总数是 (3232)4+3210=4416。那么 embedding 层的权重总数占比是 3,200,000 / (3,200,000 + 4416) = 99.86%。

也就是说 embedding 层的权重占据了整个网络权重的绝大部分。那么训练过程可想而知,大部分的训练时间和计算开销都被 Embedding 层所占据。正因为这个原因,Embedding 层往往采用预训练的方式完成。

二、Embedding 的预训练方法

通过上面对 Embedding 层的介绍,同学们肯定已经知道 Embedding 层的训练开销是巨大的。为了解决这个问题,Embedding 的训练往往独立于深度学习网络进行。在得到稀疏特征的稠密表达之后,再与其他特征一起输入神经网络进行训练。典型的采用 Embedding 预训练方法的模型是 FNN(如图 4)。

null

图 4 FNN 模型结构

FNN 利用了 FM 训练得到的物品向量,作为 Embedding 层的初始化权重,从而加快了整个网络的收敛速度。在实际工程中,直接采用 FM 的物品向量作为 Embedding 特征向量输入到后续深度学习网络也是可行的办法。

再延伸一点讲,Embedding 的本质是建立高维向量到低维向量的映射,而“映射”的方法并不局限于神经网络,实质上可以是任何异构模型,这也是 Embedding 预训练的另一大优势,就是可以采用任何传统降维方法,机器学习模型,深度学习网络完成 embedding 的生成。

null

图 5 GBDT+LR 模型 GBDT 完成 Embedding 过程

典型的例子是 2013 年 Facebook 提出的著名的 GBDT+LR 的模型,其中 GBDT 的部分本质上也是完成了一次特征转换,可以看作是利用 GBDT 模型完成 Embedding 预训练之后,将 Embedding 输入单层神经网络进行 CTR 预估的过程。

2015 年以来,随着大量 Graph Embedding 技术的发展,Embedding 本身的表达能力进一步增强,而且能够将各类特征全部融合进 Embedding 之中,这使 Embedding 本身成为非常有价值的特征。这些特点都使 Embedding 预训练成为更被青睐的技术途径。

诚然,将 Embedding 过程与深度网络的训练过程割裂,必然会损失一定的信息,但训练过程的独立也带来了训练灵活性的提升。举例来说,由于物品或用户的 Embedding 天然是比较稳定的(因为用户的兴趣、物品的属性不可能在几天内发生巨大的变化),Embedding 的训练频率其实不需要很高,甚至可以降低到周的级别,但上层神经网络为了尽快抓住最新的正样本信息,往往需要高频训练甚至实时训练。使用不同的训练频率更新 Embedding 模型和神经网络模型,是训练开销和模型效果二者之间权衡后的最优方案。

三、Embedding 作为推荐系统或计算广告系统的召回层

随着 Embedding 技术的进步,Embedding 自身的表达能力也逐步增强,利用 Embedding 向量的相似性,直接将 Embedding 作为推荐系统召回层的方案越来越多的被采用。其中 YouTube 推荐系统召回层(如图 6)的解决方案是典型的做法。

preview

图 6 YouTube 采用 Embedding 作为推荐系统召回层

我曾经在文章《重读 Youtube 深度学习推荐系统论文,字字珠玑,惊为神文》中介绍过了 YouTube 利用深度学习网络生成 Video Embedding 和 User Embedding 的方法。利用最终的 Softmax 层的权重矩阵,每个 Video 对应的列向量就是其 Item Embedding,而 Softmax 前一层的输出就是 User Embedding。在模型部署过程中,没有必要部署整个深度学习网络来完成从原始特征向量到最终输出的预测过程,只需要将 User Embedding 和 Item Embedding 存储到线上内存数据库,通过内积运算再排序的方法就可以得到 item 的排名。这大大加快了召回层的召回效率。

事实上,除了上述的三种主要的 Embedding 应用方向,业界对于 Embedding 的创新性研究不仅没有停止,而且有愈演愈烈之势,阿里的 EGES,Pinterest 的 GNN 应用,Airbnb 基于 Embedding 的搜索模型等大量表达能力非常强的 Embedding 方法的诞生,使 Embedding 本身就已经成为了优秀的 CTR 模型和推荐系统模型。作为计算广告和推荐系统领域的从业者,无论如何强调 Embedding 的重要性都不过分,也希望今后能与大家继续分享 Embedding 领域的前沿知识。

文章最后按惯例跟大家讨论两个问题,希望大家能分享自己的观点,讨论出真知:

  1. Embedding 技术跟传统的降维方法如 PCA 相比,有什么优势?
  2. 在推荐系统中,如果面对新的 Item,能否在不重新训练 Embedding 的前提下得到这个新 Item 的 Embedding 向量?大家有什么实践经验分享吗?

最后欢迎大家关注我的微信公众号:王喆的机器学习笔记wangzhenotes),跟踪计算广告、推荐系统等机器学习领域前沿。

想进一步交流的同学也可以通过公众号加我的微信一同探讨技术问题!

想查阅之前 Embedding 相关文章的同学也可以直接在公众号里输入关键词查询:

  • 关键词: word2vec "万物皆 Embedding,从经典的 word2vec 到深度学习基本操作 item2vec"
  • 关键词:graph embedding "深度学习中不得不学的 Graph Embedding 方法"
  • 关键词:embedding paper “Embedding 从入门到专家必读的十篇论文”
  • 关键词:airbnb embedding “Airbnb 实时搜索排序中的 Embedding 技巧”

本文地址:https://www.6aiq.com/article/1559924680404
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出