深度学习推荐系统实战
王喆
Roku 推荐系统架构负责人,前 hulu 高级研究员,《深度学习推荐系统》作者
33298 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 44 讲
深度学习推荐系统实战
15
15
1.0x
00:00/00:00
登录|注册

06 | Embedding基础:所有人都在谈的Embedding技术到底是什么?

提取词向量的方法
模型的结构
样本的生成
Word2vec对Embedding技术的奠基性意义
Word2vec的原理
融合大量有价值信息的重要特征向量
处理稀疏特征的利器
Embedding在推荐系统中的应用
词向量的运算揭示词之间的关系
向量间的距离反映相似性
用数值向量表示对象的方法
计算Embedding向量的相似性的方法
Item2Vec:Word2vec方法的推广
经典的Embedding方法,Word2vec
Embedding技术对深度学习推荐系统的重要性
什么是Embedding?
课后思考
Embedding技术

该思维导图由 AI 生成,仅供参考

你好,我是王喆。今天我们聊聊 Embedding。
说起 Embedding,我想你肯定不会陌生,至少经常听说。事实上,Embedding 技术不仅名气大,而且用 Embedding 方法进行相似物品推荐,几乎成了业界最流行的做法,无论是国外的 Facebook、Airbnb,还是在国内的阿里、美团,我们都可以看到 Embedding 的成功应用。因此,自从深度学习流行起来之后,Embedding 就成为了深度学习推荐系统方向最火热的话题之一。
但是 Embedding 这个词又不是很好理解,你甚至很难给它找出一个准确的中文翻译,如果硬是翻译成“嵌入”“向量映射”,感觉也不知所谓。所以索性我们就还是用 Embedding 这个叫法吧。
那这项技术到底是什么,为什么它在推荐系统领域这么重要?最经典的 Embedding 方法 Word2vec 的原理细节到底啥样?这节课,我们就一起来聊聊这几个问题。

什么是 Embedding?

简单来说,Embedding 就是用一个数值向量“表示”一个对象(Object)的方法我这里说的对象可以是一个词、一个物品,也可以是一部电影等等。但是“表示”这个词是什么意思呢?用一个向量表示一个物品,这句话感觉还是有点让人费解。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Embedding技术在深度学习领域扮演着重要角色,通过将对象用数值向量表示,实现了对物品相似性和关系的抽象表达。Word2vec模型是Embedding技术的经典代表,通过CBOW和Skip-gram模型生成训练样本,实现对词的向量表达。该模型在自然语言处理领域广泛应用,并在推荐系统中发挥重要作用。Item2Vec是对Word2vec方法的推广,使Embedding方法适用于几乎所有的序列数据,对推荐系统具有重要意义。Embedding技术的重要性和Word2vec模型的原理为读者提供了深入了解和掌握Embedding相关技术和概念的重要基础。 Word2vec模型的结构是一个三层的神经网络,通过输入向量矩阵提取词向量,为推荐系统提供了重要特征。文章还提到了如何把词向量从Word2vec模型中提取出来,以及Word2vec对Embedding技术的奠基性意义。整体而言,本文介绍了Embedding技术在深度学习推荐系统中的重要性,以及Word2vec模型的结构和应用,对读者深入理解Embedding技术具有重要参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深度学习推荐系统实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(53)

  • 最新
  • 精选
  • 神经蛙
    最近刚好看了看Word2Vec,先列一下看了的资料: 1.Numpy实现的基础版 Word2vec https://github.com/YelZhang/word2vec_numpy/blob/495c2bce99fcdfe281bce0918a6765efd3179b07/wordtovec.py 2.公式推导 https://zhuanlan.zhihu.com/p/136247620 https://zhuanlan.zhihu.com/p/108987941 3.Google Word2vec c源码详解 https://blog.csdn.net/jeryjeryjery/article/details/80245924 https://blog.csdn.net/google19890102/article/details/51887344 https://github.com/zhaozhiyong19890102/OpenSourceReading/blob/master/word2vec/word2vec.c **理解有问题的话,麻烦大家指出来,互相进步~** 说一下看了的理解,Google的源码中Skip-gram,中间词预测周围词是一个循环,每次的优化目标词只有一个周围词中的一个。CBOW是将周围词的向量加和求平均作为上下文词向量,来预测中心词。 为什么会出现层次Softmax和负采样的优化方法? 需要先摆一下前向传播和反向传播公式: -- 略去了下标,以及矩阵乘法的先后。 词表长度V,Embedding长度N 输入:X(shape:(1,V)),输入到隐层矩阵W1(shape: V,N), 隐层到输出矩阵W2(shape: N,V) 前向传播: H=X * W1 (shape:1,N) U=H * W2 (shape:1,V) Y=softmax(U) 这里计算Softmax,参与计算的是V个元素。 反向传播: Loss= -sum(y * logY) Loss对W2偏导=(Y-1)*H Loss对W1偏导=(Y-1)*W2*x (由于X是one-hot向量,相乘后实际只有一行是非0) W1更新时只更新一行,W2更新时更新整个矩阵。 原因: 1.前向传播时计算softmax开销大 2.反向传播时更新W2矩阵开销大 于是就有了对Sofmax这里的优化。最近主要看了负采样。 负采样: 每次训练时,需要预测的目标词给分成2类。一类是目标词,另一类是非目标词(个数可人工指定)(负采样而来,采样词频高的词,TensorFlow里面是这样,与原论文不同)。此时就是个二分类问题,Loss就变了。变成了Sigmod的形式。这样在前向传播不用计算Softmax,反向传播时将每次更新的向量变成了很少的几个,而不是原始的V。降低开销。 关于W1和W2哪被用来做词向量,一般是W1。 这里我有点疑惑,用层次Softmax或者负采样优化方法会不会对W2的效果产生影响?因为更新时没有用到所有数据,所以用W1作为词向量?

    作者回复: 太棒了,很好的资料总结。 W1,W2那个问题,我觉得不会有影响,如果负采样对W2有影响的话,对W1也会有影响。

    2020-12-04
    58
  • wolong
    老师您好,我这边有个问题。假如我们是做商品推荐,假如商品频繁上新,我们的物品库会是一个动态的,Embedding技术如何应对?

    作者回复: 非常好的冷启动问题,你有什么想法,想先听听你自己的思考。

    2020-10-14
    9
    27
  • 张弛 Conor
    计算向量间相似度的常用方法:https://cloud.tencent.com/developer/article/1668762

    作者回复: 非常好的文章,很全面了,推荐大家学习。

    2020-10-15
    2
    25
  • Geek_3c29c3
    老师,想问一下,业界利用embedding召回时: 1、是用用户embedding与item embedding的相似性召回还是先计算用户之间的相似性TOPN,然后生成一个user-item矩阵,看看最相似的用户买的多的item得分就更高?; 2、业界用embedding召回如何评价优劣?数据集会划分训练集和验证集吗,来验证购买率,召回率等指标;如果划分,是按照时间划分还是按照用户来划分啊?

    作者回复: 1. 一般用前者 2.业界一般直接用线上AB test的结果来衡量embedding召回的优劣。离线指标可以做参考。如果做离线测试,一般采用时间划分,要避免引入未来信息。

    2020-10-23
    12
  • 夜枭
    王老师,关于item2vec有一些业务上的疑问,比如用户的点击item序列,这个item的候选集大概得是一个什么规模才能够线上推荐使用呢,目前在做的item量级比较大的话利用spark处理时耗时也会时间长,导致召回的文章并不能很快的更新,几乎是天级别的,不知道您做业务时是怎么权衡更新的频率和数据量这样一个关系的

    作者回复: 这是个好问题。但我觉得你自己思考一下就应该清楚这个问题根本没有什么标准答案。 简单说一下自己的经验,确实embedding相关的模型训练起来都是比较慢的,所以item达到上百万之后,天级别更新是很多公司的选择。 至于如何提高更新频率。这当然是我们希望的,那就得做一些取舍了。做数据的sample?降低embedding的复杂度?或者对于新的物品想起一些规则性的手段生成embedding?只要是你自己想到的方法,都可以尝试。

    2021-01-21
    9
  • Vinny
    老师你好,想请教您个可能与这张内容关联不太大的问题,我是搞nlp的,但是之前在知乎上面看推荐的 user embedding lookup表问题。 像 user id 可能有很多 上千万个,lookup 表的维度就会特别大,而且一些长尾的id 出现交互的次数过少,可能学不到什么好的embedding。 那么工业界是怎么解决这个问题的呢? 之前在知乎上面看一些笼统的说法,比如用hash 让多个id对应一个embdding之类的(但是没有解释这么做的合理性),想请教一下这方面有没有什么推荐的好论文,想去研究下 谢谢!

    作者回复: 用hash 让多个id对应一个embdding之类的(但是没有解释这么做的合理性)其实没有任何合理性,就是单纯为了减少问题规模。 这是一个工程问题,应该不会有论文专门探讨这个问题。本质上是一个权衡利弊的过程,你想损失一些精度,就做一些截断和丢弃的处理,你想尽量为更多user生成embedding,不在乎训练时间和数据库空间,就保留他们。

    2020-12-02
    2
    9
  • 张弛 Conor
    老师,有两个问题想请教一下: 1.为什么深度学习的结构特点不利于稀疏特征向量的处理呢? 2.既然输出向量是Multi-hot,那用softmax这种激活函数是否不太好呢?Softmax有输出相加和为一的限制,对于一对多的任务是不是不太合适呢?

    作者回复: 第一个问题非常好,我想你能够好好想一下梯度反向传播的过程,再回头看看这个问题。我相信你应该能得出自己的答案。 第二个也非常好,在训练的时候,确实要把最终的label做归一化,比如这样[0, 0.5, 0, 0.5, 0]。这是训练多分类模型的标准做法。另一种做法是把上一个样本拆成两个独立的onehot样本[0, 1, 0, 0, 0] 和 [0, 0, 0, 1, 0],这样训练也可以,就不存在你说的信息丢失的问题。

    2020-10-15
    7
    9
  • 阳光明媚
    常用的相似度度量有余弦距离和欧氏距离,余弦距离可以体现数值的相对差异,欧式距离体现数值的绝对差异;例如,衡量用户点击次数的相似度,欧氏距离更好,衡量用户对各类电影的喜好的相似度,用余弦距离更好。

    作者回复: 很好

    2021-01-12
    8
  • Dikiwi
    相似性一般用欧式距离,cosine距离; 线上快速召回一般有用ANN,比如LSH算法进行近似召回。

    作者回复: 赞,ANN的方法也是后续的课程内容。

    2020-10-14
    8
  • 浣熊当家
    请问下老师,同样作为降维的手段,embedding和PCA的本质区别,可不可以理解为, embedding可以得到更为稠密的向量,并且降维后的各维度没有主次排序之分, 而PCA降维后的向量稠密度并不会增加, 而是得到主成分的排序。 所以如果为了提高模型计算的聚合的速度,就要选择embedding, 如果想降低模型的复杂度和防止过拟合,应该选择PCA。

    作者回复: 从直观上可以这么理解。但是显然Embedding的优化空间要大得多,因为我们可以使用任何复杂网络生成这个embedding,所以embedding本身可以包含非常多的信息,不仅仅是降维这么简单的目的。 当然,降维肯定是Embedding的一个很重要的目的和理解的方式,但要清楚更多的embedding手段,灵活运用。

    2020-10-29
    3
    7
收起评论
显示
设置
留言
53
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部