前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >KDD2021 | 推荐系统中利用深度哈希方法学习类别特征表示

KDD2021 | 推荐系统中利用深度哈希方法学习类别特征表示

作者头像
张小磊
发布2021-09-02 15:44:51
2.1K0
发布2021-09-02 15:44:51
举报

本文分享一篇谷歌团队发表在KDD’21的推荐系统文章:不使用嵌入表的方式获得类别特征的表征用于推荐系统[1]


本文结构组织如下:

  • 背景
  • 已有的类别特征嵌入方法
    • One-hot Full Embedding方法
    • One-hot Hash Embedding方法
    • 其他Emb方法
  • 提出的Deep Hash Embeddings (DHE)方法
    • Deep Hash Embeddings (DHE)结构
  • 实验对比

背景

类别特征(用户ID/物品ID)的学习在推荐系统中扮演着重要的作用,标准的方式是为每个类别特征分配一个嵌入向量(embedding vector)。然而这种方式在推荐系统中存在以下几个挑战:

  • 嵌入特征数量大(Huge vocabulary size):推荐系统通常包含几百万的用户ID/视频ID。
  • 特征的动态的( Dynamic nature of input):推荐系统中经常会出现全新的用户ID/视频ID。
  • 特征分布高度倾斜(Highly-skewed data distribution):推荐数据中低频特征的训练实例数量较少,因此对特征嵌入质量有显著影响。

这篇文章提出一个Deep Hash Embeddings (DHE)的方式来缓解以上问题。

已有的类别特征嵌入方法

One-hot Full Embedding方法

做法:这种方式把所有类别特征进行编号,假设共

n

个特征。每个特征

s

首先通过one-hot进行编码:

E(s)=\mathbf{b} \in\{0,1\}^{n}

,其中

b_{s}=1

并且

b_{j}=0(j \neq s)

;接着通过一个可学习的线性变换矩阵(可以看作一层神经网络,但没有bias项)得到对应的嵌入表示:

\mathbf{e}=F(\mathbf{b})=\mathbf{W}^{T} \mathbf{b}

优点:简单

缺点:embedding table随特征数量线性增长(即内存问题);无法处理新出现的特征

One-hot Hash Embedding方法

做法:为了解决One-hot Full Embedding中的内存问题,不少方法使用Hash函数的方式对类别特征进行映射,将原始的

n

维的one-hot特征编码映射为

m

纬的one-hot特征编码(

m < n

)。即相比One-hot Hash Embedding中编码部分变为:

E(s)=\mathbf{b} \in\{0,1\}^{m}

其中

s \in V, b_{H(s)}=1

并且

b_{j}=0(j \neq H(s))

H(\cdot)

是哈希函数。编码部分不变:

\mathbf{e}=F(\mathbf{b})=\mathbf{W}^{T} \mathbf{b}

优点:能有效缓解One-hot Full Embedding方式的内存问题

缺点:由于地址冲突导致多个ID共用一个嵌入表示的方式可能会伤害性能(因此有Double hash, frequecy Hash等方式进行缓解);

One-hot Double Hash Embedding方法

对One-hot Hash Embedding的改进

做法:使用两个哈希函数分别进行编码后得到两个特征嵌入(

\mathbf{e1}=F(\mathbf{b})=\mathbf{W}^{T} \mathbf{b1}

\mathbf{e2}=F(\mathbf{b})=\mathbf{W}^{T} \mathbf{b2}

。其中

\mathbf{b1}

,

\mathbf{b2}

由不同的编码函数得到。),再把得到的特征嵌入进行聚合(sum(

\mathbf{e1}

,

\mathbf{e2}

)或concat(

\mathbf{e1}

,

\mathbf{e2}

)等)。

One-hot Frequecy Hash Embedding方法

对One-hot Hash Embedding的改进

做法:对于高频的特征不适用哈希函数,仅对于低频特征使用哈希函数进行映射。

其他Emb方法

还有一些其他的embedding的方法可参考下列论文:

  • Bloom Emb:Bloom Embeddings for Sparse Binary Input/Output Networks. In RecSys. ACM. 2017.
  • Compositional Emb:Compositional Embeddings Using Complementary Partitions for Memory Efficient Recommendation Systems. In SIGKDD. 2020.
  • Hash Emb:Hash Embeddings for Efficient Word Representations. In NIPS. 2017

提出的Deep Hash Embeddings (DHE)方法

Deep Hash Embeddings (DHE)结构

DHE并不像其他方式一样显式的维护embedding table,而是每次由DHE模型为特征

s

输出一个特征嵌入

e

.

DHE将整个特征嵌入分为编码阶段(encoding)和解码阶段(decoding)。下图是One-hot Emb与DHE的整体区别,可以看到:

  • One-hot Emb编码阶段将特征表示为one-hot的稀疏向量,解码阶段通过线性变换矩阵(可看作一层神经网络)得到该特征的唯一表示。
  • DHE编码阶段通过多个哈希函数将特征表示real-value的稠密向量, 解码阶段通过多层神经网络得到该特征的唯一表示。
DHE编码阶段(encoding)的设计

一个好的encoding应该有哪些特性呢?

  • 唯一性(Uniqueness):每个特征值的编码应该是唯一的。
  • 等价相似性( Equal Similarity):只有唯一表示是不够的。例如二进制编码中:9表示为
H(9)=[1,0,0,1]

,8表示为:

H(8)=[1,0,0,0]

,7表示为

H(7)=[0,1,1,1]

。我们发现8的表示和9的表示更相似(和7的表示相比)。这可能会引入归纳偏差,让编码器以为 < 8和9 > 比 < 8 和7 >更相似,然而它们应该是等价相似的。

  • 高维(High dimensionality):我们希望这些编码便于后续解码函数区分不同的特征值。由于高维空间通常被认为是更可分离的(例如内核方法),我们认为编码维度也应该相对较高。
  • 高香农熵(High Shannon Entropy):香农熵(以bit为单位)测量一个维度中所携带的信息。从信息论的角度来看,高香农熵的要求是为了防止冗余维数。例如,一个编码方案可能满足上述三个属性,但在某些维度上,所有特征值的编码值是相同的。所以我们希望通过最大化每个维度的熵来有效地利用所有维度。例如,one-hot编码在每个维度上的熵都很低,因为对于大多数特征值来说,每个维度上的编码都是0。因此,one-hot编码需要非常高的维度(即
n

),而且效率非常低。

提出的DHE运用k个哈希函数把每个类别特征映射为一个k纬的real-value稠密向量。具体的,我们有

E^{\prime}(s) = \left[H^{(1)}(s), H^{(2)}(s), \ldots, H^{(k)}(s)\right]

where

H^{(i)}: \mathbb{N} \rightarrow\{1,2, \ldots, m\}

。也就是每个哈希函数会得到一个

0-m

之间的哈希下标值,所以特征

s

得到的

E^{\prime}(s)

纬度和哈希函数数量一致(在上面图中是1024个哈希函数),且其中的每个元素都在

0-m

之间。

然而,直接用上面得到的编码表示是不合适的,因此作者进行了两个变换操作来保证数值稳定性:

E(s)= \operatorname{transform}\left(E^{\prime}(s)\right)

  • 均匀分布(Uniform Distribution):把
E^{\prime}(s)

中的每个值映射到[-1,1]之间

  • 高斯分布(Gaussian Distribution):把经过均匀分布后的向量转化为高斯分布
\mathcal{N}(0,1)

这里是受到GAN网络的启发,用服从高斯分布的随机变量做GAN网络的输入。

作者在文章中验证了这样设计的enconding满足上面的四个期望条件。

DHE解码阶段(decoding)的设计

decoding阶段把enconding阶段得到的

k

维向量映射为

d

维:

\mathbb{R}^{k} \rightarrow \mathbb{R}^{d}

。如上面的图所示,作者用多层神经网络来实现,并尝试了各种激活函数以及考虑了batch normalization (BN)等训练技巧。

DHE中考虑辅助信息

对于物品ID/用户ID的特征嵌入,可以考虑拼接上它们属性(年龄、品牌等)的表示,然后输入到DHE解码阶段来生成最终的特征嵌入。


实验对比

作者首先对比了one-hot的方式以及多种hash的方法:

(OOV表示新特征,即out-of-vocab values for online learning)

  • DHE取得了和one-hot相近的性能,但参数了极大的减小了。
  • 其他方法虽然减小了参数量,但性能都下降了。

参考资料

[1]

Learning to Embed Categorical Features without Embedding Tables for Recommendation. KDD, 2021.: https://arxiv.org/abs/2010.10784v2

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与推荐算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 已有的类别特征嵌入方法
    • One-hot Full Embedding方法
      • One-hot Hash Embedding方法
        • One-hot Double Hash Embedding方法
        • One-hot Frequecy Hash Embedding方法
      • 其他Emb方法
      • 提出的Deep Hash Embeddings (DHE)方法
        • Deep Hash Embeddings (DHE)结构
          • DHE编码阶段(encoding)的设计
          • DHE解码阶段(decoding)的设计
          • DHE中考虑辅助信息
      • 实验对比
        • 参考资料
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档