一种轻量化加深预训练语言模型层数的方法
未命名
08-26
阅读:153
评论:0
1.本发明属于自然语言处理技术领域,尤其是涉及一种轻量化加深预训练语言模型层数的方法。
背景技术:
2.大型预训练语言模型在自然语言处理领域获得了巨大的成功,激发了人们对更深层模型结构的探索。但是更复杂的模型结构往往带来了巨大的参数量,不便于训练和部署。为了解决这个问题,本技术提出了一种轻量化加深模型网络层数的方法,可以通过增加极少的参数,将已有的预训练语言模型加深,并在效果上显著提升,为了研究深层网络结构带来了便利。同时为了解决深层模型的训练不稳定问题,本技术提出了一个理论驱动的初始化方法,可以让深层模型的训练更加稳定。
3.现有的增加预训练语言模型深度的方法是简单的堆叠transformer层,但是这样会显著提升模型的总参数量,不便于在计算资源有限的设备上进行训练。本技术通过矩阵分解的方法,将模型的权重分解为多个张量,并在多个层之间共享包含大部分参数的张量可以显著降低模型的总参数量。每一层又保持各自独有的部分参数,可以保持模型容量随着深度增加有所提升。同时,在模型训练阶段,现有的方法采用默认的初始化策略会出现训练不稳定的问题,本技术采用已有的预训练模型权重,结合理论驱动的初始化方法,可以实现深层模型快速的收敛。
4.公开于该背景技术部分的信息仅仅旨在加深对本发明的总体背景技术的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域技术人员所公知的现有技术。
技术实现要素:
5.本发明的目的在于提供一种轻量化加深预训练语言模型层数的方法,以解决现有技术中存在的问题。
6.为了实现上述目的,本发明采用以下技术方案:
7.一种轻量化加深预训练语言模型层数的方法,所述方法包括:
8.s1:构建模型;
9.s2:权重共享;
10.s3:权重初始化;
11.s4:模型训练;
12.s5:进行模型输出。
13.进一步,步骤s1具体为:随机初始化l层基于transformer中编码器的预训练语言模型;在第l个transformer层中,针对ffn以及mha结构的权重w
(l)
,均通过mpo方法进行分解,即mpo(w(i))={a
1(l)
,a
2(l)
,c
(l)
,a
3(l)
,a
4(l)
},其中c
(l)
为中心张量,{a
k(l)
|k=1,2,3,4}为辅助张量。
14.进一步,步骤s2具体为:将第2至ltransformer层的c
(l)
,与第1层中对应结构的c
(1)
进行共享,即特定结构的中心张量只保留一份权重c
(1)
。
15.进一步,步骤s3具体为:获取l层的预训练语言模型albert的权重,l≤24,并对其进行mpo分解得到中心张量c
′
(1)
和辅助张量{ak′
(1)
|k=1,2,3,4};用于初始化mpobert的c
(1)
和a
k(1)
。
16.进一步,步骤s4具体为:在大规模语料上用预训练任务掩码词预测和句子顺序预测完成模型训练。
17.进一步,权重mpo分解包括transformer层的所有结构,但是不包括词嵌入矩阵。
18.进一步,步骤s3的权重初始化对辅助张量和中间张量分别进行;首先对预训练模型albert进行mpo分解,使用分解得到的中间张量初始化mpobert;对于辅助张量而言,初始化方式根据mpobert的层数需要进行调整;由于公开的albert权重最多只有24层,如果mpobert层数小于等于24,则直接采用albert分解得到的辅助张量进行初始化即可;如果mpobert层数大于24,其中第24层以后的辅助张量初始化,采用xavier初始化,同时需要根据层数l进行放缩,即乘以初始化后的模型即为代训练的mpobert。
19.采用上述技术方案,本发明具有如下有益效果:
20.本技术提供的轻量化模型深度扩充方法,通过共享核心参数,只需要很少的额外参数量即可有效增加模型深度,并显著提升模型在下游任务上的表现精度。同时在训练阶段提供的两种初始化策略,可以有效避免模型的训练不稳定问题,在混合精度的训练设定下,可以帮助模型更快的收敛,极大降低了大模型的使用门槛。
附图说明
21.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
22.图1为本发明实施例提供的轻量化加深预训练语言模型层数的方法的流程图;
23.图2为本发明实施例提供的mpobert模型的结构图。
具体实施方式
24.下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
25.结合图1所示,本发明提供了一种轻量化加深预训练语言模型层数的方法,所述方法包括:
26.构建模型:随机初始化l层基于transformer中编码器的预训练语言模型。在第l个transformer层中,针对ffn以及mha结构的权重w
(l)
,均通过mpo方法进行分解,即mpo(w(i))={a
1(l)
,a
2(l)
,c
(l)
,a
3(l)
,a
4(l)
},其中c
(l)
为中心张量,{a
k(l)
|k=1,2,3,4}为辅助张量。
27.权重共享:将第2至ltransformer层的c
(l)
,与第1层中对应结构的c
(1)
进行共享,即特定结构的中心张量只保留一份权重c
(1)
。
28.权重初始化:获取l层的预训练语言模型albert的权重,并对其进行mpo分解得到中心张量c
′
(1)
和辅助张量{ak′
(1)
|k=1,2,3,4}。用于初始化mpobert的c
(1)
和a
k(1)
。
29.模型训练:在大规模语料上用预训练任务掩码词预测(mlm)和句子顺序预测(sop)即可完成训练。
30.进行模型输出。
31.其中第2、3步核心是构建参数高效的深层mpobert结构。需要注意的是,权重mpo分解包括transformer层的所有结构,但是不包括词嵌入矩阵。第3步的参数初始化对辅助张量和中间张量分别进行。首先对预训练模型albert进行mpo分解,使用分解得到的中间张量初始化mpobert。对于辅助张量而言,初始化方式根据mpobert的层数需要进行调整。由于公开的albert权重最多只有24层,如果mpobert层数小于等于24,则直接采用albert分解得到的辅助张量进行初始化即可。如果mpobert层数大于24,其中第24层以后的辅助张量初始化,采用xavier初始化,同时需要
32.根据层数l进行放缩,即乘以初始化后的模型即为代训练的mpobert,采用预训练任务掩码词预测(mlm)和句子顺序预测(sop)即可完成训练。
33.结合图2所示,mpobert的基本组成部分为mpo-based layer。具体来说,将transformer层的ffn和mha结构通过mpo分解得到辅助张量和中间张量,然后额外加上一个adapter结构即组成了一层。基于这个结构,mpobert则是在所有的mpo-based layer之间共享所有结构的中间张量,而保持辅助张量和adapter结构不变。类似,mpobert+则是将mpo-based layer分为多个组,只在组内的层之间共享中间张量。
34.深层模型的初始化主要困难是训练不稳定的问题。为了解决这个挑战,模型的辅助张量和中间张量采用了不同的初始化方法。针对中间张量,采用利用预训练好albert的权重进行分解得到的中间张量作为初值,可以有效解决混合精度训练早期不稳定的情况。针对辅助张量,需要根据模型的层深对初始化的值乘一个系数进行调整,本技术经过理论推导得到了这个系数为其中l为层深。结合这两种初始化操作,24甚至48层的mpobert可以在混合精度下稳定的训练。
35.训练和推理:
36.训练过程主要包括前向和反向传播两个阶段。mpobert的前向过程,针对每一层可以先重建原始的权重矩阵,然后与数据交互再输入到下一层。当最后一层输出后与数据的标签计算损失值,即可计算所有权重的梯度并进行反向传播。具体来说主要是以下几个步骤。
37.1、模型初始化。
38.2、输入数据(xi,yi),经过第l层mpo-based layer时,重建权重与数据交互。
39.3、前向完成计算所有权重梯度,并进行一次反向传播。
40.4、继续训练直到达到模型停止条件。
41.将上述过程执行完后得到的模型,可以在下游任务微调使用,模型效果远好于其他参数量相似的模型。
42.规模参数量的预训练语言模型在多个自然语言处理问题上已经取得了显著的成就。研究表明,模型的参数量和表现之间可能存在一个缩放定律,这意味着更大的模型往往
会表现得更好。当前,流行的模型结构都是基于transformer结构进行扩展的,而增加模型深度是一种比较直接的方法来增加参数量,但是这样会引入大量的参数冗余。因此,如何高效地提升模型的参数量已经成为当前最为关注的问题之一。
43.现有的模型增加模型深度的方法都是直接叠加transformer层,但是这样的方法导致引入大量的参数,带来巨大的计算和存储成本。同时深度的模型会遇到训练不稳定的问题,很难收敛。本专利提供的轻量化模型深度扩充方法,通过共享核心参数,只需要很少的额外参数量即可有效增加模型深度,并显著提升模型在下游任务上的表现精度。同时在训练阶段提供的两种初始化策略,可以有效避免模型的训练不稳定问题,在混合精度的训练设定下,可以帮助模型更快的收敛,极大降低了大模型的使用门槛。
44.本技术通过在transformer结构中跨层共享参数,极大地降低了扩充模型参数量的成本。同时,本技术利用已有的预训练模型进行初始化,有效地加速了模型的收敛,降低了模型的训练成本。最终,实验结果表明,在同样的参数量下,本技术的方法达到了最佳效果。
45.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
技术特征:
1.一种轻量化加深预训练语言模型层数的方法,其特征在于,所述方法包括:s1:构建模型;s2:权重共享;s3:权重初始化;s4:模型训练;s5:进行模型输出。2.根据权利要求1所述的轻量化加深预训练语言模型层数的方法,其特征在于,步骤s1具体为:随机初始化l层基于transformer中编码器的预训练语言模型;在第l个transformer层中,针对ffn以及mha结构的权重w
(l)
,均通过mpo方法进行分解,即mpo(w
(i)
)={a
1(l)
,a
2(l)
,c
(l)
,a
3(l)
,a
4(l)
},其中c
(l)
为中心张量,{a
k(l)
|=1,2,3,4}为辅助张量。3.根据权利要求1所述的轻量化加深预训练语言模型层数的方法,其特征在于,步骤s2具体为:将第2至ltransformer层的c
(l)
,与第1层中对应结构的c
(1)
进行共享,即特定结构的中心张量只保留一份权重c
(1)
。4.根据权利要求1所述的轻量化加深预训练语言模型层数的方法,其特征在于,步骤s3具体为:获取l层的预训练语言模型albert的权重,l≤24,并对其进行mpo分解得到中心张量c
′
(1)
和辅助张量{a
k
′
(1)
|=1,2,3,4};用于初始化mpobert的c
(1)
和a
k(1)
。5.根据权利要求1所述的轻量化加深预训练语言模型层数的方法,其特征在于,步骤s4具体为:在大规模语料上用预训练任务掩码词预测和句子顺序预测完成模型训练。6.根据权利要求2所述的轻量化加深预训练语言模型层数的方法,其特征在于,权重mpo分解包括transformer层的所有结构,但是不包括词嵌入矩阵。7.根据权利要求4所述的轻量化加深预训练语言模型层数的方法,其特征在于,步骤s3的权重初始化对辅助张量和中间张量分别进行;首先对预训练模型albert进行mpo分解,使用分解得到的中间张量初始化mpobert;对于辅助张量而言,初始化方式根据mpobert的层数需要进行调整;由于公开的albert权重最多只有24层,如果mpobert层数小于等于24,则直接采用albert分解得到的辅助张量进行初始化即可;如果mpobert层数大于24,其中第24层以后的辅助张量初始化,采用xavier初始化,同时需要根据层数l进行放缩,即乘以初始化后的模型即为代训练的mpobert。
技术总结
本发明公开了一种轻量化加深预训练语言模型层数的方法,其包括:S1:构建模型;S2:权重共享;S3:权重初始化;S4:模型训练;S5:进行模型输出。本申请提供的轻量化模型深度扩充方法,通过共享核心参数,只需要很少的额外参数量即可有效增加模型深度,并显著提升模型在下游任务上的表现精度。同时在训练阶段提供的两种初始化策略,可以有效避免模型的训练不稳定问题,在混合精度的训练设定下,可以帮助模型更快的收敛,极大降低了大模型的使用门槛。极大降低了大模型的使用门槛。极大降低了大模型的使用门槛。
技术研发人员:赵鑫 文继荣 刘沛羽 高泽峰
受保护的技术使用者:中国人民大学
技术研发日:2023.05.06
技术公布日:2023/8/23
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
