值得收藏! 深度学习推荐系统中各类流行的Embedding方法 (上)
Posted 将门创投
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了值得收藏! 深度学习推荐系统中各类流行的Embedding方法 (上)相关的知识,希望对你有一定的参考价值。
From: Microstrong
将门好声音第57期
Embedding方法概览
1. Embedding简介
Embedding,中文直译为“嵌入”,常被翻译为“向量化”或者“向量映射”。在整个深度学习框架中都是十分重要的“基本操作”,不论是NLP(Natural Language Processing,自然语言处理)、搜索排序,还是推荐系统,或是CTR(Click-Through-Rate)模型,Embedding都扮演着重要的角色。
1.1 什么是Embedding
形式上讲,Embedding就是用一个低维稠密的向量“表示”一个对象,这里所说的对象可以是一个词(Word2Vec),也可以是一个物品(Item2Vec),亦或是网络关系中的节点(Graph Embedding)。其中“表示”这个词意味着Embedding向量能够表达相应对象的某些特征,同时向量之间的距离反映了对象之间的相似性。
1.2 Embedding技术对于深度学习推荐系统的重要性
在深度学习推荐系统中,为什么说Embedding技术对于深度学习如此重要,甚至可以说是深度学习的“基本核心操作”呢?原因主要有以下四个:
(1)在深度学习网络中作为Embedding层,完成从高维稀疏特征向量到低维稠密特征向量的转换(比如Wide&Deep、DIN等模型)。 推荐场景中大量使用One-hot编码对类别、Id型特征进行编码,导致样本特征向量极度稀疏,而深度学习的结构特点使其不利于稀疏特征向量的处理,因此几乎所有的深度学习推荐模型都会由Embedding层负责将高维稀疏特征向量转换成稠密低维特征向量。因此,掌握各类Embedding技术是构建深度学习推荐模型的基础性操作。
(2)作为预训练的Embedding特征向量,与其他特征向量连接后,一同输入深度学习网络进行训练(比如FNN模型)。Embedding本身就是极其重要的特征向量。相比MF等传统方法产生的特征向量,Embedding的表达能力更强,特别是Graph Embedding技术被提出后,Embedding几乎可以引入任何信息进行编码,使其本身就包含大量有价值的信息。在此基础上,Embedding向量往往会与其他推荐系统特征连接后一同输入后续深度学习网络进行训练。
(3)通过计算用户和物品的Embedding相似度,Embedding可以直接作为推荐系统的召回层或者召回策略之一(比如Youtube推荐模型等)。Embedding对物品、用户相似度的计算是常用的推荐系统召回层技术。在局部敏感哈希(Locality-Sensitive Hashing)等快速最近邻搜索技术应用于推荐系统后,Embedding更适用于对海量备选物品进行快速“筛选”,过滤出几百到几千量级的物品交由深度学习网络进行“精排”。
(4)通过计算用户和物品的Embedding,将其作为实时特征输入到推荐或者搜索模型中(比如Airbnb的Embedding应用)。
2. Word2Vec-Embedding流行起点
关于Word2Vec的入门文章可以参考作者之前的一篇文章:。
2.1 基于负采样的Skip-gram
这里单独把基于负采样的Skip-gram模型再详细描述一次,是因为这个模型太重要了,稍后讲解的Item2Vec模型和Airbnb论文《Real-time Personalization using Embeddings for Search Ranking at Airbnb 》提出的模型都借鉴了基于负采样的Skip-gram模型的思想。所以,我们务必要把基于负采样的Skip-gram模型理解透彻。
Skip-gram模型是由Mikolov等人提出的。下图展示了Skip-gram模型的过程。该模型可以看做是CBOW模型的逆过程,CBOW模型的目标单词在该模型中作为输入,上下文则作为输出。
我们使用 来表示输入层中唯一单词(也叫中心词)的输入向量,所以这样的话,对隐藏层 的定义意味着 仅仅只是简单拷贝了输入层到隐藏层的权重矩阵 中跟输入单词 相关的那一行。拷贝公式得到:
在输出层,我们输出
个多项式分布来替代仅输出一个多项式分布。每个输出是由同一个隐藏层到输出层矩阵计算得出的:
这里 是第 个输出面上第 个单词; 是中心词对应的目标单词中的第 个单词; 是中心词(唯一输入单词); 是第 个输出面上第 个单元的输出值; 是第 个输出面上的第 个单元的输入。因为输出面共享同一权重矩阵,所以有:
是词汇表第 个单词的输出向量,可由 矩阵中的所对应的一列拷贝得到。
Skip-gram的损失函数可以写为:
由于语料库非常的大,直接计算中心词与词库中每个单词的softmax概率不现实。为了解决这个问题,Google提出了两个方法,一个是Hierarchical Softmax,另一个方法是Negative Sampling。Negative Sampling的思想本身源自于对Noise Contrastive Estimation的一个简化,具体的,把目标函数修正为:
是噪声分布 ( noise distribution )。即训练目标是使用Logistic regression区分出目标词和噪音词。另外,由于自然语言中很多高频词出现频率极高,但包含的信息量非常小(如'is' 'a' 'the')。为了平衡低频词和高频词,利用简单的概率丢弃词 :
其中 是 的词频, 的确定比较trick,启发式获得。实际中 大约在 附近。
推荐阅读Airbnb论文:
【1】Grbovic M, Cheng H. Real-time personalization using embeddings for search ranking at airbnb[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2018: 311-320.
2.2 关于Word2Vec几个问题思考
(3)Hierarchical Softmax方法中其实是做了一个二分类任务,写出它的目标函数?
答:
其中
是真实标签,
是模型预测的标签。
(4)Negative Sampling是一种什么采样方式?是均匀采样还是其它采样方法?
答:词典 中的词在语料 中出现的次数有高有低,对于那些高频词,被选为负样本的概率就应该比较大,反之,对于那些低频词,其被选中的概率就应该比较小。这就是我们对采样过程的一个大致要求,本质上就是一个带权采样问题。
(5)详细介绍一下Word2Vec中负采样方法?
答:先将概率以累积概率分布的形式分布到一条线段上,以 为例, 所处线段为 , 所处线段为 , 所处线段为 ,然后定义一个大小为 的数组,并把数组等距离划分为 个单元,然后与上面的线段做一次映射,这样我们便知道了数组内的每个单元所对应的字符了,这种情况下算法的时间复杂度为 ,空间复杂度为 , 越小精度越大。
3. Item2Vec-Word2Vec在推荐领域的推广
3.1 Item2Vec的基本原理
Item2Vec中把用户浏览的商品集合等价于Word2Vec中的word的序列,即句子(忽略了商品序列空间/时间信息)。出现在同一个集合的商品被视为positive。对于用户历史行为物品集合 ,Item2Vec的优化目标函数为:
我们再来看一下,Skip-gram是如何定义目标函数的。给定一个训练序列 ,模型的目标函数是最大化平均的log概率:
3.2 双塔模型-"广义"的Item2Vec
3.2.1 DSSM语义召回
-
首先特征输入层将Query和Doc(One-hot编码)转化为Embedding向量,原论文针对英文输入还提出了一种word hashing的特殊Embedding方法用来降低字典规模。我们在针对中文Embedding时使用Word2Vec类常规操作即可; -
经过Embedding之后的词向量,接下来是多层DNN网络映射得到针对Query和Doc的128维语义特征向量; -
最后会使用Query和Doc向量进行余弦相似度计算得到相似度 ,然后进行softmax归一化得到最终的指标后验概率 ,训练目标针对点击的正样本拟合 为 ,否则拟合 为 ;
3.2.2 双塔系列模型总结
Reference
正式启动啦!
关于我“门”
将门是一家以专注于发掘、加速及投资技术驱动型创业公司的新型创投机构,旗下涵盖将门创新服务、将门技术社群以及将门创投基金。
将门成立于2015年底,创始团队由微软创投在中国的创始团队原班人马构建而成,曾为微软优选和深度孵化了126家创新的技术型创业公司。
如果您是技术领域的初创企业,不仅想获得投资,还希望获得一系列持续性、有价值的投后服务,欢迎发送或者推荐项目给“门”:
bp@thejiangmen.com
微信:thejiangmen
bp@thejiangmen.com
点击“❀在看”,让更多朋友们看到吧~
以上是关于值得收藏! 深度学习推荐系统中各类流行的Embedding方法 (上)的主要内容,如果未能解决你的问题,请参考以下文章