大部分的拆分与组合,本质都是在trade off
甚至不少明星大佬的离婚与结婚,也是在权衡即时的付出与未来潜在的收益(笑)
模型拆分训练
是否应该拆分,拆分粒度的影响:
多场景一起训练与单独拆分训练比,一起训练大模型数据量更大,variance更低,但是对局部而言bias更大,数据有被少数重度用户dominate的风险。
而拆分训练,bias更小,但如果特征维度,参数数量不变的话,会由于数据量减少会导致variance扩大。模型拆分维度训练:
拆分的维度是需要考量的,因为拆分后,模型则不能保障不同维度间的排序能力。
1、拆分维度不影响排序
比如推荐中分用户拆分,分新老客,其实这种拆分影响最小,因为推荐中不同用户的样本不用混排,影响不大,类似的还有分广告位,时段等context特征。
2、拆分维度部分影响排序
比如分广告主训练cvr模型。由于不同广告主之间本身产品面向用户差异较大,同时我们很在意特定广告主的预估准确性,对部分广告主严重高估低估都可能导致平台收入受损,广告主流失等问题,所以我们有时候也会分广告主进行模型训练。当然,这里有很多别的问题,比如数据隐私问题等。
这里的业务整体介于混排和不充分混排之间(比如定向不同,或者分布差异大容易判定)。
3、拆分维度影响排序
比如推荐中要分产品类型,这些产品在每次排序中可能都要进行充分的混排,此时需要谨慎设计。如果上层有机制来代替直接排序,那么没问题,而如果是混排,那么拆分导致不同维度间的排序能力不可控是很危险的。
MTL辅助拆分:
由于拆分本身会极大程度影响数据量,拆分出来的部分由于数据量小很可能要suffering from large variance。
所以一种更好进行trade off的框架就是多任务训练,拆分任务并用share param,或者加入参数的L1L2距离惩罚,相当于加上constraints,能缩减因为拆分带来的过大的variance。同时如果去掉不同场景下不必要的特征,也能稍微降低一些variance。这个对比完全share所有参数的训练方式来说,相当于一种更弱且可以调节的constriants。
所以,MTL其实某种程度就是更好地帮我们trade-off。通过调整不同任务的学习率,share参数的数量,L2惩罚系数等,更好地优化这个问题。拆分与组合本质的合理性是什么
其实本质来自于,他们是否属于同一分布。如果我们假设样本从统一总体分布中采出,那么应该组合起来一起统计。如果我们认为样本并非从同一总体中采出,那么我们应该拆分统计。而现实中的这样的假设往往太强了,即同特征表述下是同分布的(即两个特征相同的用户决策的随机性来自相同的底层分布),错误的假设导致样本并非严格来自同一总体,因此带来了天然的bias。且就算假设成立,由于我们无法收集所有特征(譬如此时用户所处环境温度影响了决策),仍会有很大的bias(omitted var bias)。
通常,对于一些有明显差异性的场景下,我们会自然而然地就会进行拆分。而进一步思考,每一个人决策的底层系统都是不同的,甚至每一次。所以拆分的合理性也来自于此。
何处收敛?其实都是在bias与variance之间trade off而已,最终收敛到泛化误差最小的状态。
校准,分桶数量,分维度如何选择?
其实也是bias 与variance的选择,因为校准的指标,最终也是看泛化能力。
如何评估泛化能力:
一般来说,比如隔日校准,拿今天的反馈数据校准数值,然后评估明日数据集上的分段oe。影响泛化的参数:
1、分桶数量,分桶太少导致跟真实的bias过大(这里是假设不同段的数据来自于不同总体,多个段被分到一个桶就被当作了同一个总体,自然带来了bias),分太多导致在单区间内不置信variance太大。
1.1、分维度类似于分桶,分越多variance越大。
2、校准函数形式与参数的选择,表达能力太弱导致bias大,太强导致variance大。
3、注意一些边界点的处理,对于少数outlier,可能会导致离谱的误差。分维度校准有何影响:
从直观大的scope看,分维度缩小了数量,variance上升,bias下降。
对于保序回归,进行分维度校准,内部保序不影响auc,但是不同维度之间是会影响的。理论上,整体数据集应该是负面影响。(注意泛化性的标准,不能用测试集搜参数校准)
不过在实际场景中,也可能并没有负面影响,比如我们在男女用户上分别校准,真实排序能力其实不受影响,因为男女的样本其实本身就是分隔的。但是在商品维度上分别校准,就有影响了。
其实分了维度后,某种程度上,也是降低了bias,提升了vairance。