猜你喜欢
0、2021年10月份热门报告免费下载1、如何搭建一套个性化推荐系统?2、从零开始搭建创业公司后台技术栈3、全民K歌推荐系统架构、算法及后台设计4、微博推荐算法实践与机器学习平台演进5、腾讯PCG推荐系统应用实践6、强化学习算法在京东广告序列推荐场景的应用7、飞猪信息流内容推荐探索8、华为项目管理培训教材9、美团大脑系列之商品知识图谱的构建和应用

▐ 摘要

在深度推荐模型中,ID类特征的表示学习是至关重要的。其中,每一个特征值将会被映射成一个特征向量。对于同一个特征域的不同特征值,传统的特征表示学习方法会固定对应特征向量的维度大小。这样设置统一维度的模式对于表示学习以及对应向量存储而言,都是次优的。尽管,现有方法尝试从基于规则或网络搜索的角度去解决这个问题,这些方法需要额外的人工知识或者不易训练,且对于特征向量的热启动也不友好。因此,在本文中,我们提出一种新颖并且高效的特征维度选择方法。具体而言,我们在每一个表示层后面,设计了一个自适应孪生掩码层(AMTL)来去除每一个特征向量中不需要的维度。这样一种掩码的方式能够灵活的应用在各个模型中,很好的支持了模型特征向量的热启动。大量实验结果表明,所提方法在模型精度上相比于其他方法取得了最好的效果,且同时节省了60%存储开销。目前,该工作已被 CIKM 2021 接收。

论文下载:

https://arxiv.org/pdf/2108.11513.pdf

▐ 1. 背景

近年来,基于深度学习的推荐模型(DLRMs)被广泛的应用在各个 web 级系统中[1-4]。在 DLRMs 中,最重要的一个模块就是 embedding layer 。其将每一个ID类特征值映射到 embedding 空间,来对该特征进行表征学习。具体来讲,给定一个特征域,对应的词典大小为(即特征值的 unique 数),embedding layer 将每一个特征值通过 embedding 矩阵映射成一个 embedding 向量[1,2],其中为预定义的 embeddig 向量的维度。

然而,这样一种对同一特征域的所有特征值赋予相同 embedding 维度的 embedding 学习方法存在着两大问题:

  • 效果: 在很多应用中,同一特征域的不同特征值的出现频率大不相同。比如高频特征,我们需要给予更多的 embedding 维度使其能够表达更丰富的信息。同时对于低频特征,太大的 embedding 维度,反而会有过拟合的风险。因此对于所有特征值赋予固定的统一的 embedding 维度会低估 embedding 学习的能力。模型的效果处于一个次优状态。

  • 存储: 存储这样一个固定 embedding 维度的矩阵会带来巨大的存储开销[5,6,7]。需要一个更加灵活的 embedding 维度调整策略来减少存储开销。

现有的学习不固定 embedding 维度的方法,大体可以分为两类:

  • 基于规则的方法 [8]: 该方法采用人工规则的方式,根据特征的不同频率给予不同的 embedding 维度(如图1(b)所示)。这样一种方法最大的问题是强依赖于人工经验,并且设置的 embedding 维度较为粗糙,往往效果不佳。

  • 基于神经网络搜索(NAS)的方法[9,10,11,12]: 该方法预先设置候选维度,然后通过 NAS 的搜索为每一个特征值寻找一个合适的特征维度(如图1(c)所示)。这类方法需要精心设计搜索空间和训练特征,并且搜索空间经常被局限于离散的 embedding 维度候选集。

图1 不同方法之间的比较。

此外,上述两类方法均只能从头开始训练,不支持热启动。然而在现实的应用中,线上往往已经服务着一个训练了很久的深度学习模型。对应的 embedding 矩阵已经被训练的相对充分。如果能够利用该 embedding 矩阵蕴含的信息,就可以很好的热启动不固定维度的 embedding 学习。然而,现有的方法都不能够很好的支持这样一种热启动的模式。

在本文中,我们提出一种新颖并且高效的为每一个特征值选择合适的 embedding 维度的方法。其核心想法是在 embedding layer 之后增加一个 Adaptively-Masked Twins-based Layer (AMTL)。这样一个 layer 可以自适应的学习出一个掩码(mask)向量来去除掉对应 embedding 中不需要的维度。经过掩码后的embedding向量可以被看成是一个拥有自适应维度的 embedding,然后被送到下一层进行前向计算。这样一种方法可以带来三个好处:

  • embedding 的学习是高效的。因为 embedding 的维度可以在一个连续的整数空间进行选择,并且不需要额外的人工知识以及特定的搜索空间设计。

  • 模型的存储是高效的。因为 embedding 的维度被自适应的调整。

  • embedding 的初始化是高效的。对于 embedding 的热启动十分友好。

▐ 2. 方法

在这一章,我们将介绍所提的模型。

2.1 基本想法

首先,我们回顾一下最经典的 embedding layer,其可以被表达为:

其中是特征的one-hot向量, 是embedding矩阵。 是 的embedding向量。

接下来,我们定义特征值的掩码向量为,该向量需要满足:

其中是一个可学习的整数参数,受特征的频率影响。

然后,为了能够调整不同特征值的 embedding 维度,最基本的思想是用掩码向量去mask ,

其中 表示对应位置的元素乘. 由于在中下标大于的值都为0,mask后的可以看成是一个 embedding 维度自适应调整的向量,其中中前值被保留。

下面简单介绍下,是如何节省 embedding 存储以及自适应维度的 embedding 是如何使用的。

  • 节省存储。当存储时,我们可以只存没有 mask 的前个值,然后从存储中取出 embedding 的时候,可以直接在向量后面补0来复原。

  • 自适应维度的 embedding 使用。不像现有的方法[8-12]需要额外设计一个模块使得不同的 embedding 重新映射成统一的维度来适配接下来统一长度的 MLP 层,所提方法的通过补0拥有相同的维度,可以直接输入到 MLP 层。

2.2 自适应孪生掩码层

自适应孪生掩码(AMTL)层是用来为每个特征生成掩码向量。整体的结构见图2.

图2 AMTL结构图

2.2.1 输入和输出

在这一节,我们介绍 AMTL 的输入和输出:

  • 输入:由于需要能够随着特征的频率的改变而改变。因此为了使得 AMTL 能够拥有特征频率的信息,我们将特征的频率信息(比如一个特征在历史中出现的次数,出现频率的排名等等)作为输入(记为)。

  • 输出:AMTL 的输出是一个 one-hot 向量(叫做选择向量)来表示 。

2.2.2 结构

我们设计了一个孪生网络结构(即两个分支子网络)来生成。每一个分支网络叫做自适应掩码层(AML)。需要注意的是这两个分支网络的参数是不共享的。具体而言,每一个 AML 都是一个MLP

其中为特征频率向量, 和 是第层的网络参数, 是激活函数,  为 AML 的最后一层的输出。

设计成孪生网络的主要目的是:如果仅采用一个分支,那么整个网络参数的更新,由于输入数据不平衡原因,将会被高频的特征所主导。具体来讲,由于高频特征在样本中出现次数更多,那么 AML 的大部分输入特征都是高频特征,这样一来,AML 的网络参数将极大的会被高频特征影响,导致AML可能会盲目的倾向于选择大维度。因此,我们提出了一个孪生网络来解决这个问题,其中 h-AML 和 l-AML 分别被用来刻画高频和低频特征。这样以来 l-AML 的网络参数可以不受高频特征影响,给出公正的特征维度选择决断。

Weighted Sum. 然而,一个最大的问题是,我们很难去卡一个阈值来事先定义哪些是高频特征哪些是低频特征。因此,我们提出了一个软选择的策略。具体而言,我们定义为特征值在历史中出现的次数,然后将分别输入到 h-AML 和 l-AML 中去,得到两个网络的输出 和 。最后将这两个输出进行加权求和,即:

其中是和相关的权重,是一个归一化函数将变成一个正态分布来使得在左右分布。不然的话,没有,所有的将会都趋近于1. 通过加权求和,对于高频样本,会有一个较大的,对应的 将会由 主导,这时在梯度传播的时候,会主要更新 h-AML 的网络参数,反之亦然。这样以来,AMTL 能够自适应的调节 h-AML 和 l-AML 的梯度更新来解决样本不平衡问题。

然后我们对使用 softmax 函数

其中, 为特征选择不同维度的概率,比如为选择维度的概率。然后选择向量可以被表达为:

对应的掩码向量可以通过来生成:

其中为预定义的掩码矩阵, 当时, 反之 。

掩码后的 embedding 向量可以通过 来获取。需要注意的是,对于不同的特征域,需要不同的 AMTL 来进行特征维度选择。

2.2.3 Relaxation 策略

然而,由于生成中需要 argmax 操作,这样一个操作使得 AMTL 的学习变得不可微,无法直接使用梯度下降的策略。为了解决这样一个问题,我们利用 temperated softmax [13,14,15]来平滑, 具体来说, 的第个值可以被近似为:

其中是 temperature 超参。当时,近似就无限接近于精确解。由于 是一个连续的向量,没有引入不可微的过程,因此可以使用梯度下降算法来训练。因此,我们并不直接去求解离散的向量,而是用 来近似。

然而,这样的操作会使得训练和推断之间存在信息差。具体来讲,我们使用的是 作为训练,然后在推断阶段,使用的是离散向量。为了解决这样一种差异,受 Straight-Through Estimator (STE) [16]启发,我们重构为

其中 stop_gradient 使用来阻断梯度传播的。由于前向计算的过程不受 stop_gradient 影响,在该阶段(与推断时,所用向量一致)。在反向传播是,通过 stop_gradient 来避免不可微过程的梯度更新。

▐ 3. 实验

3.1 实验设置

  • 数据集

    • MovieLens

    • IJCAI-AAC

    • Taobao

  • Baseline

    • Standard:传统的固定维度的embedding(FBE)

    • 基于规则的:MDE [8]

    • 基于NAS的:AutoEmb [11]

3.2 CTR预估任务

我们通过 CTR 预估任务来比较不同方法的效果。如表1所示,不论是和传统的FBE方法,还是维度选择的 MDE 和 AutoEmb 方法相比,AMTL 在所有数据集均取得更好的效果。

表1 CTR预估任务结果

3.3 存储开销比较

在这里,我们比较不同方法的 embedding 存储开销。由于 embedding 存储开销与 embedding 的维度成正比,在这里,简单起见,我们比较了,不同方法下,特征 User ID 的平均维度。如表2所示,可以看到由于 AMTL 采用了更加灵活的特征维度选择方式,其最能节省存储开销。相比于 FBE,节省约60%。

表2 存储开销比较

3.4 Embedding热启动评估

这里,我们评估 AMTL 在 embedding 热启动上的优越性。具体讲,在 DLRM 中有两类参数,一个是 MLP 层的参数,一个是 embedding 层的参数。在热启动的设置中,由于 MDE 和 AutoEmb 都不支持 embedding 的热启动,所以我们仅用线上服务模型的 MLP 的参数来初始化 MDE 和 AutoEmb 的 MLP 层。对于 AMTL 和 FBE 而言,其 MLP 层和 embedding 层均可用线上模型初始化。热启动后的 CTR 效果如表3所示,可以看到,由于能够自然的支持 embedding 的热启动,AMTL 取得了极大的提升。这样一种性质,为 AMTL 在实际应用提供了极大的便利。

表3 热启动效果比较

3.5 Embedding维度评估

我们可视化了不同频率特征的embedding维度选择的平均大小,如图3(a)所示,到分别表示不同频率的特征集,下标越大,频率越大。可以看到,高频特征值倾向于选择高维度,低频特征选择低维度。表明,AMTL能够为不同频率的特征值选择合适的维度。

图3 Embedding纬度评估

3.6 消融实验

孪生结构的评估:我们分别比较 AMTL 和 AML 的效果。如表4所示,AMTL 能够取得更好的效果。同时我们也可视化了 AML 的维度选择,如表图3(b)所示,由于样本不平衡问题,低频特征盲目的选择了高维度。

STE有效性评估:我们设置了一个不采用STE的模型,记为 AMTL-nSTE 。通过比较 AMTL 和 AMTL-nSTE 来评估 STE 的有效性。如表4所示,采用了 STE 的 AMTL 取得了更好的效果。

表4 消融实验

3.7 时间开销比较

我们比较了不同模型之间的时间开销,如表5所示,AMTL 的方法相比于 FBE,在时间开销上略有增加。不过,需要指出的是,在推断阶段,我们可以直接存储 mask 后的 embedding 向量,而不需要再过 AMTL 层,以此来节省时间。

表5 时间开销比较

结语

AMTL 是我们团队在 embedding 优化上,从维度角度出发的一篇工作。同时也是继 FCN-GNN[17] 之后,在模型瘦身上的又一次探索。我们后续在此方向继续发力,也期待与从事相同领域的同学交流探讨。

「 更多干货,更多收获 」

2021年10月份热门报告盘点

推荐系统工程师技能树

美团大脑系列之:商品知识图谱的构建及应用

【干货】2021社群运营策划方案.pptx

大数据驱动的因果建模在滴滴的应用实践

联邦学习在腾讯微视广告投放中的实践如何搭建一个好的指标体系?如何打造标准化的数据治理评估体系?

【干货】小米用户画像实践.pdf(附下载链接)

推荐系统解构.pdf(附下载链接)

短视频爆粉表现指南手册.pdf(附下载链接)

推荐系统架构与算法流程详解某视频APP推荐策略详细拆解(万字长文)

关注我们

智能推荐

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

长按并识别关注

您的「在看」,我的动力												

深度学习的推荐模型(DLRMs):设计孪生掩码层高效学习维度自适应的Embedding...相关推荐

  1. CIKM 2021 | AMTL:设计孪生掩码层高效学习维度自适应的Embedding

    ▐ 摘要 在深度推荐模型中,ID类特征的表示学习是至关重要的.其中,每一个特征值将会被映射成一个特征向量.对于同一个特征域的不同特征值,传统的特征表示学习方法会固定对应特征向量的维度大小.这样设置统一 ...

  2. Altium Designer入门学习笔记4:PCB设计中各层的含义

    Altium Designer入门学习笔记4:PCB设计中各层的含义 阻焊层:solder mask,是指板子上要上绿油的部分:因为它是负片输出,所以实际上有solder mask的部分实际效果并不上 ...

  3. (pytorch-深度学习系列)模型参数的初始化与访问操作-学习笔记

    模型参数的初始化与访问操作 学习 如何初始化以及访问模型参数,以及如何在多层之间共享模型参数 首先定义一个含有单个隐藏层的多层感知机,使用默认方式初始化该模型的参数,并且进行一次前向计算: impor ...

  4. 工业界推荐系统必读论文:基于深度学习的推荐模型——DLRM

    作者丨纪厚业 单位丨北京邮电大学博士生 研究方向丨异质图神经网络及其应用 引言 推荐系统尤其是深度推荐系统已经在工业界得到了广泛应用,尤其是在电商场景下(如淘宝和京东的商品推荐).一个好的工业级推荐系 ...

  5. 50行代码实现的艺术签名设计微信小程序,轻松对接公众号,涨粉神器,学习赚钱两不误.微信公众号引流工具.html,python学习小项目.艺术签名设计微信小程序,前端学习小项目有趣的项目

    50行代码实现的艺术签名设计微信小程序,轻松对接公众号,涨粉神器,学习赚钱两不误 先看效果 这个小程序实现艺术签名设计的功能 对接到公众号之后,相当于给你的公众号添加了一个功能,别人关注公众号后,可以 ...

  6. Facebook 面向个性化推荐系统的深度学习推荐模型

    作者:王鸣辉 整理:Hoh Xil 来源:http://wd1900.github.io/#blog https://www.zhihu.com/people/wang-ming-hui-38/pos ...

  7. 深度推荐模型(EDRMs):面向Web级应用的基于二进制码的Hash Embedding

    猜你喜欢 0.如果你想参与进元宇宙,究竟应该采取怎样的策略?1.如何搭建一套个性化推荐系统?2.从零开始搭建创业公司后台技术栈3.全民K歌推荐系统架构.算法及后台设计4.微博推荐算法实践与机器学习平台 ...

  8. CCAI 2017 | 香港科技大学计算机系主任杨强:论深度学习的迁移模型

     CCAI 2017 | 香港科技大学计算机系主任杨强:论深度学习的迁移模型 原2017.07.22AI科技大本营 作者 | 贾维娣 7月23日,由中国人工智能学会.阿里巴巴集团 & 蚂蚁 ...

  9. CTR预估系列:DeepCTR 一个基于深度学习的CTR模型包

    在计算广告和推荐系统中,CTR预估一直是一个核心问题.无论在工业界还是学术界都是一个热点研究问题,近年来也有若干相关的算法竞赛.本文介绍一个基于深度学习的CTR模型包DeepCTR,具有简洁易用.模块 ...

最新文章

  1. AKAP95 regulates splicing through scaffolding RNAs and RNA processing factoAKAP95通过支架RNA和RNA加工因子调控剪接
  2. Sam Palmisano Reveals Secret Behind IBM's Century Of Success
  3. 精通Spring Boot—— 第二十一篇:Spring Social OAuth 登录简介
  4. express 对数据库数据增删改查
  5. mysql 存储过程调用权限消失的问题,恢复权限
  6. openshift_Openshift源中的高可用性Drools无状态服务
  7. OFFICE2019精简安装D盘(包括Word、PPT、Excel,可根据需要调整)+VISIO2019+Mathtype7.4.0完美下载安装教程
  8. php程序内存空间,php如何管理内存
  9. jqgrid 编辑列拿不到值_如何在DAX Stadio和Excel中返回表和度量值?
  10. Android事件传递机制【Touch事件】
  11. Amesim更改为中文
  12. 【长篇肝文7万字】模电/数电/单片机/计算机组成原理/电力电子常见笔试/面试题(合集)未完更新ing
  13. Microsoft Visual Studio 2010 注册码
  14. JavaScript之---嵌入JS代码
  15. 一点笔记,好记性不如烂笔头
  16. pd.DataFrame转换成list
  17. 说说JavaScript的原型链
  18. 《格鲁夫给经理人的第一课》
  19. 如何提升计算机的网络性能,技术丨怎样提升电脑性能?
  20. js网站服务器时间,js获取本地时间、服务器时间、记时

热门文章

  1. 韩国FSC公布新方案允许分离银行加密业务 以帮助小型交易所继续运营
  2. SAP License:SAP PFCG或SEARCH_SAP_MENU文本乱码
  3. 暑假周进度总结报告2
  4. SPOJ COT2 (树上莫队)
  5. extjs_10_自己定义combotree组件
  6. 「BZOJ2190」[SDOI2008] 仪仗队 - 欧拉函数
  7. kernel headers
  8. Repeater控件里面取不到CheckBox的值
  9. IMP-00017: 由于 ORACLE 错误 6550解决办法
  10. 建立任务程序直接执行网页(.net)