这篇记模型训练。

距离第一篇已过去一个月。从学习到正式启动模型训练,花了两周。模型训练召回率和准确率达到上线标准又花了两三周。

训练及测试样本评估的精确率都是97%、98%,结果一到线上实验,结果惨不忍睹,才明白模型训练不是那么简单的事情。渐渐摸索出了一些门道,最后线上精确率达到95%以上。

我只在一个二分类的文本分类场景成功训练并上线了模型,且除了词嵌入纬度embedding_dim超参调整外,不涉及其它的超参调整,因此下文将主要从个人的模型训练经验出发,介绍模型训练的基本思路及调优关键点。在其它的文本分类场景相关经验可能不适用,仅供参考。

基本思路:

下图是我理解的模型训练的基本流程。

我理解的模型训练分为三大步骤,一是训练前准备,包括正负样本和数据清洗、分词配置;二是反复模型训练;三是模型调优,两个手段,一个是配置调优,一个是策略加持。各自具体什么含义下面慢慢展开说。

一、训练前准备

磨刀不误砍柴工。我的说法是“你人都没学会呢,上什么机器学习”。所以前期工作非常重要。

1. 样本选取

正负样本是机器进行学习的学习资料,资料准不准,决定了学习效果好不好。

两种分类场景,一种是有限内容范围的非此即彼,正、负样本分布差别不大;一种是“这种是,其它都不是”,正是小部分,例如从全量内容中识别非法内容。

不管是那种场景,正样本都是目标文本的完整定义,建议正样本之间有显著的共性特征,也就是一类文本。如果样本量不多,特征却很多,最后出来的模型效果就不好。这里所说的特征就是句式、语义、用到的词汇等。

一般通过策略挖掘积累,或是通过人工标注得来,建议正样本条数不少于1000条(排重后)。

负样本是告诉机器,“这样的文本不算”。

在第一种“有限范围的非此即彼”分类场景中,正负样本的特征差异很重要,就是要让机器清楚的明白正负差别在哪里。

在第二种“这种是,其它都不是”的场景中正样本的特征越明显越好,同时负样本一方面要跟正样本有明显的不同,另一方面要对正样本的过拟合特征有一定的矫正作用。

例如在识别非法内容时,黑产往往把非法内容夹杂在正常的文本里边,“最近全国大部分地区进入汛期,防汛成为各地的工作重点。炎炎夏日,无聊就来玩XXX吧,休闲一下,XXX应有尽有。”。后半句是非法内容,是正样本期望机器学到的特征,而前半句则会引入过拟合特征,线上实验时就会误把防汛相关的内容也识别进来。这时候通过补充误识别的内容到负样本中,就会修正这种过拟合。

负样本的条数大致跟正样本保持一致。

2. 数据清洗

数据清洗前两篇也都讲的比较多了,主要是剔除无用信息,并通过同义词替换应对变体对抗、强化特征。尤其是在黑产对抗中,黑产为了规避平台识别,会进行音近字、形近字、符号替代等各种方式表示一些特定词。因此积累同义词词表就变得非常重要。

而且同义词替换发生在模型训练之前,模型学到的是强特征词。线上识别时,文本由数据清洗中的同义词替换,将变体信息转化后准确的传递给模型进行识别。同义词配置的修改不需要重新训练模型,非常高效

3. 分词配置

在word embedding之前要进行中文分词,分词时可自定义分词词典和停止词词典。这两个配置对模型的效果影响也很大。

自定义分词词典是告诉分词程序,遇到这些字的时候优先这样把它们切割成一个词。

一方面对于专业词汇、领域词汇等非常用词汇的分词有指导作用,另一方面也可以用来调优模型。例如“电子”是某一类黑产内容识别的正样本中较明显的特征词。但同时电子专业、电子卡劵、电子票务等也是较常见的文本词,就会造成误伤。此时把电子专业、电子卡劵、电子票务加到自定义词典中,词向量就发生了变化。

停止词词典是告诉分词程序,遇到这些词就直接舍弃,不用写到分词结果中。

一般由常用语气词、介词等组成。在分词阶段干掉这些词,就可以使传达到模型的信息更为精练。同时,停止词还可以补充在线上识别阶段不期望带到模型里的信息词,如上面提到的“电子专业”等,或是一些被模型学去的过拟合特征词,例如1中提到的“汛期”“防汛”等。加入到停止词词典后,其词向量就不会输入给后面的模型,也就不会造成误判了。

我除了停止词词典外,对于分词过程中分出来的“单个字”的词也在分词阶段舍弃掉了。

二、反复模型训练

上面在将正负样本的时候其实已经提到了相关的内容。

当模型训练后的效果较差时,例如准确率低于60%(这个百分比只是个参考,表达大致模型已经初步成型的意思),召回不理想(因为我的应用场景无法评估线上被识别对象的总量,所以召回率没有做评估),那就证明“学习资料”出了问题。

如果召回率低,那就要补充正样本,让正样本的共性特征更明显;如果精确率低,那么就补充负样本,一方面要让正负样本由较明显的特征差异,另一方面可以把模型误召回的文本补充到负样本,矫正模型学偏的部分。

三、模型调优

模型初步已经由一定效果了,就要开始对模型进行打磨了。这里我采用的两种手段,一个是配置调优,一个是策略加持。

配置调优就是前面提到的三个配置:同义词替换配置、分词自定义词典配置、分词停止词配置。同义词替换配置主要影响召回率;后者主要影响准确率。具体原理上面已经讲到了,在此不再赘述。

策略加持主要是通过一些限制条件,帮模型砍掉基本不会出现正样本,又容易被模型误召回的文本。例如正样本都是长文本,较短的文本极大概率是负样本,就可以一条加文本长度限制的策略。除此之外我还用到了分词后的词个数和重复词个数两个条件。分词词个数跟文本长度原理类似,对于一些没什么信息含量的文本就被砍掉了;重复词个数是我在TextCnn实践中发现的诡异问题,一个词在语句中多次出现,TextCnn就更容易误判,尽管这个词并不是什么强特征词。于是我也用策略规避了这个问题。不知道大家是否遇到过同类问题,是否有更好的解决方案。

配置调优和策略加持都不需要重新训练模型,属于模型的抛光、打磨阶段,非常实用。我通过一个星期的线上实验,反复调整那三个配置,模型的精确率从70%打磨到了95%,召回率也有相应提升。

以上就是我的模型训练心得,因为思路的表达更多,所以文字也特别的。看到这里的同学可谓非常有耐心了,欢迎交流讨论。

NLP文本分类入门学习及TextCnn实践笔记——模型训练(三)相关推荐

  1. fastText、TextCNN、TextRNN……这里有一套NLP文本分类深度学习方法库供你选择 作者:机器人圈 / 微信号:ROBO_AI发表时间 :2017-07-28 图:pixabay

    fastText.TextCNN.TextRNN--这里有一套NLP文本分类深度学习方法库供你选择 「机器人圈」编译:嗯~阿童木呀.多啦A亮 这个库的目的是探索用深度学习进行NLP文本分类的方法. 它 ...

  2. 【NLP文本分类算法集锦】零基础入门经典文本分类项目实战(附代码+数据集)

    前言 大家好,我是阿光. 本专栏整理了<NLP文本分类算法集锦>,内包含了各种常见的中英文文本分类算法,以及常见的NLP任务:情感分析.新闻分类以及谣言检测等. 文本分类是NLP的必备入门 ...

  3. 深度学习核心技术精讲100篇(四十九)-半监督学习在金融文本分类上的探索和实践

    前言 垂直领域内的自然语言处理任务往往面临着标注数据缺乏的问题,而近年来快速发展的半监督学习技术为此类问题提供了有希望的解决方案.文本以 Google 在 2019 年提出的 UDA 框架为研究主体, ...

  4. NLP——文本分类模型(HAN)(三)

    NLP--文本分类模型(HAN)(三) 1.引入 1. NLP--文本分类模型(一) 2. NLP--文本分类模型(二) 在之前的文章中,我们介绍了基于CNN机制是如何应用于文本分类.近些年来Atte ...

  5. 第六课.NLP文本分类任务

    第六课目录 NLP文本分类简介 IMDB数据集准备 设置随机种子 下载IMDB并划分数据集 构建词汇表 使用torchtext生成batch WordAveraging 模型定义 加载由glove.6 ...

  6. 文本分类入门(四)训练Part 1

    文本分类入门(四)训练Part 1 训练,顾名思义,就是training(汗,这解释),简单的说就是让计算机从给定的一堆文档中自己学习分类的规则(如果学不对的话,还要,打屁屁?). 开始训练之前,再多 ...

  7. 文本分类入门(二)文本分类的方法

    文本分类入门(二)文本分类的方法 文本分类问题与其它分类问题没有本质上的区别,其方法可以归结为根据待分类数据的某些特征来进行匹配,当然完全的匹配是不太可能的,因此必须(根据某种评价标准)选择最优的匹配 ...

  8. NLP文本分类大杀器:PET范式

    作者 | 周俊贤 整理 | NewBeeNLP 之前我们分享了NLP文本分类 落地实战五大利器!,今天我们以两篇论文为例,来看看Pattern Exploiting Training(PET)范式,可 ...

  9. 文本分类入门(一)文本分类问题的定义

    原博客地址:http://www.blogjava.net/zhenandaci/category/31868.html?Show=All 文本分类入门(一)文本分类问题的定义 文本分类系列文章,从文 ...

最新文章

  1. 【POJ】【2449】Remmarguts' Date
  2. 男士剧烈运动后应注意
  3. selenium环境搭建
  4. matlab表白_表白 | 北航男生想找个女朋友,我身高179,希望女生体贴一点
  5. Maven下 SpringMvn+thymeleaf 搭建
  6. 如何安装linux和windows双系统
  7. 创建.config后缀文件
  8. java为什么会乱码_Java中文乱码原因
  9. Excel利用函数进行转置(TRANSPOSE)、Excel中INDEX函数如何使用
  10. QQ空间登录协议实现:易语言篇
  11. workbench动力学周炬_ANSYS Workbench有限元分析实例详解 动力学 周炬 苏金英 ANSYS Workbench动力学数值模拟模态分析教程 有限元理论和工程实践书...
  12. 根目录在哪里 根目录下的目录有什么作用
  13. html5饼图添加百分比,饼图如何显示数据和百分比
  14. dcos - docker的日志收集
  15. php脚本爬取头像图片
  16. Paper之ICASSPIEEEAUDIOSPE:2018~2019年ICASSP国际声学、语音和信号处理会议IEEE-ACM T AUDIO SPE音频、语音和语言处理期刊最佳论文简介及其解读
  17. OpenMP: VS2010配置使用OpenMP
  18. 使用JedisClusters批量高效删除redis中的key
  19. 计算机辅助翻译翻译技术的译前应用,计算机辅助翻译技术在网络字幕组中的应用...
  20. BAT三巨头之云产品角逐

热门文章

  1. Linux Kernel 远程代码执行漏洞(CVE-2022-47939)
  2. 高可用的MongoDB集群-实战篇
  3. BAT Android工程师面试流程解析+还原最真实最完整的一线公司面试题
  4. CC攻击原理及防范方法
  5. 塑料回收---未来化工行业的新兴增长领域
  6. 视觉SALM十四讲学习笔记——第七讲 视觉里程计(1)
  7. 崛起的百万「团长」:到底是一份好工作,还是当炮灰?
  8. 蓝桥杯2022年(本科c++b组)
  9. 如何确认光纤是否是保偏光纤?
  10. 第三方授权登陆(QQ)