DNN模型这几年在推荐领域已经逐渐成为新的事实标准模型了,相比传统的线性模型和树模型,它在各项指标上都有显著提升。关于DNN效果好的原因,通常认为是两个主要原因,即特征泛化能力强和特征组合表达能力强,在这两者中,后者又是依赖前者的,也就是说正是因为DNN对于特征具有的泛化能力才使其具有了进一步的特征表达能力。更具体地说,是因为DNN引入了embedding的特征泛化方式,以这种新式的特征单元结合MLP、RNN等模型结构,使得模型有了千变万化的能力。
相比各种DNN模型炫酷的结构,有一个更加本质的问题得到的关注却一直比较少,那就是为什么DNN能够提供更好的泛化能力,在这篇文章中我们就来对这个问题一探究竟。
本文分为四个部分,首先来回顾和明确一下泛化能力的定义,之后在此基础上讨论CTR预估场景下泛化的难点在哪里,然后讨论DNN模型如何缓解这些难点,最后来讨论DNN对于泛化问题的解决能力是否已经完美。
泛化能力是什么
要讨论泛化能力的好坏,先得知道究竟什么叫泛化能力,以及泛化能力与什么有关。机器学习系统的开发都可分为两个步骤,先是训练,再是预测,如果把训练比作平时的小测验,预测比作期末考试,泛化能力通俗一点说就是看期末考试的水平和小测验的水平差距大不大,如果差距不大,那么泛化能力就比较好,如果差距比较大,泛化能力就比较弱。这个道理相信大家都懂,而这里面有趣的问题在于,为什么会出现预测效果显著差于训练效果这种问题?又或者说,在什么情况下会出现这种问题?
这个问题可以运用反向思维和极限思维来思考,先看这个问题的反向问题:什么情况下预测效果和训练效果完全一致?这个答案就很简单了:当预测集合是训练集合的子集时,也就是预测集合中的每一条样本都在测试集中出现过,这里的样本指的是不带样本ID的、用特征表示的样本。这就好像期末考试考的全是平时测验的题目,而且平时测验的题目答案你还都知道,那么你一定会拿最高分,虽然这个最高分可能并不是满分。但在现实情况中这是不可能出现的场景,否则也用不着训练模型了,因为训练模型的作用就是预测没有见到过的状况。那么问题就变成了,在“预测集中一定会出现训练集中没有的样本”这样一个前提下,什么情况下预测集合上的预测效果是最好的?
这其中起到决定性作用的就是训练集中的特征分布与预测集中的特征分布是否一致。具体来说,对于一个数据集合,可将标签和展开后的特征放在一起看做一个多变量联合分布,即
CTR预估场景下的泛化难点
要做到训练集合预测集的特征同分布,对于不同类型的特征来说是具有不同等级的难度的。推荐和广告系统中的特征通常可分为三大类:
- 数值型。指的是原始取值就是连续数值型的特征,例如年龄、点击率、价格等连续数值类特征
- 低维离散型。指的是有少量可穷举