Re73 读论文:ULMFiT Universal Language Model Fine-tuning for Text Classification

news2024/11/16 12:06:34

诸神缄默不语-个人CSDN博文目录
诸神缄默不语的论文阅读笔记和分类

论文全名:Universal Language Model Fine-tuning for Text Classification
模型简称:ULMFiT
模型全名:Universal Language Model Fine-tuning

ArXiv网址:https://arxiv.org/abs/1801.06146
(论文中提供的代码已经过时了)

本文是2018年ACL论文,反正整体思路也是预训练-微调,先预训练,然后在目标数据集上微调语言模型,然后接分类头微调下游任务。模型基底是AWD-LSTM模型(3层LSTM)。
(当年语言模型还是纯纯的语言模型,不是Transformers)
论文整体思路已经讲烂了。主要比较值得在意的内容是微调阶段的几个trick:discriminative fine-tuning (Discr), slanted triangular learning rates (STLR)(“1cycle” Policy), and gradual unfreezing

文章目录

  • 1. 背景
  • 2. ULMFiT
    • 2.1 AWD-LSTM
    • 2.2 Discr
    • 2.3 STLR
    • 2.4 下游任务微调
  • 3. 实验
    • 3.1 数据集
    • 3.2 对比实验
    • 3.3 模型分析
  • 4. 复现代码
    • 4.1 fastai包
  • 参考资料

1. 背景

预训练-微调模式常用于CV领域,本文将其应用于NLP中的文本分类任务。

本文研究的是inductive迁移学习。
transductive和inductive的区别我主要在GNN那几篇博文里写了,在此不再赘述。
NLP transductive迁移学习((2007 ACL) Biographies, Bollywood, Boom-boxes and Blenders: Domain Adaptation for Sentiment Classification)似乎指的是那种传统的迁移学习方法 SCL (Structural Correspondence Learning),找两个领域的公共特征(Pivot feature)。
inductive迁移学习的前作是word2vec和合并其他任务输出的embeddings到当前模型中(1和ELMo),但是主模型还是需要从0开始训练,只固定预训练embeddings。

(2015) Semi-supervised Sequence Learning:微调,但需要大量数据

微调:
(2015 SemEval) UNITN: Training Deep Convolutional Neural Network for Twitter Sentiment Classification
(2015) Improving neural machine translation models with monolingual data
(2017 ACL) Question Answering through Transfer Learning from Large Fine-grained Supervision Data

LM直接加分类头在小数据集上微调会导致灾难性遗忘。

2. ULMFiT

在这里插入图片描述
(不知道为什么看这个图我给联想到了verifier……但是性质不一样,我就不延伸了)

原任务:语言模型
优势:能捕捉多样知识,数据充分

微调:
语言模型(discriminative fine-tuning (‘Discr’) and slanted triangular learning rates (STLR))→ 分类器(gradual unfreezing, ‘Discr’, and STLR)

2.1 AWD-LSTM

原论文:(2017) Regularizing and Optimizing LSTM Language Models

LSTM + 多样化微调的dropout

2.2 Discr

Discriminative fine-tuning

主旨:不同层用不同的学习率

SGD更新参数:
在这里插入图片描述

Discr更新参数:
在这里插入图片描述
经验之选: η l − 1 = η l / 2.6 \eta^{l-1}=\eta^l/2.6 ηl1=ηl/2.6

2.3 STLR

slanted triangular learning rates

从低学习率开始线性增长,最后下降回初值。这种方法使模型能够探索更广泛的学习率范围,从而摆脱次优局部极小值,最终获得更好的解决方案。

在这里插入图片描述

在这里插入图片描述

2.4 下游任务微调

2个线性模块:batch normalization,dropout,ReLU

Concat pooling
在这里插入图片描述

Gradual unfreezing:从最后一层开始解冻,一个epoch解冻一层

BPTT for Text Classification (BPT3C)
backpropagation through time (BPTT)

Bidirectional language model

3. 实验

详细实验设置略。

3.1 数据集

在这里插入图片描述

3.2 对比实验

评估指标:error rates

在这里插入图片描述

3.3 模型分析

在不同训练集规模下,是否使用预训练-微调范式产生的模型效果差异,以及是否利用无标签数据做语言模型训练(半监督学习)的效果差异:
在这里插入图片描述

预训练的效果:
在这里插入图片描述

基语言模型的效果:
在这里插入图片描述

预训练阶段的trick:
(full是直接全量微调)
在这里插入图片描述
(freez是gradual unfreezing,cos是aggressive cosine annealing schedule,last常用于CV2
在这里插入图片描述

在这里插入图片描述

LM的双向性也带来了效果提升

4. 复现代码

4.1 fastai包

参考官方教程:https://docs.fast.ai/tutorial.text.html

我写了个colab文件,可以直接运行(第2个一级标题那里开始是ULMFiT的代码,先在IMDB数据集上预训练语言模型,然后在IMDB数据集上微调分类器):https://colab.research.google.com/drive/1hXYiutt_tTKIB-rP_MvdOjVSa2tk2h6y?usp=sharing

参考资料

  1. Let’s learn about Universal Language Model Fine-tuning, ULMFiT | by Ashley Ha | Medium:这篇文章里面的代码已经老到和最新版的fastai包不兼容了,但是理论还是可供参考的,简单介绍了一下预训练-微调范式是怎么一回事
  2. 迁移学习_迁移学习简明手册(王晋东)_阅读笔记7-8_structural corresponding learning-CSDN博客

  1. (2016 EMNLP) How Transferable are Neural Networks in NLP Applications?
    (2017 ACL) Semi-supervised sequence tagging with bidirectional language models
    (2017 ACL) Revisiting Recurrent Networks for Paraphrastic Sentence Embeddings
    (2017 EMNLP) Supervised Learning of Universal Sentence Representations from Natural Language Inference Data
    (2017 Advances in Neural Information Processing Systems) Learned in Translation: Contextualized Word Vectors ↩︎

  2. 在早期的计算机视觉迁移学习工作中,微调的方法通常分为两种主要模式:固定特征提取和完全微调。
    固定特征提取:这一方法通常会冻结预训练网络的大部分层,只对最后一层进行重新训练。例如,在使用预训练的VGG16模型时,常常会冻结所有卷积层,只训练新的全连接层。这种方式利用了预训练模型的已有特征提取能力,仅通过调整最后的分类层来适应新任务。
    参考资料:(1) Transfer Learning for Computer Vision Tutorial — PyTorch Tutorials 2.3.0+cu121 documentation (2) Hands-on Transfer Learning with Keras and the VGG16 Model – LearnDataSci
    完全微调:这一方法会在整个网络上进行训练,但前几层的权重变化通常很小,只在后几层进行较大的调整。一般来说,早期层学到的是通用特征(如边缘、纹理等),这些特征对于大多数视觉任务都是有用的,而后期层则学到的是特定任务的特征
    参考资料:迁移学习和微调 | TensorFlow Core

    具体来说,微调时常见的操作包括:
    ① 冻结前几层,只训练最后几层以适应新任务。
    ② 逐层解冻:首先冻结所有层,然后逐渐解冻靠近输出层的几层,最后解冻更多层,直至整个网络。
    ③ 部分冻结:有时会只解冻中间几层,保持前几层和后几层的冻结状态,以利用中间层的特征表达。(参考资料:What Is Transfer Learning? A Guide for Deep Learning | Built In)

    在不同的任务和数据集上,哪种方法效果最好可能会有所不同,因此实际应用中需要根据具体情况进行实验和调整。 ↩︎

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

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

相关文章

Three.js 入门介绍与环境搭建

Three.js 入门介绍与环境搭建 一、引言 Three.js 是一个强大的用于在网页上创建和展示 3D 图形的 JavaScript 库。艾斯视觉作为ui设计和前端开发服务商在这里很高兴能与你共同探讨学习:它使得开发者能够轻松地构建令人惊叹的 3D 场景和交互体验。在这篇文章中&…

Type ‘null‘ is not assignable to type ‘T‘. - ArkTSCheck

设置泛型将参数配置为 null 时抛出了如下异常: Type null is not assignable to type T. T could be instantiated with an arbitrary type which could be unrelated to null. <ArkTSCheck> 解决办法 在 null 后面添加 ! 即可,以表示该值不会为 null data: T null! 以…

python-web框架应用程序-Django环境搭建

python-web应用程序-Django环境搭建 一、Django入门 使用Django&#xff08;http://djangoproject.com/&#xff09;来开发一个名为“学习笔记”&#xff08;Learning Log&#xff09;的项目&#xff0c;这是一个在线日志系统&#xff0c;让你能够记录所学习的有关特定主题的知…

leetcode - 20.有效的括号(LinkedHashMap)

leetcode题目有效的括号&#xff0c;分类是easy&#xff0c;但是博主前前后后提交了几十次才通过&#xff0c;现在记录一下使用Java语言的写法。 题目链接: 20.有效的括号 题目描述&#xff1a; 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&…

SAP 生产订单报工函数BAPI_PRODORDCONF_CREATE_TT不返回报错信息

最近财务一直反馈MES报工的数据都没有成本,然后去查看原因发现是财务当月的KP26的价格没有进行维护,导致没有收集到工单的报工成本。 但是在前台操作CO11 报工的时候,系统会给出报错的信息 但是我们在调用函数BAPI_PRODORDCONF_CREATE_TT的时候,系统并没有返回报错的信息…

Windows电脑高颜值桌面便利贴,便签怎么设置

在这个看颜值的时代&#xff0c;我们不仅在衣着打扮上追求时尚与美观&#xff0c;就连电脑桌面也不愿放过。一张唯美的壁纸&#xff0c;几款别致的小工具&#xff0c;总能让我们的工作空间焕发出不一样的光彩。如果你也热衷于打造高颜值的电脑桌面&#xff0c;那么&#xff0c;…

下一代 CI/CD:利用 Tekton 和 ArgoCD 实现云原生自动化

一、回顾目标 背景&#xff1a; ​ 部门业务上云&#xff0c;之前服务采用传统的部署方式&#xff0c;这种方式简单&#xff0c;但是不能为应用程序定义资源使用边界&#xff0c;很难合理地分配计算资源&#xff0c;而且程序之间容易产生影响。随着互联网时代的到来&#xff…

Leetcode - 131双周赛

一&#xff0c;3158. 求出出现两次数字的 XOR 值 本题是一道纯模拟题&#xff0c;直接暴力。 代码如下&#xff1a; class Solution {public int duplicateNumbersXOR(int[] nums) {int ans 0;long t 0;for(int x : nums){if(((t>>x)&1) 1){ans ^ x;}else{t | (…

图片去水印工具(低调用哦)

一、简介 1、它是一款专业的图像编辑工具&#xff0c;旨在帮助用户轻松去除照片中不需要的元素或修复照片中的缺陷。无论是修复旧照片、消除拍摄时的不良构图&#xff0c;还是删除照片中的杂乱元素&#xff0c;都能帮助用户快速实现这些目标。其功能强大且操作简单&#xff0c…

代码随想录算法训练营第36期DAY43

DAY43 343整数拆分 注意&#xff1a;当几个数的数值相近&#xff0c;乘积才会尽可能地大&#xff08;好想&#xff1a;数一大一小&#xff0c;最大当然是自己乘以自己&#xff09; 代码随想录官方题解&#xff1a; class Solution {public: int integerBreak(int n) { …

在outlook的邮件中插入HTML;HTML模板获取

本文介绍如何在outlook发送邮件时&#xff0c;在邮件中插入HTML&#xff0c;此HTML可以从获取模板自行进行修改。 文章目录 一、下载HTML模板&#xff08;或自己制作好HTML文件&#xff09;二、outlook新增宏三、新建邮件&#xff0c;插入HTML 一、下载HTML模板&#xff08;或自…

某烟草企业数字化转型物流信息化咨询项目规划方案(117页PPT)

方案介绍&#xff1a; 烟草企业数字化转型物流信息化咨询项目规划方案将为企业带来多方面的价值&#xff0c;包括提升物流运营效率、降低物流成本、优化供应链管理、增强企业竞争力和促进可持续发展等。这些价值的实现将有助于企业在激烈的市场竞争中保持领先地位并实现可持续…

5292A 物联网信号分析仪

5292A 物联网信号分析仪 —— 10MHz&#xff5e;6GHz —— 简述 5292A物联网信号分析仪是一款通用的矢量信号分析仪&#xff0c;频率范围覆盖 10MHz&#xff5e;6GHz&#xff0c;具有良好的频率、功率测量精度和稳定度&#xff1b;支持模拟与数字调制信号、全制式的通信标准…

【408真题】2009-23

“接”是针对题目进行必要的分析&#xff0c;比较简略&#xff1b; “化”是对题目中所涉及到的知识点进行详细解释&#xff1b; “发”是对此题型的解题套路总结&#xff0c;并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材&#xff08;2025版&…

OpenCV:入门(四)

形态学操作 形态学&#xff0c;即数学形态学&#xff08;Mathematical Morphology&#xff09;&#xff0c;是图像处理过程中一个非常重要的研 究方向。形态学主要从图像内提取分量信息&#xff0c;该分量信息通常对于表达和描绘图像的形状具有 重要意义&#xff0c;通常是图像…

花钱学谢宁DOE培训,投入产出比到底如何?

在当今这个快速发展的时代&#xff0c;无论是职场人士还是创业者&#xff0c;都渴望通过不断学习来提升自我能力&#xff0c;以便在竞争激烈的市场中脱颖而出。其中&#xff0c;谢宁DOE培训因其独特的理念和方法&#xff0c;吸引了众多求学者的目光。然而&#xff0c;面对不菲的…

从零开始利用MATLAB进行FPGA设计(六)用ADC采集信号教程1

黑金的教程做的实在太拉闸了&#xff0c;于是自己摸索信号采集模块的使用方法。 ADC模块&#xff1a;AN9238 FPGA开发板&#xff1a;AX7020&#xff1b;Xilinx 公司的 Zynq7000 系列的芯片XC7Z020-2CLG400I&#xff0c;400引脚 FBGA 封装。 往期回顾&#xff1a; 从零开始利…

Vue项目运行页面禁止缩放【移动端和PC端都禁止缩放】解决方案

Vue项目运行页面禁止缩放【移动端和PC端都禁止缩放】解决方案&#xff0c;有的人手很J,总喜欢放大缩小&#xff0c;从而会导致页面错乱&#xff0c;以下是解决方案&#xff0c;简单有效 效果图PC&#xff1a;滚轮缩放和其他缩放都会禁止 移动端效果图&#xff1a;各种手机平板…

Python数据处理,使用 tkinter 模块点击获取文件目录

Python数据处理&#xff0c;使用 tkinter 模块点击获取文件目录 正文 正文 当我们进行数据处理读取文件内数据的时候&#xff0c;通常&#xff0c;我们需要设定好一个存放当前文件所在目录的变量。比如如下目录&#xff1a; file_path rC:\Users\xxx\Desktop\DataSet\Data.c…

20240528解决飞凌的OK3588-C的核心板的TYPE-C1接口识别问题

20240528解决飞凌的OK3588-C的核心板的TYPE-C1接口识别问题 2024/5/28 16:46 缘起&#xff1a; 现阶段碰到的USB相关的问题&#xff1a;&#xff08;LINUX R4版本&#xff09; 1、USB3.0插USB摄像头 lsusb找不到设备 2、刷机口只接了3根线&#xff0c;GND/D/D-&#xff0c;可以…