端到端和非端到端的Embedding

说起 Embedding,我想你肯定不会陌生,自从深度学习流行起来之后,Embedding 就成为了深度学习推荐系统方向最火热的话题之一。

什么是 Embedding?

简单来说,Embedding 就是用一个数值向量“表示”一个对象(Object)的方法。这里的对象可以是一个词、一个物品,也可以是一部电影。

Embedding在推荐系统主要应用

  1. 在深度学习网络中作为Embedding层,完成从高维稀疏特征向量到低维稠密特征向量的转换;

  2. 作为预训练的Embedding特征向量,与其他特征向量连接后一同输入深度学习网络进行训练;

  3. 通过计算用户和物品的Embedding相似度,Embedding可以直接作为推荐系统或计算广告系统的召回层或者召回方法之一。

端到端(End-to-End)Embedding

端到端的方法是将Embedding层作为神经网络的一部分,在进行BP更新每一层参数的时候同时更新Embedding。

优势是:Embedding的训练成为一个有监督的方式,可以很好的与最终的目标产生联系,使得Embedding与最终目标处于同一意义空间。(端到端的方法可参考TensorFlow中的tf.nn.embedding_lookup方法。)

缺点是:于Embedding层输入向量的维度甚大,Embedding层的加入会拖慢整个神经网络的收敛速度。

例子是:微软的Deep Crossing模型与谷歌的Wide&Deep模型。

非端到端(预训练)Embedding

将训练集中的词替换成事先训练好的向量表示放到网络中,就是一个非端到端的过程。

优势是:预训练的方式得到的Embedding并不会对最终的任务和模型造成太大影响,但却能够提高效率节省时间。

缺点是:在推荐中要想用预训练的方式,必须保证Embedding的预训练和最终任务目标处于同一意义空间,否则就会造成预训练得到Embedding的意义和最终目标完全不一致。一个不相关的 Embedding 会给模型带来更大的负担,使得模型更慢地收敛。

总结

因此在推荐场景下,如果对于训练时间要求并不高的场景下,用端到端的训练方式可以得到更理想的效果。

此外需要注意的是,通过预训练的方式,将Embedding过程与深度网络的训练过程割裂,必然会损失一定的信息,但训练过程的独立也带来了训练灵活性的提升。

举例来说,由于物品或用户的Embedding天然是比较稳定的(因为用户的兴趣、物品的属性不可能在几天内发生巨大的变化),Embedding的训练频率其实不需要很高,甚至可以降低到周的级别,但上层神经网络为了尽快抓住最新的正样本信息,往往需要高频训练甚至实时训练。使用不同的训练频率更新Embedding模型和神经网络模型,是训练开销和模型效果二者之间权衡后的最优方案。



如果觉得这篇文章对你有所帮助,
请点一下或者,是对我的肯定和支持~


请使用浏览器的分享功能分享到微信等