推荐系统里,你是怎么Embedding的?
平时大家是如何做推荐系统的Embedding的呢?是不是这样:
layers.Embedding(vocab_size, dim_size, dtype='float32')
如果是很高维度的类别特征呢?比如电商场景下的itemid,可以有上亿,然后可能会这样:
hash_itemid = hash(itemid, vocab_size)
layers.Embedding(vocab_size, dim_size, dtype='float32')(hash_itemid)
就这样吗?效果好吗?不知道,反正跑起来了,看着AUC也不错。
《Learning to Embed Categorical Features without Embeeding Tables for Recommendation》这篇论文告诉我们,别再瞎操作了,用Deep Hash Embedding(DHE)就对了,AUC也有保障。
看下之前embedding和DHE的大致对比:
对比下左右两边很容易看出两者Embedding的区别,左边就是传统的embedding,先one-hot再lookup,这里vocab有2百万,32维度,对于一个ID会映射成32维.右边就是用DHE的方式,先通过Identifier Vector映射成1024维度的向量,这个向量并不会接受梯度,然后这个向量会通过多个mlp映射成32维度.你能相信DHE只用了传统方式1/4的参数却达到了相同的AUC吗.?
为什么要用DHE?
其实在背景中已经说了一部分理由了,主要总结为以下3点:
- 字典大小过大:推荐系统中像是videoid,itemid,advertiserid都很大,不像NLP的bert,字典只有30K(因为bert用了word-piece),我们无法用NLP的方法对推荐领域的ID特征进行降维,也没办法直接Lookup一张巨大的词表.
- 动态输入:这里可能很多炼丹师没有切身体会,十方作为广告领域的炼丹师深有体会,bert可以一直用一张词表,因为word-piece后的word segment基本不会变化.但是像广告,广告主每天都在创建广告,id每天都在更新,与此同时很多广告id也被废弃(广告主停投).
- 数据分布不均:类别特征也总是分布不均的,长尾的特征对embedding极其不友好.
总结下来用DHE就对了.
Deep Hash Embedding
先看下什么是好的encoding?
唯一性(U):好的encoding对每一个不同的特征编码都要是唯一的.如果这个保证不了,后续的decoding就没办法区分不同的特征了,那模型效果也大打折扣.
相似性(E-S):有唯一性并不足够,相似特征编码后也要足够相似.比如二进制编码,8(1000)和9(1001)就比8(1000)和7(0111)看着相似,这就会给模型带来困扰,误导后面的decoding过程.
高维性(H-D):这个很容易理解,越高维区分度越高,极端情况就是one-hot了,区分度最强.
高熵性(H-D):众所周知,熵越高信息量越高,我们肯定不希望有哪一位编码是冗余的.
了解了什么是好的encoding,我们看看哪些encoding满足这些条件:
好吧,说来说去只有DHE满足了好的encoding的所有条件,所以DHE是如何编码的呢?
DHE先用k个全域哈希函数,把id映射成k维,每一维度都是1~m,这时候相当于把id映射成了k维度的INT,但是这样是不能够喂给Decoding(DNN)的,这里有两个方案:
1、Uniform Distribution:因为每一维都可以看作1~m均匀分布,所以直接把这k维度INT normalize了.
2、Gaussian Distribution:先用第一种方式,再用Box-Muller处理,把均匀分布转变为正太分布.
论文说实践证明两种效果都很好,所以大家用第一种,简单快捷.这里需要注意,k需要很大效果才好,论文里的k用了1024.
至于decoding(就是个DNN)就不过多介绍了,这里用了h层网络.需要注意的是,论文提到这种encoding-decoding方式很容易造成欠拟合,论文中的解决方案是把激活函数从ReLU换成了MISH(如下图),同时这里DNN增加dropout,正则化也不会有什么增益.
实验效果也不赘述了,可以参考原文,在AUC各项指标中,DHE都优于各种hash方法.
参考文献
1、Learning to Embed Categorical Features without Embeeding Tables for Recommendation. https://arxiv.org/pdf/2010.10784.pdf
推荐系统里,你是怎么Embedding的?相关推荐
- 深度学习推荐系统中各类流行的Embedding方法(下)
我的个人微信公众号: Microstrong 微信公众号ID: MicrostrongAI 微信公众号介绍: Microstrong(小强)同学主要研究机器学习.深度学习.推荐系统.自然语言处理.计算 ...
- 推荐系统里的那些坑儿
公众号 「炼丹笔记」 写在前面的话 大家好鸭,我是时晴,跟着师傅学习推荐算法炼丹有一段时间了,过程中遇到了很多奇奇怪怪的问题.我想很多和我一样初入推荐领域的同学,都多多少少有跟我同样的经历和体会.不管 ...
- 深度学习推荐系统中各类流行的Embedding方法
Embedding技术概览: 对其它Embedding技术不熟悉,可以看我的上一篇文章:深度学习推荐系统中各类流行的Embedding方法(上) Graph Embedding简介 Word2Vec和 ...
- 特征工程——推荐系统里的特征工程
原文:推荐系统里的特征工程 个性化推荐系统 Personalized recommender system 比其他的机器学习方法更依赖特征工程,所以我拿它来当作问题的背景,结合我之前做过的一个推荐系统 ...
- 【推荐系统】推荐系统里,你是怎么Embedding的?
作者:十方 平时大家是如何做推荐系统的Embedding的呢?是不是这样: layers.Embedding(vocab_size, dim_size, dtype='float32') 如果是很高维 ...
- 应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020
来源 | 深度传送门(ID: deep_deliver) Facebook团队考虑embedding的存储瓶颈,提出了一种新颖的方法,通过利用类别集合的互补分区为每个类别生成唯一的embedding向 ...
- 推荐系统里,可以用蒸馏吗?
无论是商品推荐,还是广告推荐,都大致可以分为召回,预排序(粗排),精排等阶段,如上篇<淘宝搜索中基于embedding的召回>的图所示: 召回最重要的就是要快,高召回率,对准确率可以不必要 ...
- 盘一盘推荐系统里值得一读的那些论文
工业中常用的推荐算法其实并不像论文中那么复杂,大多数的时候是稳定的模型.充分的特征工程和各种精妙的业务策略等.当然,如果你想,也可以做的很复杂....大部分时间读论文是在拓展思路并结合自身面临的问题去 ...
- 《深度学习推荐系统》学习笔记(5)——Embedding(论文)
Embedding在推荐系统中的应用 文章目录 Embedding在推荐系统中的应用 Word2vec (2013, Google) Item2vec (2006, 微软) DeepWalk (201 ...
最新文章
- GPTEE中的Storage API的使用
- hdu 2586(LCA + 节点间距离)
- 修正 010 Editor 模板文件 MachO.bt 的错误
- java restful接口测试_详解SpringBoot restful api的单元测试
- MySQL5.7 安装(Redhat)
- java 反射机制及其应用
- 程序员面试金典——7.2碰撞的蚂蚁
- AI相亲,让爱变得简单
- response.sendRedirect()和request.getRequestDispatcher().forward(request,reponse)的区别
- python爬虫设置代理ip_python爬虫使用代理ip或请求头的问题
- 【MATLAB】矩阵的建立与访问
- 蓝桥杯省赛 2021 杨辉三角形 python
- 每日一记之数据库事务
- mysql error 1213_webgame中Mysql Deadlock ERROR 1213 (40001)错误的排查历程
- 定制开发 app 的好处都有哪些?
- 如何修改网页小图标,浏览器页面上的图标。
- python 推箱子实验开发报告_推箱子游戏详细设计报告
- win10 android叹号,win10网络连接感叹号如何解决
- 对话系统中的中文自然语言理解 (NLU) 任务介绍
- js判断手机的横竖屏调整样式
热门文章
- Vue安装依赖npm install时报错问题解决方法
- redis哨兵集群的搭建
- IntelliJ IDEA常用快捷键小结
- 【Windows程序设计】Unicode简介
- JavaScript 面向对象编程实现
- vs code gitee使用_实用为王!来看看Gitee上五款新鲜出炉的WebUI组件
- 问题 | 执行pip install --upgrade --ignore-installed tensorflow出现Cannot open\Scripts\pip-script.py
- 北斗导航 | 利用模拟卫星星座估计GNSS接收机位置
- 安装 | CCS5.5安装包与licence以及安装教程
- 作文第一次用计算机350,第一次考试作文350字