推荐系统遇上深度学习(一一八)-[华为]一种CTR预估中连续特征的Embedding学习框架

今天分享一篇华为在连续特征处理方面的工作,提出了一种高模型容量、端到端训练、每个特征值具有单独embedding的框架,称作AutoDis,一起来学习一下。

1、背景

目前大多数的CTR模型采用的是Embedding和Feature Interaction(以下简称FI)架构,如下图所示:

当前大多数的研究主要集中在设计新颖的网络架构来更好的捕获显式或隐式的特征交互,如Wide & Deep的Wide部分、DCN中的CrossNet、DIN中的注意力机制等等。而另一个主要的部分,即Embedding模块同样十分重要,出于以下两个原因:

1)Embedding模块是FI模块的上游模块,直接影响FI模块的效果;
2)CTR模型中的大多数参数集中在Embedding模块,对于模型效果有十分重要的影响。

但是,Embedding模块却很少有工作进行深入研究,特别是对于连续特征的embedding方面。接下来,首先简单介绍下CTR模型中连续特征几种常见的处理方式,然后对论文提出的AutoDis框架进行介绍。

2、连续特征处理

CTR预估模型的输入通常包含连续特征和离散特征两部分。对于离散特征,通常通过embedding look-up操作转换为对应的embedding;而对于连续特征的处理,可以概括为三类:No Embedding, Field Embedding和Discretization(离散化)。

2.1 No Embedding

第一类是不对连续特征进行embedding操作,如Wide & Deep直接使用原始值作为输入,而在Youtube DNN中,则是对原始值进行变换(如平方,开根号)后输入:

这类对连续特征不进行embedding的方法,由于模型容量有限,通常难以有效捕获连续特征中信息。

2.2 Field Embedding

第二类是进行 Field Embedding,也就是同一field(一个连续特征可以看作是一个field)的特征无论取何值,共享同一个embedding,随后将特征值与其对应的embedding相乘作为模型输入:

由于同一field的特征共享同一个embedding,并基于不同的取值对embedding进行缩放,这类方法的表达能力也是有限的。

2.3 Discretization

Discretization即将连续特征进行离散化,是工业界最常用的方法。这类方法通常是两阶段的,即首先将连续特征转换为对应的离散值,再通过look-up的方式转换为对应的embedding。首先探讨一个问题,为什么需要对连续特征进行离散化呢?或者说离散化为什么通常能够带来更好的效果呢?关于这个问题的探讨,可以参考知乎问题:

https://www.zhihu.com/question/31989952/answer/54184582

总的来说,将连续特征进行离散化给模型引入了非线性,能够提升模型表达能力,而对于离散化的方式,常用的有以下几种:

1) EDD/EFD (Equal Distance/Frequency Discretization):即等距/等频离散化。对于等距离散化,首先基于特征的最大值和最小值,以及要划分的桶的个数Hj,计算桶之间的间距:

随后基于特征值、最小值以及间距计算对应的分桶:

对于等频离散化,则是基于数据中特征的频次进行分桶,每个桶内特征取值的个数是相同的。

2)LD (Logarithm Discretization):对数离散化,其计算公式如下:

3) TD (Tree-based Discretization):基于树模型的离散化,如使用GBDT。具体的做法可以参考论文中的提及的相关工作,这里不进行具体介绍。

尽管离散化在工业界广泛引用,但仍然有以下三方面的缺点:
1)TPP (Two-Phase Problem):将特征分桶的过程一般使用启发式的规则(如EDD、EFD)或者其他模型(如GBDT),无法与CTR模型进行一起优化,即无法做到端到端训练;
2)SBD (Similar value But Dis-similar embedding):对于边界值,两个相近的取值由于被分到了不同的桶中,导致其embedding可能相差很远;
3)DBS (Dis-similar value But Same embedding):对于同一个桶中的边界值,两边的取值可能相差很远,但由于在同一桶中,其对应的embedding是相同的。

上述的三种局限可以通过下图进一步理解:

2.4 总结

上述三种对于连续特征的处理方式的总结如下表所示:

可以看到,无论是何种方式,都存在一定的局限性。而本文提出了AutoDis框架,具有高模型容量、端到端训练,每个特征取值具有独立表示的特点,接下来对AutoDis进行介绍。

3、AutoDis介绍

为了实现高模型容量、端到端训练,每个特征取值具有独立表示,AutoDis设计了三个核心的模块,分别是meta- embeddings、automatic discretization和 aggregation模块,其整体架构如下图所示:

接下来,对三个核心模块进行分别介绍。

3.1 Meta-Embeddings

为了提升模型容量,一种朴素的处理连续特征的方式是给每一个特征取值赋予一个独立的embedding。显然,这种方法参数量巨大,无法在实践中进行使用。另一方面,Field Embedding对同一域内的特征赋予相同的embedding,尽管降低了参数数量,但模型容量也受到了一定的限制。为了平衡参数数量和模型容量,AutoDis设计了Meta-embeddings模块。

对于第j个域的连续特征,对应Hj个meta-embeddings(Hj可以看作是分桶的个数,每一个桶对应一个embedding)。对于连续特征的一个具体取值,则是通过一定方式将这Hj个embedding进行聚合。相较于Field Embedding方法,每一个Field对应Hj个embedding,提升了模型容量,同时,参数数量也可以通过Hj进行很好的控制。

3.2 Automatic Discretization

Automatic Discretization模块可以对连续特征进行自动的离散化,实现了离散化过程的端到端训练。具体来说,对于第j个连续特征的具体取值xj,首先通过两层神经网络进行转换,得到Hj长度的向量:

那么,该特征取值被分到第h个桶的概率计算如下:

传统的离散化方式是将特征取值分到某一个具体的桶中,即对每个桶的概率进行argmax,但这是一种无法进行梯度回传的方式。而上式可以看作是一种soft discretization,通过调节温度系数𝜏,可以达到近似argmax的效果,同时也可以实现梯度回传,实现了离散化过程的端到端训练(这种方式也称为softargmax,最近工作中也经常使用)。

对于温度系数𝜏,当其接近于0时,得到的分桶概率分布接近于one-hot,当其接近于无穷时,得到的分桶概率分布近似于均匀分布。对于不同的连续特征,特征取值分布是不同的,那么应该如何对不同特征选择合适的温度系数𝜏呢?论文给出了如下的方法,将连续特征的分布情况和特征的具体取值进行综合考虑,同时将温度系数𝜏的计算过程与模型训练进行结合:

上式中,nj是第j个连续特征的统计值,包括均值和累积概率分布的统计值(我理解的是累积概率为某个值如0.1或0.2时对应的连续特征取值)

3.3 Aggregation Function

根据前两个模块,已经得到了每个分桶的embedding,以及某个特征取值对应分桶的概率分布,接下来则是如何选择合适的Aggregation Function对二者进行聚合。论文提出了如下几种方案:

1)Max-Pooling:这种方式即hard selection的方式,选择概率最大的分桶对应的embedding。前面也提到,这种方式会遇到SBD和DBS的问题。
2)Top-K-Sum:将概率最大的K个分桶对应的embedding,进行sum-pooling。这种方式不能从根本上解决DBS的问题,同时得到的最终embedding也没有考虑到具体的概率取值。
3)Weighted-Average:根据每个分桶的概率对分桶embedding进行加权求和,这种方式确保了每个不同的特征取值都能有其对应的embedding表示。同时,相近的特征取值往往得到的分桶概率分布也是相近的,那么其得到的embedding也是相近的,可以有效解决SBD和DBS的问题。

3.4 模型训练

模型的训练过程同一般的CTR过程相似,采用二分类的logloss指导模型训练,损失如下:

最后再来总结一下整个AutoDis框架,Meta-Embeddings模块将每个连续特征赋予Hj个分桶,每个分桶对应一个单独的embedding;Automatic Discretization模块实现了端到端的分桶,每个具体的特征取值得到分桶的概率分布; Aggregation Function模块通过Weighted-Average的方式得到每个特征取值对应的embedding,并有效解决SBD和DBS的问题。

4、实验结果及分析

最后来看一下实验结果,离线和线上均取得了不错的提升:

那么,AutoDis是否有效解决了SBD和DBS的问题呢?实验结果也印证了这一点:

好了,论文就介绍到这里,本文不仅对于连续特征的处理进行了比较详尽的总结,还提出了一种端到端的连续特征离散化处理方式,比较值得阅读~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容