NLP中的迁移学习

摘要: 迁移学习正在各个领域大展拳脚,NLP领域正在受到冲击!

在我们之前的文章中,我们展示了如何使用CNN与迁移学习为我们自己创建图片构建分类器。今天,我们介绍NLP中迁移学习的最新趋势,并尝试进行分类任务:将亚马逊评论的数据集分类为正面或负面。

NLP中的迁移学习理念在fast.ai课程中得到了很好的体现,我们鼓励你查看论坛。我们这里的参考文件是  Howard,Ruder,“用于文本分类的通用语言模型微调”。

什么是迁移学习?

计算机视觉是一个使用迁移学习而取得巨大进步的领域。它具有数百万参数的高度非线性模型需要大量数据集进行训练,并且通常需要数天或数周才能进行训练,只是为了能够将图像分类为包含狗或猫!

17dcba8f5b371a2bc518eafcbeb0f5435ac2cd13

随着ImageNet的挑战,团队每年都参与竞争,以设计出最佳的图像分类器。已经观察到这些模型的隐藏层能够捕获图像中的一般知识(边缘、某些形式、样式......)。因此,每次我们想要改变任务时,没有必要从头开始重新训练模型。

让我们以VGG-16模型为例(Simonyan、Karen和Zisserman·“用于大规模图像识别的非常深的卷积网络。”(2014))

5e5e052f5274f4dcad94ed88ab1e64e050ef3031

这种架构比较复杂、层数多、参数数量多。作者声称使用4个强大的GPU训练了为3周时间。

迁移学习的想法是,由于中间层被认为是学习图像的一般知识,我们可以将它们用作当成比较全面的特征!我们将下载一个预先训练好的模型(在ImageNet任务上训练数周),删除网络的最后一层(完全连接的层,在ImageNet挑战的1000个类上投射功能),添加put而不是我们选择的分类器,适合我们的任务(如果我们有兴趣对猫和狗进行分类,则为二元分类器),最后仅训练我们的分类层。并且因为我们使用的数据可能与之前训练过的模型数据不同,我们也可以进行微调步骤,这样我们就能在相当短的时间内训练所有层。

除了更快地进行训练之外,迁移学习特别有趣,因为仅在最后一层进行训练使我们仅使用较少的标记数据即可,而端对端训练整个模型则需要庞大的数据集。标记数据很昂贵,并且非常需要建立高质量模型而不需要大数据集。

那么NLP中的迁移学习呢?

NLP深度学习的进展不像计算机视觉那样成熟。虽然可以想象机器能够学习边缘、圆形、正方形等形状,然后使用这些知识做其他事情,但对于文本数据来说这些并不简单。

最初流行的在NLP中迁移学习是由嵌入模型这个词(由word2vec和GloVe广泛推广)带来的。这些单词矢量表示利用单词的上下文,将它们表示为向量,其中相似的单词应具有相似的单词表示。

在这个图中,来自word2vec论文,我们看到该模型能够学习国家与其首都城市之间的关系。

5e82234aca0810e60ba5c3f71d6cc8552a055652

包括预先训练的单词向量已经显示出在大多数NLP任务中改进度量,因此已经被NLP社区广泛采用,被用来寻找甚至更好的单词/字符/文档表示。与计算机视觉一样,预训练的单词向量可以被视为特征化函数,转换一组特征中的每个单词。

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

用于文本分类的语言模型微调

今年早些时候霍华德和罗德提出了ULMFit模型,以此来进一步提升了迁移学习在NLP的应用。

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

ULMFit建议在非常大的文本语料库(例如维基百科)上训练语言模型,并将其用作任何分类器的主干!由于你的文本数据可能与维基百科的编写方式不同,因此你需要微调语言模型的参数以将这些差异考虑在内。然后,我们将在此语言模型的顶部添加分类器层,并仅训练此层!

ULMfit paper

让人惊讶的结果是,使用这种预训练的语言模型使我们能够在更少标记的数据上训练分类器!虽然未标记的数据在网络上几乎是无限的,但标记数据非常昂贵且耗时。

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

4fddcc02b9ccaa122139cc6c433c26c87d86b3c9

虽然只有100个示例,它们能够达到与使用20k示例从头开始训练时模型达到的相同错误率!

此外,他们还提供了代码,以你选择的语言预先训练语言模型。由于维基百科存在很多的语言中,因此我们可以使用维基百科数据快速从一种语言迁移到另一种语言。众所周知,公共标签数据集更难以使用英语以外的语言进行访问。在这里,你可以对未标记数据上的语言模型进行微调,花几个小时手动注释几百/千个数据点,并使分类器头部适应你预先训练的语言模型来执行你的任务!

 

游乐场与亚马逊评论

为了改变这种方法的不足之处,我们使用为其论文中的公共数据集上进行了尝试。我们在Kaggle上找到了这个数据集:它包含4百万条关于亚马逊产品的评论,并用积极或消极的情绪标记它们。我们将针对ULMfit的fast.ai课程调整将亚马逊评论分类为正面或负面。我们发现只需要1000个数据点,该模型就能够匹配通过在完整数据集上从头开始训练FastText模型获得的准确度分数。仅使用100个标记示例,该模型仍然能够获得良好的性能。

fb00de1f00c681ddef034eafed11231aeac94bf8

要重现此实验,你可以使用此笔记本,建议使用GPU来运行微调和分类部分。

NLP中的无监督与监督学习,围绕意义进行讨论

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

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

你可能已经关注了NLP中非常有趣的Twitter主题。在这个帖子中,艾米莉·本德利用“泰国房间实验”对她进行了反对意义捕获的论证:想象一下,你在一个巨大的图书馆里得到了所有泰国文学的总和。假设你还不懂泰语,你就不会从中学到任何东西。

所以我们可以认为语言模型学到的更多是语法而不是意义。然而,语言模型比仅仅预测语法相关的句子更好。例如,“我要吃来这台电脑”和“我讨厌这台电脑”两者在语法上都是正确的,但一个好的语言模型应该能够知道“我讨厌这台电脑”应该比另外一句更“准确”。所以,即使我看过整个泰语维基百科,我也无法用泰语写作,但很容易看出语言模型确实超越了简单的语法/结构理解。

我们不会在这里进一步探讨意义的概念(这是一个无穷无尽且引人入胜的话题/辩论),如果你有兴趣,我们建议你看下Yejin Choi在ACL 2018的演讲中是如何探讨这一主题的。

NLP中迁移学习的未来

ULMFit取得的进展推动了NLP迁移学习的研究。对于NLP来说,这是一个激动人心的时刻,因为其他微调语言模型也开始出现,特别是FineTune Transformer LM。我们还注意到,随着更好的语言模型的出现,我们甚至可以改善这种知识迁移。

原文链接

本文为云栖社区原创内容,未经允许不得转载。

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

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

相关文章

Linux Shell脚本专栏_服务器系统配置初始化脚本_01

文章目录一、服务器系统配置初始化1. 设置时区并同步时间① 脚本编写②脚本说明2. 禁用selinux① 脚本编写②脚本说明3. 关闭防火墙① 脚本编写②脚本说明4. 历史命令显示操作时间① 脚本编写②脚本说明5. 禁止root远程登录① 脚本编写②脚本说明6. 禁止定时任务发送邮件① 脚本…

公文字体字号标准2020_手把手教你写公文——红头文件的制作技巧

前言:不管你是在行政部门、事业单位,国企,还是在私企,只要是在办公室工作,一定会接触到公文处理的相关事务。大家都知道,红头公文作为一种有法律效力的文书,其规范性尤为重要,而国家…

计算机专业的学生也太太太太太惨了吧?

戳蓝字“CSDN云计算”关注我们哦!作者 | 景岁责编 | 阿秃最近又到了开学季,又一群懵懂的大学新生怀着憧憬走进了校园,如果让学长学姐们用一个词给学弟学妹们形容自己的专业的话,有的也许是“忙碌”,有的也许是“充实”…

19个AI热门应用领域,你确定不了解一下?

摘要: 19个AI热门应用领域,你知道多少? 1. 自然语言生成(Natural Language Generation) 自然语言生成是人工智能的分支,研究如何将数据转化为文本,用于客户服务、报告生成以及市场概述。 2.语…

koa2 mysql增删改查_koa2对mongodb的增删改查

构建项目npm install -g koa-generatorkoa2 -e projectnamenpm install mongoose说明:我们用mongoose来操作mongodb,需要安装mongoose。生成项目后,在项目里新建一个文件夹dbs,用来存放和数据库相关的配置文件,配置文件…

人工智能的时代来了,新的商业机会在哪里?

摘要: 新的时代到来意味着新的商业社会的到来,那么这些新的商业机会在哪里呢? 提起人工智能,大多数人脑子里首先跳出的可能是这些问题,人工智能会使人类都失业吗?人工智能真的可以有自我意识以及情感吗&am…

python解析excel公式_[python][openpyxl]读取excel中公式的结果值

要读取cell中的值,但是,如果cell中的值是一个公式,则读取出来的是公式。有时候我们希望读取到公式计算出来的结果,可以使用load_workbook()中的data_only属性。 load_workbook()中涉及到的全部属性,其中,re…

Linux Shell脚本专栏_Linux系统发送告警邮件脚本_02

文章目录一、Linux系统发送告警邮件脚本1. 安装mailx工具2. 编辑mailx配置文件3. 追加以下内容4. 发送邮件测试二、异常汇总2.1. 异常信息2.2. 开启授权码一、Linux系统发送告警邮件脚本 背景:外部服务器 需求:1. 安装mailx工具2. 编辑mailx配置文件3. …

任正非采访的数据分析解读

戳蓝字“CSDN云计算”关注我们哦!作者 | 林骥责编 | 阿秃2019 年 5 月 21 日,任正非接受国内媒体的采访,如果用文字转述的话,总共大约有 2.2 万个字。本文总结了任正非在采访中说的一些数据,并做了简单的分析解读&…

阿里推出 PolarFS 分布式文件系统:将存储与计算分开,提升云数据库性能(附论文)

摘要: 将存储与计算分开来大有意义,对于部署的云数据库而言更是如此。为此,阿里巴巴推出了一种新开发的名为PolarFS的分布式文件系统,旨在确保低延迟和高可用性。这个文件系统与阿里云上自己的PolarDB数据库服务搭配使用。 将存储…

ios开发 热搜词demo_手机app如何开发

泛娱科技​www.cpdzapp.com手机app开发流程为:1.首先,制作一款APP,必须要有相关的idea,也就是说,第一步是APP的idea形成。2.通过那些idea来进行APP的主要功能设计以及大概界面构思和设计。3.大功能模块代码编写以及大概…

Linux Shell脚本专栏_批量创建100用户并设置密码脚本_03

文章目录一、简单需求实现流程1. 添加用户2. 给用户设置密码二、企业需求实现流程2.1. 脚本准备工作2.2. 企业级脚本2.2. 需求说明2.3. 企业级脚本说明三、实战3.1. 运行脚本3.2. 查看创建的用户3.3. 查看文件中的用户和密码信息一、简单需求实现流程 背景:新入职1…

【大数据】Spark面试100问 | CSDN博文精选

戳蓝字“CSDN云计算”关注我们哦!作者 | 游骑小兵责编 | 阿秃Q:什么是Spark?A:简单理解,Spark是在Hadoop基础上的改进,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,…

为数据安全而生,阿里云容灾备份方案场景实践解析

摘要: 数字经济时代,数据正以超出想象的速度快速增长。短短几年,数据量已经从TB级别跃升到PB乃至ZB级别。 数字经济时代,数据正以超出想象的速度快速增长。短短几年,数据量已经从TB级别跃升到PB乃至ZB级别。 根据相关…

Dubbo项目入门

摘要: Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 它的特性如下 面向接口代理的高性能RPC调用 智能负载均衡 服务自动注…

linux 编辑器_Linux的vi编辑器详细总结

《大数据和人工智能交流》头条号向广大初学者新增C 、Java 、Python 、Scala、javascript 等目前流行的计算机、大数据编程语言,希望大家以后关注本头条号更多的内容。vi是linux的文本编辑器,vim是vi编辑器的增强版本,习惯上也称为vi一、vi编…

聊聊困扰很多同学的一个问题:是否要转方向 ?

戳蓝字“CSDN云计算”关注我们哦!作者 | 大飞码字责编 | 阿秃这篇来聊聊困扰很多同学的一个问题:是否要转方向 ?这类问题没有标准的答案,每个人的理解也不一样,我写下的也只是我个人的想法,仅供大家参考。iOS 开发本…

傅里叶变换处理sar图像_SAR和ISAR雷达的基础知识

合成孔径雷达(SAR)和逆合成孔径雷达(ISAR)是使用雷达绘制静止物体(通常为地形)的方法。SAR/ISAR系统部署在飞机或卫星上,它们相对于地球表面或任何可能静止的物体或地形进行高速移动。SAR/ISAR得益于以下现象:相对于地形水平方向上的物体和/或天线&#…

带你玩转Logview: MaxCompute Logview参数详解和问题排查

Logview是MaxCompute Job提交后查看和Debug任务的工具。通过Logview可看到一个Job的运行状态、运行结果以及运行细节和每个步骤的进度。当Job提交到MaxCompute后,会生成Logview的链接,用户可以直接在浏览器上打开Logview链接,进入查看Job的信…

Linux Shell脚本专栏_找出占用CPU/内存过高的进程_05

文章目录找出占用CPU/内存过高的进程1. 脚本2. 运行脚本3. 效果图找出占用CPU/内存过高的进程 1. CPU 过高的进程2. 内存 过高的进程1. 脚本 #/bin/bash echo "----------------------- CPU TOP 10------------------------" ps -eo user,pid,pcpu,pmem,args --sort…