Task05:模型训练

本文详细探讨了三种类型的语言模型——Decoder-only、Encoder-only和Encoder-decoder,以及BERT和T5的具体目标函数。同时,讲解了Adam优化算法和几种减少存储占用的方法,如混合精度训练和AdaFactor。
摘要由CSDN通过智能技术生成

5.1⽬标函数

1.研究三类语⾔模型的⽬标函数:
	1.只包含解码器(Decoder-only)的模型(例如,GPT-3):计算单向上下⽂嵌
	⼊(contextual embeddings),⼀次⽣成⼀个token
	2.只包含编码器(Encoder-only)的模型(例如,BERT):计算双向上下⽂嵌⼊
	3.编码器解码器(Encoder-decoder)模型(例如,T5):编码输⼊,解码输出
2.将token序列映射到上下⽂嵌⼊中(例如,LSTM、Transformers):

![[Pasted image 20240123112625.png]]

5.1.1Decoder-only 模型

1.⾃回归语⾔模型定义了⼀个条件分布:

![[Pasted image 20240123003151.png]]

2.将其定义如下:
	1将
	
	![[Pasted image 20240123112810.png]]
	
	映射到上下⽂嵌⼊
	
	![[Pasted image 20240123112831.png]]。
	
	2.应⽤嵌⼊矩阵
	
	![[Pasted image 20240123112946.png]]
	
	来获得每个token的得分
	
	![[Pasted image 20240123113016.png]]。
	
	3.对其进⾏指数化和归⼀化,得到预测 的分布。
	4:
	
	![[Pasted image 20240123113104.png]]

5.1.1.1最⼤似然

1.设θ是⼤语⾔模型的所有参数。
2.设D是由⼀组序列组成的训练数据。
3.遵循最⼤似然原理.
4.定义以下负对数似然⽬标函数:

![[Pasted image 20240123114958.png]]

5.1.2Encoder-only 模型
5.1.2.1单向到双向

1.使⽤上述最⼤似然可以训练得到Decoder-only模型,它会产⽣(单向)上下⽂嵌
⼊。但如果我们不需要⽣成,我们可以提供更强的双向上下⽂嵌⼊。

5.1.2.2BERT

1.BERT的⽬标函数,包含两个部分:
	1.掩码语⾔模型(Masked language modeling)
	2.下⼀句预测(Next sentence prediction)
2.以⾃然语⾔推理(预测隐含、⽭盾或中性)任务中的序列为例:

![[Pasted image 20240123115415.png]]

3.其中有两个特殊的token:
	1.[CLS]:包含⽤于驱动分类任务的嵌⼊
	2.[SEP]:⽤于告诉模型第⼀个序列(例如,前提)与第⼆个序列(例如,假设)
	的位置。
4.BERT模型定义为:

![[Pasted image 20240123115700.png]]

5.其中,

![[Pasted image 20240123115809.png]]

根据序列返回以下两个⽮量之一:
	1.对于[SEP]左边的,返回
	
	![[Pasted image 20240123115928.png]]
	
	2.对于[SEP]右边的,返回
	
	![[Pasted image 20240123115952.png]]
	
6.

	![[Pasted image 20240123120201.png]]
	
	BERT-large有个
	
	![[Pasted image 20240123120311.png]]
	
	注意头,并且
	
	![[Pasted image 20240123120345.png]],
	
	总共355M个参数。

5.1.2.2.1掩码语⾔模型

1.基本思想是通过加噪然后预测来进⾏训练:
	
![[Pasted image 20240123222019.png]]
	
类似于去噪⾃动编码器,映射有噪声/不完整版本
	
![[Pasted image 20240123222858.png]],
	
重建原始
	
![[Pasted image 20240123222945.png]]。
![[Pasted image 20240123223015.png]]
	
2.建模:⾸先定义模型分布。给定输⼊
	
![[Pasted image 20240123223143.png]]
	
及其上下⽂嵌⼊,模型独⽴地预测每个token:

![[Pasted image 20240123223208.png]]

3.掩码:定义了⼀个(随机)噪声函数,

![[Pasted image 20240123223256.png]]

![[Pasted image 20240123223330.png]]

	1.以下是A的定义:
		1.假设
	
		![[Pasted image 20240123223434.png]]
	
		代表所有位置中随机的15%。

		2.对于每个
		
		![[Pasted image 20240123223629.png]]:
		
			1.以0.8的概率,
			
			![[Pasted image 20240123223700.png]]

			2.以0.1的概率,

			![[Pasted image 20240123223800.png]]

			3.以0.1的概率,
			
			![[Pasted image 20240123223834.png]]

4.减少分布偏移: 如果总是使⽤[MASK]来替换I中选定的token,则:
	1.在训练期间,输⼊到BERT的都是带[MASK]的序列。
	2.在测试时,输⼊没有[MASK]的句⼦,将导致分布发⽣变化。
	⼀种启发式的解决⽅法是在20%的时间内⽤真实单词替换。

5.1.2.2.2下⼀句预测

1.BERT是在拼接好的成对句⼦上训练的。
2.下⼀句预测的⽬标是预测第⼆句是否跟随第⼀句。

![[Pasted image 20240123224651.png]]
![[Pasted image 20240123224746.png]]

3.使⽤[CLS]的嵌⼊来做⼆分类。

5.1.2.2.3数据集

1.D是按如下⽅式构造的⼀组样本

![[Pasted image 20240123225148.png]]:
	
	1.令A是语料库中的⼀个句⼦。
	2.以0.5的概率,B是下⼀句话。
	3.以0.5的概率,B是语料库中的⼀个随机句⼦。
	4.令
	
	![[Pasted image 20240123225319.png]]

	5.令c表示B是否是下⼀句。

5.1.2.2.4训练⽬标

1.BERT的训练⽬标是:

![[Pasted image 20240123225445.png]]

2.总结BERT:
	1.BERT(以及ELMo和ULMFiT)表明,⼀个统⼀的体系结构(Transformer)可
	以⽤于多个分类任务。
	2.BERT真正将NLP社区转变为预培训+微调的范式。
	3.BERT显示了深度双向上下⽂嵌⼊的重要性,尽管通过模型⼤⼩和微调策略可能
	会弥补这⼀点(p-tuning)。

5.1.2.3RoBERTa

1.RoBERTa对BERT进⾏了以下改进:
	1.删除了下⼀句预测这⼀⽬标函数(发现它没有帮助)。
	2.使⽤更多数据训练(16GB⽂本 160GB⽂本)。
	3.训练时间更⻓。
	4.RoBERTa在各种基准上显著提⾼了BERT的准确性(例如,在SQuAD上由81.8到
	89.4)。

5.1.3Encoder-decoder 模型

1.任务示例(表格⽣成⽂本):

![[Pasted image 20240123225958.png]]

2.编码器-解码器模型(例如,BART、T5):
	1.⾸先像BERT⼀样对输⼊进⾏双向编码。
	2.然后像GPT-2⼀样对输出进⾏⾃回归解码。

5.1.3.1BART (Bidirectional Auto-RegressiveTransformers)

1.BART (Lewis et al. 2019)是基于Transformer的编码器-解码器模型。
	1.使⽤与RoBERTa相同的编码器架构(12层,隐藏维度1024)。
	2.使⽤与RoBERTa相同的数据进⾏训练(160GB⽂本)。
2.BART使⽤了以下变换

![[Pasted image 20240123230244.png]]
![[Pasted image 20240123230342.png]]

3.基于BERT的实验,最终模型进⾏以下了变换:
	1.掩码⽂档中30%的token
	2.将所有⼦句打乱通过微调,BART在分类和⽣成任务上都展示了强⼤的效果。

5.1.3.2T5 (Text-to-Text Transfer Transformer)

1.T5 (Raffel et al., 2020)是另⼀种基于Transformer的编码器-解码器模型。
2.预训练任务:
	1.给定⼀段⽂本,在随机位置将其分割为输⼊和输出:
	
	![[Pasted image 20240123230654.png]]

	2.论⽂尝试了许多不同的⽆监督⽬标:

	![[Pasted image 20240123230804.png]]

	3.并发现“i.i.d. noise, replace spans”效果最好(尽管许多⽬标相似)。
	4.论⽂还将所有经典的NLP任务放在⼀个统⼀的框架中,“Text-to-Text”任务:

	![[Pasted image 20240123230951.png]]

3.以分类任务任务为例,不同模型的差异如下:
	1.BERT使⽤[CLS]的嵌⼊来预测。
	2.T5、GPT-2、GPT-3等(⽣成模型)将分类任务转换成⾃然语⾔⽣成。
	注意:
	3.论⽂对整个pipline的许多⽅⾯(数据集、模型⼤⼩、训练⽬标等)进⾏了深
	⼊研究。
	4.基于这些⻅解,他们训练了⼀个11B的模型。

5.2优化算法

1.如何优化⽬标函数。
2.以⾃回归语⾔模型为例:

![[Pasted image 20240123231237.png]]

5.2.1随机梯度下降(SGD)

1.最简单的优化算法是⽤⼩批量进⾏随机梯度下降,该算法的步骤如下:
	1.初始化参数
	
	![[Pasted image 20240123231342.png]]

	2.重复以下步骤:
		1.采样⼩批量
		
		![[Pasted image 20240123231431.png]]

		2.根据梯度更新参数:

		![[Pasted image 20240123231516.png]]

2.优化的关键点包括:
	1.我们希望参数θ可以快速收敛
	2.我们希望优化在数值上是稳定的
	3.我们希望内存⾼效(尤其是对于⼤模型)
	4.这些点往往相互⽭盾(例如,通过低精度训练,可以实现快速收敛、减少内存
	占⽤,但是会导致训练不稳定)
3.因此,我们可以从⼏个层次来进⾏优化:
	1.针对经典优化:⼆阶⽅法、约束优化等。
	2.针对机器学习:随机⽅法、隐式正则化+早停法
	3.针对深度学习:初始化、归⼀化(更改模型架构)
	4.针对⼤语⾔模型:由于稳定性问题,学习率和⼀些直觉(例如,⼆阶⽅法)仍
	然有⽤,但要使⼤语⾔模型有效训练,还需要克服许多其他独特的挑战。不幸的
	是,其中⼤部分内容都是特别的,⼈们对此了解甚少。

5.2.2Adam (adaptive momentestimation)

1.Adam算法拥有以下两个创新:
	1.引⼊动量(继续朝同⼀⽅向移动)。
	2.参数
	
	![[Pasted image 20240123232120.png]]
	
	的每个维度都有⼀个⾃适应(不同)的步⻓(受⼆阶⽅法启发)。
		1.步骤如下:
			1.初始化参数
			
			![[Pasted image 20240123232120.png]]

			2.初始化动量
			
			![[Pasted image 20240123232254.png]]

			3.重复以下步骤:
				1.采样⼩批量
				
				![[Pasted image 20240123232333.png]]
				
				2.按照如下步骤更新参数:
					1.计算梯度

					![[Pasted image 20240123232421.png]]

					2.更新⼀阶、⼆阶动量

					![[Pasted image 20240123232508.png]]

					3.对偏差进⾏修正
					
					![[Pasted image 20240123232556.png]]
					
					4更新参数
					
					![[Pasted image 20240123232638.png]]

2.存储占⽤分析:Adam将存储从2倍的模型参数
	
![[Pasted image 20240123232745.png]]

增加到了4倍

![[Pasted image 20240123232830.png]]。

5.2.3AdaFactor

1.AdaFactor是⼀种为减少存储占⽤的优化算法。
2.特点:
	1.它不储!
	
	[[Pasted image 20240123232940.png]]
	
	存这样的矩阵
	
	![[Pasted image 20240123233003.png]],
	
	⽽是存储⾏和列的和
	
	![[Pasted image 20240123233036.png]]
	
	并重构矩阵
	2.去除动量
	3.它被⽤来训练T5
	4.AdaFactor可能使训练变得困难

5.2.4混合精度训练

1.混合精度训练是另⼀种减少存储的⽅法
	1.通常来说,默认的精度是:FP32(32位浮点)
	2.其他可选精度:FP16(16位浮点),但问题是任何⼩于的2的-24次方值都会
	变为0。
	3.解决⽅案:将主权重存储在FP32中,并在FP16中执⾏其他所有操作。
	4.损失缩放:按⽐例放⼤损失,以避免梯度数值太⼩。
	5.结果:存储减少了⼀半。
	
	![[Pasted image 20240123233331.png]]

5.2.5学习率

1.通常情况下,学习率会随着时间的推移⽽衰减。
2.对于Transformer模型,我们实际上需要通过预热(warmup)提⾼学习率。
3.Huang et al., 2020表明,⼀个潜在的原因是防⽌层归⼀化的梯度消失,导致使⽤
Adam优化器训练时不稳定。

5.2.6初始化

1.给定矩阵

![[Pasted image 20240123233609.png]],

标准初始化(即,xavier初始化)为

![[Pasted image 20240123233655.png]]。

2.GPT-2和GPT-3通过额外的

![[Pasted image 20240123233738.png]]

缩放权重,其中 是残差层的数量。
3.T5将注意⼒矩阵增加⼀个

![[Pasted image 20240123233817.png]]。

4.以GPT-3为例,使⽤的参数如下:
	1.Adam参数:
	
	![[Pasted image 20240123233910.png]]

	2.批量⼩:320万个token(约1500个序列)
	3.使⽤梯度剪裁
	
	![[Pasted image 20240123234006.png]]

	4.线性学习率预热(前3.75亿个token)
	5.余弦学习率衰减到10%
	6.逐渐增加批⼤⼩
	7.权重衰减设为0.1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值