1.使用嵌入层Embedding的原因
- 使用 One-hot 方法编码的向量会很高维也很稀疏。假设我们在做自然语言处理(NLP)中遇到了一个包含2000个词的字典,当使用One-hot编码时,每一个词会被一个包含2000个整数的向量来表示,其中1999个数字是0,如果字典再大一点,这种方法的计算效率会大打折扣。
- 训练神经网络的过程中,每个嵌入的向量都会得到更新。我们会发现在多维空间中词与词之间有多少相似性,这使我们能可视化的了解词语之间的关系,不仅仅是词语,任何能通过嵌入层 Embedding 转换成向量的内容都可以这样做。
推荐邻域应用:矩阵分解技术就是学习物品和用户各自的Embedding,相关的文章有Matrix Factorization Techniques for Recommender Systems,这个模型获得了2006年NETFLIX大赛的冠军之后大火,另外继Word2Vec大火之后,有人将其思路应用于推荐系统,出现了Item2Vec。Word2Vec在某种程度上和Matrix Factorization的本质是相同的[1],[2]。
2.Embedding通俗理解
可以简单的理解为,将一个特征转换为一个向量。在推荐系统当中,我们经常会遇到离散变量,如userid、itemid。对于离散变量,我们一般的做法是将其转换为one-hot,但对于itemid这种离散变量,转换成one-hot之后维度非常高,但里面只有一个是1,其余都为0。这种情况下,我们的通常做法就是将其转换为embedding。embedding的过程是什么样子的呢?它其实就是一层全连接的神经网络,如下图所示:
假设一个离散变量共有5个取值,也就是说one-hot之后会变成5维,我们想将其转换为embedding表示,其实就是接入了一层全连接神经网络。由于只有一个位置是1,其余位置是0,因此得到的embedding就是与其相连的图中红线上的权重。
Word2Vec和Embedding的区别?
答:Embedding是一个普适的概念,或者任务。为区别one-hot的词向量,可翻译成词嵌入。Word2Vec是Google实现Embedding的一种具体的approach。因为速度快效果好名字fancy而广为人知。
作者:斤木
链接:https://www.zhihu.com/question/53354714/answer/134685676
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。