当前位置: 首页 > news >正文

自然语言处理(NLP)中的迁移学习

Transfer Learning in NLP

迁移学习(Transfer Learning)无疑是目前深度学习中的新热点(相对而言)。在计算机视觉领域,它已经应用了一段时间,人们使用经过训练的模型从庞大的ImageNet数据集中学习特征,然后针对较小的数据针对不同的任务对其进行进一步的训练。但是,在NLP中,迁移学习主要限于使用预训练的单词嵌入(这大大改善了基线)。最近,研究人员正在努力将整个模型从一项任务转移到另一项任务,这就是本文的主题。

Sebastian Ruder和Jeremy Howard也许是第一个通过其提出的ULMFiT方法,在NLP中的应用了迁移学习方法,该方法超越了所有最新的文本分类技术。

紧接着,OpenAI 在几个NLP任务上扩大了他们的想法,并超越了SOTA。

在2018年NAACL上,获得最佳论文奖的是介绍ELMo的论文,该论文是一种新的词嵌入技术,与ULMFiT背后的思想非常相似,该技术来自位于UWash的AllenAI和 Luke Zettlemoyer小组的研究人员。

在本文中,我将讨论所有这些新工作以及它们之间的相互关系。让我们从Ruder和Howard的引领潮流的架构开始。

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

《Universal Language Model Fine-Tuning for Text Classification》

用于文本分类(或任何其他受监督的NLP任务)的大多数数据集都非常小。这使得训练深度神经网络非常困难,因为深度神经网络倾向于过度拟合这些小的训练数据,并且在实践中不能很好地概括。

在计算机视觉领域,在庞大的ImageNet语料库上对任何模型进行预训练,是近些年的趋势。这比随机初始化好得多,因为该模型可以学习一般的图像特征,然后可以将其用于任何视觉任务(例如字幕或检测)。

Howard和Ruder从这个想法中得到启发,提出了一个bi-LSTM模型,该模型在一般的语言建模(LM)任务上进行训练,然后在文本分类上进行微调。原则上讲,这会很好地执行,因为该模型将能够使用从生成式预训练中获得的语 言语义知识。理想地,可以从任何源任务(source task)S到目标任务(target task)T进行此迁移。作者使用LM作为源任务,因为:

  • 它能够捕获语言的长期依赖long-term dependencies
  • 它有效地合并了层级hierarchical关系
  • 它可以帮助模型学习情绪sentiments
  • LM很容易获得大数据语料库

正式地,“ LM引入了一个假设空间H,该假设空间H对于许多其他NLP任务应该是有用的。”

对于体系结构,他们使用当时的SOTA: AWD-LSTM(应该是一个多层的双向LSTM网络,没有注意力模块,详参Salesforce Research的论文中的详细信息)。该模型在WikiText-103语料库上进行了训练。

训练完通用LM后,可以进行一些微调,将其按原样用于多个分类任务。为了进行这种微调和后续分类,作者提出了3种实现技巧。

区分性微调 Discriminative fine tuning:在LM的微调阶段(针对目标任务),不同的学习速率用于不同的层。这样做是因为这些层捕获了不同类型的信息。

斜三角学习率 Slanted triangular learning rates (STLR):学习率首先线性增加,然后在切割后逐渐降低,即“短暂增加 short increase”和“长时间衰减 long decay”。这类似于积极的余弦退火学习策略,现在很流行。

http://www.lryc.cn/news/358057.html

相关文章:

  • PLC集成BL121PO网关优化智能电网的远程管理PLC转OPC UA协议
  • 爬虫案例(读书网)
  • Linux系统编程(五)多线程创建与退出
  • 计算机毕业设计 | SpringBoot个人博客管理系统(附源码)
  • 字母的大小写转换
  • JTW结构
  • debian11安装留档@VirtualBox
  • SpringBoot——整合Thymeleaf模板
  • 电商推荐系统+电影推荐系统【虚拟机镜像分享】
  • (函数)判断素数(C语言)
  • git 学习随笔
  • 【因果推断python】1_因果关系初步1
  • (函数)颠倒字符串顺序(C语言)
  • 自定义数据集上的3D目标检测:使用OpenPCDet训练CenterPointPillar模型
  • 音乐传奇告别之作:《杰作》未解之谜❗❗
  • 【Postman接口测试】第四节.Postman接口测试项目实战(上)
  • opencv学习备份
  • Unity 中获取调用者方法名
  • k8s集群中pod的容器资源限制和三种探针
  • tar 详细说明
  • 渗透测试工具Cobalt strike-2.CS基础使用
  • 【UE5.1 角色练习】08-物体抬升、抛出技能 - part2
  • Java面试题--JVM大厂篇(1-10)
  • 【知识拓展】机器学习基础(一):什么是预处理对象、模型对象 、pipeline、Tokenizer
  • Linux dig 命令
  • 后台接口返回void有设置response相关内容,前端通过open打开接口下载excel文件
  • scp问题:Permission denied, please try again.
  • new CCDIKSolver( OOI.kira, iks ); // 创建逆运动学求解器
  • 【Go】Swagger v2 转 OpenApi v3 CLI - swag2op
  • python Z-score标准化