06 | Embedding基础:所有人都在谈的Embedding技术到底是什么?
该思维导图由 AI 生成,仅供参考
什么是 Embedding?
- 深入了解
- 翻译
- 解释
- 总结
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-0458 - wolong老师您好,我这边有个问题。假如我们是做商品推荐,假如商品频繁上新,我们的物品库会是一个动态的,Embedding技术如何应对?
作者回复: 非常好的冷启动问题,你有什么想法,想先听听你自己的思考。
2020-10-14927 - 张弛 Conor计算向量间相似度的常用方法:https://cloud.tencent.com/developer/article/1668762
作者回复: 非常好的文章,很全面了,推荐大家学习。
2020-10-15225 - Geek_3c29c3老师,想问一下,业界利用embedding召回时: 1、是用用户embedding与item embedding的相似性召回还是先计算用户之间的相似性TOPN,然后生成一个user-item矩阵,看看最相似的用户买的多的item得分就更高?; 2、业界用embedding召回如何评价优劣?数据集会划分训练集和验证集吗,来验证购买率,召回率等指标;如果划分,是按照时间划分还是按照用户来划分啊?
作者回复: 1. 一般用前者 2.业界一般直接用线上AB test的结果来衡量embedding召回的优劣。离线指标可以做参考。如果做离线测试,一般采用时间划分,要避免引入未来信息。
2020-10-2312 - 夜枭王老师,关于item2vec有一些业务上的疑问,比如用户的点击item序列,这个item的候选集大概得是一个什么规模才能够线上推荐使用呢,目前在做的item量级比较大的话利用spark处理时耗时也会时间长,导致召回的文章并不能很快的更新,几乎是天级别的,不知道您做业务时是怎么权衡更新的频率和数据量这样一个关系的
作者回复: 这是个好问题。但我觉得你自己思考一下就应该清楚这个问题根本没有什么标准答案。 简单说一下自己的经验,确实embedding相关的模型训练起来都是比较慢的,所以item达到上百万之后,天级别更新是很多公司的选择。 至于如何提高更新频率。这当然是我们希望的,那就得做一些取舍了。做数据的sample?降低embedding的复杂度?或者对于新的物品想起一些规则性的手段生成embedding?只要是你自己想到的方法,都可以尝试。
2021-01-219 - Vinny老师你好,想请教您个可能与这张内容关联不太大的问题,我是搞nlp的,但是之前在知乎上面看推荐的 user embedding lookup表问题。 像 user id 可能有很多 上千万个,lookup 表的维度就会特别大,而且一些长尾的id 出现交互的次数过少,可能学不到什么好的embedding。 那么工业界是怎么解决这个问题的呢? 之前在知乎上面看一些笼统的说法,比如用hash 让多个id对应一个embdding之类的(但是没有解释这么做的合理性),想请教一下这方面有没有什么推荐的好论文,想去研究下 谢谢!
作者回复: 用hash 让多个id对应一个embdding之类的(但是没有解释这么做的合理性)其实没有任何合理性,就是单纯为了减少问题规模。 这是一个工程问题,应该不会有论文专门探讨这个问题。本质上是一个权衡利弊的过程,你想损失一些精度,就做一些截断和丢弃的处理,你想尽量为更多user生成embedding,不在乎训练时间和数据库空间,就保留他们。
2020-12-0229 - 张弛 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-1579 - 阳光明媚常用的相似度度量有余弦距离和欧氏距离,余弦距离可以体现数值的相对差异,欧式距离体现数值的绝对差异;例如,衡量用户点击次数的相似度,欧氏距离更好,衡量用户对各类电影的喜好的相似度,用余弦距离更好。
作者回复: 很好
2021-01-128 - Dikiwi相似性一般用欧式距离,cosine距离; 线上快速召回一般有用ANN,比如LSH算法进行近似召回。
作者回复: 赞,ANN的方法也是后续的课程内容。
2020-10-148 - 浣熊当家请问下老师,同样作为降维的手段,embedding和PCA的本质区别,可不可以理解为, embedding可以得到更为稠密的向量,并且降维后的各维度没有主次排序之分, 而PCA降维后的向量稠密度并不会增加, 而是得到主成分的排序。 所以如果为了提高模型计算的聚合的速度,就要选择embedding, 如果想降低模型的复杂度和防止过拟合,应该选择PCA。
作者回复: 从直观上可以这么理解。但是显然Embedding的优化空间要大得多,因为我们可以使用任何复杂网络生成这个embedding,所以embedding本身可以包含非常多的信息,不仅仅是降维这么简单的目的。 当然,降维肯定是Embedding的一个很重要的目的和理解的方式,但要清楚更多的embedding手段,灵活运用。
2020-10-2937