本文分享一篇谷歌团队发表在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方法

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




个特征。每个特征




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






















,其中











并且
















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

























优点:简单

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

One-hot Hash Embedding方法

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




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




纬的one-hot特征编码(






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






















其中


















并且



























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

























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

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

One-hot Double Hash Embedding方法

对One-hot Hash Embedding的改进

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























































。其中







,







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







,







)或concat(







,







)等)。

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模型为特征




输出一个特征嵌入




.

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

  • One-hot Emb编码阶段将特征表示为one-hot的稀疏向量,解码阶段通过线性变换矩阵(可看作一层神经网络)得到该特征的唯一表示。

  • DHE编码阶段通过多个哈希函数将特征表示real-value的稠密向量, 解码阶段通过多层神经网络得到该特征的唯一表示。

DHE编码阶段(encoding)的设计

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

  • 唯一性(Uniqueness):每个特征值的编码应该是唯一的。

  • 等价相似性( Equal Similarity):只有唯一表示是不够的。例如二进制编码中:9表示为

















    ,8表示为:

















    ,7表示为

















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

  • 高维(High dimensionality):我们希望这些编码便于后续解码函数区分不同的特征值。由于高维空间通常被认为是更可分离的(例如内核方法),我们认为编码维度也应该相对较高。

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




    ),而且效率非常低。

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

























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






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




得到的












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






之间。

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

  • 均匀分布(Uniform Distribution):把












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

  • 高斯分布(Gaussian Distribution):把经过均匀分布后的向量转化为高斯分布











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

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

DHE解码阶段(decoding)的设计

decoding阶段把enconding阶段得到的




维向量映射为




维:




















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

DHE中考虑辅助信息

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


实验对比

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

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

  • DHE取得了和one-hot相近的性能,但参数了极大的减小了。

  • 其他方法虽然减小了参数量,但性能都下降了。

「 更多干货,更多收获 」【免费下载】2021年7月热门报告盘点&下载
2021年中国数据中台研究报告强化学习在招聘推荐冷启动中的应用实践如何利用NLP与知识图谱处理长句理解?【干货】电商知识图谱构建及搜索推荐场景下的应用推荐系统架构与算法流程详解
【实践】微博推荐算法实践与机器学习平台演进.pdf某视频APP推荐详解(万字长文)数据分析从理念到实操白皮书.pdf哔哩哔哩推荐策略分析与思考
全网最全5G资料包(1300余份免费下载,持续更新)全网最全数字化资料包关注我们

智能推荐

个性化推荐技术与产品社区

长按并识别关注

您的「在看」,我的动力????

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

  1. 深度学习推荐系统中各类流行的Embedding方法

    Embedding技术概览: 对其它Embedding技术不熟悉,可以看我的上一篇文章:深度学习推荐系统中各类流行的Embedding方法(上) Graph Embedding简介 Word2Vec和 ...

  2. 深度学习推荐系统中各类流行的Embedding方法(下)

    我的个人微信公众号: Microstrong 微信公众号ID: MicrostrongAI 微信公众号介绍: Microstrong(小强)同学主要研究机器学习.深度学习.推荐系统.自然语言处理.计算 ...

  3. 【北大-阿里巴巴】深度哈希方法综述,23页pdf,A Survey on Deep Hashing Methods

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 最近邻搜索是寻找数据库中的数据点,使它们到查询的距离最小,这是计算机视觉.推荐系统 ...

  4. 从原理到应用落地,一文读懂推荐系统中的深度学习技术

    作者丨gongyouliu.zandy 来源丨大数据与人工智能(ID:ai-big-data) 2016年DeepMind开发的AlphaGo在围棋对决中战胜了韩国九段选手李世石,一时成为轰动全球的重 ...

  5. 利用神经网络的embedding层处理类别特征

    类别特征在现实里十分常见,处理的方法也很多,最常见的思路是转为one-hot编码,当然这种处理方式比较粗暴,在许多算法里效果也不是很好.还有的处理方式寻找类别特征的最优切分,这个需要特定工具的支持,如 ...

  6. 推荐系统中基于深度学习的混合协同过滤模型

    近些年,深度学习在语音识别.图像处理.自然语言处理等领域都取得了很大的突破与成就.相对来说,深度学习在推荐系统领域的研究与应用还处于早期阶段. 携程在深度学习与推荐系统结合的领域也进行了相关的研究与应 ...

  7. 【回顾】推荐系统中基于深度学习的混合协同过滤模型

    近些年,深度学习在语音识别.图像处理.自然语言处理等领域都取得了很大的突破与成就.相对来说,深度学习在推荐系统领域的研究与应用还处于早期阶段. 携程在深度学习与推荐系统结合的领域也进行了相关的研究与应 ...

  8. 【推荐实践】腾讯推荐系统中的深度匹配模型

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 [免费下载]2022年6月热门报告合集从零开始了解推荐系统全貌机器学习在B站推荐系统中的应用实践微信视频号实时推 ...

  9. 搜索和推荐系统中的深度匹配模型

    文章作者:辛俊波 腾讯 高级研究员 编辑整理:DataFunTalk 导读:推荐系统和搜索应该是机器学习乃至深度学习在工业界落地应用最多也最容易变现的场景.而无论是搜索还是推荐,本质其实都是匹配,搜索 ...

最新文章

  1. 【Qt】pro中使用DEFINES来实现条件编译
  2. 关于FTP上传方法 (by Liang)
  3. 《星球大战:前线2》预告片发布
  4. 小憩,味一二 ——08年3月编程手札
  5. Java14:使用Java 14的新记录联接数据库表
  6. Python 爬虫利器一之 Requests 库的用法
  7. 未来10年,最具颠覆性的5大指数型技术(附应用建议)
  8. 高频Linux命令小结(新手向)
  9. Code Review
  10. 谷歌资助OSTIF审计8个重要开源项目,提升软件供应链安全
  11. js基础知识汇总03
  12. java batik 乱码_linux下batik-rasterizer.jar生成图片中文乱码
  13. php对接打码平台,易语言接入打码平台的方法
  14. Hexo博客新建文章以及Next主题多层级分类
  15. Centos 7安装Oracle12c RAC
  16. MySQL学习笔记[学习资料来源于B站黑马测试]
  17. 登录到接受邮件服务器,使用outlook2016配置imap 登陆到接收服务器(imap) 失败
  18. Promise ,Promise.all 和Promise.race的区别
  19. win10 GTX1050配置VS19+CUDA10.2+CUDNN
  20. 注册时验证用户名和密码是否合法

热门文章

  1. PHP、 Ruby、Python、Java、C++、C、Objective C——编程语言之禅
  2. Unitest框架的使用(一)准备工作,接口定义和Unittest方法
  3. Beyond Saliency map
  4. python matplotlib 图片模糊问题
  5. Detected that PyTorch and torch_sparse were compiled with different CUDA versions. PyTorch has CUDA
  6. 以太坊2.0合约质押新增1.81万ETH
  7. 去中心化保险协议InsurAce完成100万美元种子轮融资,DeFiance Capital领投
  8. 线下反欺诈风控实践要点|实操
  9. 资产分池中的量化实战
  10. asp.net mvc 路由检测工具