标签体系的意义
- 标签的制定需要花最多的时间,而且不断修正,可以借助其他成熟的平台进行辅助。
- 标签定义一定要清楚, 先做到任何人标注理解无歧义, 算法模型才有可能出好的结果。
- 标签代表了我们试图解决的问题什么. 如果问题本身摸棱两可, 再好的学生也回答不出答案。
标注数据的质量本身决定了算法天花板
Good ML relies on good data,Garbage in, garbage out
- 训练的数据量
- 数据质量提升
测试集验证集
- 测试集 / test set: 作为质量验收的标准,是考试题,不应提前提供给算法人员,尽量做到每个类别都有相差不大的数据量。
- 训练集 / training set (这里包含验证集 / validation set): 通过验证集可以作为评估模型的标准,一般来说,训练集、测试集、验证集应该是同分布的。
取数与数据清洗
取数要有代表性和随机性,取数的数量要兼顾标注的难度
- 要体现出业务上数据的优先级
- 需根据业务的场景对部分字段进行排序,符合线上的数据呈现逻辑,抓重点。
- 有足够的覆盖度,增强模型的泛化性。
- 不同来源的文本。
- 不同长度的文本。
- 如果类别数据不够,无法兼顾到全部类别,也需要把无覆盖的类别样本合并一起作为负样本,避免模型对陌生样本的错判。
- 类别间的样本量一定要均衡,数据量相差悬殊会大大影响模型的判断。
- 数据量较少的类别需要用数据增强等手段,重采样效果一般,可根据线上数据的特点,采用如拼接、截断等方式。
- 同一类别下模板化的数据太多,可以用编辑距离等方法进行去重。
- 两步走:
- 用粗标的数据进行大量数据的预训练
- 再用精标的类别均衡数据进行微调
- 两个步骤采用同一份验证集
数据标注流程
- 算法工程师/产品经理试标一轮,并在过程中修正标签体系和标签定义,并记录。
- 非人工标注样本数据补充办法:
- 既有标注数据集、外部开源数据集训练
- 外部开源免费的AI接口, 生成训练用数据
- 自研的目的: 外部接口调用的成本高于自行研发维护
- 培训标注人员, 标注人员试标, 检查试标结果,针对标注错误部分进行辅导和纠正
- 标注人员全量样本数据标注
- 对于有歧义/不确定的需要记录后续分析
- 判断的依据新关键词, 也要记录下来, 判定典型性
- 对于有歧义标注数据协商处理, 可能会需要反推导标签体系说明修正, 最后取一致的部分作为标签
- 标注量偏少的标签需要再定向补充一轮, 确保每个标签下的样本数据足够均衡
- 尽量盲标, 即不提供识别来源出来的标签结果, 避免预信息对于标注质量产生影响
- 标注数据抽样验收:验收人员也尽量先盲标 (Excel先通过隐藏对应列方式), 背靠背的方式单独再标一轮后对比, 避免误导