面试中问到了这个问题,这里稍微汇总理解理解。
问题:品类做embeding之后,有context信息吗?
品类embeding生成向量后,品类映射的向量具有语义信息,相似品类的向量,计算相似度的结果会高一些。将品类类比于单词,理解起来会容易一些。参考资料[2]中,例子颜色和水果的embeding:
blue: (0.01359, 0.00075997, 0.24608, ..., -0.2524, 1.0048, 0.06259)
blues: (0.01396, 0.11887, -0.48963, ..., 0.033483, -0.10007, 0.1158)
orange: (-0.24776, -0.12359, 0.20986, ..., 0.079717, 0.23865, -0.014213)
oranges: (-0.35609, 0.21854, 0.080944, ..., -0.35413, 0.38511, -0.070976)
分别计算相似度,这里计算两个向量之间的夹角,使用余弦公式,可以得到夹角:
blue: (red, 47.6°), (yellow, 51.9°), (purple, 52.4°)
blues: (jazz, 53.3°), (folk, 59.1°), (bluegrass, 60.6°)
orange: (yellow, 53.5°), (colored, 58.0°), (bright, 59.9°)
oranges: (apples, 45.3°), (lemons, 48.3°), (mangoes, 50.4°)
比起lemons和oranges,apples和oranges在某种程度上是相似的(夹角更小)。
分析:Embedding 层的结构可以比较复杂,只要达到高维向量的降维目的就可以了,但一般为了节省训练时间,深度神经网络中的 Embedding 层往往是一个简单的高维向量向低维向量的直接映射。Embedding 的本质是建立高维向量到低维向量的映射,而 “映射” 的方法并不局限于神经网络,实质上可以是任何异构模型,这也是 Embedding 预训练的另一大优势,就是可以采用任何传统降维方法,机器学习模型,深度学习网络完成 Embedding 的生成。
embedding其实属于降维方法/无监督学习,或者说表征学习、网络特征学习,其目的是把网络中的每个节点映射到一个固定维度的空间中(的向量),同时这些向量还能反映点在网络中的关系。所以,word2vec、TransX、item2vec、user2vec这些方法能把具有某些关系的词/实体/商品/用户向量化,作为可计算的特征,提供给分类器预测器。
1.word2vector这个算法得到的词向量是包含语义信息的,语言模型n-gram或者bow模型,涉及到了词临近词的关系,因此具备context信息。其衍生的doc2vector、item2vector之类的算法生成的embeding也具有语义信息,他们使用的模型同word2vector。
2.FM得到的向量Vi,第i维特征的向量Vi时候,使用了全部第i维特征非零的样本进行学习,因此这个也具备context信息。
3.主题模型 LDA 可以给出每一篇文章下主题的分布向量,也可以看作是学习出了文章的 Embedding,这个包含语义信息。
总结:embeding得到的向量,具有context信息,并且可以迁移使用。
参考资料:
1.TensorFlow中文社区:http://www.tensorfly.cn/tfdoc/tutorials/word2vec.html
2.举例子:http://d0evi1.com/tensorflow/embedding/