导读:本文是“数据拾光者”专栏的第四十九篇文章,这个系列将介绍在广告行业中自然语言处理和推荐系统实践。本篇主要介绍我们构建的oCTS分类器优化训练系统,一个标注人员都可以优化分类器的训练系统,对于中小团队希望又快又好的训练分类器可能有所帮助。
摘要:本篇主要介绍我们构建的oCTS分类器优化训练系统,一个标注人员都可以优化分类器的训练系统。首先介绍了项目背景和目标,oCTS主要针对人工可标注的数据场景又好又快的训练分类器;然后重点介绍了项目技术概要,涉及主动学习、弱监督学习、知识蒸馏等方面;接着展示了产品形态和效果;最后对项目进行了总结,并阐述未来优化方向。对于中小团队希望又快又好的训练分类器可能有所帮助。
下面主要按照如下思维导图进行学习分享:
01
项目背景和目标
本篇主要介绍我们构建的oCTS分类器优化训练系统。oCTS主要是针对人工可标注的数据场景又好又快的训练分类器,这里人工可标注的数据主要包括NLP中的文本分类、关键词提取等,还可以是CV场景中的图片识别,或者是多模态场景中的视频理解等。
1.1 构建分类器遇到的问题
在实际工作场景中,我们经常会遇到各种分类问题,比如NLP场景中的文本分类,这里具体的业务可以是搜索场景行业词包在线分类,还可以是小X语音助手安全服务模型,还可以是用户兴趣标签建模等。针对这些实际的业务场景需要构建分类器,而构建分类器会遇到以下三个主要问题:
图1 CV场景中医学业务标注成本
对应到我们NLP场景中文本分类任务,需要标注query文本,一般情况下标注人员每 天可以标注200条样本,并且随着标注体系复杂度增加,标注的难度也会增加。所以整体看来标注成本是越来越昂贵的。
图2 长尾现象图
长尾现象就是头部标签的样本分布非常密集,而尾部标签的样本分布则非常稀疏,从而导致分类器的效果大幅大下降。
1.2 oCTS项目目标
为了解决训练分类器遇到的问题,我们构建了oCTS分类器优化训练系统,主要目标是利用少量的标注数据就可以又快又好的训练分类器,同时仅依靠标注人员就能高效的优化分类器。
1.3 业界现状
对于oCTS系统来说输入是少量有标签的数据和大量的无标签数据集,输出是一个优化的分类器模型和大量自动扩展的数据集。
02
项目适用场景
oCTS适用于以下场景:
整体来说oCTS可以应用到各种分类任务中。
03
项目技术概要
3.1 项目流程图
图3 oCTS项目流程图
上面是oCTS系统流程图,整体来看系统的输入是少量标注样本数据和海量无标签数据,输出则是一个优化的分类器模型。系统整体分成半监督和自训练两个流程。半监督流程就是上图中大循环,主要是S1-S6流程;自训练流程就是小循环,主要是S4-S6流程。下面详细介绍oCTS项目流程:
3.2 核心模块介绍
3.2.1 Enlarge&Clean策略
Enlarge&Clean策略主要包括Enlarge策略和Clean策略,其中Enlarge策略主要用于扩展训练集,Clean策略用于修复错误标注样本。
Enlarge策略主要在大循环流程,是基于少量的标注数据集从海量无标签数据集中进行扩展训练集。对于NLP场景来说已有的Enlarge策略主要有以下两种:
图4 SimBERT+faiss匹配相似文本的流程图
关于SimBERT的详细介绍可以参考我之前写过的文章《广告行业中那些趣事系列30:实际业务超好用的SimBERT》。
图5 无监督SimCSE模型架构图
关于SimCSE的详细介绍可以参考我之前写过的一篇文章《广告行业中那些趣事系列35:NLP场景中的对比学习模型SimCSE》。
Clean策略主要用于修正错误样本,主要通过模型的容错能力找到最好模型的预测值和标签不一致的样本进行二次标注,从而修复错误样本。
3.2.2 Pseudo Label筛选策略
Pseudo Label筛选策略是在小循环中,主要是利用当前最好的模型去预测海量无标签数据集,选择置信度高的样本添加到训练集中。目前支持以下策略:
上述Pseudo Label筛选策略可以单独或者组合使用,主要依据实际的业务场景和实验进行对比选择。
3.2.3 Active Learning标注策略
Active Learning标注策略的主要目的是选择高价值语料进行标注,提升标注效率。这里高价值语料主要是指具有不确定性和差异性的语料。如下图所示的分类器样例,我们希望选择的标注语料是不确定性较高的,也就是尽量靠近分割面,模型难以识别的。同时希望选择的标注语料是差异性比较大的,尽量分布在不同的语料空间中。
图6 分类器样例展示
Active Learning主要有以下几个流程:
下面是主动学习流程图:
图7 主动学习流程图
主动学习流程中最重要的是选择策略,oCTS支持以下选择策略:
实际任务中我们会基于不确定策略和差异性策略相结合来选择高价值样本进行标注。关于主动学习的详细介绍可以参考我之前写过的一篇文章《广告行业中那些趣事系列22:当文本分类遇上了主动学习》。
3.2.4 解决样本不均衡问题
分类任务中经常会遇到样本不均衡问题,oCTS主要从样本层面和模型层面缓解样本不均衡问题。
样本层面主要采取以下策略:
图8 NLP场景中常用的样本增强方法
常用的样本增强技术主要分成以下几种:
模型层面缓解样本不均衡问题通过优化损失函数,主要采用以下策略:
下面对比交叉熵损失函数、Focal Loss和GHM Loss三种损失函数对不同梯度模长样本(识别难易程度不同的样本)的抑制效果图:
图9 损失函数对识别难易程度不同样本的抑制效果
从上图中可以看出,Focal Loss对于模型容易识别的样本具有很好的抑制效果(左边横坐标靠近0),而GHM Loss对于模型容易识别的样本和非常难的样本(右边横坐标靠近1)都具有很好的抑制效果。
之前写过一篇文章详细介绍过缓解样本不均衡问题的办法,感兴趣的小伙伴可以查看:《广告行业中那些趣事系列24:从理论到实践解决文本分类中的样本不均衡问题》。
3.2.5 通过知识蒸馏优化线上模型
图10 BERT蒸馏到TextCNN
以BERT为代表的预训练+微调两阶段模型优点非常明显,效果好应用范围广,但是因为模型参数量巨大所以线上推理性能较差,部署到线上很难满足时延要求。而以TextCNN为代表的传统文本分类模型虽然效果较差,但是优势在于模型简单,线上推理性能较好,很容易部署到线上。有没有一种效果好线上推理性能快的方法呢?知识蒸馏可能是一种不错的方案。知识蒸馏的核心思路是让BERT等预训练模型作为老师去教学生模型TextCNN,从而线上部署学生模型TextCNN,可以很好的满足线上推理的时延要求。更神奇的是经过蒸馏的TextCNN模型效果可以媲美BERT模型,从而得到效果好线上推理性能快的模型。
知识蒸馏之所以可以提升学生模型的效果,其中一个主要原因是可以提供更多的“暗”知识。下面以手写数字识别任务举例。通常的图片识别分类任务可以提供的知识主要是标签,也就是图片对应的标签数字1。而知识蒸馏则提供的知识是logits,会告诉这张图片是1的概率为0.7,7的概率是0.2,9的概率是0.1,相当于提供了更多的知识,所以经过知识蒸馏后的学生模型效果也非常出色。下面是知识蒸馏提供更多知识介绍图:
图11 知识蒸馏提供更多知识
关于知识蒸馏的详细介绍小伙伴可以查看我之前写过的一篇文章《广告行业中那些趣事系列21:从理论到实战BERT知识蒸馏》。
04
产品形态和效果展示
4.1 服务创建
oCTS目前已经融合到GS平台。以NLP场景中文本分类为例介绍oCTS的使用流程,下面是主流程配置文件介绍,配置文件如下图所示:
图12 oCTS主流程配置文件介绍
主流程配置文件有以下几个重要项:
以BERT为例分类器配置文件如下所示:
图13 oCTS分类器配置文件介绍
分类器配置文件有以下几个重要项:
以SimBERT为例Enlarge策略配置文件如下:
图14 oCTS的Enlarge配置文件介绍
Enlarge配置文件有以下几个重要项:
4.2 标注数据流程
oCTS训练一轮之后会通过主动学习选择高价值样本进行标注,这里可以通过办公软件、短信等方式提醒标注人员进行标注。标注样本可以在专门的标注平台进行,当完成一批样本标注之后点击推送,可以将标注完成的样本加入到oCTS进行下一轮训练,不断优化分类器。
4.3 产品效果展示
oCTS目前已经应用到很多实际业务场景中,比如搜索行业词包在线分类、用户兴趣标签建模和小X语音助手安全服务模型中,并取得不错的线上效果。
我们对比了使用随机采样和主动学习方法对模型效果的提升情况,使用的主动学习策略为least_confidence&k_means混合查询策略,下面是主动学习模型效果提升图:
图15 主动学习模型提升效果
如上图所示,横轴是轮数,每轮使用不同的方法获取1000条标注样本;纵轴是模型效果提升情况。可以看出使用least_confidence&k_means混合查询策略获取的标注样本模型效果提升要优于随机采样策略,尤其是小样本情况下更加明显。
05
项目总结和未来优化方向
整体来看,oCTS具有以下特点:
oCTS后续优化方向如下:
06
总结及展望
本篇主要介绍我们构建的oCTS分类器优化训练系统,一个标注人员都可以优化分类器的训练系统。首先介绍了项目背景和目标,oCTS主要针对人工可标注的数据场景又好又快的训练分类器;然后重点介绍了项目技术概要,涉及主动学习、弱监督学习、知识蒸馏等方面;接着展示了产品形态和效果;最后对项目进行了总结,并阐述未来优化方向。对于中小团队希望又快又好的训练分类器可能有所帮助。