文章作者:张俊林 新浪微博 AI Lab 负责人

内容来源:AI前线

导读:推荐或者 CTR 预估任务有一个很突出的特点:存在海量稀疏特征。海量意味着数量巨大,稀疏意味着即使在很大的训练数据里,大量特征出现频次也非常低,这往往是由于引入了大量 ID 类特征带来的。对于 DNN 排序系统,是否能够找到好的特征 Embedding 表达方式,对于系统效果是至关重要的。

虽然说,如何更好地表征稀疏特征对于模型的泛化能力至关重要,但是,关于这块的研究,除了经典的特征 Onehot 到稠密 Embedding 映射模式外,之前并未太受到重视,最近一年开始逐步涌现出一些相关工作。对于序列行为中的 Item Embedding,拥有怎样性质的 Embedding 表达方式是较好的?对于非行为序列的推荐模型,关于特征 Embedding,大家常规采用的做法是:将特征的 Embedding Size 作为超参,通过手工测试来寻找好的 Embedding 大小。然而,是否有更好的方式?这些都是悬而未决的问题。

本文将介绍两个与稀疏特征 Embedding 相关的工作,一篇来自于阿里妈妈发表在 DLP-KDD2019 的论文,回答了第一个问题;另外一篇来自于谷歌,尝试解决第二个问题。

PS:DLP-KDD2020 研讨会集中探讨大规模稀疏条件下可落地的推荐广告等技术方案,目前正在征集稿件过程中,欢迎赐稿。

1. 用户行为序列中的 Item Embedding

用户行为是推荐系统中很有价值的可利用信息,一般我们可以用户实施过行为的一系列物品作为某个用户兴趣的表征,通常采用遵循时间序的 Item ID 队列作为行为序列的输入。由于工业界应用物品数量巨大,所以大多数 Item 是稀疏的。而我们关心的一个问题是:对于用户行为序列中的 Item ID 来说,拥有什么性质的 Embedding 表达方式是好的?Res-embedding for Deep Learning Based Click-Through Rate Prediction Modeling 回答了这个问题。

Res-embedding 首先在理论上证明了:神经网络 CTR 模型的泛化误差与 Item 在 Embedding 空间的分布密切相关,如果用户兴趣相近的各 Item,在 Embedding 空间中的 envelope 半径越小,也就是说,相同兴趣 Item 之间在 embedding 空间中越紧致,形成的簇半径越小,则模型泛化误差越小,也就是模型的泛化能力越好。这个结论是很有意义的。因为可以用这一结论,在训练过程中约束 Item Embedding,让其满足一定条件,以此来增加模型能力。在此结论基础上,Res-embedding 提出了一个较为通用的方法:对于相近用户兴趣的 Item Embedding,我们让它由两部分叠加构成,一个是属于这个兴趣内的所有 Item 共享的兴趣中心 Central Embedding,另外一个是 Item 自身的残差 Residual Embedding:

    Item Embedding=Central Embedding + Residual embedding

因为 Central Embedding 共享,是相同的,那么只要约束残差 Residual Embedding 的数值变动范围能在一个较小的范围内,自然就能保证达成上述目标,以此来泛化模型性能。下图比较形象地展示了这一做法:

由图中可看出,如果采取这种约束方式,与不做约束相比,可以保证相近兴趣 Item Embedding 形成的类簇具备较小的半径,由此增加模型泛化性能。

但是,我们无法事先获知某个 Item 隶属于哪个用户兴趣,如何获得 Item 与簇中心 Central Embedding 的隶属关系呢?Res-embedding 提出在用户共访 Item 图上的三种具体方法,包括一种 GNN 的方法,这里不展开讲了,感兴趣的同学可以参考原文。

2. 非行为序列类推荐任务中的特征 Embedding

对于 CTR 任务来说,存在海量稀疏特征,导致 DNN 排序模型中绝大多数参数是由特征 Embedding 构成的。那么,如何更有效地优化特征 Embedding 表达对于模型能力就至关重要。

我们先设想一个比较完美的特征 Embedding 分配方案,如果它存在,应该是这个样子的:对于高频出现的特征,能够分配给它较长的 Embedding 大小,使其能更充分地编码和表达信息。而对于低频的特征,则希望分配较短的 Embedding,因为对于低频特征,它在训练数据中出现次数少,如果分配了较长的 Embedding,更容易出现过拟合现象,影响模型泛化性能。而对于那些极低频的特征,基本学不了什么知识,反而会带来各种噪音,那么我们可以不分配或者让它们共享一个公有 Embedding 即可。

上面说的设想,只是一个期望,那么具体怎么做才能达到这点呢?谷歌在 Neural Input Search for Large Scale Recommendation Models(NIS)文中提出用强化学习来实施这一目标。具体而言,不同的 Embedding 分配方案,形成了搜索空间,它使用 ENAS 来在搜索空间中找到最佳的 Embedding 分配方案。细节不表,只说思路,下图展示的例子基本能够说明问题:

常规的特征 Embedding,一般是给所有特征一个固定大小的 Embedding Size,而为了能够更灵活地表达不同的 Embedding 分配方案,NIS 把特征 Embedding 二维空间切割成 Block,如图中 (a) 所示,纵坐标是特征维度,比如共有 10 Million 个特征,则划成 1M/2M/2M/2M/3M 几段,而横坐标则是 Embedding Size 维度,最长允许 256 bit,按照 64 bit 为单位,划分成 4 段。这样就形成了 Embedding 的二维 Block 结构,不同的 Block 组成,就构成了不同的 Embedding 分配方案。

常规的 Embedding 方案,一般 Embedding Size 是个超参,需要手工去尝试,而 NIS 也可以提供最佳 Embedding Size 的搜索,就是图中 (b) 所示,从左上角作为起点,划出各种红色矩形框,不同大小的矩形框就是不同的分配方案。纵坐标里红框外的特征共享同一个 Embedding,等价于没有给它分配,而分配了 Embedding 的所有特征,Embedding Size 是相同大小的。所以对于这种情况,ENAS 的决策点在于:哪些特征值得分配空间,以及最优的 Embedding Size 应该是多大。

尽管这样能够代替手工试探 Embedding Size,但是仍未能达成完美 Embedding 分配方案的需求,我们还希望高频有效特征,能够分配更长的 Embedding Size,而信息含量比较少的特征,则只分配较少 Embedding Size 甚至不分配。在这个 Block 框架下,如何达成这一点呢,参考图中 (c) 图,我们只需要在 b 的基础上,在列也就是 Embedding Size 维度,进行多步决策即可,首先对于第一列 64 Bit,划出一个矩形框,代表 1M+2M 的那些特征,分配了 64bit 的 Embedding 空间,每一列依次这样做决策,即可实现不同特征分配不同长度的目的。比如图中所示,进行了 4 步决策后,1M+2M 的特征,分配了 64*3 个 bit 的 Embedding Size,而剩余的特征,则分配了 64bit 的 Embedding Size。如此这般,即可实现我们希望达成的目标。

我们可以分析下,图中 (c) 方案的决策或者搜索空间有多大,很明显每一步有 5 种选择,有 4 个决策步骤,所以决策空间大小为 5 的 4 次方,就是说有这么多种分配方案,而 ENAS 通过某个分配方案在验证集数据下的 AUC 评价指标表现,以及方案耗费 Embedding 空间大小,来评估每个决策方案的优劣程度。我们肯定是鼓励验证集合指标表现好,耗费空间少的方案,而强化学习的 Reward 就是这个思路来设计的。通过这种模式,即可设计强化学习方案来寻找出最优的 Embedding 方案。而试验结果也说明了通过这种方式可以较明显地提升推荐模型的泛化能力。当然,应该有其它的具体实现方案,而很明显,如何实现上文所述的完美分配方案,是很值得探索的方向。

上面介绍了两种稀疏特征 Embedding 的优化思路,两者其实也是可以结合的。而探寻更好的稀疏表达方式,我相信对于 DNN 推荐系统来说至关重要,是值得花精力深入探索的。

今天的分享就到这里,谢谢大家。

「 更多干货,更多收获 」如何搭建一套个性化推荐系统?
【招聘内推】字节跳动核心团队招聘推荐算法工程师【报告分享】2020年中国知识图谱行业研究报告.pdf推荐系统工程师技能树【电子书分享】美团机器学习实践.pdf【白岩松大学演讲】:为什么读书?强烈建议静下心来认真看完
关注我们

智能推荐

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

长按并识别关注

一个「在看」,一段时光????

推荐系统中稀疏特征 Embedding 的优化表示方法相关推荐

  1. 浅谈微视推荐系统中的特征工程

    本文作者:hannahguo,腾讯 PCG 推荐算法工程师 在推荐系统中,特征工程扮演着重要的角色.俗话说数据和特征决定了机器学习算法的上限,而模型.算法的选择和优化只是在不断逼近这个上限.特征工程的 ...

  2. 张俊林:推荐系统排序环节特征 Embedding 建模

    每天给你送来NLP技术干货! 分享嘉宾:张俊林博士 新浪微博 编辑整理:刘一全 出品平台:DataFunTalk 导读:随着深度学习在推荐系统应用的发展,特征 Embedding 建模的重要性已经成为 ...

  3. 推荐系统中的特征工程

    关于推荐系统中的特征工程 在多数数据和机器学习的blog里,特征工程 Feature Engineering 都很少被提到.做模型的或者搞Kaggle比赛的人认为这些搞feature工作繁琐又不重要不 ...

  4. 关于推荐系统中的特征工程

    转载自:http://blog.jobbole.com/74951/ 在多数数据和机器学习的blog里,特征工程 Feature Engineering 都很少被提到.做模型的或者搞Kaggle比赛的 ...

  5. 「推荐系统中的特征工程」1. 特征工程基础知识介绍

    作者 | gongyouliu 编辑 | auroral-L 全文共6858字,预计阅读35分钟. 本章目录 一.特征的基本概念 二.特征工程介绍 三.特征工程的基本思路和方法 1. 根据不同数据类型 ...

  6. 推荐系统中常用的embedding方法

    简单来说,Embedding就是用一个低维的向量表示一个物体,可以是一个词,或是一个商品,或是一个电影等等. 在传统机器学习模型构建过程中,经常使用one hot encoding对离散特征,特别是I ...

  7. 搜集《ASP.NET中常用的26个优化性能方法》

    1. 数据库访问性能优化 a.数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接 ...

  8. ASP.NET中常用的26个优化性能方法(转)

    1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池( ...

  9. ASP.NET中常用的26个优化性能方法

    1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池( ...

最新文章

  1. 单词:readme emulate prompt cross-reference copyright align
  2. java 跟踪错误程序_Java异常处理 如何跟踪异常的传播路径
  3. boost::minimum_degree_ordering用法的测试程序
  4. hbase java admin_java连接hbase(一):Admin功能接口表管理
  5. ssh进入docker容器_如何通过SSH进入正在运行的容器
  6. 词汇的积累与遣词造句 —— 准确的表达、新鲜的词汇
  7. hdu 1874 畅通project续
  8. 《WCF技术内幕》翻译35:第2部分_第6章_通道:通道功能
  9. 2022年最新《谷粒学院开发教程》:6 - 整合SpringCloud
  10. .lrc 格式的歌词乱码,如何修改后正常显示
  11. “我与正大光明眼科集团共成长”主题演讲比赛精彩回顾
  12. 期货公司资金安全交易公平
  13. Java 实现数字全排列
  14. Lua-面试考题附答案解析(一)
  15. 鸿蒙系统手机电脑互传文件,【手机篇】巧借局域网,便捷实现手机电脑间的文件传输...
  16. Python使用Google多语言翻译Excel文档
  17. 9款好用的bi数据可视化工具
  18. android studio manifest merger failed,android studio 引用第三方工程Manifest merger failed
  19. Windows时间同步时出错|不能获取Internet时间 解决方法
  20. 计算机系统如何恢复出厂设置路由器,怎么让路由器恢复出厂设置?路由器怎么恢复默认设置?...

热门文章

  1. 比特币挖矿初创公司Layer1 CEO换任
  2. SAP License:SAP实施Roll out项目经验谈(二)
  3. 智慧楼宇管理后台、运维配置、设备台账、设备管理、维保统计、巡检统计、维修工单、报修统计、电子巡更、智能楼宇运营、运营后台、智慧社区、楼宇设备监控管理端、智能社区管理系统、楼宇运维管理系统
  4. Arcgis for android 100.4 getFieldType ()
  5. Django - 路由系统
  6. Caffarelli 关于自由边界正则性的论文C1
  7. centos运行C程序
  8. SpringBoot+MyBatis+Mysql 6.X 版本日期型数据获,时间错乱,jason序列化时间相差8小时问题...
  9. 5个节点hadoop安装(zookeeper)
  10. [翻译]禅与文件和文件夹组织的艺术 上