只要对机器学习稍有涉猎,就会发现如今机器学习,无论是推荐、图像、语言等领域,随处可见embedding,可以说,在深度学习主宰机器学习领域的今天,万物皆可embedding。那么,什么是embedding,怎么对实体进行embedding,推荐领域里,embedding会怎么应用呢?且待本文一一道来。
embedding简介
embedding是什么
在本文之前的几篇文章里,曾经提及对用户或物品的embedding,实际上,embedding就是将实体的自然表达变化成向量化表达的方法。
将实体(用户、物品、图像等)表示为向量有什么用处呢?因为基于文字或者图片表达的实体,并不能够被计算机理解,因此它们彼此之间无法进行相互比较,而一旦转换成计算机可理解的向量,则能够计算它们彼此的距离,从而可以对他们进行相似度的计算了。
其实,在embedding之前,也有各种讲实体进行数值化的方法,比如LDA,plsa,tfidf等, embedding可以看作是将实体在高维数值空间进行映射,只要向量维度足够高,且映射方式合理,就能够很好地表达复杂的实体,因此embedding甫一出世,便获得了热烈的追捧。
embedding的起源及发展
说起embedding,就不得不提word2vec。word2vec是embedding的开天辟地之作,奠定了embedding的根基。对word2vec的学术理解可以参考Mikolov等人的文献[1]和[2]和[3](文献[3]是doc2vec,使用向量来表达整个文档)。
这里用白话简单介绍下word2vec:
word2vec构建了一个通过上下文来预测单词概率的任务。它的思路是:设置一个滑动窗口(比如5),当滑动窗口滑过文章时,出现在滑动窗口中的几个单词,掩盖住其中一个,通过其他单词来预测被掩盖的那个单词。

上图展示了经典的word2vec模型,对于V个单词,通过滑动窗口选中若干连续单词,这几个单词经过Hidden layer(隐藏层)后,再次映射到V个单词上,预测每个单词的概率,如果目标单词的概率最高,则说明这个网络可以很好地对单词进行预测,也就是隐藏层很好地表达了目标单词。
上面这个模型是word2vec中的CBOW方法,Mikolov还提出了另一个对word做embedding的方法,即Skip-gram。与Skip-gram的结构与CBOW完全一致,仅仅是任务不同,它会在滑动窗口中掩盖大多数单词,仅保留一个单词,用这个单词去预测其他被掩盖的单词。下图展示了这两种方法的区别。

因为在全量单词空间预测概率是个非常耗时的事情,因此word2vec分别使用了Hierarchical Softmax(层次化Softmax)和Negative Sampling(负采样)对目标进行近似处理,减少目标预测的任务量。其中Hierarchical Softmax使用哈夫曼树对单词进行编码,使得高频词更容易被采样到,从而从整体上减少对目标单词的预测任务。而Negative Sampling则是通过采样一定的负例(非目标单词),减少对全量负例的训练。
由于Hierarchical Softmax方法并不能很好地进行并行化,因此,当今的embedding模型中,大部分优化方式都是Negative Sampling,Hierarchical Softmax在深度学习中并不常见。以上两种优化方法包含在常用的机器学习训练包里,直接使用即可。
from gensim.test.utils import common_texts
from gensim.models import Word2Vec
model = Word2Vec(sentences=common_texts, vector_size=100, window=5, min_count=1, workers=4)
model.save("word2vec.model")
需要注意的是,虽然大量的深度学习会用到embedding的概念,但是作为embedding始祖的word2vec,本身却并不是深度学习模型,因为它的模型里仅包含一层隐层。
embedding的思路非常好地在物体的现实表达和数值化表达构建出一个桥梁。它的精髓在于构建一个合理的任务,在训练任务的过程中,得到向量化的副产品。作为范本,word2vec很好地展现了这一思路,那之后,embedding的应用便在机器学习领域如火如荼地兴起了。
推荐系统中的经典embedding模型
embedding的思路在推荐系统里非常有意义:若用户和物品能够在同一向量空间被训练出来,那么就可以计算用户和物品的相似性,从而为用户推荐了。
DSSM
DSSM全称为Deep Structured Semantic Model(深度结构化语义模型),是由微软研究院在2013年开发的,其出处见论文[3]。该模型原用于搜索引擎,用于对query(查询词)和文章的匹配。我们来回顾下整个DSSM算法:

DSSM网络如上图所示。它的原理比较简单,通过搜索引擎中的Query(Q)和Document(D)之间的曝光点击日志做样本,使用深度网络来训练模型,最终将Query和Embedding表达成128维的向量,并使用余弦距离来计算两者相似度,判断点击概率。该模型最终训练点击概率,同时也得到了副产物–128维向量,用于表达query和文档。
上图中,网络中几层向量含义如下:
- Term Vector:表示原始词向量,即500K的单词表。
- Word Hashing:该层是很独特的一层,论文中对原始词表进行了特殊处理,在英文语境下,采用letter-ngams来对单词进行切分,采用tri-gram(即三个字母一切分)的方式。比如#good#可以切分为(#go, goo, ood, od#)四个,由于英文只有26个字母,加上首尾标识#,其排列组合数目有限,可以对原始词表进行有效降维,因此本层维度被降至30k。需要注意的是,如果是中文语境,则使用单字即可(因为单字组成的词组数量反倒不可控)。
- 接下来的三层是特征提取层,是普通的DNN网络,每层公式如下:
l i = f ( W i l i − 1 + b i ) y = f ( W N l N − 1 + b N ) l_i = f(W_il_{i-1}+b_i) \\ y = f(W_Nl_{N-1}+b_N) li=f(Wili−1+bi)y=f(WNlN−1+b

本文深入探讨了embedding在机器学习,特别是推荐系统中的应用。从word2vec的起源和发展,到DSSM模型在推荐领域的应用,再到YouTube的深度学习网络,展示了embedding如何将实体转化为向量表示,用于计算相似性和推荐。同时,介绍了图embedding、ItemEmbedding以及在线召回机制,如Faiss和Milvus在高维向量检索中的作用。最后,强调了embedding在解决推荐系统挑战的同时,也存在新用户和新物品冷启动及可解释性问题。
最低0.47元/天 解锁文章
887

被折叠的 条评论
为什么被折叠?



