干货 | 只有100个标记数据,如何精确分类400万用户评论?

2024-04-14 00:38

本文主要是介绍干货 | 只有100个标记数据,如何精确分类400万用户评论?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

640?wx_fmt=png

来源:新智元

本文共2200字建议阅读6分钟。

本文介绍了面向NLP任务的迁移学习新模型ULMFit,只需使用极少量的标记数据,文本分类精度就能和数千倍的标记数据训练量达到同等水平。

[ 导读 ]在本文中,我们将介绍自然语言处理(NLP)在迁移学习上的最新应用趋势,并尝试执行一个分类任务:使用一个数据集,其内容是亚马逊网站上的购物评价,已按正面或负面评价分类。然后在你可以按照这里的说明,用你自己的数据重新进行实验。在数据标记成本高数量少的情况下,这个通用语言微调模型可以大幅降低你的NLP任务训练时间和成本。


640?wx_fmt=png


迁移学习模型的思路是这样的:既然中间层可以用来学习图像的一般知识,我们可以将其作为一个大的特征化工具使用。下载一个预先训练好的模型(模型已针对ImageNet任务训练了数周时间),删除网络的最后一层(完全连接层),添加我们选择的分类器,执行适合我们的任务(如果任务是对猫和狗进行分类,就选择二元分类器),最后仅对我们的分类层进行训练。


由于我们使用的数据可能与之前训练过的模型数据不同,我们也可以对上面的步骤进行微调,以在相当短的时间内对所有的层进行训练。


除了能够更快地进行训练之外,迁移学习也是特别有趣的,仅在最后一层进行训练,让我们可以仅仅使用较少的标记数据,而对整个模型进行端对端训练则需要庞大的数据集。标记数据的成本很高,在无需大型数据集的情况下建立高质量的模型是很可取的方法。


迁移学习NLP的尴尬


目前,深度学习在自然语言处理上的应用并没有计算机视觉领域那么成熟。在计算机视觉领域中,我们可以想象机器能够学习识别边缘、圆形、正方形等,然后利用这些知识去做其他事情,但这个过程对于文本数据而言并不简单。


最初在NLP任务中尝试迁移学习的趋势是由“嵌入模型”一词带来的。


640?wx_fmt=png


实验证明,事先将预先训练好的词向量加入模型,可以在大多数NLP任务中改进结果,因此已经被NLP社区广泛采用,并由此继续寻找质量更高的词/字符/文档表示。与计算机视觉领域一样,预训练的词向量可以被视为特征化函数,转换一组特征中的每个单词。


不过,词嵌入仅代表大多数NLP模型的第一层。之后,我们仍然需要从头开始训练所有RNN / CNN /自定义层。


高阶方法:微调语言模型,在上面加一层分类器


今年早些时候,Howard和Ruder提出了ULMFit模型作为在NLP迁移学习中使用的更高级的方法。


论文地址:https://arxiv.org/pdf/1801.06146.pdf


他们的想法是基于语言模型(Language Model)。语言模型是一种能够根据已经看到的单词预测下一个单词的模型(比如你的智能手机在你发短信时,可以为你猜测下一个单词)。就像图像分类器通过对图像分类来获得图像的内在知识一样,如果NLP模型能够准确地预测下一个单词,似乎就可以说它已经学会了很多关于自然语言结构的知识。这些知识可以提供高质量的初始化状态,然后针对自定义任务进行训练。


ULMFit模型一般用于非常大的文本语料库(如维基百科)上训练语言模型,并将其作为构建任何分类器的基础架构。由于你的文本数据可能与维基百科的编写方式不同,因此你可以对语言模型的参数进行微调。然后在此语言模型的顶部添加分类器层,仅仅对此层进行训练。


Howard和Ruder建议向下逐层“解冻”,逐步对每一层进行训练。他们还在之前关于学习速度(周期性学习)的研究成果基础上,提出了他们自己的三角学习速率(triangular learning rates)。


用100个标记数据,达到用20000个标记数据从头训练的结果


这篇文章得出的神奇结论是,使用这种预训练的语言模型,让我们能够在使用更少的标记数据的情况下训练分类器。尽管网络上未标记的数据几乎是无穷无尽的,但标记数据的成本很高,而且非常耗时。


下图是他们从IMDb情感分析任务中报告的结果:

640?wx_fmt=png


该模型只用了100个示例进行训练,错误率与20000个示例从头到尾进行完全训练的模型相仿。


此外,他们在文中还提供了代码,读者可以自选语种,对语言模型进行预训练。由于维基百科上的语言多种多样,因此我们可以使用维基百科数据快速完成语种的转换。众所周知,公共标签数据集更难以使用英语以外的语言进行访问。在这里,你可以对未标记数据上的语言模型进行微调,花几个小时对几百个至几千个数据点进行手动标注,并使分类器头适应您预先训练的语言模型,完成自己的定制化任务。


为了加深对这种方法的理解,我们在公共数据集上进行了尝试。我们在Kaggle上找了一个数据集。它包含400万条关于亚马逊产品的评论,并按积极/消极情绪(即好评和差评)加上了标记。我们用ULMfit模型对这些评论按好评/差评进行分类。结果发现,该模型用了1000个示例,其分类准确度已经达到了在完整数据集上从头开始训练的FastText模型的水平。甚至在仅仅使用100个标记示例的情况下,该模型仍然能够获得良好的性能。


640?wx_fmt=png


所以,语言模型了解的是语法还是语义?


我们使用ULMFit模型进行了监督式和无监督式学习。训练无监督的语言模型的成本很低,因为您可以在线访问几乎无限数量的文本数据。但是,使用监督模型就很昂贵了,因为需要对数据进行标记。


虽然语言模型能够从自然语言的结构中捕获大量相关信息,但尚不清楚它是否能够捕捉到文本的含义,也就是“发送者打算传达的信息或概念”或能否实现“与信息接收者的交流”。


我们可以这样认为,语言模型学到的更多是语法而不是语义。然而,语言模型比仅仅预测语法的模型表现更好。比如,“I eat this computer“(我吃这台电脑)和“I hate this computer”(我讨厌这台电脑),两句话在语法上都是正确的,但表现更优秀的语言模型应该能够明白,第二句话比第一句话更加“正确”。语言模型超越了简单的语法/结构理解。因此,我们可以将语言模型视为对自然语言句子结构的学习,帮助我们理解句子的意义。

 

由于篇幅所限,这里就不展开探讨语义的概念(尽管这是一个无穷无尽且引人入胜的话题)。如果你有兴趣,我们建议你观看Yejin Choi在ACL 2018上的演讲,深入探讨这一主题。

 

微调迁移学习语言模型,大有前景


ULMFit模型取得的进展推动了面向自然语言处理的迁移学习研究。对于NLP任务来说,这是一个激动人心的事情,其他微调语言模型也开始出现,尤其是微调迁移语言模型(FineTuneTransformer LM)。


我们还注意到,随着更优秀的语言模型的出现,我们甚至可以完善这种知识迁移。高效的NLP框架对于解决迁移学习的问题是非常有前景的,尤其是对一些常见子词结构的语言,比如德语,经过词级训练的语言模型的表现前景非常好。


怎么样?赶紧试试吧~

 

参考链接:

https://blog.feedly.com/transfer-learning-in-nlp/

Github相关资源:

https://github.com/feedly/ml-demos/blob/master/source/TransferLearningNLP.ipynb

相关论文:

Universal Language Model Fine-tuning for Text Classification(ULMFiT)

https://arxiv.org/pdf/1801.06146.pdf


640?wx_fmt=png

640?wx_fmt=jpeg

这篇关于干货 | 只有100个标记数据,如何精确分类400万用户评论?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/901660

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X