文献阅读笔记—Universal Language Model Fine-tuning for Text Classification

本文介绍了一种NLP领域的迁移学习方法,通过预训练语言模型并采用精调技巧,如Discriminative fine-tuning和Slanted triangular learning rates,有效避免了小数据集上的过拟合,同时在文本分类任务上保持了模型的泛化能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

迁移学习在nlp领域的应用之pretrain language representation,四连载,建议按顺序看,看完对该方向一定会非常清楚的!

(一)ELMO:Deep contextualized word representations

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

(三)openAI GPT:Improving Language Understanding by Generative Pre-Training

(四)BERT: Pretraining of Deep Bidirectional Transformers for Language Understanding

一、问题描述

这是一篇18年的ACL文章。以前的nlp迁移学习,要么是使用task数据fine-tuning词向量(如glove这种),相当于更改模型的第一层,要么是将其他任务得到的词向量和本任务的输入concat起来,但其实这些pretrain的词向量都是被当做固定参数用的,且该任务的模型是从头训练的。因此出现了pretrain语言模型(language model),但是语言模型容易在小型数据上过拟合,且当训练分类器时容易忘记pretrain语言模型学到的知识,本文提出一种语言模型的精调(fine-tuning)技巧,用于nlp领域的迁移学习(transfer learning),并在6个文本分类任务上做验证。

二、语言模型及trick

整个模型框架分为三个阶段: 


a) LM pre-training。在该阶段就是包含大量各种domain中的数据(如wikitext)进行预训练语言模型; 语言模型是指3层的单向LSTM(双向后面会讲),这里LSTM的小细节(无attention、有一些dropout超参数)来源于AWD-LSTM(有兴趣可百度)
b) LM fine-tuning。在该阶段就是是使用目标domain中的数据进行语言模型的fine-tuning操作,但是作者在该阶段fine-tuning的时候采用了2种策略: 
        Discriminative fine-tuning,即对layer1,layer2和layer3采用不同的学习速率,layer3是最后一层学习速率为θ\theta,那么layer2 的学习速率就是\frac{\eta }{2.6},layer3的学习速率就是\frac{\eta}{2.6\ast 2.6}
        Slanted triangular learning rates,学习率不断下降未必是好事,需要先增后降。即每一个iteration都会对学习速率有一个修正(iteration和epoch不一样,一个iteration是一次参数的更新,相当于一个batch),具体的修正公式如下: 

其中,T是总的迭代次数,t是当前的迭代次数,cut\_frac是转折比例,\eta _{max}是最大的学习速率, ratio是最大和最小学习率的差值。整个学习速率的图像如下所示: 
 


c) Classifier fine-tuning。在该阶段就是使用domain中的有标注数据进行分类器的训练,就是把layer3的LSTM的输出变量进行一系列的变换操作,最后输入分类器的形式就是 [h_T;maxpooling(H);meanpooling(H)]h_T就是最后一时刻的输出向量,分类器为两个线性block,每个线性block包含(batch normalization,dropout,ReLU),最后跟一个softmax输出属于某一类的概率。对于每个任务来说,这两个线性block和softmax都是从头训练的。那么在对分类器进行训练的时候,除了Discriminative fine-tuning和Slanted triangular learning rates技术。为了避免全部fine-tuning导致语言模型对之前学到的general知识的遗忘,引入

        Gradual unfreezing,从后往前(从layer3到layer1方向)逐步的添加。先只把最后一层解冻,接下来就把一个多余的网络层加入到解冻集合中去。由于后面的网络更多的是specific信息,前面的网络包含的更多general信息,这样的方式可以最大的幅度保存(a)、(b)阶段学习到的信息。

        BPTT for Text Classification,为了当输入文本很长时,可以较好的fine-tuning分类器,将文档拆成几个batch,每个batch的长度是一致的,哪一个batch促成了最后的preciction,就反向传播给哪个batch(具体操作还需看一下代码)。

        双向语言模型,使用两个单向语言模型(一个forward,一个backward),进行分类,最后取平均结果

三、存在疑问

1. inductive transfer learning和transductive transfer learning的区别?

 

参考网址:https://blog.youkuaiyun.com/guoyuhaoaaa/article/details/80805223

### Parameter-Efficient Fine-Tuning (PEFT) 的背景 Parameter-Efficient Fine-Tuning 是一种针对基础模型(Foundation Models)优化的技术,旨在通过仅调整一小部分参数来实现高效的微调过程。这种方法不仅减少了计算资源的需求,还提高了训练效率[^1]。 在神经网络中,通常会应用正则化技术以防止过拟合并促进泛化能力。这些技术可以强制模型学习更小的权重参数,从而减少复杂度和潜在的风险。对于大规模的基础模型而言,Parameter-Efficient Fine-Tuning 方法进一步扩展了这一理念,专注于更新少量的关键参数而非整个模型的所有参数。 ### 如何获取 PEFT 论文 PDF? 为了下载有关 **Parameter-Efficient Fine-Tuning for Foundation Models** 的论文,可以通过以下几种方式: #### 1. 使用学术搜索引擎 利用 Google Scholar 或 Semantic Scholar 这样的平台输入关键词 “Parameter-Efficient Fine-Tuning”,即可找到相关研究文章及其链接。大多数情况下,可以直接访问免费版本或者通过机构权限下载全文[^2]。 #### 2. GitHub 和开源社区 许多研究人员会在其个人主页或 GitHub 上分享研究成果以及配套代码库。例如,在 awesome-LLM-resources 项目中可能包含了大量关于大语言模型(LLMs)及相关主题的资料汇总,其中包括 PEFT 技术的应用实例与理论解释。 以下是 Python 实现的一个简单示例,展示如何加载预定义适配器来进行高效微调: ```python from peft import get_peft_model, LoraConfig, TaskType # 定义 LoRA 配置 peft_config = LoraConfig( task_type=TaskType.CAUSAL_LM, inference_mode=False, r=8, lora_alpha=32, lora_dropout=0.1, ) model = ... # 加载基础模型 peft_model = get_peft_model(model, peft_config) ``` 此脚本片段展示了基于 Hugging Face 提供的 `peft` 库创建低秩适应层的过程,这是实现 parameter-efficient fine-tuning 常见的一种方法之一。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值