在实践中,采样是非常重要的,本质上它是利用少量的样本来近似总体的分布,从特定的分布中抽取相应样本的过程。 同时,不仅是推荐、搜索、广告实际中需要,任何机器学习模型,这都是一个不得不去重视的知识点。 01 高斯分布采样 高斯分布(正态分布)的采样方法有逆变换法、拒绝采样法等。 02 马尔科夫蒙特洛卡采样
03 概率图采样方法 根据有向图的顺序,对节点进行采样,包括最简单的祖先采样、参考重要性的似然加权采样和采用Metropolis Hastings方法的采样等。 01 数据采集和理解 1.1 数据收集机制理解关于我们的数据收集形式对我们进行后续数据的使用和预处理起到非常关键的作用,我承认这块我做得不是很好,导致在实验的过程中无脑的把数据直接丢入模型,看上去模型的效果变差了,带来了非常多错误的结论。从而使得后期又不得不重复进行实验。 注:公司的数据一般非常大,做大模型的话,在机器资源不够的情况下,跑一轮得到的结果是极其浪费时间的,关于这块,个人最大的建议就是在直接将数据丢到模型之前,至少检查以下几点东西。
1.2 数据字段理解这边不想吐槽太多,目测很多公司很多业务都是类似的,尤其是当业务发展多年的情况下,会遗留下一大堆数据表,这些表有非常多的字段,但是表的负责人已经离职了,很多数据字段也都没有写备注,但是这张表又和后面的很多关键表相关联,这是非常头疼的事情。 为什么说字段的理解非常重要呢?举个例子来说,商品ID(ItemID),比如iphone12的ID,
这样两种不同的数据字段携带的信息量是完全不一样的,
我们知道,不同国家的iphone12的销量可能是完全不一样的,在贫穷的国家可能销量就低;在富有的国家则销量很高,所以说数据字段的理解是至关重要的,相同的字段在不同设计情况下统计的特征可能完全是两码事。 02 数据清洗 数据清洗:我们的数据中,存在非常多的脏数据,这些数据的处理可以帮助我们更好地提效,使得模型训练得到的结果更为良性;这一块没有做太多的工作,可能反欺诈等团队做的工作会多一些,典型的就是:
对这些数据的清洗可以更为真实的反映用户的习惯。 03 训练数据采样 数据采样:因为大模型这块数据量非常大,很多时候数据经过各种merge操作之后,都可以达到上PB级别,所以模型的训练经常需要有合理的采样策略;而目前最为常见的采样策略是基于随机的,基于启发式的(也就是大家经常会使用的基于规则的),也有一些基于最新的一些论文的方式: 3.1 负样本随机采样这个基本所有的公司和数据竞赛中在样本规模达到一定比例的时候都会有碰到,将全部的负样本全部丢入到模型中进行训练,会浪费非常多的资源,而且常常因为类别不平衡等原因经常获得的效果往往还不如经过随机采样来的效果好。在我们的实验中,我们发现:
注意,这边仅仅是对负样本进行随机采样,正样本的量非常少,一般都是全部保留的。 3.2 基于某些规则的启发式采样在电商等应用中,很多用户对于position位置可能比较敏感,而这些position也具有非常大的参考价值,很多用户可能就只浏览了前面部分的商品,后面的曝光商品根本就没有看,尤其是末尾的商品,但是这些信息我们又没法捕捉,这块很多时候需要和工程讨论数据埋点的问题;而我们经常会使用下面的策略去进行尝试,几个典型的例子:
上面的这三种策略基本都是可以尝试的,但是别指望可以带来巨大的提升,不过微弱的提升还是可以期待一下的。除此之外,我看到还有非常多其它值得尝试的,此处仅列举在下方,并没有什么具体的结论。(下面这两个来源于引文[31])
3.3 基于最新技术的方案好像也有听说最新的论文有使用一些最新的技术,来自动选择好的负样本,这块没有继续研究下去了。 |
|