关于Embedding 操作的理解

2019-11-17  本文已影响0人  小新_XX

1. 什么是embedding

embedding的本质是用一个较低维度的向量来代替较高维度的原始特征。在推荐系统中,原始向量往往会用超高维的稀疏one-hot向量来表示,使用embedding可以用较低的维度(即embedding size)来表示高维稀疏的特征,方便进行后续的模型训练。

2. 如何实现

embedding.jpg

如图所示,embedding的操作可以视为一个全连接层,​\boldsymbol u是embedding之前的序列,​\boldsymbol v是embedding之后的序列。FC层的权重为​\boldsymbol W \in R^{6\rm{x}3},与​\boldsymbol u点乘之后得到embedding后的序列​.

另外在实际的NLP或者广告推荐场景中,向量 往往是经过one-hot处理的高维稀疏向量,只有一个或几个值为1,其他均为0. 由此可见向量和相乘,相当于将的某一行或某几行之和的向量取出来作为 embedding的结果。因此embedding可以看做成一个查表(look up)的操作,即用sparse id(即原向量​\boldsymbol u )来查找embedding weight(即​ ​\boldsymbol W)中特定的行。事实上,tensorflow中的embedding操作就是由tf.nn.embedding_lookuptf.nn.embedding_lookup_sparse两个函数来实现的。

关于TF中的embedding操作的详细过程图解,推荐一篇文章:Tensorflow中的Embedding操作详解 ,讲的十分清晰,这里就不再重复了。有疑问建议去看tf源码。

上一篇 下一篇

猜你喜欢

热点阅读