问题1:Memorization can't generalize?
由wide&deep文中定义:
Memorization can be loosely defined as learning the frequent co-occurrence of items or features and exploiting the correlation available in the historical data.
Generalization, on the other hand, is based on transitivity of correlation and explores new feature combinations that have never or rarely occurred in the past.
- 解答:
我认为上述表达并不严谨,此处更多是直觉上的定义,容易与我们对平时所说的“泛化”产生歧义。其实记忆能力与泛化能力,并不是同一纬度上的两个互斥变量,模型“记忆”住的东西同样能够“泛化”。
假设做房价预估,我们设计一个特征pair比如<上海,100平>,模型训练收敛获得其权重,按文中描述这算是记忆,但是也都有泛化能力,能对不在训练集中的其他(unseen)上海的100平房子进行预估。(即当前这个特征pair出现过,但是这个pair与其他特征的组合没出现过。这其实也是泛化能力的表现)
其实W&D文中想表达的generalize更多是OOD Generalization(见下文)
问题2: Generalization如何定义?
- 解答:
我们要理解模型,需要更精确地定义Generalization:1、传统意义上的泛化(ID Generalization)(Statistical Generalization)
通常,我们都是假设训练样本与测试样本有相同的分布,因此模型目标通常是从sample泛化到population上[1],这里更类似是统计学习中的概念,即将模型视为更传统的statistical model。由于其前提假设是分布相同,所以我们称之为In Distribution Generalization。
对于传统的统计学习,为了帮助我们理解其泛化能力,通常会对其无偏性,估计区间等进行计算(比如获得其variance的下界)。Statistical Inference最终的结果常为区间估计。2、泛指的泛化(OOD Generalization)
现实中,我们不单希望模型能泛化到In Distribution的数据上,还希望模型有对“未知”有一定的“预测”能力。那么对应的就是out of distribution Generalization[2]。
PS:这里对OOD的精确定义也许在不同语境下有点出入,但是其实sample selection bias,spatial evolution of data(eg:点击SSB以及用户心智变化等),都是天然的OOD,即我们生产环境其实天天在与OOD打交道,因此我们通常评估模型的泛化误差也包含了OOD上的误差。详细可以见[2]中的2.1.2节。3、泛化能力的评估
“泛化”能力,可以在unseen data(hold out data)上进行评估。取决于数据本身,其中数据可能包含ood data以及id data。这种方法与传统统计学习中更理论化的结论相比,更注重实践结果,忽略了其中到底有多少是ood的误差,有多少是id的误差,类似于理论物理与应用物理的差别。
问题3:我们为什么要讨论OOD Generalization?
- 解答:
其实现实环境中,iid的假设往往都太强了。其实样本之间有很大的关联性(不满足independent),“底层分布”往往也在不断变化(不满足identically)。因此在错误的iid的假设下,会导致所谓的OOD会经常出现。所以生产环境中的模型调优,基本本质上都是以iid假设设计loss来训练,并直接评估hold out data上ID & OOD Generalization来运作的,而ood也通常会以covariate shift,concept shift,data shift等“词汇”形式出现。
问题3.1:OOD的研究?
- 当然,现在对于OOD也有不少新的研究方向,譬如OOD detection[4]。譬如对DNN也引入区间估计的泛式[5],也是某种程度上,用更统计学的方式来认知OOD,预估的variance/uncertainty直接表示了模型在OOD样本上的不确定性,帮助我们更清晰地认知模型在不同OOD样本上的预估与泛化能力。
问题4: wide侧交叉无法泛化到样本中没有出现的query-item pair上?
One limitation of cross-product transformations is that they do not generalize to query-item feature pairs that have not appeared in the training data.
- 解答:
这里说的是wide侧使用交叉特征的场景。其实很好理解,因为没有共现出现过的特征pair无法使模型获得有效的统计信息。比如在LR中,很少出现或没出现的特征pair获得0的权重,这里0的本质有两种情况:1、出现频率太低,我们无法获得有统计意义的非零权重,对于全部是0的样本,回归到bias取值上。2、测试集中出现的样本是OOD,因此传统统计模型不会在训练中直接学习它的权重。
问题5:紧接上一个问题,那么DNN如何能generalize to query-item feature pairs that have not appeared in the training data?
- 解答:
我们可以将DNN中的embedding当作是对特征交互矩阵(feature-interaction matrix)的一个低秩分解,对于没有出现的pair,他们在矩阵中其实是未知"?",但是我们对特征的潜在假设latent vector(即embedding)使得DNN能对未出现的pair(即矩阵中的"?")提供一个预估值,这里的预估“泛化”类似于matrix factorization,SVD中的“泛化”能力,它本质是来自于“低秩low rank”的假设带来的“先验”知识。(其实w2v的泛化能力也很大程度来自这种low rank的先验,即类似Representation Learning[3],这个先验也与奥卡姆剃刀原则不谋而合)
总结一句就是,普通DNN对OOD的泛化能力来自于low-rank假设的先验知识以及其在部分样本上表现出的普遍正确性。
问题6:DNN对high-rank sparse interaction matrix的over-generalize问题是如何体现的?
- 解答:
Over-generalize就是普遍正确性未cover到的非普遍部分。
例如,对于一个high-rank sparse矩阵(譬如除了对角线其他大部分位置都已知是0),如果使用low-rank approximation分解会导致绝大部分0的地方都被预估成了非0的值。当然,这是个极端的例子,我们以更现实的例子说明一下,通常情况下,“人以群分,物以类聚”,人和物可以分为多个群体,群体表现出一定的特性,即大部分稀疏矩阵确实“几乎”是low-rank的,但是其中总会出现一些“叛徒”,带来一些exception point,这些点导致矩阵的秩变高,如果不消除这些point,会在这些点上出现错误的拟合值。
因此单纯的NN难以解决这些exception rule,导致在推荐等场景常常会推荐出不相关的内容。
问题7:Wide 侧如何和DNN互补?
- 解答:
其实大部分情况下,低秩的假设的latent vector是合理的,即feature interaction矩阵中大部分是未知的因此我们可以充分利用latent vector的ood泛化能力。但是总有exception,就是有上述的少部分是已知对于latent vec来说的outlier(原矩阵刨除这些值就是低秩了),这些已知项会导致训练loss较高,显现为over-generalize(相当于这些点跟low-rank假设冲突)。因此,我们可以用wide侧的cross-product来记住这些exception值,以降低模型的loss。(使用wide&deep后一般可以比单独dnn达到更低的test loss[泛化误差])
问题7.1:Wide 侧交叉特征选择?
- 解答:
其实问题7的解答也引导出了wide侧特征的选择逻辑:- 1、特征交互矩阵结构性理论视角
a、特征交互矩阵(feature interaction matrix)是sparse且high rank的。在DNN中加入相应特征的embedding,且在wide侧加入这些特征的交叉项。DNN中对应特征的embedding提供OOD的泛化能力,Wide侧用特征交叉记住Exception部分防止over-generalize。比如一些细粒度的id交叉(eg:用户id x 兴趣点id)。
b、特征交互矩阵是non sparse且hight-rank。这部分其实可以直接在Wide侧学习,这样收敛更快,理论这些特征交叉不太需要DNN来辅助(当然,一般DNN也会加入这类特征分别的emb,因为wide侧的交叉无法对所有高阶交叉穷举)。比如一些粗粒度的特征交叉,统计特征交叉等(eg:性别 x 兴趣点 )。
c、特征交互矩本身是low-rank的,无论sparse与否,都可以直接用DNN更好地学习。这类特征不太需要加入wide侧。但是Wide侧特征工程一般是正向的过程,只能通过加入wide侧后没有提升来反证DNN已经通过low-rank approximation充分学习了的特征。 - 2、DNN与Wide侧收敛速度视角
由于DNN其实对底层embedding特征学习与收敛的速度很慢,导致一些我们先验已知很重要的bias维度上得不到充分的收敛[7][8]。因此wide侧主要要保障的就是强bias特征的收敛,这类特征可以通过充分手动交叉加入wide侧,为了保证其与剩余特征的高阶交叉能力,也可以在DNN的最后两层以独立小网络,添加部分手动交叉等形式单独加入[6]。(eg:广告位 x 时段 x 性别 x 售卖形式,这类强bias特征的交叉)
PS:其实强bias特征是我们先验认为很重要的差异性特征(比如男女不同,新老客户心智不同),这种差异性可能也是带来了其本质模式的差异性。往往简单的FCN难以直接学到这些模型,导致最终预估在这些维度有显著的bias,所以我们可以在上层加入这些特征emb,在wide侧加入交叉,帮助其收敛。
- 1、特征交互矩阵结构性理论视角
问题8:总结在泛化方面,NN Model与Statistical Model的Pros & Cons
- NN天然的low-rank先验,带来对OOD 不错的泛化能力,但是过强的假设也带来对部分样本的的over-generalize。同时NN的收敛速度相对于wide线性模型更慢,表现在对底层强bias特征的收敛速度慢。
- Statistical Model无法直接对OOD泛化,但是能用很少的参数(大规模wide网络解基本是稀疏的)高效地记忆住稀疏矩阵中的部分exception rule来辅助DNN,相当于原本的矩阵是high rank的,但是修改这些少数的已知exception值后,矩阵就变成low rank了,可以以此来弥补dnn over-generalize的问题。
Refer:
[1] All inference is about generalizing from sample to population
https://statmodeling.stat.columbia.edu/2013/08/24/all-inference-is-about-generalizing-from-sample-to-population/
[2] OOD generalization
http://out-of-distribution-generalization.com/
综述:Towards Out-Of-Distribution Generalization: A Survey
[3] 表征学习
Towards Out-Of-Distribution Generalization: A Survey 中Section3:
UNSUPERVISED REPRESENTATION LEARNING METHOD leverage human’s prior knowledge to design and restrict the representation learning procedure
[4] OOD 识别
EXPLORING COVARIATE AND CONCEPT SHIFT FOR
DETECTION AND CONFIDENCE CALIBRATION OF OUT�OF-DISTRIBUTION DATA
[5]对于OOD,引入Uncertainty Estimate
Can You Trust Your Model’s Uncertainty? Evaluating Predictive Uncertainty Under Dataset Shift
[6] multi-domain learning,其实domain-specific也可以理解成是不同domain间有很强差异即bias
思路是利用domain-specific的强bias特征训练一个FCN,然后element-wise product施加到原模型上。(另外,我理解这只是一个mutli-task的子集,而非不同范式)
One Model to Serve All: Star Topology Adaptive Recommender for Multi-Domain CTR Prediction
相关的关于在dnn中加入先验(也算是domain吧)的讨论:https://www.zhihu.com/question/279012198
[7] 不充分收敛的表现:
由于收敛速度慢以及正则/early stop等操作的影响都会导致最终结果存在bias。从结果表现出来就是在某些维度上(比如男女),模型的预估值与训练集上的经验统计值有较大的偏差(bias)
[8] 不充分收敛的原因:
DNN通过embedding的学习来表征特征的交叉,参考DCN的paper指出DNNs are inefficient to even approximately model 2nd or 3rd-order feature crosses。由于DNN很难学习到充分的交叉,因此会导致上层的bias。
一些解决方案:
1、abacus也是采用冻结别的变量以单独的流程来训练embedding.
2、很多Few shot-Learning,Transfer-Learning,Meta-Learning的paradigm中,都是大量的数据以及网络来训练底层以及embedding,再迁移到新的网络上,对上层少量参数进行fine tuning。
3、DCN等通过实现自动先验交叉来弥补其emb收敛慢,交叉bias的问题。
4、最raw的方式,手动加入交叉。
5、上述的multi-domain learning,也是加入domain认知先验,单独小模型保障其交叉。