本文主要对Wide & Deep论文中的交叉积转换操作做一个理解备忘。
Cross product对应中文翻译是叉积,对应线性代数中的外积。但是Wide & Deep论文中所定义的cross-product transformation与线性代数中的外积运算并没有什么联系,论文中使用cross-product transformation来交叉(用户安装的app列表,用户浏览过的app列表)两个稀疏特征,其定义如下:
原文翻译:
其中
是一个布尔变量,如果第 个特征是第 个变换 的一部分,则为1,否则为0。对于二元特征,当且仅当组成特征(“性别=女性”和“语言=en”)全部为1时,跨积转换(例如,“AND(性别=女性,语言=en)”)为1,否则为0。这捕获了二元特征之间的相互作用,并向广义线性模型添加了非线性。
以下举例说明,假如google play中一共有3个app(分别为a,b,c),某用户下载的app列表为
每个维度分别代表了某个app是否被下载,而该用户的浏览列表为
将两个向量进行拼接,得到
该向量表示用户安装了a、b且浏览过a、b、c,该向量即为两个特征的交叉形式,其交叉所有可能为(每个维度都是独立的)
现在我们的目的是把这些可能转换成onehot向量,维度等于所有可能的数量(在案例中是32,假设可以不浏览就直接下载)。即
为了实现这个转换,我们需要依赖一个矩阵
它代表着用户安装了a、b且浏览过a、b、c,则
若换一个
则
仍然是为1,即任何向量
根据以上运算,转换矩阵C(32 x 6)可以写成
依赖于
但是值得注意的是,实现该转换不一定需要如此运算,可以通过提前建立可能性表,通过查表得到对应onehot向量。
参考链接
Comments | NOTHING