应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020( 二 )


定义1:
给定集合S的k个分区 P1,P2….PK , 这些分区是互补的 。 即对于集合S中任意两个元素a和b , 总是存在一个分区 , 在这个分区关系下的a和b的等价类集合不同 。 关于等价类可以参考知乎:离散数学中的等价类是什么意思?- laogan的回答 - 知乎
举个例子:
应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020文章插图
(我理解就是对于每两个不同元素比如1和4 , 总有一种分区关系 , 让1和4存在两个子集中 , 像1和4在第二种分区关系下 , 它们就在两个分区子集里)
给定分区的每个等价类都指定一个映射到embedding向量的“bucket” 。 因此 , 每个分区P对应于一个embedding table 。 在互补分区下 , 在每个分区产生的每个嵌入通过某种操作组合之后 , 每个索引被映射到一个不同的embedding向量 。 (上面那个例子就是三个embedding table , 第一个embedding table 有三行 , 后两个embedding table是两行)
2.3.互补分区的例子
【应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020】a.朴素互补分区
应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020文章插图
b.商余互补分区
应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020文章插图
c.一般商余互补分区
应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020文章插图
d.中国的余数分区
考虑一个大于或等于S的两两互质因式分解
应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020文章插图
(我理解就是任意两个不同分区size的最大公约数等于 1 )
这种分区可以根据需要自由定义 , 可以根据年份、品牌、类型等定义不同的分区 。 假设这些属性的唯一规范生成一辆独特的汽车 , 这些分区确实是互补的
2.4.COMPOSITIONAL EMBEDDINGS USING COMPLEMENTARY PARTITIONS
为每个分区创建一个embedding table:
应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020文章插图
分区中每个等价类中的元素映射到同一个embedding 向量上 。
对于某个特征取值x , 它的embedding为:
应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020文章插图
应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020文章插图
可以有很多整合方法:

  • 拼接
  • 相加
  • 追元素相乘(hadamard积)
下面证明一下 , 这样做对于每个特征取值都可以获得一个独一无二的embedding:
应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020文章插图
这很简单了 , (只要创建互补分区的时候 , 别让任意两个不同的特征取值在所有分区中的索引都相同就好了)
空间复杂度:
应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020文章插图
就是:
应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020文章插图
这里有个图很形象了:
应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020文章插图
2.5.Path-Based Compositional Embeddings
应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020文章插图
生成embedding的另一种方法是为每个分区定义一组不同的转换(第一个embedding table除外) 。 特别是 , 可以使用一个单独的分区来定义一个初始嵌入表 , 然后通过其他分区确定的函数组合来传递初始嵌入向量 。
应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020文章插图
W是embedding table,M是传递函数 。 这里的传递函数 , 也一起训练 。
这样的M可以是:
a.线性的
应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020文章插图
b.MLP
应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020文章插图
与基于操作的组合embedding不同 , 基于路径的组合embedding需要学习函数中的非embedding参数 , 这可能会使训练复杂化 。 内存复杂性的降低还取决于如何定义这些函数以及它们添加了多少附加参数 。 较小的参数情况下可以与基于操作的组合的空间复杂度相同 。
应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020文章插图
结果
3.1.实验设置:
选择两个模型 , DCN和Facebook内部的推荐模型 。
3.2.数据集:
Kaggle 的 Criteo Ad Kaggle Competition , 前6天训练 , 第7天预测 。