增量数据
大家都知道,数据决定效果的天花板,而模型算法只是在逼近这个天花板。而实际场景中,数据往往是持续变化的,随着数据特征分布的变化,模型的效果可能会随着时间的推移,效果会越来越差。如果有持续的新样本数据进入训练,不需要太高深的算法效果可能就会超过那些所谓的高深算法。
只不过场景不同,持续收集数据的成本差异可能是巨大的,例如对于广告平台点击率预测,样本数据本身就是现成的,需要做的就是收集,可能还需要区分作弊数据;而对于像舆情系统的文本分类,要想持续收集数据,那就得有人持续的进行标注,技术能做的就是通过系统提升标注效率与质量。
怎么平衡成本和效果,就得看企业了。
模型目标
一个舆情系统分类模型的自动自助训练的模型平台应该是这样的:
1. 模型应该是可以增量训练的;
2. 模型的增量训练数据可以来自上传,或者从第三方系统推送过来;
3. 增量数据的质量问题,应该有所保障,因为同样的特征在不同的时间,其分类可能是不同的,另外其不同也可能是标错导致的;
4. 模型训练好之后,应该可以自动判断能否上线,如果可以则自动进行上线。
目标是后续增量训练的整个流程基本不需要算法工程师的参与。
系统架构
上图是系统架构图,主要分成三个部分:
1. 模型平台:实现模型的管理,日志管理,数据集管理,预测节点信息管理等。数据都存储到数据库中。
2. 任务调度:模型平台只是管理模型的基本信息,如模型的训练计划,上线条件等,但是训练任务的调度等等都是在任务调度系统实现的。另外如果训练任务比较多,这里可能也会使用多个服务器。训练好的模型存储到s3上。
3. 预测节点集群:这通常是由多个服务器组成,前端使用nginx做负载均衡。预测节点会把心跳,日志等信息发送给模型平台,在模型模型平台统一进行管理。模型平台也会把新模型的上线通知下发给节点服务器。
几点说明:
1. 数据来源可能是上传或者通过接口从舆情系统推送过来,如果有需要可以在前面增加一个MQ服务。
2. 模型的训练可以是根据条件自动触发的,也可能是手动触发的,自动训练的模型,可以支持满足条件自动触发上线。
样本数据质量
影响样本质量的情况有哪些:
1. 样本标注的标错了。
2. 随着时间发展,事件的性质变了,例如一个事情原来可能是中性的,但是随着事件的发酵,变味了,成负面的了。
标错的问题要解决的成本还是挺高的,两个人一起标注,如果不同则引入第三者再标一次,这样的标注成本直接是原来2到3倍,通常很难承受。比较可行的是,人标注和机器预测标注做比较,如果不一样就引入人工检验判断,这样成本会比前者低一些,不过因为两者并不是要完全独立的,有些错误可能会不断得到加强。
对于第二个问题解决起来倒是容易一点,增量数据进入样本库的时候,可以从原样本库里找出文本相似但是标注却不同的数据,加入人工检验,应该说这是比较可靠的了,成本应该也比较可控。
20220905