广告行业中那些趣事系列58:当我们面对文本分类任务的时,可以使用哪些优化策略...

news2024/11/26 12:35:37
导读:本文是“数据拾光者”专栏的第五十七篇文章,这个系列将介绍在广告行业中自然语言处理和推荐系统实践。本篇主要总结了一下我在实际项目中对于文本分类任务的优化策略,对于想要提升线上文本分类任务效果的小伙伴可能有所帮助。
欢迎转载,转载请注明出处以及链接,更多关于自然语言处理、推荐系统优质内容请关注如下频道。
知乎专栏:数据拾光者
公众号:数据拾光者

摘要:本篇主要总结了一下我在实际项目中对于文本分类任务的优化策略,主要包括预训练模型优化、语义embedding优化、分类层优化、使用知识蒸馏优化、使用标签内容信息优化、优化损失函数、通过半监督和主动学习优化、通过样本增强技术优化。对于想要提升线上文本分类任务效果的小伙伴可能有所帮助。

下面主要按照如下思维导图进行学习分享:

outside_default.png

01 背景介绍

最近在参加公司的算法挑战大赛,任务目标是给定对话当前轮文本,输出对应的情绪标签和创意表情。初赛是根据对话文本内容来输出情绪标签,其实就是一个文本分类任务;复赛是根据情绪标签来生成创意表情,是一个有条件图像生成任务。之前也做过一些文本分类的项目,这里刚好就作为一个总结吧:当我们面对文本分类任务的时候,可以使用哪些优化策略?

02 文本分类任务优化策略

2.1 预训练模型优化

因为这次比赛主要考虑的是模型效果,不用考虑性能,重点目标就是提分(f1_score),所以不用考虑线上实时性能啥的,怎么效果好怎么来。这种背景下文本分类任务主流做法是基于BERT预训练+微调的方式进行,这里预训练模型的好坏会直接影响文本分类的效果。我们实际项目中也经历了从bert_base、albert、roberta、nezha等预训练模型,目前使用效果最好的是roberta-wwm-ext,关于roberta模型的详细介绍可以参考我之前写过的一篇文章《广告行业中那些趣事系列18:RoBERTa-wwm-ext模型为啥能带来线上效果提升?》

outside_default.png

图1 roberta模型介绍

2.2 语义embedding优化

使用BERT类预训练模型对文本进行编码,BERT可以得到字粒度和语句粒度的embedding,现在要得到优质的语义embedding,一个通常的做法是使用【CLS】对应的向量作为语义embedding,还可以尝试使用第一层Transformer和最后一层Transformer的embedding相加之后取均值作为语义embedding,这种方式的好处在于第一层Transformer中包含更多的词信息,最后一层Transformer中包含更多的语句语义信息,将两者相加之后取均值可以兼顾词向量和句向量的信息,效果也会更好。这也是我们实际项目中使用的语义embedding方案。

2.3 分类层优化

得到语义embedding向量之后,需要接一个分类层。通常做法是直接使用一个dense层进行N分类任务,还可以使用CNN等方式构建更加复杂的分类层。实际项目中我们直接使用2-3层dense层作为分类层,这里需要注意一点,对于二分类任务,使用softmax效果会优于sigmoid。

2.4 使用知识蒸馏优化

相比于传统的文本分类通过类别指导模型进行学习,知识蒸馏通过logits来提供更多的暗知识从而让模型学习到更多的知识。拿手写数字识别任务来说,对于老师或者没有使用知识蒸馏的小模型来说,主要是通过训练数据来学习知识。我们的训练数据集是一张一张手写数字的图片,还有对应0到9十个数字的标签。在这种学习中我们可以用的只有十个类别值,比如一张手写数字1的图片样本的标签是1,告诉模型的知识就是这个样本标签是1,不是其他类别。而使用知识蒸馏的时候模型可以学到更多的知识,比如手写数字1的图片样本有0.7的可能是数字1,0.2的可能是数字7,还有0.1的可能是数字9。这非常有意思,模型不仅学到了标签本身的知识,还学习到了标签之间的关联知识,就是1和7、9可能存在某些关联,这些知识称为暗知识,这是知识蒸馏学到的知识,也是知识蒸馏有用的重要原因。

outside_default.png

图2 知识蒸馏可以提供更多的暗知识

关于知识蒸馏的详细介绍可以参考我之前写过的文章:《广告行业中那些趣事系列21:从理论到实战BERT知识蒸馏》

2.5 使用标签内容信息优化

我们还通过实验发现将文本分类任务转化成句子对匹配任务可以提升模型效果,主要原因是可以很好的利用标签信息。比如现在有个情感分类任务,如果是文本分类任务的话那么标签就是情感类别;但是如果转化为句子对匹配任务,那么可以将文本作为sentence1,将标签内容信息比如“快乐”作为sentence2,拼接成【CLS】sentence1【SEP】sentence2用于构建句子对匹配任务,如果匹配则标签为1,否则为0。通过这种方式可以将标签本身的内容信息也提供给模型,从而提升模型效果。实验中还发现可以添加标签相关信息的关键词可以进一步提升模型效果,比如对于“快乐”情绪可以添加高兴、开心等表达对应情绪的关键词,可以提供更多的额外信息。

2.6 损失函数优化

因为分类任务中经常会遇到样本不均衡问题,从模型层面缓解这一类问题可以优化损失函数,常用的有使用类别加权loss、Focal loss、GHM loss。类别加权loss主要是对样本数量多的类别降低权重,Focal loss将模型容易识别的样本降低权重,GHM loss则对模型容易识别和特别难以识别的样本都降低权重。下面看看交叉熵损失函数、Focal Loss和GHM Loss三种损失函数对不同梯度模长样本的抑制效果图:

outside_default.png

图3 三种损失函数对样本的抑制效果图

关于通过缓解样本不均衡问题从而提升文本分类效果可以参考我之前写过的一篇文章:《广告行业中那些趣事系列24:从理论到实践解决文本分类中的样本不均衡问题》

2.7通过半监督和主动学习优化

如果你可以拿到业务相关的无标签数据,就可以尝试下通过半监督学习和主动学习的策略来优化文本分类任务,通过半监督学习中的各种enlarge策略来扩展训练集规模,通过主动学习策略来标注更有价值的语料,从而提升模型的效果。之前也分享过我们构建的oCTS分类器优化训练系统,通过半监督学习和主动学习流程进行优化训练,半监督和自训练流程项目基本流程图如下所示:

outside_default.png

图4 半监督和自训练流程项目基本流程图

关于oCTS分类器优化训练系统详细介绍可以参考我之前写过的文章:《广告行业中那些趣事系列40:广告场景文本分类任务样本优化实践汇总》

2.8 通过样本增强技术优化

通过样本增强技术可以有效增加训练样本,从而也可以提升模型效果。NLP场景中常用的样本增强技术比如回译技术、机会替换技术、词重复等都可以有效增加训练样本规模,下面是NLP常用的样本增强技术汇总:

outside_default.png

图5 NLP中常用的的样本增强技术介绍

其中通过simbert相似语义增加样本效果尤其明显,关于simbert模型的详细介绍可以参考之前写过的一篇文章:《广告行业中那些趣事系列30:实际业务超好用的SimBERT》

关于NLP中常用的的样本增强技术详细介绍可以参考我之前写过的这篇文章:《广告行业中那些趣事系列13:NLP中超实用的样本增强技术》

总结和反思

我们顺利通过初赛,也就是根据对话文本内容来输出情绪标签的文本分类任务。初赛中我们也遇到一个比较棘手的问题抛出来和大家一起分享,也就是训练集和测试集分布不同,具体现象是:官方提供了训练集,我们将训练集切分成train和val,使用train训练的模型在val上效果非常好,但是提交进行评估发现在测试集上(测试集对参赛选手不可见)效果会下降很多。碰到这种情况大家会怎么处理?

本篇主要总结了一下我在实际项目中对于文本分类任务的优化策略,主要包括预训练模型优化、语义embedding优化、分类层优化、使用知识蒸馏优化、使用标签内容信息优化、优化损失函数、通过半监督和主动学习优化、通过样本增强技术优化。对于想要提升线上文本分类任务效果的小伙伴可能有所帮助。

最新最全的文章请关注我的微信公众号或者知乎专栏:数据拾光者。

a756538e525cd59555a7c05f54f4a5cf.png

码字不易,欢迎小伙伴们点赞和分享。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/68275.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

专访 | 罗成:开源并非“只可远观”

OpenMLDB: 请先来一段自我介绍吧。 罗成: 我是罗成,来自华中科技大学,目前研二在读,研究方向是云原生数据库的架构研究。 OpenMLDB: 请问是什么样的契机让你接触到了 OpenMLDB 呢? 罗成: 当时课余时间比…

skywalking链路追踪整合spring-cloud

skywalking安装资料 一、安装skywalking 将apache-skywalking-apm-bin.zip上传到/opt目录下2. 解压apache-skywalking-apm-bin.zip unzip apache-skywalking-apm-bin.zip,解压后即可使用,里面的配置文件都提前配置好了 3. 启动skywalking 进入apache-…

HTML做一个传统节日端午节 带设计报告4500字

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

征文连载丨在不修改数据库源码的情况下,如何提高 MogDB 对 Oracle 的兼容性?...

: 2022年8月4日至9月9日,墨天轮社区联合云和恩墨发起了首届「MogDB 主题征文活动」,邀请各位技术从业者学习、使用 MogDB 数据库,分享使用心得与实战案例,一起探索这款融合了众多创新特性的商业版企业级数据库。活动期…

[附源码]Python计算机毕业设计Django校园租赁系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Docker安装Jenkins

docker安装:可参考这里 拉取Jenkins镜像 docker pull jenkins/jenkins创建挂载目录并赋予777权限 mkdir /data/jenkins chmod 777 /data/jenkins运行Jenkins容器并设置名字、端口、目录、时间 50000:50000:前面端口是宿机的端口,:后面端口…

客服如何维护客户?

有网店工作经验的客服,都知道维护老客户的重要性,因为老客户关乎着商品的销量、店铺的升级、客户转化率的多少,因此客服需要通过好的售后服务留住大量的老客户。 前言 有网店工作经验的客服,都知道维护老客户的重要性&#xff0c…

LIBTIFF读取tiff文件时,打印buf出错

如图所示,按照官网提供的例程读取tiff文件,并打印读取的值时,提示: Subscript of pointer to incomplete type void 代码如下: //---打开tiff文件的测试TIFF* tif TIFFOpen("a.tif", "r");if(tif…

使用docker安装RocketMQ

1.创建namesrv服务拉取镜像docker pull rocketmqinc/rocketmq创建namesrv数据存储路径mkdir -p /docker/rocketmq/data/namesrv/logs /docker/rocketmq/data/namesrv/store构建namesrv容器docker run -d \ --restartalways \ --name rmqnamesrv \ -p 9876:9876 \ -v /docker…

如何用vue+免费的webdb 实现一个世界杯足球竞猜系统

一、前言 最近世界杯在如火如荼的进行。我们都知道,中国也派出了我们的一支强大的队伍:中国建筑队,全程参与了世界杯的所有比赛。 哈哈开个玩笑,不过说到世界杯,还真有不少朋友,不仅仅是看球,…

[附源码]Python计算机毕业设计Django疫情防控管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

手把手教你成为荣耀开发者:数据报表使用指引

荣耀开发者服务平台是荣耀面向开发者的统一生态入口,通过聚合周边内外部系统,分全球多站点部署,为全球开发者提供业务全生命周期的商业支撑服务,拥有应用分发、智慧服务、开放能力、HONOR Connect等众多业务等您来合作。 “数据报…

Partial differential equation

In mathematics, a partial differential equation (PDE) is an equation which imposes relations between the various partial derivatives of a multivariable function. The function is often thought of as an “unknown” to be solved for, similarly to how x is th…

【三维目标检测】SASSD(一)

SASSD是用于点云三维目标检测模型算法,发表在CVPR 2020《Structure Aware Single-stage 3D Object Detection from Point Cloud》,论文地址为“https://www4.comp.polyu.edu.hk/~cslzhang/paper/SA-SSD.pdf”。SASSD与基于Anchor的目标检测模型的结构基本…

Kafka(四)- Kafka 生产者

文章目录一、生产者消息发送流程1. 发送流程2. 生产者重要参数列表二、异步发送 API1. 普通异步发送2. 带回调函数的异步发送3. 同步发送三、生产者分区1. 分区好处2. 生产者发送消息的分区策略(1)默认的分区器 DefaultPartitioner(2&#xf…

行业沙龙第四期丨企业供应链协同的数字化解痛之道

当前,数字经济正在蓬勃发展,我们正在迈向一个协同一体的全球化时代。所谓协同,协者,众和之同也,多方能够协作才能达到一个共同的目标。其中,数据是实现协同的基本要素,技术是实现协同重要途径&a…

网络安全 核心基础篇总结

目录 前言 网络安全三大要素 CIA含义 1. Confidentiality(机密性) 1.1 机密性主要三个解决方法 1.1.1 加密 1.1.2 权限管理 1.1.3 敏感信息暴露 2. Integrity(完整性) 3. Availabitity(可用性) 威胁…

基于51单片机水塔水箱液水位WIFI监控报警设计proteus仿真原理图PCB

功能: 0.本项目采用STC89C52作为单片机系统的控制MCU 1.WIFI实时上传当前水位状态 2.通过液位传感器检测液位,检测到最低液位和最高液位时,超过设定阈值将声光报警 3.通过状态指示灯显示当前液位情况,三种颜色,红色代表…

快来给你的宠物视频加个表情特效吧

摘要:我们将给猫贴一张卡通脸,给 Elon Musk 贴上小胡子,给小狗贴上驯鹿角!本文分享自华为云社区《视频AI,给你的宠物加个表情特效!》,作者:HWCloudAI。 GAN 监督学习是一种联合端到…

Android适配【入坑指南+解决痛点】

Android适配是一个大坑,你可能早有耳闻。适配问题到底有多坑?为什么坑?以及如何从坑里爬出来? 概述 Android屏幕尺寸各异,而我们不可能根据各种尺寸都设计一套原型图去匹配,我们需要利用适配这一个过程把…