今天的博客主要参考了2018年KDD会议的一篇paper《Learning and Transferring IDs Representation in E-commerce》。主要讲了盒马鲜生Embedding的生成策略,因为盒马鲜生是一个比较新的平台,所以新用户和新商品的冷启动问题会比较突出,同时又由于盒马生鲜主打的是卖当季的生鲜,故新商品冷启动问题会持续存在。
从整体来看,作者指出生成的商品Embedding在盒马生鲜平台中可以有一下几个用处:
1 可以方便的计算商品之间的相似性,用来推荐系统的召回(粗排)环节;
2 可以利用方法用已知商品的Embedding向量生成未知商品的Embedding向量;
3 生成的商品向量可以在不同的平台之间进行迁移;
4 可以在统一平台中的不同任务中进行迁移。

我认为上图就体现了这篇paper Embedding策略的核心思想,即除了参考了每一个item ID包含的信息之外,同时将这个item进行了分解,在生成Embedding的过程中同时考虑了这个item ID对应的属性信息。其实这个思想并不新鲜,之前我的博客《使用knowledge-based方法提升词向量的生成质量》就是在生成词向量的时候考虑了每个词的属性——义元。只不过这篇paper考虑属性的方式不太一样而已。
首先我要说一下整个生成item Embedding的算法框架其实就是词向量算法skip-gram,这里每一个用户对于item的交互序列就相对于nlp中的sentence,每一个item就相当于nlp中的word。关于skip-gram的细节这里就不作为重点讲了,可以参考我之前的博客。这篇博客重点讲解一下如何融合item ID和其对应的属性来一起进行联合训练。

可以看出target item ID和context item ID把各自对应的所有相关属性展开进行关联,具体的关联有两个方式:p(IDs(itemj)∣IDs(itemi))和 p(itemi∣IDs(itemi))。
1 对于p(IDs(itemj)∣IDs(itemi))来说,其中IDs(itemi)=[id1(itemi),...idk(itemi),...idK(itemi)],k代表了item被分解对应的属性个数。那么就有p(IDs(itemj)∣IDs(itemi))=σ(∑k=1K(wjkejk‘)(wikeik)).∏s=1Sσ(−∑k=1K(wskesk‘)T(wikeik)),其中wik=Vik1,代表了属性i的权重,该值就是itemi对应的取值数量。
这一项的目的就是使用一个商品i的所有属性信息来预测某一个商品j以及其对应的所有属性信息。
2 对于p(itemi∣IDs(itemi))来说,p(itemi∣IDs(itemi))=σ(∑k=2Kwikei1TMkeik),其中参数ei1代表item ID向量,其他的2至k代表的是item的属性向量信息,参数Mk是一个为了适配不同属性维度的变换矩阵。
这一项的目的就是使用一个商品的属性信息来预测该商品的ID信息。这其实就是可以利用方法用已知商品的Embedding向量生成未知商品的Embedding向量的理论依据。
最终整个模型的损失函数如下:
L=N1∑n=1N(−logp(IDs(itemn+j)∣IDs(itemn))−αlogp(itemn∣ID(itemn))+β∑k=1K∣∣Mk∣∣2)。
在得到了商品的Embedding之后,用户的Embedding可以由该用户最近一段时间交互过的商品Embedding平均得到。之所以使用这么简单的方式而不是RNN等复杂的方式,是因为用户的行为会不断的方式变化,因为用户的Embedding需要频繁的更新,RNN等训练过程太过复杂,不太适合频繁更新的场景。
其实整个paper已经讲的差不多了,最后我来讲一下:可以利用方法用已知商品的Embedding向量生成未知商品的Embedding向量是如何做到的。
精髓就在一句话:虽然会有新的item产生,但是组成这些新的item的属性都是固定的,就像是世界万物都是由几百个基础元素组成的一样。那么既然这篇paper提出的方法可以联合训练item和其对应属性的Embedding,那么就可以使用这些item属性的Embedding来合成item Embedding的形式。
由于联合优化的目标有一项是max p(itemi∣IDs(itemi))
=> max ∑k=2Kwikei1TMkeik=ei1T(∑k=2KwikMkeik)。
由于max p(itemi∣IDs(itemi))
=> p(itemi∣IDs(itemi)) -> 1,
=> ei1T(∑k=2KwikMkeik)非常大
=> ei1≈∑k=2KwikMkeik
(PS:其实最后这一步约等我是不太理解的,因为向量内积大,不一定能得出两个向量完全一致的结论,前提必须是在两个向量模长一致的情况下)。
整体来说论文的思想并不是非常新的,但是合理的应用在自己的业务场景中,并取得了较好的效果,还是值得我们这些致力于AI技术落地化同行的学习。