CN114168709B - 一种基于轻量化预训练语言模型的文本分类方法 - Google Patents
一种基于轻量化预训练语言模型的文本分类方法 Download PDFInfo
- Publication number
- CN114168709B CN114168709B CN202111466873.8A CN202111466873A CN114168709B CN 114168709 B CN114168709 B CN 114168709B CN 202111466873 A CN202111466873 A CN 202111466873A CN 114168709 B CN114168709 B CN 114168709B
- Authority
- CN
- China
- Prior art keywords
- text
- sample
- model
- layer
- sentence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于轻量化预训练语言模型的文本分类方法,目的是在占用资源少的前提下提高文本分类准确率。技术方案是:构建基于预训练语言模型的文本分类模型,包括教师模型和学生模型;将GLUE数据集处理为文本分类模型进行分类时需要的格式;对教师模型进行参数初始化,采用处理好的GLUE数据集对教师模型进行微调;接着对学生模型进行参数初始化,采用GLUE数据集使用知识蒸馏方法轻量化微调后的教师模型,得到学生模型的网络权重参数;使用学生模型网络权重参数初始化学生模型,得到轻量化的学生模型;最后使用轻量化的学生模型对用户输入文本进行文本分类,得到分类结果。本发明实现了在占有资源少的前提下文本分类准确率高。
Description
技术领域
本发明涉及自然语言处理中的文本分类领域,具体涉及一种基于轻量化预训练语言模型对文本进行分类的方法。
背景技术
自然语言是人类思维的载体和交流的基本工具,也是人类区别于动物的根本标志,更是人类智能发展的重要外在体现形式。自然语言处理主要研究用计算机理解和生成自然语言的各种理论和方法,属于人工智能领域的一个重要甚至核心的分支。而文本分类是自然语言处理中最基本的一项任务,诸如情感分析、意图识别、文本匹配、指代消解等自然语言处理任务都可以转换为对所属目标的分类任务。如情感分析可转换为分类类别为积极情感和消极情感的二分类问题。
文本分类方法主要分为三大类:基于专家规则的算法、基于统计机器学习的算法和基于深度学习的算法。基于专家规则的算法预先请语言学专家手工构造分类规则模板,以字符串正则匹配为主要分类方法,这类算法依赖于手工建立的规则,费时费力,移植性差且覆盖的范围和准确率都非常有限。基于统计机器学习的算法主要包括朴素贝叶斯,KNN,决策树,支持向量机等,这类算法将整个文本分类问题拆分成了特征工程和分类器两部分。特征工程包括文本预处理、特征提取、文本表示三个部分,最终目的是把文本转换成计算机可理解的格式,并封装足够用于分类的信息方便分类器进行文本分类。但基于统计机器学习的算法主要问题是文本表示是高纬度且高稀疏的向量,特征表达能力很弱,且需要人工进行特征工程,成本很高。基于深度学习的算法使用神经网络能够从文本中自动提取文本特征,实现端到端的解决问题。以卷积神经网络和循环神经网络为基础的深度学习算法能够自动提取深层文本特征,相比前两类算法准确率更高,也更方便。2018年,一种新的神经网络架构transformer(见文献“Attention Is All You Need”,2018,“注意力是你所需要的”)的出现极大的推动了自然语言处理领域的发展,以transformer为基础的预训练模型BERT及其变体模型(见文献“BERT:Pre-training of Deep Bidirectional Transformersfor Language Understanding”,2018,“BERT,基于深度双向Transformer预训练进行自然语言理解”)开启了自然语言处理领域“预训练+微调”的新研究范式。预训练是指以自监督学习的方式从大规模文本数据中学习通用的语法语义知识。微调是指根据具体的应用场景,使用相应的领域文本数据修正预训练阶段学习到的文本特征和语义信息。预训练语言模型往往有数亿的参数量,而参数量决定了预训练语言模型的知识容量,庞大的知识容量使得基于预训练语言模型的文本分类算法极大了提升了文本分类的准确率。但卓越的性能背后是以预训练语言模型为基础的文本分类方法对算力资源和内存资源的极大消耗。在互联网高速发展的今天,能够随处见到一些以智能音箱,智能家电为代表的智能终端设备。这些终端设备相对于专用于深度学习模型训练使用的服务器,算力资源和内存资源往往受到限制。若是在这些智能终端设备上直接部署预训练语言模型,功耗,时延,计算资源消耗都会成为问题。而换用其他参数量小的模型完成文本分类任务,准确率无法满足要求。基于预训练语言模型的文本分类方法中占据核心地位的是预训练语言模型,因此,如何对预训练语言模型进行轻量化使得文本分类占用资源少且准确率高是本领域技术人员极为关注的热点问题。
现有的模型轻量化算法如剪枝和量化这些方法得到的模型往往要在专用的物理设备才能部署使用,而知识蒸馏这一轻量化算法是将大模型作为教师(teacher),另外构建一个小模型作为学生(student),类似于现实世界中教师教授学生的方式,把教师模型从数据学***台,可移植性好,且可扩展性高,是目前使用最广泛的轻量化算法。研究工作(见文献“What does BERT learn about structure of language”,2019,“关于语言的结构,BERT学到了什么”)表明预训练语言模型学习到的文本特征和语义信息按照层数从低到高呈现由浅到深,分别为短语级别,句法级别和语义级别的信息。受启发于人类学习时采用的温故知新的方式,在知识蒸馏中利用教师模型的浅层知识来加深学生模型对于教师模型深层知识的理解,会使得以学生模型来完成文本分类任务时能够兼顾占用资源少和准确率高这两个优点。
因此如果把温故知新这种学习方式用于轻量化预训练语言模型,并采用轻量化预训练语言模型进行文本分类,可能能使文本分类达到占用资源少且准确率高的效果,但目前没有公开文献涉及这样的技术方案。
发明内容
本发明要解决的技术问题是提供一种基于轻量化预训练语言模型的文本分类方法,使得在占用资源少的前提下提高文本分类准确率。
为解决上述技术问题,本发明技术方案是:
首先构建基于预训练语言模型的文本分类模型,包括两个模型,即教师模型和学生模型。然后将GLUE数据集(见文献“GLUE:Amulti-task benchmark and analyslsplatform for natural language understanding”,2019,“GLUE:一个用于自然语言理解的多任务基准分析平台”)处理为文本分类模型进行文本分类时需要的格式。然后选取开源的预训练语言模型Bert的base版本(见链接https://huggingface.co/bert-base-uncased,2021年8月21日,下面简称Bert-base)对教师模型进行参数初始化,采用处理好的GLUE数据集对教师模型进行微调。接着使用Bert-base对学生模型进行参数初始化,采用GLUE数据集并使用知识蒸馏的方法轻量化微调后的教师模型,得到学生模型的网络权重参数。最后使用得到的学生模型网络权重参数初始化学生模型,得到轻量化的学生模型对用户输入的文本进行文本分类,得到分类结果。
本发明包括以下步骤:
第一步:构造基于预训练语言模型的文本分类模型,包括教师模型和学生模型,两个模型相互独立。教师模型由文本嵌入层,文本特征提取层,分类层组成。文本嵌入层由三个全连接层组成,分类层由一个全连接层组成,文本特征提取层由12个transformer层组成。
教师模型的文本嵌入层从文件接收训练集T,T={s1,s2,…,sa,…,sA},sa表示T中第a个样本。文本嵌入层对T中的样本s1,s2,…,sa,…,sA进行文本嵌入转换,得到文本句子的嵌入向量表示集合E(T),E(T)={E(s1),E(s2),…,E(sa),…,E(sA)},E(sa)是sa的嵌入向量表示,将E(T)发送给文本特征提取层。
教师模型的文本特征提取层从文本嵌入层接收E(T),对E(T)进行特征提取,得到文本语义特征集合F(T),F(T)={F(s1),F(s2),…,F(sa),…,F(sA)},F(sa)是sa的语义特征,将F(T)发送给分类层。
教师模型的分类层从文本特征提取层接收F(T),对F(T)使用全连接层处理,得到分类结果概率分布集合R,R={R(s1),R(s2),…,R(sa),…,R(sA)}。R(sa)为一维向量,单个向量值为样本属于对应类别的概率值,R(sa)的长度为分类结果数,最后根据极大似然原理,判定样本属于概率值最大的对应类别。例如样本sa可分为3个类别,最终输出R(sa)={0.2,0.3,0.5},共3个值,代表样本sa属于三个类别的概率值是0.2,0.3,0.5。而sa属于第三类的概率最大,则判定sa属于第三个类别。
学生模型如图2所示,也由文本嵌入层,文本特征提取层,分类层组成。学生模型的文本嵌入层与教师模型的文本嵌入层相同、学生模型的分类层与教师模型的分类层相同。学生模型的文本特征提取层由6个transformer层组成,学生模型的文本特征提取层和教师模型的文本特征提取层的功能相同,输出向量的维度也相同,但因为两者transformer层的层数不同,对同一文本处理得到的文本语义特征集合不同。
第二步:准备微调教师模型和轻量化教师模型需要的训练数据,并将训练数据转换成文本分类模型需要的输入格式。
2.1从github下载GLUE官方提供的数据集下载脚本(见链接https://github.com/nyu-mll/GLUE-baselines,2021年11月19日)。
2.2运行数据集下载脚本download_glue_data.py,运行结束得到GLUE数据集。选取GLUE数据集下的8个子数据集即:CoLA,SST-2,RTE,MRPC,STS-B,QNLI,QQP,MNLI(GLUE数据集是目前自然语言处理领域认可度最高的数据集,子数据基本上覆盖了工程实践中文本分类的任务类型,并且将不断扩展,GLUE数据集的子数据集数量会随着时间变得更多)。各子数据集的介绍见表1,每个子数据集官方已划分好训练集,验证集。其中八个子数据集分为两类,CoLA和SST-2属于单句分类,训练集和验证集样本的结构相同,形如样本P={s,lp},s表示一个英文句子,lp表示样本标签,lp是长度为分类结果数的独热编码,分类结果数各个数据集已事先规定。例如一个样本属于CoLA数据集,可分为2种类别,样本P的真实类别是第二类,则lp=[0,1],含义为在表示样本真实类别的位置上标数字1,其他位置标数字0。剩余六个数据集属于句子对分类。训练集和验证集的样本结构形如D={s1,s2,ld},由两个英文句子和一个样本标签组成,s1为英文句子1,s2为英文句子2,ld为样本标签,也是长度为分类结果数的独热编码。
2.3对GLUE数据集的8个子数据集的训练集,验证集进行加标志预处理,方法如下:
2.3.1对CoLA和SST-2这两个单句分类数据集加标志,方法如下:
2.3.1.1采用句首加标志方法对CoLA数据集中的训练集、验证集中每个样本加标志,方法是:
2.3.1.1.1从存储CoLA数据集的训练集样本的文件中读取所有训练集样本,将训练集样本均放到训练集样本集合CoLA_Train中,对CoLA_Train中的每个样本加标志,方法如下:
2.3.1.1.1.1使用Python的第三方开源库Numpy(见链接https://pypi.org/project/numpy/v1.21.0/2021年8月21日,可以采用发布的最新版本)获得CoLA_Train中的训练集样本的总数量num1_train,初始化记录已处理训练集样本数量的变量n1_train=1,创建存储处理完成的训练集样本的文件CoLA_Train_Process;
2.3.1.1.1.2从CoLA_Train中取出第n1_train个样本,取出样本中的英文句子,在英文句子的句首加上[CLS]的标志,得到一个加上了[CLS]的标志的新句子,将加上了[CLS]的标志的新句子和对应的样本标签写到CoLA_Train_Process中保存;
2.3.1.1.1.3令n1_train=n1_train+1,若n1_train≤num1_train,转2.3.1.1.1.2,如果n1_train>num1_train,加标志结束,转2.3.1.1.2;
2.3.1.1.2从存储CoLA数据集的验证集样本的文件中读取所有验证集样本,将所有验证集样本均放到验证集样本集合CoLA_Val,对CoLA_Val中的每个样本加标志,具体方法如下:
2.3.1.1.2.1使用Python的第三方开源库Numpy获得CoLA_Val中的验证集样本的总数量num1_val,初始化记录已处理验证集样本数量的变量n1_val=1,创建存储处理完成的验证集样本的文件CoLA_Val_Process;
2.3.1.1.2.2从CoLA_Val取出第n1_val个样本,取出样本中的英文句子,在句首加上[CLS]的标志得到一个加上了[CLS]的标志的新句子,将加上了[CLS]的标志的新句子和样本标签写到CoLA_Val_Process中保存;
2.3.1.1.2.3令n1_val=n1_val+1,若n1_val≤num1_val转2.3.1.1.2.2,如果n1_val>num1_val,加标志结束,转2.3.1.2;
2.3.1.2采用2.3.1.1所述句首加标志方法对SST-2数据集的训练集、验证集中每个样本加标志,得到记录SST-2训练集的处理结果文件SST-2_Train_Process,记录SST-2验证集的处理结果文件SST-2_Val_Process。
使用句首加标志法处理单句分类数据集的训练集和验证集后,单个样本P={s,lp}处理后得到句首加了标志的样本P^,P^={s^,lp},其中s^=[CLS]s。
2.3.2对RTE,MRPC,STS-B,QNLI,QQP,MNLI这六个句子对分类数据集加标志,方法如下:
2.3.2.1采用句首句尾加标志方法对RTE数据集中的训练集、验证集中每个样本加标志:
2.3.2.1.1从存储RTE数据集的训练集样本的文件中读取所有训练集样本,将所有训练集样本放到训练集样本集合RTE_Train,对RTE_Train中的每个样本加标志,方法是:
2.3.2.1.1.1使用Python的第三方开源库Numpy获得RTE_Train中训练集样本的总数量num2_train,初始化记录已处理RTE训练集样本数量的变量n2_train=1,创建存储处理完成的训练集样本的文件RTE_Train_Process;
2.3.2.1.1.2取出第n2_train个样本,取出样本中的第一个句子,在句首加上[CLS]的标志,在句尾加上[SEP]的标志,把样本中的第二个句子拼接在[SEP]的后面得到一个新句子,把拼接好的新句子和样本标签写到RTE_Train_Process中保存;
2.3.2.1.1.3令n2_train=n2_train+1,若n2_train≤num2_train,转2.3.2.1.1.2继续处理第n2_train个样本,若n2_train>num2_train,加标签结束,转2.3.2.1.2;
2.3.2.1.2从存储RTE数据集的验证集样本的文件中读取所有验证集样本,将所有验证集样本放到验证集样本集合RTE_Val,,对RTE_Val中的每个样本加标志,具体方法如下:
2.3.2.1.2.1使用Python的第三方开源库Numpy获得RTE_Val中验证集样本的总数量num2_val,初始化记录已处理RTE验证集样本数量的变量n2_val=1,创建存储处理完成的验证集样本的文件为RTE_Val_Process;
2.3.2.1.2.2取出第n2_val个样本,取出样本中的第一个句子,在句首加上[CLS]的标志,在句尾加上[SEP]的标志,把样本中的第二个句子拼接在[SEP]的后面得到一个新句子,把拼接好的新句子和样本标签写到RTE_Val_Process中保存;
2.3.2.1.2.3令n2_val=n2_val+1,若n2_val≤num2_val则转2.3.2.1.2.2继续处理n2_val个样本,若n2_val>num2_val,加标志结束,转2.3.2.2;
2.3.2.2采用2.3.2.1所述句首句尾加标志方法对MRPC数据集加标志,得到记录MRPC训练集的处理结果文件MRPC_Train_Process,记录MRPC验证集的处理结果文件MRPC_Val_Process;
2.3.2.3采用2.3.2.1所述句首句尾加标志方法对STS-B数据集加标志,得到记录STS-B训练集的处理结果文件STS-B_Train_Process,记录STS-B验证集的处理结果文件STS-B_Val_Process;
2.3.2.4采用2.3.2.1所述句首句尾加标志方法对QQB数据集加标志,得到记录QQB训练集的处理结果文件QQB_Train_Process,和记录QQB验证集的处理结果文件QQB_Val_Process;
2.3.2.5采用2.3.2.1所述句首句尾加标志方法对QNLI数据集加标志,得到记录QNLI训练集的处理结果文件QNLI_Train_Process,和记录QNLI验证集的处理结果文件QNLI_Val_Process;
2.3.2.6采用2.3.2.1所述句首句尾加标志方法对MNLI数据集加标志,得到记录MNLI训练集的处理结果文件MNLI_Train_Process中,记录MNLI验证集的处理结果文件MNLI_Val_Process;
使用句首句尾加标志法处理句子对分类数据集的训练集合和验证集后,单个样本D={s1,s2,ld}处理后得到句首句尾加了标志的样本D^,D^={sd,ld},其中sd=[CLS]s1[SEP]s2,由符号[CLS]和[SEP]将两个句子拼接成了一个新的句子。
加标志后的八个子数据集在形式上分别达到了统一,即加标志后的训练集和验证集单个样本均是由一个新句子和一个样本标签组成。
2.3.2.7将加标志后的数据集形式抽象为以下形式,即加标志后的数据集X含有训练集T,验证集V,X为{CoLA,SST-2,RTE,MRPC,STS-B,QNLI,QQP,MNLI}中任意一个数据集,下文出现的X均表示此含义:
训练集T={s1,s2,…,sa,…sA},包含A个训练集样本,sa代表第a个训练集样本,sa={w1 a…wm a…wM a,la},sa中共包含M个单词,wm a代表第a个训练集样本中句子的第m个单词,la代表第a个训练集样本的样本标签。
验证集V={s`1,s`2,…,s`k,…s`K},包含K个训练集样本,s`k代表第k个验证集样本,s`k={w`1 k…w`q k…w`Q k,l`k},s`k中共包含Q个单词,w`q k代表第k个验证集样本中句子的第q个单词,l`k代表第k个验证集样本的样本标签。
第三步:初始化教师模型的参数,并采用数据集X的训练集加标志预处理后的结果文件(用X_Train_Process表示,例如,若X为CoLA,则X_Train_Process就为CoLA_Train_Process)微调教师模型,得到教师模型的权重参数X_Teacher。采用数据集X的验证集采用句首加标志法处理或句首句尾加标志法处理后的结果文件(用X_Val_Process表示,例如,若X为CoLA,则X_Val_Process就为CoLA_Val_Process)测试教师模型文本分类任务得分,具体方法如下:
3.1设置网络训练超参数:网络模型学习率(Learning Rate)、批处理大小(BatchSize)、句子最大长度(Max_Sentence_Length)、随机数种子(Seed)。训练轮数(Epoch),具体实验中Learning Rate在取值范围{1×10-5,2×10-5,3×10-5,5×10-5}中任取一值,BatchSize取值64,Max_Sentence_Length取值128,Seed取值9580。Epoch在取值范围{3,4,8,15}中任取一值。
3.2下载预训练语言模型Bert-base开源的参数,并初始化教师模型权重参数,具体方法如下:
3.2.1下载预训练语言模型BERT-base的参数。(见链接https://huggingface.co/bert-base-uncased,2021年11月6日)。Bert-base的参数包括文本嵌入层,文本特征提取层和分类层。下载的预训练语言模型BERT-base的参数以key-value的形式进行存储,key为参数名称,value为参数值(是已经训练好的32位浮点数),通过key可直接读取value值。
3.2.2使用Huggingface开源的transformer库(见链接https://github.com/huggingface/transformers,2021年8月21日,可以使用该网页公布的最新transformer库),采用名称对照赋值法把Bert-base的参数值与教师模型文本嵌入层,文本特征提取层,分类层的参数一一对应进行赋值。方法是:教师模型与Bert-base的参数名称一致,通过查找key对应的value值,直接把value值赋值给对应的教师模型参数。
3.3采用第二步对CoLA,SST-2,RTE,MRPC,STS-B,QNLI,QQP,MNLI这8个子数据集的训练集采用句首加标志法处理或句首句尾加标志法处理后的结果文件(即CoLA_Train_Process、SST-2_Train_Process,RTE_Train_Process,MRPC_Train_Process,STS-B_Train_Proce ss,QNLI_Train_Process,QQP_Train_Process,MNLI_Train_Process)微调教师模型,采用验证集的采用句首加标志法处理或句首句尾加标志法处理后的结果文件(即CoLA_Val_Process、SST-2_Val_Process,RTE_Val_Process,MRPC_Val_Process,STS-B_Val_Process,QNL I_Val_Process,QQP_Val_Process,MNLI_Val_Process)测试微调后的教师模型在文本分类任务上的准确率。采用8个子数据集对教师模型分别微调,得到适用于教师模型针对不同文本进行分类的8种对应的网络权重参数,具体如下:
3.3.1采用CoLA_Train_Process、CoLA_Val_Process并采用微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对CoLA类文本进行分类的网络权重参数CoLA_Teacher,方法是:
3.3.1.1教师模型调用Python第三方库Numpy读取CoLA_Train_Process,使用CoLA_Train_Process微调教师模型,具体如下:
3.3.1.1.1初始化迭代次数e=1;
3.3.1.1.2初始化已训练样本数量a=1;
3.3.1.1.3采用第a个样本sa训练教师模型,sa由一个句子和一个样本标签组成,方法如下:
3.3.1.1.3.1教师模型文本嵌入层接收sa,对sa进行文本嵌入转换得到sa的嵌入向量表示E(sa),E(sa)={E(w1 a),…,E(wm a),…,E(wM a),la},方法如下:
3.3.1.1.3.1.1对样本sa中的英文句子按照单词之间空格进行分词,得到样本sa句子分词和样本标签的集合s1 a,s1 a={w1 a,…,wm a,…,wM a,la},s1 a由M个单词和一个样本标签la共M+1个元素组成,wm a是sa的第m个单词,1≤m≤M。
3.3.1.1.3.1.2对照Bert-base的词表把s1 a中的单词转换成为单词的编号,得到样本sa单词编号和样本标签的集合s2 a={w1^ a,…,wm^ a,…,wM^ a,la},Bert-base的词表共有30522个词汇,按照从1到30522编码,wm^ a是一个介于1-30522的整数;
3.3.1.1.3.1.3文本嵌入层的三个全连接层依次对s2 a中单词的编号进行全连接处理,把单词编号转换成对应的词向量,得到样本sa的嵌入向量表示E(sa)={E(w1 a),…,E(wm a),…,E(wM a),la},E(wm a)是一个长度为768的一维向量;
3.3.1.1.3.2文本特征提取层中的12个transfromer层对E(sa)进行文本特征提取(见文献“Attention Is All YouNeed”,2018,“注意力是你所需要的”),得到由12个文本语义特征和样本标签组成的集合F(sa)={F(sa)1,…,F(sa)j,…F(sa)12,la},F(sa)j代表第j个transfromer层输出的文本语义特征,F(sa)j是一个维度为128×768二维矩阵,1≤j≤12,具体方法如下:
3.3.1.1.3.2.1初始化j=1,令F(sa)={la},
3.3.1.1.3.2.2若j=1,第j层transformer对E(sa)提取文本语义特征,得到F(sa)1,转3.3.1.1.3.2.3;若j>1,第j层transformer对F(sa)j-1提取文本语义特征,得到F(sa)j,转3.3.1.1.3.2.3;
3.3.1.1.3.2.3若1≤j≤11,将F(sa)j加入到F(sa)中,发送F(sa)j到第j+1层transformer作为输入,转3.3.1.1.3.2.4;若j=12,将F(sa)12加入到F(sa)中,转3.3.1.1.3.2.4;
3.3.1.1.3.2.4令j=j+1,如果j≤12,转3.3.1.1.3.2.2,否则,说明已经提取出所有的文本语义特征,得到F(sa)={F(sa)1,…,F(sa)j,…F(sa)12,lt},转3.3.1.1.3.3;
3.3.1.1.3.3教师模型分类层从文本特征提取层接收F(sa),从F(sa)取出F(sa)12,分类层对F(sa)12使用全连接层进行分类,得到sa的概率分布结果R(sa)。
3.3.1.1.3.4教师模型取出F(sa)中的样本标签la,调用均方误差(MSE)函数计算R(sa)与la之间的差值作为损失值,记为Loss,Loss=MSE(R(sa),la);
3.3.1.1.3.5教师模型使用Adam优化算法最小化Loss,以更新教师模型文本嵌入层、文本特征层、分类层的网络权重参数(见文献“Kingma D P,Ba J.Adam:Amethod forstochastic optimization[J].arXiv preprint arXiv:1412.6980,2014”,Kingma的论文:Adam,一种随机优化方法),转3.3.1.1.4;
3.3.1.1.4令a=a+1,若a≤A,且a整除200结果不为0,转3.3.1.1.3采用下一个样本继续训练;若a≤A且a整除200结果为0,转3.3.1.1.5开始测试微调后的教师模型在验证集上的得分;若a>A,说明所有数据已经训练完一个轮次,转3.3.1.1.6;
3.3.1.1.5教师模型调用第三方库Numpy读取CoLA_Val_Process,测试教师模型在验证集上的得分,即计算对应数据集任务的准确率acc,具体方法如下:
3.3.1.1.5.1初始化已验证样本数k=1,设置记录样本验证正确的变量为true_num,并初始化true_num=0,使用第k个样本验证教师模型性能,方法如下;
3.3.1.1.5.1.1教师模型的文本嵌入层对第k个验证集样本s`k进行文本嵌入转换s`k={w`1 k…w`q k…w`Q k,l`k},得到样本s`k的嵌入向量表示E(s`k),E(s`k)={E(w`1 k),…,E(w`q k),…,E(w`Q k),l`k},具体方法如下:
3.3.1.1.5.1.1.1对样本s`k的英文句子按照单词之间空格进行分词,得到样本s`k句子分词和样本标签的集合s`1 k={w`1 k,w`q k,…,w`Q k,l`k},s`k和s`1 k的区别是s`k有一个句子,一个样本标签共两个元素,其中Q个单词构成句子作为一个整体属于s`k,s`1 k有Q个单词,一个样本标签共Q+1个元素。
3.3.1.1.5.1.1.2对照Bert-base的词表把s`1 k中的单词转换成单词的编号,得到s`1 k的单词编号和样本标签集合s`2 k,s`2 k={w`1^ k,w`q^ k,…,w`Q^ k,l`k},w`q^ k是介于1-30522的整数;
3.3.1.1.5.1.1.3教师模型的文本嵌入层的三个全连接层依次对s`2 k中单词的编号进行全连接处理,把单词编号转换成对应的词向量,得到s`k的嵌入向量表示E(s`k),E(s`k)={E(w`1 k),…,E(w`q k),…,E(w`Q k),l`k},E(w`q k)是长度为768的一维向量;
3.3.1.1.5.1.2教师模型文本特征提取层中的12个transfromer层对E(s`k)进行文本特征提取,得到由12个文本语义特征和样本标签组成的集合F(s`k)={F(s`k)1,…,F(s`k)j,…F(s`k)12,l`k},F(s`k)j代表第j个transfromer层输出的文本特征,具体方法如下:
3.3.1.1.5.1.2.1初始化j=1,令F(s`k)={l`k};
3.3.1.1.5.1.2.2若j=1,第j层transformer提取E(s`k)的文本语义特征,得到F(s`k)1,转3.3.1.1.5.1.2.3;若j>1,第j层transformer提取F(s`k)j-1的文本语义特征,得到F(s`k)j,转3.3.1.1.5.1.2.3;
3.3.1.1.5.1.2.3若1≤j≤11,将F(s`k)j加入到F(s`k)中,发送F(s`k)j到第j+1层transformer作为输入;若j=12,将F(s`k)12加入到F(s`k)中;
3.3.1.1.5.1.2.4令j=j+1,如果j≤12,转3.3.1.1.5.1.2.2;否则,说明已经提取出所有的文本语义特征,得到F(s`k)={F(s`k)1,…,F(s`k)j,…F(s`k)12,l`k},转3.3.1.1.5.1.3;
3.3.1.1.5.1.3教师模型分类层从文本特征提取层接收F(s`k),取出F(s`k)12,分类层的全连接层对F(s`k)12进行分类,得到s`k的概率分布结果R(s`k)。
3.3.1.1.5.1.4教师模型比较R(s`k)中最大值的索引值与l`k中数字1的索引值是否相同,若相同,表示教师模型对第k个样本s`k的预测类别与样本标签标注的真实类别一致,令true_num=true_num+1,转3.3.1.1.5.2;若不相同,直接转3.3.1.1.5.2;
3.3.1.1.5.2令k=k+1,若k≤K,转3.3.1.1.5.1.1验证下一个样本,若k>K,计算对应数据集任务的准确率acc,acc=true_num/K,转3.3.1.1.3继续使用下一条样本微调(即训练)教师模型。
3.3.1.1.6令e=e+1如果e≤Epoch,转3.3.1.1.2。如果e>Epoch,微调结束,用CoLA_Teacher保存微调完成的教师模型网络权重参数,包括文本嵌入层参数,文本特征提取层参数,分类层参数。
3.3.2采用SST-2_Train_Process、SST-2_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对SST-2类文本进行分类的网络权重参数SST-2_Teacher;
3.3.3采用RTE_Train_Process、RTE_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对RTE类文本进行分类的网络权重参数RTE_Teacher;
3.3.4采用MRPC_Train_Process、MRPC_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对,MRPC类文本进行分类的网络权重参数MRPC_Teacher;
3.3.5采用STS-B_Train_Process、STS-B_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对STS-B类文本进行分类的网络权重参数STS-B_Teacher;
3.3.6采用MRPC_Train_Process、MRPC_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对MRPC类文本进行分类的网络权重参数MRPC_Teacher;
3.3.7采用QNLI_Train_Process、QNLI_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对QNLI类文本进行分类的网络权重参数QNLI_Teacher;
3.3.8采用QQP_Train_Process、QQP_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对QQP类文本进行分类的网络权重参数QQP_Teacher;
教师模型采用8个子数据集微调和验证后共得到8个对应的网络权重参数。
第四步:采用X_Train_Process和知识蒸馏方法轻量化第三步使用CoLA,SST-2,RTE,MRPC,STS-B,QNLI,QQP,MNLI这8个子数据集分别微调教师模型后的权重参数X_Teacher(即CoLA_Teacher、SST-2_Teacher,、RTE_Teacher、MRPC_Teacher、STS-B_Teacher、QNLI_Teacher、QQP_Teacher、MNLI_Teacher)得到对应的学生模型权重参数X_Student(即CoLA_Student、SST-2_Student、RTE_Student、MRPC_Student、STS-B_Student、QNLI_Student、QQP_Student、MNLI_Student)并使用X_Val_Process验证轻量化后的模型在文本分类任务上的准确率,方法如下:
4.1设定知识蒸馏所需的超参数:网络模型学习率(Learning Rate)、批处理大小(Batch Size)、句子最大长度(Max_Sentence_Length)、随机数种子(Seed)、训练轮数(Epoch)和蒸馏温度(Temperature)、超参数α,β,γ。此步骤设定的部分超参数与3.1设定的超参数是相同的,增加了超参数蒸馏温度(Temperature),并取值为8(见文献“Distillingthe Knowledge in aNeural Network”,2015,“在神经网络中蒸馏知识”),训练轮数(Epoch)取值为30,超参数α在{0.2,0.3,0.5}中任取一值,β在{5,8,10}中任取一值,γ在{1,2,3}中任取一值(实验证明α取0.3,β取10,γ取1,效果最好)其余超参数与3.1取值方法保持一致。
4.2使用知识蒸馏方法轻量化CoLA-teacher得到CoLA_student,方法如下:
4.2.1采用CoLA_Teacher初始化教师模使用3.2.2描述的名称对照赋值法进行初始化赋值。
4.2.2使用Bert-base的参数初始化学生模型,学生模型的文本嵌入层和分类层使用Bert-base相对应的参数,文本特征提取层使用Bert-base的前6个transformer层参数来进行对应的赋值。使用3.2.2描述的名称对照赋值法进行初始化赋值。
4.2.3使用Numpy库读取CoLA_Train_Process,采用CoLA_Train_Process轻量化CoLA_Teacher,具体方法如下:
4.2.3.1初始化迭代次数f=1;
4.2.3.2初始化已训练样本数b=1;
4.2.3.3教师模型按4.2.3.3.1所述流程对CoLA_Train_Process中的第b个样本sb进行文本分类处理,同时学生模型按4.2.3.3.2所述流程对CoLA_Train_Process中的第b个样本sb进行文本分类处理。
4.2.3.3.1教师模型对样本sb进行文本分类,方法如下:
4.2.3.3.1.1教师模型文本嵌入层从CoLA_Train_Process中取出sb,sb={w1 b…wi b…wm b,lb},对sb进行文本嵌入转换,得到样本sb的第一嵌入向量表示TE(sb),TE(sb)={TE(w1 b),…,TE(wi b),…,TE(wm b),lb},具体方法如下:
4.2.3.3.1.1.1对样本sb中的句子按照单词之间空格进行分词,得到样本sb句子分词和样本标签的集合s1 b={w1 b,…,wm b,…,wM b,lb};
4.2.3.3.1.1.2对照Bert-base的词表把分词后的单词转换成为单词的编号,得到样本sb句子单词编号和样本标签集合s2 b={w1^ b,…,wm^ b,…,wM^ b,lb},wm^ b是介于1-30522的整数;
4.2.3.3.1.1.3教师模型的文本嵌入层的三个全连接层依次对s2 b中单词的编号进行全连接处理,把单词编号转换成对应的词向量,得到sb的教师嵌入向量表示TE(sb),TE(sb)={TE(w1 b),…,TE(wm b),…,TE(wM b),lb},TE(wm b)是长度为768的一维向量;
4.2.3.3.1.2教师模型的文本特征提取层中的12个transfromer层对TE(sb)进行文本特征提取,得到由12个文本语义特征和样本标签组成的集合TF(sb),TF(sb)={TF(sb)1,…,TF(sb)j,…TF(sb)12,lb},TF(st)j代表第j个transfromer层输出的文本特征,具体方法如下:
4.2.3.3.1.2.1初始化j=1,令TF(sb)={lb};
4.2.3.3.1.2.2若j=1,第j层transformer提取E(sb)的文本语义特征,得到TF(sb)1,转4.2.3.3.1.2.3,若j>1,第j层transformer提取TF(sb)j-1的文本语义特征,得到TF(sb)j,转4.2.3.3.1.2.3;
4.2.3.3.1.2.3若1≤j≤11,将TF(sb)j加入到TF(sb)中,发送TF(sb)j到第j+1层transformer作为输入,转4.2.3.3.1.2.4,若j=12,将TF(sb)12加入到TF(sa),转4.2.3.3.1.2.4;
4.2.3.3.1.2.4令j=j+1,如果j≤12,转4.2.3.3.1.2.2,否则,说明已经提取出所有的文本语义特征,得到TF(sb),TF(sb)={TF(sb)1,…,TF(sb)j,…TF(sb)12,lb},TF(sb)j是维度为128×768的二维矩阵,转4.2.3.3.1.3;
4.2.3.3.1.3教师模型的分类层接收TF(sb),取出TF(sb)12,,采用全连接层对TF(sb)12进行分类得到样本sb的第一概率分布结果TR(sb);
4.2.3.3.2学生模型对第b个样本sb进行文本分类,方法是:
4.2.3.3.2.1学生模型文本嵌入层接收sb={w1 b…wm b…wM b,lb},对sb进行文本嵌入转换,输出样本sb的第二嵌入向量表示SE(sb)={SE(w1 b),…,SE(wm b),…,SE(wM b),lb},具体方法如下:
4.2.3.3.2.1.1对样本sb中的英文句子按照单词之间空格进行分词,得到样本sb的句子分词和样本标签集合s1 b={w1 b,wm b,…,wM b,lb},wm b是一个英文句子按照单词之间的空格分词后得到的单个单词,因此对于同一样本,教师模型和学生模型分词后的结果相同;
4.2.3.3.2.1.2将s1 b中的单词转换成为单词的编号,得到样本sb的单词编号和样本标签集合s2 b={w1^ b,wm^ b,…,wM^ b,lb},wm^ b为单词的编号,是介于1-30522的整数;对于同一样本,教师模型和学生模型分词后的结果相同,单词的编号也相同。
4.2.3.3.2.1.3学生模型的文本嵌入层的三个全连接层依次对s2 b中单词的编号进行全连接处理,把单词编号转换成对应的词向量得到sb的学生嵌入向量表示SE(sb),SE(sb)={SE(w1^ b),…,SE(wm^ b),…,SE(wM^ b),lb},SE(wm^ b)是一个长度为768的一维向量,转4.2.3.3.2.2;
4.2.3.3.2.2学生模型的文本特征提取层中的6个transfromer层对SE(sb)提取文本特征,得到由6个文本语义特征和样本标签组成的集合SF(sb),SF(sb)={SF(sb)1,…,SF(sb)j,…SF(sb)6,lb},SF(sb)j代表第j个transfromer层输出的文本特征,具体方法如下:
4.2.3.3.2.2.1初始化j=1,令SF(sb)={lb};
4.2.3.3.2.2.2若j=1,第j层transformer提取SE(sb)的文本语义特征,得到SF(sb)1,转4.2.3.3.2.2.3;若j>1,第j层transformer提取SF(sb)j-1的文本语义特征,得到SF(sb)j,转4.2.3.3.2.2.3;
4.2.3.3.2.2.3若1≤j≤5将SF(sb)j加入到SF(sb)中,发送SF(sb)j到第j+1层transformer作为输入,若j=6,将SF(sb)12加入到SF(sb)中;
4.2.3.3.2.2.4令j=j+1,如果j≤6,转4.2.3.3.2.2.2,否则,说明已经提取出所有的文本语义特征,得到SF(sb),SF(sb)={SF(sb)1,…,SF(sb)j,…SF(sb)6,lb},转4.2.3.3.2.3;
4.2.3.3.2.3学生模型的分类层接收SF(sb),取出SF(sb)6,分类层的全连接层对SF(sb)6进行分类,得到样本sb的第二概率分布结果SR(sb),转4.2.3.3.3;
4.2.3.3.3学生模型计算教师模型和学生模型对sb的处理结果的差值L,具体方法如下:
4.2.3.3.3.1学生模型使用均方误差(MSE)函数计算TE(sb)和SE(sb)的差值,记为Lemd,Lemd=MSE(TE(sb),SE(sb));
4.2.3.3.3.2学生模型放缩教师模型对样本sb进行文本分类得到的概率分布结果TR(sb)得到放缩后的概率分布结果TR^(sb),TR^(sb)=TR(sb)/Temperature,放缩学生模型对样本sb进行文本分类的第二概率分布结果SR(sb)得到放缩后的第二概率分布结果SR^(sb),SR^(sb)=SR(sb)/Temperature,并调用softmax函数对TR^(sb)和SR^(sb)进行归一化,得到归一化后的TR^(sb)和SR^(sb),分别记为TR^(sb)’和SR^(sb)’。使用KL散度(Kullback-Leible)函数来衡量处理过后的教师模型和学生模型预测输出的分布距离Llogists,Llogists=KL(TR^(sb)’,SR^(sb)’);
4.2.3.3.3.3预训练语言模型轻量化主要是降低文本特征提取层的参数。本发明在此阶段对温故知新这一机制建模并应用在使用知识蒸馏轻量化预训练语言模型的工程实践中。温故知新在本发明中的应用方式是融合教师模型多个transformer层的文本特征指导学生一个transformer层如何提取文本特征。对于含有12个transformer层的教师模型和含有6个transformer层的学生模型,为了排除层数对应方案的影响,本发明中教师模型与学生模型的transformer层对齐方式与BERT-PKD(见文献“Patient KnowledgeDistillation for BERTModel Compression”,2019,“用于BERT模型压缩的耐心知识蒸馏”)保持一致,即学生模型的{1,2,3,4,5,6}对应教师模型的{2,4,6,8,10,12},与BERT-PKD里的单层对单层不同,本发明采取的是单层对多层的方式,以学生模型的第一位的1和教师模型的第一位的2为例,含义是融合教师模型前2个transformer层的文本特征为指导学生模型的第1层transformer如何提取文本特征,具体方法如下:
4.2.3.3.3.3.1学生模型的第x层对应教师模型前y层,初始化x=1,Lmid=0,Lmid的值是处理同一样本时教师模型前y层文本特征的融合值与学生模型第x层文本特征的差值:
4.2.3.3.3.3.2令y=2x;
4.2.3.3.3.3.3计算教师模型各层transformer文本特征的权重,学生模型调用softmax函数对[1,…,y]共y个整数进行归一化,得到[P1,…,Py]共y个权重;
4.2.3.3.3.3.5学生模型使用均方误差(MSE)函数计算TF_y与SF(sb)x的差值Lmid,Lmid=Lmid+MSE(TF_y,SF(sb)x);
4.2.3.3.3.3.6令x=x+1,若x≤6,转4.2.3.3.3.3.2,若x>6,转4.2.3.3.3.4;
4.2.3.3.3.4将SR(sb)与表示样本标签的独热编码lb做交叉熵CE(Cross Entropy)函数,交叉熵结果记为Lce,即Lce=CE(lb,SR(sb));
4.2.3.3.3.5计算学生模型的总损失值L,L=(1-α)×Lce+α×Llogists+β×Lmid+γ×Lemd,转4.2.3.3.4;
4.2.3.3.4学生模型使用Adam优化算法最小化L,以更新学生模型的文本嵌入层、文本特征提取层、分类层的网络权重参数,转4.2.3.4;
4.2.3.4令b=b+1,若b≤A,且b整除200不为0,转4.2.3.3,若b<A且b整除200为0,转4.2.3.5使用验证集测试学生模型得分,若b>A,说明所有数据已经训练完一个轮次,转4.2.3.6。
4.2.3.5学生模型调用第三方库Numpy读取CoLA_Val_Process,测试学生模型在验证集上的得分,具体如下:
4.2.3.5.1初始化已验证样本数k2=1,初始化记录样本验证正确的变量true_num2=0,学生模型对第k2个样本进行文本分类得到预测的类别,与样本实际类别标签比对来验证是否分类正确,若比对结果一致,则分类正确,true_num2=true_num2+1,若结果不一致,则分类错误。验证完所有的样本的后,计算最终的文本分类准确率acc=true_num2/K。具体如下;
4.2.3.5.1.1学生模型的文本嵌入层对第k2个样本s`k2进行文本嵌入转换,得到s`k2的嵌入向量表示E(s`k2)={E(w`1 k2),…,E(w`q k2),…,E(w`Q k2),l`k2},具体方法如下:
4.2.3.5.1.1.1对样本s`k2中的句子按照单词之间空格进行分词,得到样本s`k2的句子分词和样本标签集合s`1 k2={w`1 k2,…,w`q k2,…,w`Q k2,l`k2}?
4.2.3.5.1.1.2将s`1 k2的单词转换成为单词的编号,得到样本s`k2的句子单词编号和样本标签集合s`2 k2={w`1^ k2,…w`q^ k2,…,w`Q^ k2,l`k2},w`q^ k2是介于1-30522的整数;
4.2.3.5.1.1.3学生模型的文本嵌入层的三个全连接层依次对s`2 k2中单词的编号进行全连接处理,把单词编号转换成对应的词向量得到s`k2的嵌入向量表示E(s`k2),E(s`k2)={E(w`1 k2),…,E(w`q k2),…,E(w`Q k2),l`k2},E(w`q k2)是长度为768的一维向量,转4.2.3.5.1.2;
4.2.3.5.1.2学生模型的文本特征提取层中的6个transfromer层对E(s`k2)提取文本特征,得到由6个文本语义特征和样本标签组成的集合F(s`k2),F(s`k2)={F(s`k2)1,…,F(s`k2)j,…F(s`k2)6,l`k2},F(s`k2)j代表第j个transfromer层输出的文本特征,具体方法如下:
4.2.3.5.1.2.1初始化j=1,令F(s`k2)={l`k2};
4.2.3.5.1.2.2若j=1,第j层transformer提取E(s`k2)的文本语义特征,得到F(s`k2)j,转4.2.3.5.1.2.3;若j>1,第j层transformer提取F(s`k2)j-1的文本语义特征,得到F(s`k2)j,转4.2.3.5.1.2.3;
4.2.3.5.1.2.3若1≤j≤5将F(s`k2)j加入到F(s`k2)中,发送F(s`k2)j到第j+1层transformer作为输入,若j=6,将F(s`k2)6加入到F(s`k2)中;
4.2.3.5.1.2.4令j=j+1,如果j≤6,转4.2.3.5.1.2.2,否则,说明已经提取出所有的文本语义特征,得到F(s`k2)={F(s`k2)1,…,F(s`k2)j,…F(s`k2)6,l`k2},转4.2.3.5.1.3;
4.2.3.5.1.3学生模型的分类层接收F(s`k2),对F(s`k2)6进行分类,得到s`k2的概率分布结果R(s`k2)。
4.2.3.5.1.4学生模型比较R(s`k2)中最大值的索引与真实样本标签独热编码l`k2中数字1的索引是否相同,若相同,令true_num2=true_num2+1,转4.2.3.5.1.5,若不相同,直接转4.2.3.5.1.5;
4.2.3.5.1.5令k2=k2+1,若k2≤K,转4.2.3.5.1.1验证下一个样本,若k2>K,计算对应数据集第二任务准确率acc 2,acc2=true_num2/K,转4.2.3.3继续轻量化教师模型
4.2.3.6令f=f+1,若f≤Epoch,转4.2.3.1;若f>Epoch,训练结束,保存在CoLA_Train_Process上轻量化教师模型得到的学生模型文本嵌入层、文本特征提取层、分类层网络权重参数CoLA_Student;
4.3采用SST-2_Train_Process、SST-2_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于SST-2类文本进行分类的轻量化网络权重参数SST-2_Student;
4.4采用RTE_Train_Process、RTE_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于RTE类文本进行分类的轻量化网络权重参数RTE_Student;
4.5采用MRPC_Train_Process、MRPC_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于MRPC类文本进行分类的轻量化网络权重参数MRPC_Student;
4.6采用STS-B_Train_Process、STS-B_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于STS-B类文本进行分类的轻量化网络权重参数STS-B_Student;
4.7采用QNLI_Train_Process、QNLI_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于QQP类文本进行分类的轻量化网络权重参数QQP_Student;
4.8采用QQP_Train_Process、QQP_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于QQP类文本进行分类的轻量化网络权重参数QQP_Student;
4.9采用MNLI_Train_Process、MNLI_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于MNLI类文本进行分类的轻量化网络权重参数MNLI_Student;
第五步:接收用户输入文本集合C,C={c1,…,cz,…,cZ},cz={w1 z…wo z…wO z},共O个单词,wo z是第z个样本中的第o个词。学生模型首先判断C属于GLUE八个数据集中的哪一个数据集,然后对C进行加标志预处理,然后使用第四步得到的对应的轻量化预训练语言模型初始化学生模型,并采用初始化后的学生模型对C进行分类,输出分类结果category={cy1,…,cyz,…,cyZ}。具体方法如下:
5.1对用户输入的文本集合C进行预处理,得到预处理后的文本集合C*,C*={c*1,…,c*z,…,c*Z},c*j={w*1 j…w*o j…w*O j},共O个单词,w*o z是第z个样本中的第o个词。具体如下:
5.1.1初始化已处理样本数目cnum=1;
5.1.2一般情况下要求用户输入文本集合C中的每个样本类型相同,便于成批次地处理。若用户输入文本集合的样本结构属于单个句子的类型,转5.1.3,若用户输入文本集合的样本结构属于句子对的类型,转5.1.4;
5.1.3采用步骤2.3.1.1所述的句首加标志方法对文本集合中的第cnum个样本做预处理,
5.1.4采用步骤2.3.2.1所述的句首句尾加标志方法对文本集合中的第cnum个样本进行预处理。
5.1.5令cnum=cnum+1,若cnum≤Z,转5.1.2预处理下一个样本,若cnum>Z,表示处理完毕,得到C*。转5.2。
5.2若用户输入样本的结构属于单个句子类型且需要判断句子是否符合语法规则时使用CoLA_Student初始化学生模型;若用户输入样本的结构属于单个句子类型且需要判断句子表达的情感类型时使用SST-2_Student初始化学生模型;若用户输入样本的结构属于句子对类型且需要判断句子对之间的逻辑关系属于蕴含,还是矛盾时使用RTE_Student初始化学生模型;若用户输入样本的结构属于句子对类型是否等价时使用MRPC_Student初始化学生模型;若用户输入样本的结构属于句子对类型且需要判断句子对之间的相似度时使用STS-B_Student初始化学生模型;若用户输入样本的结构属于句子对类型且需要判断句子对是否匹配时使用QQP_Student初始化学生模型;若用户输入样本的结构属于句子对类型且需要判断句子对之间的逻辑关系属于蕴含,矛盾还是中立时使用MNLI_Student初始化学生模型;若用户输入样本的结构属于句子对类型且为问题答案对并需要判断问题答案是否匹配时使用QNLI_Student初始化学生模型。初始化方法为步骤3.2.2所述的名称对照赋值法。
5.3初始化后的学生模型对C*进行文本分类,输出分类结果category={cy1,…,cyz,…,cyZ},具体方法如下:
5.3.1初始化变量z=1;
5.3.2学生模型处理第z个样本c*z,c*z={w*1 z…w*o z…w*O z},方法如下:
5.3.2.1学生模型文本嵌入层接收c*z,输出样本c*z的嵌入向量E(c*z),E(c*z)={E(w*1 z),…,E(w*o z),…,E(w*O z)},方法如下:
5.3.2.1.1对样本c*z按照单词之间空格进行分词,得到分词集合c*1 z={w*1 z,…w*o z,…,w*O z};
5.3.2.1.2对照Bert-base的词表把c*1 z中的单词转换成为单词的编号,得到单词编号集合c*^z,c*^z={w*^1 z,…w*^o z,…,w*^O z},w*^o z是一个介于1-30522的整数;
5.3.2.1.3依次使用文本嵌入层的全连接层把c*^z中单词的编号转换成对应的词向量,得到c*z的词向量集合E(c*z),E(c*z)={E(w*1 z),…,E(w*o z),…,E(w*O z)},E(w*o z)是一个长度为768维度的向量,转5.3.2.2;
5.3.2.2文本特征提取层中的6个transfromer层对E(c*z)进行特征提取,得到由6个文本语义特征组成的集合F(c*z),F(c*z)={F(c*z)1,…,F(c*z)j,…F(c*z)6},F(c*z)j代表第j个transfromer层输出的文本特征,F(c*z)j是一个维度为128×768的二维矩阵,具体方法如下:
5.3.2.2.1初始化j=1;
5.3.2.2.2若j=1,第j层transformer提取E(c*z)文本语义特征,得到F(c*z)1,转5.3.2.2.3;若j>1,第j层transformer接收F(c*z)j-1计算文本语义特征,得到F(c*z)j,转5.3.2.2.3;
5.3.2.2.3若1≤j≤5,将F(c*z)j加入到F(c*z)中,发送F(c*z)j到第j+1层transformer作为输入,转5.3.2.2.2;若j=6,将F(c*z)6加入到F(c*z)中,转5.3.2.2.4;
5.3.2.2.4令j=j+1,如果j≤6,转5.3.2.2.2,否则,说明已经计算出所有的文本语义特征,得到F(c*z),F(c*z)={F(c*z)1,…,F(c*z)j,…F(c*z)6},转5.3.2.3;
5.3.2.3分类层接收F(c*z),取出F(c*z)6,对F(c*z)6采用全连接层进行分类,得到c*z的概率分布结果R(c*z)。
5.3.2.4根据极大似然原理,判定样本c*z在R(c*z)中概率值最大处索引对应的类别cyz,把对应的类别cyz加入到category中,转5.3.3;
5.3.3令z=z+1,若z≤Z,转5.3.2处理下一个用户输入样本;若z>Z,表示所有样本处理结束。得到用户所有输入样本的分类结果值category={cy1,…,cyz,…,cyZ}。
注:GLUE数据集是目前自然语言处理领域认可度最高的数据集,子数据基本上覆盖了工程实践中文本分类的任务类型,并且将不断扩展,当GLUE数据集出现一个新的子数据集时,可按照本发明前四个步骤得到一个对应的轻量化预训练语言模型。再根据第五步所述步骤进行实际工程应用。
采用本发明可以得到以下技术效果:
1、本发明整体上实现了一种基于轻量化预训练语言模型的文本分类方法。该方法对预训练语言模型中的教师模型轻量化后参数量约降低了40%,同时,得到的学生模型在文本分类上平均得分上能达到教师模型平均得分的98.45%。并且在GLUE数据集的8个子数据集中的5个子数据集(MNLI,QQP,STS_B,MRPC,RTE)上实现了超越教师模型的准确率,满足了占有资源少并且准确率高的要求。
2、本发明方案的第四步轻量化教师模型transformer层的方法是人类温故知新这种学习方式在知识蒸馏中的应用,结果表明引入温故知新能够使得轻量化模型在有限的参数中保持较高的文本分类准确率。
附图说明
图1是本发明方案总体流程图;
图2是第二步构建的基于预训练语言模型的文本分类模型示意图;
图3是本发明第四步应用温故知新这一方式轻量化教师模型transformer层时教师模型与学生模型层数对应方案示意图;
图4是本发明与FT,BERT-PKD,ALP-KD,BERT-EMD等基于预训练语言模型轻量化的文本分类方法的对比图,对比值为轻量化后得到的学生模型在八个子数据集上的平均准确率能达到教师模型在八个子数据集上的平均准确率的百分比。
表1是GLUE数据集的八个子数据集的相关介绍
表2是本发明与BERT-PKD,ALP-KD,BERT-EMD等基于预训练语言模型轻量化的文本分类方法的对比表,对比值为在GLUE数据集上的分类任务的准确率。
具体实施方式
图1是本发明整体流程图;如图1所示,本发明包括以下步骤:
第一步:构造基于预训练语言模型的文本分类模型,包括教师模型和学生模型,两个模型相互独立。教师模型由文本嵌入层,文本特征提取层,分类层组成。文本嵌入层由三个全连接层组成,分类层由一个全连接层组成,文本特征提取层由12个transformer层组成。
教师模型的文本嵌入层从文件接收训练集T,T={s1,s2,…,sa,…,sA},sa表示T中第a个样本。文本嵌入层对T中的样本s1,s2,…,sa,…,sA进行文本嵌入转换,得到文本句子的嵌入向量表示集合E(T),E(T)={E(s1),E(s2),…,E(sa),…,E(sA)},E(sa)是sa的嵌入向量表示,将E(T)发送给文本特征提取层。
教师模型的文本特征提取层从文本嵌入层接收E(T),对E(T)进行特征提取,得到文本语义特征集合F(T),F(T)={F(s1),F(s2),…,F(sa),…,F(sA)},F(sa)是sa的语义特征,将F(T)发送给分类层。
教师模型的分类层从文本特征提取层接收F(T),对F(T)使用全连接层处理,得到分类结果概率分布集合R,R={R(s1),R(s2),…,R(sa),…,R(sA)}。R(sa)为一维向量,单个向量值为样本属于对应类别的概率值,R(sa)的长度为分类结果数,最后根据极大似然原理,判定样本属于概率值最大的对应类别。例如样本sa可分为3个类别,最终输出R(sa)={0.2,0.3,0.5},共3个值,代表样本sa属于三个类别的概率值是0.2,0.3,0.5。而sa属于第三类的概率最大,则判定sa属于第三个类别。
学生模型也由文本嵌入层,文本特征提取层,分类层组成。学生模型的文本嵌入层与教师模型的文本嵌入层相同、学生模型的分类层与教师模型的分类层相同。学生模型的文本特征提取层由6个transformer层组成,学生模型的文本特征提取层和教师模型的文本特征提取层的功能相同,输出向量的维度也相同,但因为两者transformer层的层数不同,对同一文本处理得到的文本语义特征集合不同。
第二步:准备微调教师模型和轻量化教师模型需要的训练数据,并将训练数据转换成文本分类模型需要的输入格式。
2.1从github下载GLUE官方提供的数据集下载脚本(见链接https://github.com/nyu-mll/GLUE-baselines,2021年11月19日)。
2.2运行数据集下载脚本download_glue_data.py,运行结束得到GLUE数据集。选取GLUE数据集下的8个子数据集即:CoLA,SST-2,RTE,MRPC,STS-B,QNLI,QQP,MNLI(GLUE数据集是目前自然语言处理领域认可度最高的数据集,子数据基本上覆盖了工程实践中文本分类的任务类型,并且将不断扩展,GLUE数据集的子数据集数量会随着时间变得更多)。各子数据集的介绍见表1,每个子数据集官方已划分好训练集,验证集。其中八个子数据集分为两类,CoLA和SST-2属于单句分类,训练集和验证集样本的结构相同,形如样本P={s,lp},s表示一个英文句子,lp表示样本标签,lp是长度为分类结果数的独热编码,分类结果数各个数据集已事先规定。例如一个样本属于CoLA数据集,可分为2种类别,样本P的真实类别是第二类,则lp=[0,1],含义为在表示样本真实类别的位置上标数字1,其他位置标数字0。剩余六个数据集属于句子对分类。训练集和验证集的样本结构形如D={s1,s2,ld},由两个英文句子和一个样本标签组成,s1为英文句子1,s2为英文句子2,ld为样本标签,也是长度为分类结果数的独热编码。
表1
2.3对GLUE数据集的8个子数据集的训练集,验证集进行加标志预处理,方法如下:
2.3.1对CoLA和SST-2这两个单句分类数据集加标志,方法如下:
2.3.1.1采用句首加标志方法对CoLA数据集中的训练集、验证集中每个样本加标志,方法是:
2.3.1.1.1从存储CoLA数据集的训练集样本的文件中读取所有训练集样本,将训练集样本均放到训练集样本集合CoLA_Train中,对CoLA_Train中的每个样本加标志,方法如下:
2.3.1.1.1.1使用Python的第三方开源库Numpy(见链接https://pypi.org/project/numpy/v1.21.0/2021年8月21日,可以采用发布的最新版本)获得CoLA_Train中的训练集样本的总数量num1_train,初始化记录已处理训练集样本数量的变量n1_train=1,创建存储处理完成的训练集样本的文件CoLA_Train_Process;
2.3.1.1.1.2从CoLA_Train中取出第n1_train个样本,取出样本中的英文句子,在英文句子的句首加上[CLS]的标志,得到一个加上了[CLS]的标志的新句子,将加上了[CLS]的标志的新句子和对应的样本标签写到CoLA_Train_Process中保存;
2.3.1.1.1.3令n1_train=n1_train+1,若n1_train≤num1_train,转2.3.1.1.1.2,如果n1_train>num1_train,加标志结束,转2.3.1.1.2;
2.3.1.1.2从存储CoLA数据集的验证集样本的文件中读取所有验证集样本,将所有验证集样本均放到验证集样本集合CoLA_Val,对CoLA_Val中的每个样本加标志,具体方法如下:
2.3.1.1.2.1使用Python的第三方开源库Numpy获得CoLA_Val中的验证集样本的总数量num1_val,初始化记录已处理验证集样本数量的变量n1_val=1,创建存储处理完成的验证集样本的文件CoLA_Val_Process;
2.3.1.1.2.2从CoLA_Val取出第n1_val个样本,取出样本中的英文句子,在句首加上[CLS]的标志得到一个加上了[CLS]的标志的新句子,将加上了[CLS]的标志的新句子和样本标签写到CoLA_Val_Process中保存;
2.3.1.1.2.3令n1_val=n1_val+1,若n1_val≤num1_val转2.3.1.1.2.2,如果n1_val>num1_val,加标志结束,转2.3.1.2;
2.3.1.2采用2.3.1.1所述句首加标志方法对SST-2数据集的训练集、验证集中每个样本加标志,得到记录SST-2训练集的处理结果文件SST-2_Train_Process,记录SST-2验证集的处理结果文件SST-2_Val_Process。
使用句首加标志法处理单句分类数据集的训练集和验证集后,单个样本P={s,lp}处理后得到句首加了标志的样本P^,P^={s^,lp},其中s^=[CLS]s。
2.3.2对RTE,MRPC,STS-B,QNLI,QQP,MNLI这六个句子对分类数据集加标志,方法如下:
2.3.2.1采用句首句尾加标志方法对RTE数据集中的训练集、验证集中每个样本加标志:
2.3.2.1.1从存储RTE数据集的训练集样本的文件中读取所有训练集样本,将所有训练集样本放到训练集样本集合RTE_Train,对RTE_Train中的每个样本加标志,方法是:
2.3.2.1.1.1使用Python的第三方开源库Numpy获得RTE_Train中训练集样本的总数量num2_train,初始化记录已处理RTE训练集样本数量的变量n2_train=1,创建存储处理完成的训练集样本的文件RTE_Train_Process;
2.3.2.1.1.2取出第n2_train个样本,取出样本中的第一个句子,在句首加上[CLS]的标志,在句尾加上[SEP]的标志,把样本中的第二个句子拼接在[SEP]的后面得到一个新句子,把拼接好的新句子和样本标签写到RTE_Train_Process中保存;
2.3.2.1.1.3令n2_train=n2_train+1,若n2_train≤num2_train,转2.3.2.1.1.2继续处理第n2_train个样本,若n2_train>num2_train,加标签结束,转2.3.2.1.2;
2.3.2.1.2从存储RTE数据集的验证集样本的文件中读取所有验证集样本,将所有验证集样本放到验证集样本集合RTE_Val,,对RTE_Val中的每个样本加标志,具体方法如下:
2.3.2.1.2.1使用Python的第三方开源库Numpy获得RTE_Val中验证集样本的总数量num2_val,初始化记录已处理RTE验证集样本数量的变量n2_val=1,创建存储处理完成的验证集样本的文件为RTE_Val_Process;
2.3.2.1.2.2取出第n2_val个样本,取出样本中的第一个句子,在句首加上[CLS]的标志,在句尾加上[SEP]的标志,把样本中的第二个句子拼接在[SEP]的后面得到一个新句子,把拼接好的新句子和样本标签写到RTE_Val_Process中保存;
2.3.2.1.2.3令n2_val=n2_val+1,若n2_val≤num2_val则转2.3.2.1.2.2继续处理n2_val个样本,若n2_val>num2_val,加标志结束,转2.3.2.2;
2.3.2.2采用2.3.2.1所述句首句尾加标志方法对MRPC数据集加标志,得到记录MRPC训练集的处理结果文件MRPC_Train_Process,记录MRPC验证集的处理结果文件MRPC_Val_Process;
2.3.2.3采用2.3.2.1所述句首句尾加标志方法对STS-B数据集加标志,得到记录STS-B训练集的处理结果文件STS-B_Train_Process,记录STS-B验证集的处理结果文件STS-B_Val_Process;
2.3.2.4采用2.3.2.1所述句首句尾加标志方法对QQB数据集加标志,得到记录QQB训练集的处理结果文件QQB_Train_Process,和记录QQB验证集的处理结果文件QQB_Val_Process;
2.3.2.5采用2.3.2.1所述句首句尾加标志方法对QNLI数据集加标志,得到记录QNLI训练集的处理结果文件QNLI_Train_Process,和记录QNLI验证集的处理结果文件QNLI_Val_Process;
2.3.2.6采用2.3.2.1所述句首句尾加标志方法对MNLI数据集加标志,得到记录MNLI训练集的处理结果文件MNLI_Train_Process中,记录MNLI验证集的处理结果文件MNLI_Val_Process;
使用句首句尾加标志法处理句子对分类数据集的训练集合和验证集后,单个样本D={s1,s2,ld}处理后得到句首句尾加了标志的样本D^,D^={sd,ld},其中sd=[CLS]s1[SEP]s2,由符号[CLS]和[SEP]将两个句子拼接成了一个新的句子。
加标志后的八个子数据集在形式上分别达到了统一,即加标志后的训练集和验证集单个样本均是由一个新句子和一个样本标签组成。
2.3.2.7将加标志后的数据集形式抽象为以下形式,即加标志后的数据集X含有训练集T,验证集V,X为{CoLA,SST-2,RTE,MRPC,STS-B,QNLI,QQP,MNLI}中任意一个数据集,下文出现的X均表示此含义:
训练集T={s1,s2,…,sa,…sA},包含A个训练集样本,sa代表第a个训练集样本,sa={w1 a…wm a…wM a,la},sa中共包含M个单词,wm a代表第a个训练集样本中句子的第m个单词,la代表第a个训练集样本的样本标签。
验证集V={s`1,s`2,…,s`k,…s`K},包含K个训练集样本,s`k代表第k个验证集样本,s`k={w`1 k…w`q k…w`Q k,l`k},s`k中共包含Q个单词,w`q k代表第k个验证集样本中句子的第q个单词,l`k代表第k个验证集样本的样本标签。
第三步:初始化教师模型的参数,并采用数据集X的训练集加标志预处理后的结果文件(用X_Train_Process表示,例如,若X为CoLA,则X_Train_Process就为CoLA_Train_Process)微调教师模型,得到教师模型的权重参数X_Teacher。采用数据集X的验证集采用句首加标志法处理或句首句尾加标志法处理后的结果文件(用X_Val_Process表示,例如,若X为CoLA,则X_Val_Process就为CoLA_Val_Process)测试教师模型文本分类任务得分,具体方法如下:
3.1设置网络训练超参数:网络模型学习率(Learning Rate)、批处理大小(BatchSize)、句子最大长度(Max_Sentence_Length)、随机数种子(Seed)。训练轮数(Epoch),具体实验中Learning Rate在取值范围{1×10-5,2×10-5,3×10-5,5×10-5}中任取一值,BatchSize取值64,Max_Sentence_Length取值128,Seed取值9580。Epoch在取值范围{3,4,8,15}中任取一值。
3.2下载预训练语言模型Bert-base开源的参数,并初始化教师模型权重参数,具体方法如下:
3.2.1下载预训练语言模型BERT-base的参数。(见链接https://huggingface.co/bert-base-uncased,2021年11月6日)。Bert-base的参数包括文本嵌入层,文本特征提取层和分类层。下载的预训练语言模型BERT-base的参数以key-value的形式进行存储,key为参数名称,value为参数值(是已经训练好的32位浮点数),通过key可直接读取value值。
3.2.2使用Huggingface开源的transformer库(见链接https://github.com/huggingface/transformers,2021年8月21日,可以使用该网页公布的最新transformer库),采用名称对照赋值法把Bert-base的参数值与教师模型文本嵌入层,文本特征提取层,分类层的参数一一对应进行赋值。方法是:教师模型与Bert-base的参数名称一致,通过查找key对应的value值,直接把value值赋值给对应的教师模型参数。
3.3采用第二步对CoLA,SST-2,RTE,MRPC,STS-B,QNLI,QQP,MNLI这8个子数据集的训练集采用句首加标志法处理或句首句尾加标志法处理后的结果文件(即CoLA_Train_Process、SST-2_Train_Process,RTE_Train_Process,MRPC_Train_Process,STS-B_Train_Proce ss,QNLI_Train_Process,QQP_Train_Process,MNLI_Train_Process)微调教师模型,采用验证集的采用句首加标志法处理或句首句尾加标志法处理后的结果文件(即CoLA_Val_Process、SST-2_Val_Process,RTE_Val_Process,MRPC_Val_Process,STS-B_Val_Process,QNL I_Val_Process,QQP_Val_Process,MNLI_Val_Process)测试微调后的教师模型在文本分类任务上的准确率。采用8个子数据集对教师模型分别微调,得到适用于教师模型针对不同文本进行分类的8种对应的网络权重参数,具体如下:
3.3.1采用CoLA_Train_Process、CoLA_Val_Process并采用微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对CoLA类文本进行分类的网络权重参数CoLA_Teacher,方法是:
3.3.1.1教师模型调用Python第三方库Numpy读取CoLA_Train_Process,使用CoLA_Train_Process微调教师模型,具体如下:
3.3.1.1.1初始化迭代次数e=1;
3.3.1.1.2初始化已训练样本数量a=1;
3.3.1.1.3采用第a个样本sa训练教师模型,sa由一个句子和一个样本标签组成,方法如下:
3.3.1.1.3.1教师模型文本嵌入层接收sa,对sa进行文本嵌入转换得到sa的嵌入向量表示E(sa),E(sa)={E(w1 a),…,E(wm a),…,E(wM a),la},方法如下:
3.3.1.1.3.1.1对样本sa中的英文句子按照单词之间空格进行分词,得到样本sa句子分词和样本标签的集合s1 a,s1 a={w1 a,…,wm a,…,wM a,la},s1 a由M个单词和一个样本标签la共M+1个元素组成,wm a是sa的第m个单词,1≤m≤M。
3.3.1.1.3.1.2对照Bert-base的词表把s1 a中的单词转换成为单词的编号,得到样本sa单词编号和样本标签的集合s2 a={w1^ a,…,wm^ a,…,wM^ a,la},Bert-base的词表共有30522个词汇,按照从1到30522编码,wm^ a是一个介于1-30522的整数;
3.3.1.1.3.1.3文本嵌入层的三个全连接层依次对s2 a中单词的编号进行全连接处理,把单词编号转换成对应的词向量,得到样本sa的嵌入向量表示E(sa)={E(w1 a),…,E(wm a),…,E(wM a),la},E(wm a)是一个长度为768的一维向量;
3.3.1.1.3.2文本特征提取层中的12个transfromer层对E(sa)进行文本特征提取(见文献“Attention Is All YouNeed”,2018,“注意力是你所需要的”),得到由12个文本语义特征和样本标签组成的集合F(sa)={F(sa)1,…,F(sa)j,…F(sa)12,la},F(sa)j代表第j个transfromer层输出的文本语义特征,F(sa)j是一个维度为128×768二维矩阵,1≤j≤12,具体方法如下:
3.3.1.1.3.2.1初始化j=1,令F(sa)={la},
3.3.1.1.3.2.2若j=1,第j层transformer对E(sa)提取文本语义特征,得到F(sa)1,转3.3.1.1.3.2.3;若j>1,第j层transformer对F(sa)j-1提取文本语义特征,得到F(sa)j,转3.3.1.1.3.2.3;
3.3.1.1.3.2.3若1≤j≤11,将F(sa)j加入到F(sa)中,发送F(sa)j到第j+1层transformer作为输入,转3.3.1.1.3.2.4;若j=12,将F(sa)12加入到F(sa)中,转3.3.1.1.3.2.4;
3.3.1.1.3.2.4令j=j+1,如果j≤12,转3.3.1.1.3.2.2,否则,说明已经提取出所有的文本语义特征,得到F(sa)={F(sa)1,…,F(sa)j,…F(sa)12,lt},转3.3.1.1.3.3;
3.3.1.1.3.3教师模型分类层从文本特征提取层接收F(sa),从F(sa)取出F(sa)12,分类层对F(sa)12使用全连接层进行分类,得到sa的概率分布结果R(sa)。
3.3.1.1.3.4教师模型取出F(sa)中的样本标签la,调用均方误差(MSE)函数计算R(sa)与la之间的差值作为损失值,记为Loss,Loss=MSE(R(sa),la);
3.3.1.1.3.5教师模型使用Adam优化算法最小化Loss,以更新教师模型文本嵌入层、文本特征层、分类层的网络权重参数(见文献“Kingma D P,Ba J.Adam:Amethod forstochastic optimization[J].arXiv preprint arXiv:1412.6980,2014”,Kingma的论文:Adam,一种随机优化方法),转3.3.1.1.4;
3.3.1.1.4令a=a+1,若a≤A,且a整除200结果不为0,转3.3.1.1.3采用下一个样本继续训练;若a≤A且a整除200结果为0,转3.3.1.1.5开始测试微调后的教师模型在验证集上的得分;若a>A,说明所有数据已经训练完一个轮次,转3.3.1.1.6;
3.3.1.1.5教师模型调用第三方库Numpy读取CoLA_Val_Process,测试教师模型在验证集上的得分,即计算对应数据集任务的准确率acc,具体方法如下:
3.3.1.1.5.1初始化已验证样本数k=1,设置记录样本验证正确的变量为true_num,并初始化true_num=0,使用第k个样本验证教师模型性能,方法如下;
3.3.1.1.5.1.1教师模型的文本嵌入层对第k个验证集样本s`k进行文本嵌入转换s`k={w`1 k…w`q k…w`Q k,l`k},得到样本s`k的嵌入向量表示E(s`k),E(s`k)={E(w`1 k),…,E(w`q k),…,E(w`Q k),l`k},具体方法如下:
3.3.1.1.5.1.1.1对样本s`k的英文句子按照单词之间空格进行分词,得到样本s`k句子分词和样本标签的集合s`1 k={w`1 k,w`q k,…,w`Q k,l`k},s`k和s`1 k的区别是s`k有一个句子,一个样本标签共两个元素,其中Q个单词构成句子作为一个整体属于s`k,s`1 k有Q个单词,一个样本标签共Q+1个元素。
3.3.1.1.5.1.1.2对照Bert-base的词表把s`1 k中的单词转换成单词的编号,得到s`1 k的单词编号和样本标签集合s`2 k,s`2 k={w`1^ k,w`q^ k,…,w`Q^ k,l`k},w`q^ k是介于1-30522的整数;
3.3.1.1.5.1.1.3教师模型的文本嵌入层的三个全连接层依次对s`2 k中单词的编号进行全连接处理,把单词编号转换成对应的词向量,得到s`k的嵌入向量表示E(s`k),E(s`k)={E(w`1 k),…,E(w`q k),…,E(w`Q k),l`k},E(w`q k)是长度为768的一维向量;
3.3.1.1.5.1.2教师模型文本特征提取层中的12个transfromer层对E(s`k)进行文本特征提取,得到由12个文本语义特征和样本标签组成的集合F(s`k)={F(s`k)1,…,F(s`k)j,…F(s`k)12,l`k},F(s`k)j代表第j个transfromer层输出的文本特征,具体方法如下:
3.3.1.1.5.1.2.1初始化j=1,令F(s`k)={l`k};
3.3.1.1.5.1.2.2若j=1,第j层transformer提取E(s`k)的文本语义特征,得到F(s`k)1,转3.3.1.1.5.1.2.3;若j>1,第j层transformer提取F(s`k)j-1的文本语义特征,得到F(s`k)j,转3.3.1.1.5.1.2.3;
3.3.1.1.5.1.2.3若1≤j≤11,将F(s`k)j加入到F(s`k)中,发送F(s`k)j到第j+1层transformer作为输入;若j=12,将F(s`k)12加入到F(s`k)中;
3.3.1.1.5.1.2.4令j=j+1,如果j≤12,转3.3.1.1.5.1.2.2;否则,说明已经提取出所有的文本语义特征,得到F(s`k)={F(s`k)1,…,F(s`k)j,…F(s`k)12,l`k},转3.3.1.1.5.1.3;
3.3.1.1.5.1.3教师模型分类层从文本特征提取层接收F(s`k),取出F(s`k)12,分类层的全连接层对F(s`k)12进行分类,得到s`k的概率分布结果R(s`k)。
3.3.1.1.5.1.4教师模型比较R(s`k)中最大值的索引值与l`k中数字1的索引值是否相同,若相同,表示教师模型对第k个样本s`k的预测类别与样本标签标注的真实类别一致,令true_num=true_num+1,转3.3.1.1.5.2;若不相同,直接转3.3.1.1.5.2;
3.3.1.1.5.2令k=k+1,若k≤K,转3.3.1.1.5.1.1验证下一个样本,若k>K,计算对应数据集任务的准确率acc,acc=true_num/K,转3.3.1.1.3继续使用下一条样本微调(即训练)教师模型。
3.3.1.1.6令e=e+1如果e≤Epoch,转3.3.1.1.2。如果e>Epoch,微调结束,用CoLA_Teacher保存微调完成的教师模型网络权重参数,包括文本嵌入层参数,文本特征提取层参数,分类层参数。
3.3.2采用SST-2_Train_Process、SST-2_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对SST-2类文本进行分类的网络权重参数SST-2_Teacher;
3.3.3采用RTE_Train_Process、RTE_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对RTE类文本进行分类的网络权重参数RTE_Teacher;
3.3.4采用MRPC_Train_Process、MRPC_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对,MRPC类文本进行分类的网络权重参数MRPC_Teacher;
3.3.5采用STS-B_Train_Process、STS-B_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对STS-B类文本进行分类的网络权重参数STS-B_Teacher;
3.3.6采用MRPC_Train_Process、MRPC_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对MRPC类文本进行分类的网络权重参数MRPC_Teacher;
3.3.7采用QNLI_Train_Process、QNLI_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对QNLI类文本进行分类的网络权重参数QNLI_Teacher;
3.3.8采用QQP_Train_Process、QQP_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对QQP类文本进行分类的网络权重参数QQP_Teacher;
教师模型采用8个子数据集微调和验证后共得到8个对应的网络权重参数。
第四步:采用X_Train_Process和知识蒸馏方法轻量化第三步使用CoLA,SST-2,RTE,MRPC,STS-B,QNLI,QQP,MNLI这8个子数据集分别微调教师模型后的权重参数X_Teacher(即CoLA_Teacher、SST-2_Teacher,、RTE_Teacher、MRPC_Teacher、STS-B_Teacher、QNLI_Teacher、QQP_Teacher、MNLI_Teacher)得到对应的学生模型权重参数X_Student(即CoLA_Student、SST-2_Student、RTE_Student、MRPC_Student、STS-B_Student、QNLI_Student、QQP_Student、MNLI_Student)并使用X_Val_Process验证轻量化后的模型在文本分类任务上的准确率,方法如下:
4.1设定知识蒸馏所需的超参数:网络模型学习率(Learning Rate)、批处理大小(Batch Size)、句子最大长度(Max_Sentence_Length)、随机数种子(Seed)、训练轮数(Epoch)和蒸馏温度(Temperature)、超参数α,β,γ。此步骤设定的部分超参数与3.1设定的超参数是相同的,增加了超参数蒸馏温度(Temperature),并取值为8(见文献“Distillingthe Knowledge in aNeural Network”,2015,“在神经网络中蒸馏知识”),训练轮数(Epoch)取值为30,超参数α在{0.2,0.3,0.5}中任取一值,β在{5,8,10}中任取一值,γ在{1,2,3}中任取一值(实验证明α取0.3,β取10,γ取1,效果最好)其余超参数与3.1取值方法保持一致。
4.2使用知识蒸馏方法轻量化CoLA-teacher得到CoLA_student,方法如下:
4.2.1采用CoLA_Teacher初始化教师模使用3.2.2描述的名称对照赋值法进行初始化赋值。
4.2.2使用Bert-base的参数初始化学生模型,学生模型的文本嵌入层和分类层使用Bert-base相对应的参数,文本特征提取层使用Bert-base的前6个transformer层参数来进行对应的赋值。使用3.2.2描述的名称对照赋值法进行初始化赋值。
4.2.3使用Numpy库读取CoLA_Train_Process,采用CoLA_Train_Process轻量化CoLA_Teacher,具体方法如下:
4.2.3.1初始化迭代次数f=1;
4.2.3.2初始化已训练样本数b=1;
4.2.3.3教师模型按4.2.3.3.1所述流程对CoLA_Train_Process中的第b个样本sb进行文本分类处理,同时学生模型按4.2.3.3.2所述流程对CoLA_Train_Process中的第b个样本sb进行文本分类处理。
4.2.3.3.1教师模型对样本sb进行文本分类,方法如下:
4.2.3.3.1.1教师模型文本嵌入层从CoLA_Train_Process中取出sb,sb={w1 b…wi b…wm b,lb},对sb进行文本嵌入转换,得到样本sb的第一嵌入向量表示TE(sb),TE(sb)={TE(w1 b),…,TE(wi b),…,TE(wm b),lb},具体方法如下:
4.2.3.3.1.1.1对样本sb中的句子按照单词之间空格进行分词,得到样本sb句子分词和样本标签的集合s1 b={w1 b,…,wm b,…,wM b,lb};
4.2.3.3.1.1.2对照Bert-base的词表把分词后的单词转换成为单词的编号,得到样本sb句子单词编号和样本标签集合s2 b={w1^b,…,wm^b,…,wM^b,lb},wm^b是介于1-30522的整数;
4.2.3.3.1.1.3教师模型的文本嵌入层的三个全连接层依次对s2 b中单词的编号进行全连接处理,把单词编号转换成对应的词向量,得到sb的教师嵌入向量表示TE(sb),TE(sb)={TE(w1 b),…,TE(wm b),…,TE(wM b),lb},TE(wm b)是长度为768的一维向量;
4.2.3.3.1.2教师模型的文本特征提取层中的12个transfromer层对TE(sb)进行文本特征提取,得到由12个文本语义特征和样本标签组成的集合TF(sb),TF(sb)={TF(sb)1,…,TF(sb)j,…TF(sb)12,lb},TF(st)j代表第j个transfromer层输出的文本特征,具体方法如下:
4.2.3.3.1.2.1初始化j=1,令TF(sb)={lb};
4.2.3.3.1.2.2若j=1,第j层transformer提取E(sb)的文本语义特征,得到TF(sb)1,转4.2.3.3.1.2.3,若j>1,第j层transformer提取TF(sb)j-1的文本语义特征,得到TF(sb)j,转4.2.3.3.1.2.3;
4.2.3.3.1.2.3若1≤j≤11,将TF(sb)j加入到TF(sb)中,发送TF(sb)j到第j+1层transformer作为输入,转4.2.3.3.1.2.4,若j=12,将TF(sb)12加入到TF(sa),转4.2.3.3.1.2.4;
4.2.3.3.1.2.4令j=j+1,如果j≤12,转4.2.3.3.1.2.2,否则,说明已经提取出所有的文本语义特征,得到TF(sb),TF(sb)={TF(sb)1,…,TF(sb)j,…TF(sb)12,lb},TF(sb)j是维度为128×768的二维矩阵,转4.2.3.3.1.3;
4.2.3.3.1.3教师模型的分类层接收TF(sb),取出TF(sb)12,,采用全连接层对TF(sb)12进行分类得到样本sb的第一概率分布结果TR(sb);
4.2.3.3.2学生模型对第b个样本sb进行文本分类,方法是:
4.2.3.3.2.1学生模型文本嵌入层接收sb={w1 b…wm b…wM b,lb},对sb进行文本嵌入转换,输出样本sb的第二嵌入向量表示SE(sb)={SE(w1 b),…,SE(wm b),…,SE(wM b),lb},具体方法如下:
4.2.3.3.2.1.1对样本sb中的英文句子按照单词之间空格进行分词,得到样本sb的句子分词和样本标签集合s1 b={w1 b,wm b,…,wM b,lb},wm b是一个英文句子按照单词之间的空格分词后得到的单个单词,因此对于同一样本,教师模型和学生模型分词后的结果相同;
4.2.3.3.2.1.2将s1 b中的单词转换成为单词的编号,得到样本sb的单词编号和样本标签集合s2 b={w1^ b,wm^ b,…,wM^ b,lb},wm^ b为单词的编号,是介于1-30522的整数;对于同一样本,教师模型和学生模型分词后的结果相同,单词的编号也相同。
4.2.3.3.2.1.3学生模型的文本嵌入层的三个全连接层依次对s2 b中单词的编号进行全连接处理,把单词编号转换成对应的词向量得到sb的学生嵌入向量表示SE(sb),SE(sb)={SE(w1^ b),…,SE(wm^ b),…,SE(wM^ b),lb},SE(wm^ b)是一个长度为768的一维向量,转4.2.3.3.2.2;
4.2.3.3.2.2学生模型的文本特征提取层中的6个transfromer层对SE(sb)提取文本特征,得到由6个文本语义特征和样本标签组成的集合SF(sb),SF(sb)={SF(sb)1,…,SF(sb)j,…SF(sb)6,lb},SF(sb)j代表第j个transfromer层输出的文本特征,具体方法如下:
4.2.3.3.2.2.1初始化j=1,令SF(sb)={lb};
4.2.3.3.2.2.2若j=1,第j层transformer提取SE(sb)的文本语义特征,得到SF(sb)1,转4.2.3.3.2.2.3;若j>1,第j层transformer提取SF(sb)j-1的文本语义特征,得到SF(sb)j,转4.2.3.3.2.2.3;
4.2.3.3.2.2.3若1≤j≤5将SF(sb)j加入到SF(sb)中,发送SF(sb)j到第j+1层transformer作为输入,若j=6,将SF(sb)12加入到SF(sb)中;
4.2.3.3.2.2.4令j=j+1,如果j≤6,转4.2.3.3.2.2.2,否则,说明已经提取出所有的文本语义特征,得到SF(sb),SF(sb)={SF(sb)1,…,SF(sb)j,…SF(sb)6,lb},转4.2.3.3.2.3;
4.2.3.3.2.3学生模型的分类层接收SF(sb),取出SF(sb)6,分类层的全连接层对SF(sb)6进行分类,得到样本sb的第二概率分布结果SR(sb),转4.2.3.3.3;
4.2.3.3.3学生模型计算教师模型和学生模型对sb的处理结果的差值L,具体方法如下:
4.2.3.3.3.1学生模型使用均方误差(MSE)函数计算TE(sb)和SE(sb)的差值,记为Lemd,Lemd=MSE(TE(sb),SE(sb));
4.2.3.3.3.2学生模型放缩教师模型对样本sb进行文本分类得到的概率分布结果TR(sb)得到放缩后的概率分布结果TR^(sb),TR^(sb)=TR(sb)/Temperature,放缩学生模型对样本sb进行文本分类的第二概率分布结果SR(sb)得到放缩后的第二概率分布结果SR^(sb),SR^(sb)=SR(sb)/Temperature,并调用softmax函数对TR^(sb)和SR^(sb)进行归一化,得到归一化后的TR^(sb)和SR^(sb),分别记为TR^(sb)’和SR^(sb)’。使用KL散度(Kullback-Leible)函数来衡量处理过后的教师模型和学生模型预测输出的分布距离Llogists,Llogists=KL(TR^(sb)’,SR^(sb)’);
4.2.3.3.3.3预训练语言模型轻量化主要是降低文本特征提取层的参数。本发明在此阶段对温故知新这一机制建模并应用在使用知识蒸馏轻量化预训练语言模型的工程实践中。温故知新在本发明中的应用方式是融合教师模型多个transformer层的文本特征指导学生一个transformer层如何提取文本特征。对于含有12个transformer层的教师模型和含有6个transformer层的学生模型,为了排除层数对应方案的影响,本发明中教师模型与学生模型的transformer层对齐方式与BERT-PKD(见文献“Patient KnowledgeDistillation for BERTModel Compression”,2019,“用于BERT模型压缩的耐心知识蒸馏”)保持一致,即学生模型的{1,2,3,4,5,6}对应教师模型的{2,4,6,8,10,12},与BERT-PKD里的单层对单层不同,本发明采取的是单层对多层的方式,如图3所示,Ti代表教师模型的第i个transformer层的文本特征,1≤i≤12,Sj代表学生模型的第j个transformer层的文本特征,1≤j≤6,示意图表达如下含义:
融合T2,T1指导训练S1;
融合T4,T3,T2,T1指导训练S2;
融合T6,T5,T4,T3,T2,T1指导训练S3;
融合T8,T7,T6,T5,T4,T3,T2,T1指导训练S4;
融合T10,T9,T8,T7,T6,T5,T4,T3,T2,T1指导训练S5;
融合T12,T11,T10,T9,T8,T7,T6,T5,T4,T3,T2,T1指导训练S6。
具体方法如下:
4.2.3.3.3.3.1学生模型的第x层对应教师模型前y层,初始化x=1,Lmid=0,Lmid的值是处理同一样本时教师模型前y层文本特征的融合值与学生模型第x层文本特征的差值:
4.2.3.3.3.3.2令y=2x;
4.2.3.3.3.3.3计算教师模型各层transformer文本特征的权重,学生模型调用softmax函数对[1,…,y]共y个整数进行归一化,得到[P1,…,Py]共y个权重;
4.2.3.3.3.3.5学生模型使用均方误差(MSE)函数计算TF_y与SF(sb)x的差值Lmid,Lmid=Lmid+MSE(TF_y,SF(sb)x);
4.2.3.3.3.3.6令x=x+1,若x≤6,转4.2.3.3.3.3.2,若x>6,转4.2.3.3.3.4;
4.2.3.3.3.4将SR(sb)与表示样本标签的独热编码lb做交叉熵CE(Cross Entropy)函数,交叉熵结果记为Lce,即Lce=CE(lb,SR(sb));
4.2.3.3.3.5计算学生模型的总损失值L,L=(1-α)×Lce+α×Llogists+β×Lmid+γ×Lemd,转4.2.3.3.4;
4.2.3.3.4学生模型使用Adam优化算法最小化L,以更新学生模型的文本嵌入层、文本特征提取层、分类层的网络权重参数,转4.2.3.4;
4.2.3.4令b=b+1,若b≤A,且b整除200不为0,转4.2.3.3,若b<A且b整除200为0,转4.2.3.5使用验证集测试学生模型得分,若b>A,说明所有数据已经训练完一个轮次,转4.2.3.6。
4.2.3.5学生模型调用第三方库Numpy读取CoLA_Val_Process,测试学生模型在验证集上的得分,具体如下:
4.2.3.5.1初始化已验证样本数k2=1,初始化记录样本验证正确的变量true_num2=0,学生模型对第k2个样本进行文本分类得到预测的类别,与样本实际类别标签比对来验证是否分类正确,若比对结果一致,则分类正确,true_num2=true_num2+1,若结果不一致,则分类错误。验证完所有的样本的后,计算最终的文本分类准确率acc=true_num2/K。具体如下;
4.2.3.5.1.1学生模型的文本嵌入层对第k2个样本s`k2进行文本嵌入转换,得到s`k2的嵌入向量表示E(s`k2)={E(w`1 k2),…,E(w`q k2),…,E(w`Q k2),l`k2},具体方法如下:
4.2.3.5.1.1.1对样本s`k2中的句子按照单词之间空格进行分词,得到样本s`k2的句子分词和样本标签集合s`1 k2={w`1 k2,…,w`q k2,…,w`Q k2,l`k2}?
4.2.3.5.1.1.2将s`1 k2的单词转换成为单词的编号,得到样本s`k2的句子单词编号和样本标签集合s`2 k2={w`1^ k2,…w`q^ k2,…,w`Q^ k2,l`k2},w`q^ k2是介于1-30522的整数;
4.2.3.5.1.1.3学生模型的文本嵌入层的三个全连接层依次对s`2 k2中单词的编号进行全连接处理,把单词编号转换成对应的词向量得到s`k2的嵌入向量表示E(s`k2),E(s`k2)={E(w`1 k2),…,E(w`q k2),…,E(w`Q k2),l`k2},E(w`q k2)是长度为768的一维向量,转4.2.3.5.1.2;
4.2.3.5.1.2学生模型的文本特征提取层中的6个transfromer层对E(s`k2)提取文本特征,得到由6个文本语义特征和样本标签组成的集合F(s`k2),F(s`k2)={F(s`k2)1,…,F(s`k2)j,…F(s`k2)6,l`k2},F(s`k2)j代表第j个transfromer层输出的文本特征,具体方法如下:
4.2.3.5.1.2.1初始化j=1,令F(s`k2)={l`k2};
4.2.3.5.1.2.2若j=1,第j层transformer提取E(s`k2)的文本语义特征,得到F(s`k2)j,转4.2.3.5.1.2.3;若j>1,第j层transformer提取F(s`k2)j-1的文本语义特征,得到F(s`k2)j,转4.2.3.5.1.2.3;
4.2.3.5.1.2.3若1≤j≤5将F(s`k2)j加入到F(s`k2)中,发送F(s`k2)j到第j+1层transformer作为输入,若j=6,将F(s`k2)6加入到F(s`k2)中;
4.2.3.5.1.2.4令j=j+1,如果j≤6,转4.2.3.5.1.2.2,否则,说明已经提取出所有的文本语义特征,得到F(s`k2)={F(s`k2)1,…,F(s`k2)j,…F(s`k2)6,l`k2},转4.2.3.5.1.3;
4.2.3.5.1.3学生模型的分类层接收F(s`k2),对F(s`k2)6进行分类,得到s`k2的概率分布结果R(s`k2)。
4.2.3.5.1.4学生模型比较R(s`k2)中最大值的索引与真实样本标签独热编码l`k2中数字1的索引是否相同,若相同,令true_num2=true_num2+1,转4.2.3.5.1.5,若不相同,直接转4.2.3.5.1.5;
4.2.3.5.1.5令k2=k2+1,若k2≤K,转4.2.3.5.1.1验证下一个样本,若k2>K,计算对应数据集第二任务准确率acc 2,acc2=true_num2/K,转4.2.3.3继续轻量化教师模型
4.2.3.6令f=f+1,若f≤Epoch,转4.2.3.1;若f>Epoch,训练结束,保存在CoLA_Train_Process上轻量化教师模型得到的学生模型文本嵌入层、文本特征提取层、分类层网络权重参数CoLA_Student;
4.3采用SST-2_Train_Process、SST-2_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于SST-2类文本进行分类的轻量化网络权重参数SST-2_Student;
4.4采用RTE_Train_Process、RTE_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于RTE类文本进行分类的轻量化网络权重参数RTE_Student;
4.5采用MRPC_Train_Process、MRPC_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于MRPC类文本进行分类的轻量化网络权重参数MRPC_Student;
4.6采用STS-B_Train_Process、STS-B_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于STS-B类文本进行分类的轻量化网络权重参数STS-B_Student;
4.7采用QNLI_Train_Process、QNLI_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于QQP类文本进行分类的轻量化网络权重参数QQP_Student;
4.8采用QQP_Train_Process、QQP_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于QQP类文本进行分类的轻量化网络权重参数QQP_Student;
4.9采用MNLI_Train_Process、MNLI_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于MNLI类文本进行分类的轻量化网络权重参数MNLI_Student;
第五步:接收用户输入文本集合C,C={c1,…,cz,…,cZ},cz={w1 z…wo z…wO z},共O个单词,wo z是第z个样本中的第o个词。学生模型首先判断C属于GLUE八个数据集中的哪一个数据集,然后对C进行加标志预处理,然后使用第四步得到的对应的轻量化预训练语言模型初始化学生模型,并采用初始化后的学生模型对C进行分类,输出分类结果category={cy1,…,cyz,…,cyZ}。具体方法如下:
5.1对用户输入的文本集合C进行预处理,得到预处理后的文本集合C*,C*={c*1,…,c*z,…,c*Z},c*j={w*1 j…w*o j…w*O j},共O个单词,w*o z是第z个样本中的第o个词。具体如下:
5.1.1初始化已处理样本数目cnum=1;
5.1.2一般情况下要求用户输入文本集合C中的每个样本类型相同,便于成批次地处理。若用户输入文本集合的样本结构属于单个句子的类型,转5.1.3,若用户输入文本集合的样本结构属于句子对的类型,转5.1.4;
5.1.3采用步骤2.3.1.1所述的句首加标志方法对文本集合中的第cnum个样本做预处理,
5.1.4采用步骤2.3.2.1所述的句首句尾加标志方法对文本集合中的第cnum个样本进行预处理。
5.1.5令cnum=cnum+1,若cnum≤Z,转5.1.2预处理下一个样本,若cnum>Z,表示处理完毕,得到C*。转5.2。
5.2若用户输入样本的结构属于单个句子类型且需要判断句子是否符合语法规则时使用CoLA_Student初始化学生模型;若用户输入样本的结构属于单个句子类型且需要判断句子表达的情感类型时使用SST-2_Student初始化学生模型;若用户输入样本的结构属于句子对类型且需要判断句子对之间的逻辑关系属于蕴含,还是矛盾时使用RTE_Student初始化学生模型;若用户输入样本的结构属于句子对类型是否等价时使用MRPC_Student初始化学生模型;若用户输入样本的结构属于句子对类型且需要判断句子对之间的相似度时使用STS-B_Student初始化学生模型;若用户输入样本的结构属于句子对类型且需要判断句子对是否匹配时使用QQP_Student初始化学生模型;若用户输入样本的结构属于句子对类型且需要判断句子对之间的逻辑关系属于蕴含,矛盾还是中立时使用MNLI_Student初始化学生模型;若用户输入样本的结构属于句子对类型且为问题答案对并需要判断问题答案是否匹配时使用QNLI_Student初始化学生模型。初始化方法为步骤3.2.2所述的名称对照赋值法。
5.3初始化后的学生模型对C*进行文本分类,输出分类结果
category={cy1,…,cyz,…,cyZ},具体方法如下:
5.3.1初始化变量z=1;
5.3.2学生模型处理第z个样本c*z,c*z={w*1 z…w*o z…w*O z},方法如下:
5.3.2.1学生模型文本嵌入层接收c*z,输出样本c*z的嵌入向量E(c*z),E(c*z)={E(w*1 z),…,E(w*o z),…,E(w*O z)},方法如下:
5.3.2.1.1对样本c*z按照单词之间空格进行分词,得到分词集合c*1 z={w*1 z,…w*o z,…,w*O z};
5.3.2.1.2对照Bert-base的词表把c*1 z中的单词转换成为单词的编号,得到单词编号集合c*^z,c*^z={w*^1 z,…w*^o z,…,w*^O z},w*^o z是一个介于1-30522的整数;
5.3.2.1.3依次使用文本嵌入层的全连接层把c*^z中单词的编号转换成对应的词向量,得到c*z的词向量集合E(c*z),E(c*z)={E(w*1 z),…,E(w*o z),…,E(w*O z)},E(w*o z)是一个长度为768维度的向量,转5.3.2.2;
5.3.2.2文本特征提取层中的6个transfromer层对E(c*z)进行特征提取,得到由6个文本语义特征组成的集合F(c*z),F(c*z)={F(c*z)1,…,F(c*z)j,…F(c*z)6},F(c*z)j代表第j个transfromer层输出的文本特征,F(c*z)j是一个维度为128×768的二维矩阵,具体方法如下:
5.3.2.2.1初始化j=1;
5.3.2.2.2若j=1,第j层transformer提取E(c*z)文本语义特征,得到F(c*z)1,转5.3.2.2.3;若j>1,第j层transformer接收F(c*z)j-1计算文本语义特征,得到F(c*z)j,转5.3.2.2.3;
5.3.2.2.3若1≤j≤5,将F(c*z)j加入到F(c*z)中,发送F(c*z)j到第j+1层transformer作为输入,转5.3.2.2.2;若j=6,将F(c*z)6加入到F(c*z)中,转5.3.2.2.4;
5.3.2.2.4令j=j+1,如果j≤6,转5.3.2.2.2,否则,说明已经计算出所有的文本语义特征,得到F(c*z),F(c*z)={F(c*z)1,…,F(c*z)j,…F(c*z)6},转5.3.2.3;
5.3.2.3分类层接收F(c*z),取出F(c*z)6,对F(c*z)6采用全连接层进行分类,得到c*z的概率分布结果R(c*z)。
5.3.2.4根据极大似然原理,判定样本c*z在R(c*z)中概率值最大处索引对应的类别cyz,把对应的类别cyz加入到category中,转5.3.3;
5.3.3令z=z+1,若z≤Z,转5.3.2处理下一个用户输入样本;若z>Z,表示所有样本处理结束。得到用户所有输入样本的分类结果值category={cy1,…,cyz,…,cyZ}。
图4对本发明进行了文本分类准确率测试,实验的软件***环境为乌班图18.04版本(即Ubuntu 18.04,Linux***的一个发行版本),搭载英特尔Xeon Gold系列5220中央处理器,处理频率为2.20GHz,另外配有四块英伟达TeslaV100图像处理器,单个图像处理器显存容量为32GB。在本实验环境下比较本发明方法与FT,BERT-PKD,BERT-EMD,ALP-KD等基于轻量化预训练语言模型的文本分类算法得到的学生模型在GLUE数据集文本分类任务的平均得分占教师模型在GLUE文本分类任务上平均得分的百分比。FT方法只是直接微调教师模型嵌入层,分类层和前6层transformer层的网络权重参数。没有额外使用知识蒸馏的方法,通过与FT进行比较证明知识蒸馏方法能够提高轻量化后的模型的在文本分类任务上的准确率,另外三种方法BERT-PKD,BERT-EMD,ALP-KD都使用了知识蒸馏,本发明方法通过与上述三种方法比较证明了在知识蒸馏中引入温故知新这一方法能够进一步提升轻量化后的模型的在文本分类任务上的准确率。从图4可以看出,本发明方法领先其他基于轻量化预训练语言模型的文本分类算法,在GLUE数据集文本分类任务上平均准确率能达到教师模型98.45%的水平,即DWRW_KD的Average与Teacher的Average的比值。
表2是在图4的实验环境下,本发明与FT,BERT-PKD,ALP-KD,BERT-EMD等基于预训练语言模型轻量化的文本分类方法在GLUE数据集文本分类任务上的具体准确率比较。可以看出,本发明在平均得分Average上领先,而且在MNLI,QQP,STS-B,MRPC,RTE上均实现了超越教师模型的文本分类准确率,在QQP和STS-B上虽然与已有工作BERT-PKD,ALP-KD和BERT-EMD略低。但本发明的Average更高。证明了本发明轻量化后的模型综合性能更强,原因在本发明方案在知识蒸馏中引入了温故知新这一学习方式,使得学生模型对教师模型传授的知识理解地更深刻,文本分类结果更接近教师模型。
表2
MNLI | QQP | QNLI | SST-2 | CoLA | STS-B | MRPC | RTE | Average | |
Teacher | 83.82/84.35 | 90.69 | 91.32 | 92.32 | 59.07 | 88.13 | 89.35 | 66.43 | 82.83 |
FT | 80.37/80.64 | 89.66 | 86.87 | 89.68 | 40.39 | 87.78 | 87.62 | 63.90 | 78.55 |
BERT_PKD | 83.13/83.03 | 90.80 | 89.46 | 90.83 | 38.56 | 87.90 | 88.89 | 67.51 | 80.01 |
BERT-EMD | 83.44/83.36 | 91.31 | 89.09 | 90.71 | 44.61 | 88.82 | 88.89 | 66.79 | 80.78 |
ALP_KD | 83.68/83.51 | 91.39 | 89.36 | 90.94 | 46.10 | 88.82 | 89.78 | 66.43 | 81.11 |
DWRW_KD | 84.44/84.39 | 91.30 | 90.76 | 91.40 | 43.27 | 88.46 | 90.29 | 69.68 | 81.55 |
注:DWRW_KD为本发明提出的方法,第一列中的Teacher为12个transformer层的BERT-base得分,FT行的准确率值为直接微调含有6个transformer层的学生模型在文本分类任务上的准确率,FT虽然属于轻量化模型,但是没有使用知识蒸馏方法来进行轻量化,只是直接微调教师模型嵌入层,分类层和前6层transformer层的网络权重参数。Average为8个子数据集的得分的平均值,一般以Average作为全面衡量模型性能的指标。加粗的数据为学生模型超越教师模型在该数据集上的准确率。
以上对本发明所提供的一种基于轻量化预训练语言模型的文本分类方法进行了详细介绍。本文对本发明的原理及实施方式进行了阐述,以上说明用于帮助理解本发明的核心思想。应当指出,对于本技术领域的普通研究人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (17)
1.一种基于轻量化预训练语言模型的文本分类方法,其特征在于包括以下步骤:
第一步:构造基于预训练语言模型的文本分类模型,包括教师模型和学生模型,两个模型相互独立;教师模型由文本嵌入层,文本特征提取层,分类层组成;文本嵌入层由三个全连接层组成,分类层由一个全连接层组成,文本特征提取层由12个transformer层组成;
教师模型的文本嵌入层从文件接收训练集T,T={s1,s2,…,sa,…,sA},sa表示T中第a个样本;文本嵌入层对T中的样本s1,s2,…,sa,…,sA进行文本嵌入转换,得到文本句子的嵌入向量表示集合E(T),E(T)={E(s1),E(s2),…,E(sa),…,E(sA)},E(sa)是sa的嵌入向量表示,将E(T)发送给文本特征提取层;
教师模型的文本特征提取层从文本嵌入层接收E(T),对E(T)进行特征提取,得到文本语义特征集合F(T),F(T)={F(s1),F(s2),…,F(sa),…,F(sA)},F(sa)是sa的语义特征,将F(T)发送给分类层;
教师模型的分类层从文本特征提取层接收F(T),对F(T)使用全连接层处理,得到分类结果概率分布集合R,R={R(s1),R(s2),…,R(sa),…,R(sA)};R(sa)为一维向量,单个向量值为样本属于对应类别的概率值,R(sa)的长度为分类结果数,最后根据极大似然原理,判定样本属于概率值最大的对应类别;
学生模型由文本嵌入层,文本特征提取层,分类层组成;学生模型的文本嵌入层与教师模型的文本嵌入层相同、学生模型的分类层与教师模型的分类层相同;学生模型的文本特征提取层由6个transformer层组成,学生模型的文本特征提取层和教师模型的文本特征提取层的功能相同,输出向量的维度也相同,但两者transformer层的层数不同,对同一文本处理得到的文本语义特征集合不同;
第二步:准备微调教师模型和轻量化教师模型需要的训练数据,并将训练数据转换成文本分类模型需要的输入格式;
2.1从github下载GLUE官方提供的数据集下载脚本;
2.2运行数据集下载脚本download_glue_data.py,运行结束得到GLUE数据集;选取GLUE数据集下的8个子数据集即:CoLA,SST-2,RTE,MRPC,STS-B,QNLI,QQP,MNLI;每个子数据集已划分好训练集,验证集;其中八个子数据集分为两类,CoLA和SST-2属于单句分类,训练集和验证集样本的结构相同,形如样本P={s,lp},s表示一个英文句子,lp表示样本标签,lp是长度为分类结果数的独热编码,分类结果数各个数据集已事先规定;剩余六个数据集属于句子对分类;训练集和验证集的样本结构形如D={s1,s2,ld},由两个英文句子和一个样本标签组成,s1为英文句子1,s2为英文句子2,ld为样本标签,也是长度为分类结果数的独热编码;
2.3对GLUE数据集的8个子数据集的训练集,验证集进行加标志预处理,方法如下:
2.3.1对CoLA和SST-2这两个单句分类数据集加标志,方法如下:
2.3.1.1采用句首加标志方法对CoLA数据集中的训练集、验证集中每个样本加标志,得到记录CoLA训练集的处理结果文件CoLA_Train_Process,记录CoLA验证集的处理结果文件CoLA_Val_Process;
2.3.1.2采用句首加标志方法对SST-2数据集的训练集、验证集中每个样本加标志,得到记录SST-2训练集的处理结果文件SST-2_Train_Process,记录SST-2验证集的处理结果文件SST-2_Val_Process;
使用句首加标志法处理单句分类数据集的训练集和验证集后,单个样本P={s,lp}处理后得到句首加了标志的样本P^,P^={s^,lp},其中s^=[CLS]s;
2.3.2对RTE,MRPC,STS-B,QNLI,QQP,MNLI这六个句子对分类数据集加标志,方法如下:
2.3.2.1采用句首句尾加标志方法对RTE数据集中的训练集、验证集中每个样本加标志,得到记录RTE训练集的处理结果文件RTE_Train_Process,记录RTE验证集的处理结果文件RTE_Val_Process:
2.3.2.2采用句首句尾加标志方法对MRPC数据集加标志,得到记录MRPC训练集的处理结果文件MRPC_Train_Process,记录MRPC验证集的处理结果文件MRPC_Val_Process;
2.3.2.3采用句首句尾加标志方法对STS-B数据集加标志,得到记录STS-B训练集的处理结果文件STS-B_Train_Process,记录STS-B验证集的处理结果文件STS-B_Val_Process;
2.3.2.4采用句首句尾加标志方法对QQB数据集加标志,得到记录QQB训练集的处理结果文件QQB_Train_Process,和记录QQB验证集的处理结果文件QQB_Val_Process;
2.3.2.5采用句首句尾加标志方法对QNLI数据集加标志,得到记录QNLI训练集的处理结果文件QNLI_Train_Process,和记录QNLI验证集的处理结果文件QNLI_Val_Process;
2.3.2.6采用句首句尾加标志方法对MNLI数据集加标志,得到记录MNLI训练集的处理结果文件MNLI_Train_Process中,记录MNLI验证集的处理结果文件MNLI_Val_Process;
使用句首句尾加标志法处理句子对分类数据集的训练集合和验证集后,单个样本D={s1,s2,ld}处理后得到句首句尾加了标志的样本D^,D^={sd,ld},其中sd=[CLS]s1[SEP]s2,由符号[CLS]和[SEP]将两个句子拼接成了一个新的句子;
2.3.2.7将加标志后的数据集形式抽象为以下形式,即加标志后的数据集X含有训练集T,验证集V,X为{CoLA,SST-2,RTE,MRPC,STS-B,QNLI,QQP,MNLI}中任意一个数据集,下文出现的X均表示此含义:
训练集T={s1,s2,…,sa,…sA},包含A个训练集样本,sa代表第a个训练集样本,sa={w1 a…wm a…wM a,la},sa中共包含M个单词,wm a代表第a个训练集样本中句子的第m个单词,la代表第a个训练集样本的样本标签;
验证集V={s`1,s`2,…,s`k,…s`K},包含K个训练集样本,s`k代表第k个验证集样本,s`k={w`1 k…w`q k…w`Q k,l`k},s`k中共包含Q个单词,w`q k代表第k个验证集样本中句子的第q个单词,l`k代表第k个验证集样本的样本标签;
第三步:初始化教师模型的参数,并采用数据集X的训练集加标志预处理后的结果文件X_Train_Process微调教师模型,得到教师模型的权重参数X_Teacher;采用数据集X的验证集加标志预处理后的结果文件X_Val_Process测试教师模型文本分类任务得分,方法是:
3.1设置网络训练超参数:包括设置网络模型学习率Learning Rate、批处理大小BatchSize、句子最大长度Max_Sentence_Length、随机数种子Seed;训练轮数Epoch;
3.2下载预训练语言模型Bert-base开源的参数,并初始化教师模型权重参数,具体方法如下:
3.2.1下载预训练语言模型BERT-base的参数;Bert-base的参数包括文本嵌入层,文本特征提取层和分类层;下载的预训练语言模型BERT-base的参数以key-value的形式进行存储,key为参数名称,value为参数值,是已经训练好的32位浮点数,通过key直接读取value值;
3.2.2使用Huggingface开源的transformer库,采用名称对照赋值法把Bert-base的参数值与教师模型文本嵌入层,文本特征提取层,分类层的参数一一对应进行赋值;名称对照赋值法是:教师模型与Bert-base的参数名称一致,通过查找key对应的value值,直接把value值赋值给对应的教师模型参数;
3.3采用CoLA_Train_Process、SST-2_Train_Process,RTE_Train_Process,MRPC_Train_Process,STS-B_Train_Process,QNLI_Train_Process,QQP_Train_Process,MNLI_Train_Process微调教师模型,采用CoLA_Val_Process、SST-2_Val_Process,RTE_Val_Process,MRPC_Val_Process,STS-B_Val_Process,QNLI_Val_Process,QQP_Val_Process,MNLI_Val_Process测试微调后的教师模型在文本分类任务上的准确率,得到适用于教师模型针对不同文本进行分类的8种对应的网络权重参数,具体如下:
3.3.1采用CoLA_Train_Process、CoLA_Val_Process并采用微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对CoLA类文本进行分类的网络权重参数CoLA_Teacher,方法是:
3.3.1.1教师模型调用Python第三方库Numpy读取CoLA_Train_Process,使用CoLA_Train_Process微调教师模型,具体如下:
3.3.1.1.1初始化迭代次数e=1;
3.3.1.1.2初始化已训练样本数量a=1;
3.3.1.1.3采用第a个样本sa训练教师模型,sa由一个句子和一个样本标签组成,方法如下:
3.3.1.1.3.1教师模型文本嵌入层接收sa,对sa进行文本嵌入转换得到sa的嵌入向量表示E(sa),E(sa)={E(w1 a),…,E(wm a),…,E(wM a),la},E(wm a)是一个长度为768的一维向量,wm a是sa的第m个单词,1≤m≤M;
3.3.1.1.3.2文本特征提取层中的12个transfromer层对E(sa)进行文本特征提取,得到由12个文本语义特征和样本标签组成的集合F(sa)={F(sa)1,…,F(sa)j,…F(sa)12,la},F(sa)j代表第j个transfromer层输出的文本语义特征,F(sa)j是一个维度为128×768二维矩阵,1≤j≤12;
3.3.1.1.3.3教师模型分类层从文本特征提取层接收F(sa),从F(sa)取出F(sa)12,分类层对F(sa)12使用全连接层进行分类,得到sa的概率分布结果R(sa);
3.3.1.1.3.4教师模型取出F(sa)中的样本标签la,调用均方误差即MSE函数计算R(sa)与la之间的差值作为损失值,记为Loss,Loss=MSE(R(sa),la);
3.3.1.1.3.5教师模型使用Adam优化算法最小化Loss,以更新教师模型文本嵌入层、文本特征层、分类层的网络权重参数,转3.3.1.1.4;
3.3.1.1.4令a=a+1,若a≤A,且a整除200结果不为0,转3.3.1.1.3采用下一个样本继续训练;若a≤A且a整除200结果为0,转3.3.1.1.5测试微调后的教师模型在验证集上的得分;若a>A,说明所有数据已经训练完一个轮次,转3.3.1.1.6;
3.3.1.1.5教师模型调用第三方库Numpy读取CoLA_Val_Process,测试教师模型在验证集上的得分,即计算对应数据集任务的准确率acc,转3.3.1.1.3继续使用下一条样本训练教师模型;
3.3.1.1.6令e=e+1如果e≤Epoch,转3.3.1.1.2;如果e>Epoch,微调结束,用CoLA_Teacher保存微调完成的教师模型网络权重参数,包括文本嵌入层参数,文本特征提取层参数,分类层参数;
3.3.2采用SST-2_Train_Process、SST-2_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对SST-2类文本进行分类的网络权重参数SST-2_Teacher;
3.3.3采用RTE_Train_Process、RTE_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对RTE类文本进行分类的网络权重参数RTE_Teacher;
3.3.4采用MRPC_Train_Process、MRPC_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对,MRPC类文本进行分类的网络权重参数MRPC_Teacher;
3.3.5采用STS-B_Train_Process、STS-B_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对STS-B类文本进行分类的网络权重参数STS-B_Teacher;
3.3.6采用MRPC_Train_Process、MRPC_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对MRPC类文本进行分类的网络权重参数MRPC_Teacher;
3.3.7采用QNLI_Train_Process、QNLI_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对QNLI类文本进行分类的网络权重参数QNLI_Teacher;
3.3.8采用QQP_Train_Process、QQP_Val_Process并采用3.3.1所述微调验证方法对教师模型进行微调和验证,得到适用于教师模型针对QQP类文本进行分类的网络权重参数QQP_Teacher;
第四步:采用X_Train_Process和知识蒸馏方法轻量化权重参数X_Teacher,即CoLA_Teacher、SST-2_Teacher,、RTE_Teacher、MRPC_Teacher、STS-B_Teacher、QNLI_Teacher、QQP_Teacher、MNLI_Teacher,得到对应的学生模型权重参数X_Student,即CoLA_Student、SST-2_Student、RTE_Student、MRPC_Student、STS-B_Student、QNLI_Student、QQP_Student、MNLI_Student,并使用X_Val_Process验证轻量化后的模型在文本分类任务上的准确率,方法是:
4.1设定知识蒸馏所需的超参数:网络模型学习率Learning Rate、批处理大小BatchSize、句子最大长度Max_Sentence_Length、随机数种子Seed、训练轮数Epoch和蒸馏温度Temperature、超参数α,β,γ;
4.2使用知识蒸馏方法轻量化CoLA-teacher得到CoLA_student,方法如下:
4.2.1采用CoLA_Teacher初始化教师模使用3.2.2描述的名称对照赋值法进行初始化赋值;
4.2.2使用Bert-base的参数初始化学生模型,学生模型的文本嵌入层和分类层使用Bert-base相对应的参数,文本特征提取层使用Bert-base的前6个transformer层参数来进行对应的赋值;使用3.2.2描述的名称对照赋值法进行初始化赋值;
4.2.3使用Numpy库读取CoLA_Train_Process,采用CoLA_Train_Process轻量化CoLA_Teacher,具体方法如下:
4.2.3.1初始化迭代次数f=1;
4.2.3.2初始化已训练样本数b=1;
4.2.3.3教师模型按4.2.3.3.1流程对CoLA_Train_Process中的第b个样本sb进行文本分类处理,同时学生模型按4.2.3.3.2所述流程对CoLA_Train_Process中的第b个样本sb进行文本分类处理;
4.2.3.3.1教师模型对第b个样本sb进行文本分类,得到样本sb的第一嵌入向量表示TE(sb),TE(sb)={TE(w1 b),…,TE(wi b),…,TE(wm b),lb};并对TE(sb)进行文本特征提取,得到由12个文本语义特征和样本标签组成的集合TF(sb),TF(sb)={TF(sb)1,…,TF(sb)j,…TF(sb)12,lb},TF(st)j代表第j个transfromer层输出的文本特征;对TF(sb)12进行分类得到样本sb的第一概率分布结果TR(sb);
4.2.3.3.2学生模型对第b个样本sb进行文本分类处理,得到样本sb的第二嵌入向量表示SE(sb),SE(sb)={SE(w1 b),…,SE(wm b),…,SE(wM b),lb};并对SE(sb)提取文本特征,得到由6个文本语义特征和样本标签组成的集合SF(sb),SF(sb)={SF(sb)1,…,SF(sb)j,…SF(sb)6,lb},SF(sb)j代表第j个transfromer层输出的文本特征;对SF(sb)6进行分类,得到样本sb的第二概率分布结果SR(sb);
4.2.3.3.3学生模型计算教师模型和学生模型对sb的处理结果的差值L,L即为学生模型的总损失值;
4.2.3.3.4学生模型使用Adam优化算法最小化L,以更新学生模型的文本嵌入层、文本特征提取层、分类层的网络权重参数,转4.2.3.4;
4.2.3.4令b=b+1,若b≤A,且b整除200不为0,转4.2.3.3;若b<A且b整除200为0,转4.2.3.5使用验证集测试学生模型得分,若b>A,说明所有数据已经训练完一个轮次,转4.2.3.6;
4.2.3.5学生模型调用第三方库Numpy读取CoLA_Val_Process,测试学生模型在验证集上的得分,具体如下:
4.2.3.5.1初始化已验证样本数k2=1,初始化记录样本验证正确的变量true_num2=0,学生模型对第k2个样本进行文本分类得到预测的类别,与样本实际类别标签比对来验证是否分类正确,若比对结果一致,则分类正确,true_num2=true_num2+1,若结果不一致,则分类错误; 验证完所有的样本的后,计算最终的文本分类准确率acc=true_num2/K;具体如下;
4.2.3.5.1.1学生模型的文本嵌入层对第k2个样本s`k2进行文本嵌入转换,得到s`k2的文本嵌入向量集合E(s`k2),E(s`k2)={E(w`1 k2),…,E(w`q k2),…,E(w`Q k2),l`k2},E(w`q k2)是长度为768的一维向量;
4.2.3.5.1.2学生模型的文本特征提取层中的6个transfromer层对E(s`k2)提取文本特征,得到由6个文本语义特征和样本标签组成的集合F(s`k2),F(s`k2)={F(s`k2)1,…,F(s`k2)j,…F(s`k2)6,l`k2},F(s`k2)j代表第j个transfromer层输出的文本特征;
4.2.3.5.1.3学生模型的分类层接收F(s`k2),对F(s`k2)6进行分类,得到s`k2的概率分布结果R(s`k2);
4.2.3.5.1.4学生模型比较R(s`k2)中最大值的索引与真实样本标签独热编码l`k2中数字1的索引是否相同,若相同,令true_num2=true_num2+1,转4.2.3.5.1.5,若不相同,直接转4.2.3.5.1.5;
4.2.3.5.1.5令k2=k2+1,若k2≤K,转4.2.3.5.1.1验证下一个样本,若k2>K,计算对应数据集第二任务准确率acc 2,acc2=true_num2/K,转4.2.3.3继续轻量化教师模型;
4.2.3.6令f=f+1,若f≤Epoch,转4.2.3.1;若f>Epoch,训练结束,保存在CoLA_Train_Process上轻量化教师模型得到的学生模型文本嵌入层、文本特征提取层、分类层网络权重参数CoLA_Student;
4.3采用SST-2_Train_Process、SST-2_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于SST-2类文本进行分类的轻量化网络权重参数SST-2_Student;
4.4采用RTE_Train_Process、RTE_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于RTE类文本进行分类的轻量化网络权重参数RTE_Student;
4.5采用MRPC_Train_Process、MRPC_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于MRPC类文本进行分类的轻量化网络权重参数MRPC_Student;
4.6采用STS-B_Train_Process、STS-B_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于STS-B类文本进行分类的轻量化网络权重参数STS-B_Student;
4.7采用QNLI_Train_Process、QNLI_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于QQP类文本进行分类的轻量化网络权重参数QQP_Student;
4.8采用QQP_Train_Process、QQP_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于QQP类文本进行分类的轻量化网络权重参数QQP_Student;
4.9采用MNLI_Train_Process、MNLI_Val_Process并采用4.2所述知识蒸馏方法对教师模型轻量化并验证轻量化后的模型在文本分类任务上的准确率,得到适用于MNLI类文本进行分类的轻量化网络权重参数MNLI_Student;
第五步:接收用户输入文本集合C,C={c1,…,cz,…,cZ},cz={w1 z…wo z…wO z},共O个单词,wo z是第z个样本中的第o个词;学生模型首先判断C属于GLUE八个数据集中的哪一个数据集,然后对C进行加标志预处理,然后使用第四步得到的对应的轻量化预训练语言模型初始化学生模型,并采用初始化后的学生模型对C进行分类,输出分类结果category={cy1,…,cyz,…,cyZ};具体方法是:
5.1对用户输入的文本集合C进行预处理,得到预处理后的文本集合C*,C*={c*1,…,c*z,…,c*Z},c*j={w*1 j…w*o j…w*O j},共O个单词,w*o z是第z个样本中的第o个词;
5.2若用户输入样本的结构属于单个句子类型且需要判断句子是否符合语法规则时使用CoLA_Student初始化学生模型;若用户输入样本的结构属于单个句子类型且需要判断句子表达的情感类型时使用SST-2_Student初始化学生模型;若用户输入样本的结构属于句子对类型且需要判断句子对之间的逻辑关系属于蕴含,还是矛盾时使用RTE_Student初始化学生模型;若用户输入样本的结构属于句子对类型是否等价时使用MRPC_Student初始化学生模型;若用户输入样本的结构属于句子对类型且需要判断句子对之间的相似度时使用STS-B_Student初始化学生模型;若用户输入样本的结构属于句子对类型且需要判断句子对是否匹配时使用QQP_Student初始化学生模型;若用户输入样本的结构属于句子对类型且需要判断句子对之间的逻辑关系属于蕴含,矛盾还是中立时使用MNLI_Student 初始化学生模型;若用户输入样本的结构属于句子对类型且为问题答案对并需要判断问题答案是否匹配时使用QNLI_Student初始化学生模型;初始化方法为步骤3.2.2所述的名称对照赋值法;
5.3初始化后的学生模型对C*进行文本分类,输出分类结果category={cy1,…,cyz,…,cyZ},具体方法如下:
5.3.1初始化变量z=1;
5.3.2学生模型处理第z个样本c*z,c*z={w*1 z…w*o z…w*O z},方法如下:
5.3.2.1学生模型文本嵌入层接收c*z,输出样本c*z的文本嵌入向量E(c*z),E(c*z)={E(w*1 z),…,E(w*o z),…,E(w*O z)},E(w*o z)是一个长度为768维度的向量;
5.3.2.2文本特征提取层中的6个transfromer层对E(c*z)进行特征提取,得到由6个文本语义特征组成的集合F(c*z),F(c*z)={F(c*z)1,…,F(c*z)j,…F(c*z)6},F(c*z)j代表第j个transfromer层输出的文本特征,F(c*z)j是一个维度为128×768的二维矩阵;
5.3.2.3分类层接收F(c*z),取出F(c*z)6,对F(c*z)6采用全连接层进行分类,得到c*z的概率分布结果R(c*z);
5.3.2.4根据极大似然原理,判定样本c*z在R(c*z)中概率值最大处索引对应的类别cyz,把对应的类别cyz加入到category中,转5.3.3;
5.3.3令z=z+1,若z≤Z,转5.3.2处理下一个用户输入样本;若z>Z,表示所有样本处理结束;得到用户所有输入样本的分类结果值category={cy1,…,cyz,…,cyZ}。
2.如权利要求1所述的一种基于轻量化预训练语言模型的文本分类方法,其特征在于2.3.1.1所述对CoLA数据集中的训练集、验证集中每个样本加标志的句首加标志方法是:
2.3.1.1.1从存储CoLA数据集的训练集样本的文件中读取所有训练集样本,将训练集样本均放到训练集样本集合CoLA_Train中,对CoLA_Train中的每个样本加标志,方法如下:
2.3.1.1.1.1使用Python的第三方开源库Numpy获得CoLA_Train中的训练集样本的总数量num1_train,初始化记录已处理训练集样本数量的变量n1_train=1,创建存储处理完成的训练集样本的文件CoLA_Train_Process;
2.3.1.1.1.2从CoLA_Train中取出第n1_train个样本,取出样本中的英文句子,在英文句子的句首加上[CLS]的标志,得到一个加上了[CLS]的标志的新句子,将加上了[CLS]的标志的新句子和对应的样本标签写到CoLA_Train_Process中保存;
2.3.1.1.1.3令n1_train=n1_train+1,若n1_train≤num1_train,转2.3.1.1.1.2,如果n1_train>num1_train,加标志结束,转2.3.1.1.2;
2.3.1.1.2从存储CoLA数据集的验证集样本的文件中读取所有验证集样本,将所有验证集样本均放到验证集样本集合CoLA_Val,对CoLA_Val中的每个样本加标志,具体方法如下:
2.3.1.1.2.1使用Python的第三方开源库Numpy获得CoLA_Val中的验证集样本的总数量num1_val,初始化记录已处理验证集样本数量的变量n1_val=1,创建存储处理完成的验证集样本的文件CoLA_Val_Process;
2.3.1.1.2.2从CoLA_Val取出第n1_val个样本,取出样本中的英文句子,在句首加上[CLS]的标志得到一个加上了[CLS]的标志的新句子,将加上了[CLS]的标志的新句子和样本标签写到CoLA_Val_Process中保存;
2.3.1.1.2.3令n1_val=n1_val+1,若n1_val≤num1_val转2.3.1.1.2.2,如果n1_val>num1_val,加标志结束。
3.如权利要求1所述的一种基于轻量化预训练语言模型的文本分类方法,其特征在于2.3.2.1所述对RTE数据集加标志的句首句尾加标志方法是:
2.3.2.1.1从存储RTE数据集的训练集样本的文件中读取所有训练集样本,将所有训练集样本放到训练集样本集合RTE_Train,对RTE_Train中的每个样本加标志,方法是:
2.3.2.1.1.1使用Python的第三方开源库Numpy获得RTE_Train中训练集样本的总数量num2_train,初始化记录已处理RTE训练集样本数量的变量n2_train=1,创建存储处理完成的训练集样本的文件RTE_Train_Process;
2.3.2.1.1.2取出第n2_train个样本,取出样本中的第一个句子,在句首加上[CLS]的标志,在句尾加上[SEP]的标志,把样本中的第二个句子拼接在[SEP]的后面得到一个新句子,把拼接好的新句子和样本标签写到RTE_Train_Process中保存;
2.3.2.1.1.3令n2_train=n2_train+1,若n2_train≤num2_train,转2.3.2.1.1.2继续处理第n2_train个样本,若n2_train>num2_train,加标签结束,转2.3.2.1.2;
2.3.2.1.2从存储RTE数据集的验证集样本的文件中读取所有验证集样本,将所有验证集样本放到验证集样本集合RTE_Val,对RTE_Val中的每个样本加标志,具体方法如下:
2.3.2.1.2.1使用Python的第三方开源库Numpy获得RTE_Val中验证集样本的总数量num2_val,初始化记录已处理RTE验证集样本数量的变量n2_val=1,创建存储处理完成的验证集样本的文件为RTE_Val_Process;
2.3.2.1.2.2取出第n2_val个样本,取出样本中的第一个句子,在句首加上[CLS]的标志,在句尾加上[SEP]的标志,把样本中的第二个句子拼接在[SEP]的后面得到一个新句子,把拼接好的新句子和样本标签写到RTE_Val_Process中保存;
2.3.2.1.2.3令n2_val=n2_val+1,若n2_val≤num2_val则转2.3.2.1.2.2继续处理n2_val个样本,若n2_val>num2_val,加标志结束。
4.如权利要求1所述的一种基于轻量化预训练语言模型的文本分类方法,其特征在于3.1所述设置网络训练超参数的方法是:Learning Rate在取值范围{1×10-5,2×10-5,3×10-5,5×10-5}中任取一值,Batch Size取值64,Max_Sentence_Length取值128,Seed取值9580;Epoch在取值范围{3,4,8,15}中任取一值。
5.如权利要求1所述的一种基于轻量化预训练语言模型的文本分类方法,其特征在于3.3.1.1.3.1所述教师模型文本嵌入层对sa进行文本嵌入转换得到sa的嵌入向量表示E(sa)的方法是:
3.3.1.1.3.1.1对样本sa中的英文句子按照单词之间空格进行分词,得到样本sa句子分词和样本标签的集合s1 a,s1 a={w1 a,…,wm a,…,wM a,la},s1 a由M个单词和一个样本标签la共M+1个元素组成,wm a是sa的第m个单词,1≤m≤M;
3.3.1.1.3.1.2对照Bert-base的词表把s1 a中的单词转换成为单词的编号,得到样本sa单词编号和样本标签的集合s2 a={w1^a,…,wm^a,…,wM^a,la},Bert-base的词表共有30522个词汇,按照从1到30522编码,wm^a是一个介于1-30522的整数;
3.3.1.1.3.1.3文本嵌入层的三个全连接层依次对s2 a中单词的编号进行全连接处理,把单词编号转换成对应的词向量,得到样本sa的嵌入向量表示E(sa)={E(w1 a),…,E(wm a),…,E(wM a),la},E(wm a)是一个长度为768的一维向量。
6.如权利要求1所述的一种基于轻量化预训练语言模型的文本分类方法,其特征在于3.3.1.1.3.2所述文本特征提取层对E(sa)进行文本特征提取,得到F(sa)的方法是:
3.3.1.1.3.2.1初始化j=1,令F(sa)={la};
3.3.1.1.3.2.2若j=1,第j层transformer对E(sa)提取文本语义特征,得到F(sa)1,转3.3.1.1.3.2.3;若j>1,第j层transformer对F(sa)j-1提取文本语义特征,得到F(sa)j,转3.3.1.1.3.2.3;
3.3.1.1.3.2.3若1≤j≤11,将F(sa)j加入到F(sa)中,发送F(sa)j到第j+1层transformer作为输入,转3.3.1.1.3.2.4;若j=12,将F(sa)12加入到F(sa)中,转3.3.1.1.3.2.4;
3.3.1.1.3.2.4令j=j+1,如果j≤12,转3.3.1.1.3.2.2,否则,说明已经提取出所有的文本语义特征,得到F(sa)={F(sa)1,…,F(sa)j,…F(sa)12,lt}。
7.如权利要求1所述的一种基于轻量化预训练语言模型的文本分类方法,其特征在于3.3.1.1.5.1所述使用第k个样本验证教师模型性能的方法是:
3.3.1.1.5.1.1教师模型的文本嵌入层对第k个验证集样本s`k进行文本嵌入转换s`k={w`1 k…w`q k…w`Q k,l`k},得到样本s`k的嵌入向量表示E(s`k),E(s`k)={E(w`1 k),…,E(w`q k),…,E(w`Q k),l`k},方法如下:
3.3.1.1.5.1.1.1对样本s`k的英文句子按照单词之间空格进行分词,得到样本s`k句子分词和样本标签的集合s`1 k={w`1 k,w`q k,…,w`Q k,l`k},s`k和s`1 k的区别是s`k有一个句子,一个样本标签共两个元素,其中Q个单词构成句子作为一个整体属于s`k,s`1 k有Q个单词,一个样本标签共Q+1个元素;
3.3.1.1.5.1.1.2对照Bert-base的词表把s`1 k中的单词转换成单词的编号,得到s`1 k的单词编号和样本标签集合s`2 k,s`2 k={w`1^k,w`q^k,…,w`Q^k,l`k},w`q^k是介于1-30522的整数;
3.3.1.1.5.1.1.3教师模型的文本嵌入层的三个全连接层依次对s`2 k中单词的编号进行全连接处理,把单词编号转换成对应的词向量,得到s`k的嵌入向量表示E(s`k),E(s`k)={E(w`1 k),…,E(w`q k),…,E(w`Q k),l`k},E(w`q k)是长度为768的一维向量;
3.3.1.1.5.1.2教师模型文本特征提取层中的12个transfromer层对E(s`k)进行文本特征提取,得到由12个文本语义特征和样本标签组成的集合F(s`k)={F(s`k)1,…,F(s`k)j,…F(s`k)12,l`k},F(s`k)j代表第j个transfromer层输出的文本特征,方法是:
3.3.1.1.5.1.2.1初始化j=1,令F(s`k)={l`k};
3.3.1.1.5.1.2.2若j=1,第j层transformer提取E(s`k)的文本语义特征,得到F(s`k)1,转3.3.1.1.5.1.2.3;若j>1,第j层transformer提取F(s`k)j-1的文本语义特征,得到F(s`k)j,转3.3.1.1.5.1.2.3;
3.3.1.1.5.1.2.3若1≤j≤11,将F(s`k)j加入到F(s`k)中,发送F(s`k)j到第j+1层transformer作为输入;若j=12,将F(s`k)12加入到F(s`k)中;
3.3.1.1.5.1.2.4令j=j+1,如果j≤12,转3.3.1.1.5.1.2.2;否则,说明已经提取出所有的文本语义特征,得到F(s`k)={F(s`k)1,…,F(s`k)j,…F(s`k)12,l`k},转3.3.1.1.5.1.3;
3.3.1.1.5.1.3教师模型分类层从文本特征提取层接收F(s`k),取出F(s`k)12,分类层的全连接层对F(s`k)12进行分类,得到s`k的概率分布结果R(s`k);
3.3.1.1.5.1.4教师模型比较R(s`k)中最大值的索引值与l`k中数字1的索引值是否相同,若相同,表示教师模型对第k个样本s`k的预测类别与样本标签标注的真实类别一致,令true_num=true_num+1,转3.3.1.1.5.2;若不相同,直接转3.3.1.1.5.2;
3.3.1.1.5.2令k=k+1,若k≤K,转3.3.1.1.5.1.1验证下一个样本,若k>K,计算对应数据集任务的准确率acc,acc=true_num/K,结束。
8.如权利要求1所述的一种基于轻量化预训练语言模型的文本分类方法,其特征在于4.1所述设定知识蒸馏所需的超参数的方法是:将超参数蒸馏温度Temperature取值为8,训练轮数Epoch取值为30,超参数α在{0.2,0.3,0.5}中任取一值,β在{5,8,10}中任取一值,γ在{1,2,3}中任取一值Learning Rate在取值范围{1×10-5,2×10-5,3×10-5,5×10-5}中任取一值,Batch Size取值64,Max_Sentence_Length取值128,Seed取值9580;Epoch在取值范围{3,4,8,15}中任取一值。
9.如权利要求8所述的一种基于轻量化预训练语言模型的文本分类方法,其特征在于所述α取0.3,β取10,γ取1。
10.如权利要求1所述的一种基于轻量化预训练语言模型的文本分类方法,其特征在于4.2.3.3.1所述教师模型对样本sb进行文本分类的方法是:
4.2.3.3.1.1教师模型文本嵌入层从CoLA_Train_Process中取出sb,sb={w1 b…wi b…wm b,lb},对sb进行文本嵌入转换,得到样本sb的第一嵌入向量表示TE(sb),TE(sb)={TE(w1 b),…,TE(wi b),…,TE(wm b),lb},具体方法如下:
4.2.3.3.1.1.1对样本sb中的句子按照单词之间空格进行分词,得到样本sb句子分词和样本标签的集合s1 b={w1 b,…,wm b,…,wM b,lb};
4.2.3.3.1.1.2对照Bert-base的词表把分词后的单词转换成为单词的编号,得到样本sb句子单词编号和样本标签集合s2 b={w1^b,…,wm^b,…,wM^b,lb},wm^b是介于1-30522的整数;
4.2.3.3.1.1.3教师模型的文本嵌入层的三个全连接层依次对s2 b中单词的编号进行全连接处理,把单词编号转换成对应的词向量,得到sb的教师嵌入向量表示TE(sb),TE(sb)={TE(w1 b),…,TE(wm b),…,TE(wM b),lb},TE(wm b)是长度为768的一维向量;
4.2.3.3.1.2教师模型的文本特征提取层中的12个transfromer层对TE(sb)进行文本特征提取,得到由12个文本语义特征和样本标签组成的集合TF(sb),TF(sb)={TF(sb)1,…,TF(sb)j,…TF(sb)12,lb},TF(st)j代表第j个transfromer层输出的文本特征,具体方法如下:
4.2.3.3.1.2.1初始化j=1,令TF(sb)={lb};
4.2.3.3.1.2.2若j=1,第j层transformer提取E(sb)的文本语义特征,得到TF(sb)1,转4.2.3.3.1.2.3,若j>1,第j层transformer提取TF(sb)j-1的文本语义特征,得到TF(sb)j,转4.2.3.3.1.2.3;
4.2.3.3.1.2.3若1≤j≤11,将TF(sb)j加入到TF(sb)中,发送TF(sb)j到第j+1层transformer作为输入,转4.2.3.3.1.2.4,若j=12,将TF(sb)12加入到TF(sa),转4.2.3.3.1.2.4;
4.2.3.3.1.2.4令j=j+1,如果j≤12,转4.2.3.3.1.2.2,否则,说明已经提取出所有的文本语义特征,得到TF(sb),TF(sb)={TF(sb)1,…,TF(sb)j,…TF(sb)12,lb},TF(sb)j是维度为128×768的二维矩阵,转4.2.3.3.1.3;
4.2.3.3.1.3教师模型的分类层接收TF(sb),取出TF(sb)12,采用全连接层对TF(sb)12进行分类得到样本sb的第一概率分布结果TR(sb)。
11.如权利要求1所述的一种基于轻量化预训练语言模型的文本分类方法,其特征在于4.2.3.3.2所述学生模型对第b个样本sb进行文本分类的方法是:
4.2.3.3.2.1学生模型文本嵌入层接收sb={w1 b…wm b…wM b,lb},对sb进行文本嵌入转换,输出样本sb的第二嵌入向量表示SE(sb)={SE(w1 b),…,SE(wm b),…,SE(wM b),lb},具体方法如下:
4.2.3.3.2.1.1对样本sb中的英文句子按照单词之间空格进行分词,得到样本sb的句子分词和样本标签集合s1 b={w1 b,wm b,…,wM b,lb},wm b是一个英文句子按照单词之间的空格分词后得到的单个单词;
4.2.3.3.2.1.2将s1 b中的单词转换成为单词的编号,得到样本sb的单词编号和样本标签集合s2 b={w1^b,wm^b,…,wM^b,lb},wm^b为单词的编号,是介于1-30522的整数;
4.2.3.3.2.1.3学生模型的文本嵌入层的三个全连接层依次对s2 b中单词的编号进行全连接处理,把单词编号转换成对应的词向量得到sb的学生嵌入向量表示SE(sb),SE(sb)={SE(w1^b),…,SE(wm^b),…,SE(wM^b),lb},SE(wm^b)是一个长度为768的一维向量,转4.2.3.3.2.2;
4.2.3.3.2.2学生模型的文本特征提取层中的6个transfromer层对SE(sb)提取文本特征,得到由6个文本语义特征和样本标签组成的集合SF(sb),SF(sb)={SF(sb)1,…,SF(sb)j,…SF(sb)6,lb},SF(sb)j代表第j个transfromer层输出的文本特征,具体方法如下:
4.2.3.3.2.2.1初始化j=1,令SF(sb)={lb};
4.2.3.3.2.2.2若j=1,第j层transformer提取SE(sb)的文本语义特征,得到SF(sb)1,转4.2.3.3.2.2.3;若j>1,第j层transformer提取SF(sb)j-1的文本语义特征,得到SF(sb)j,转4.2.3.3.2.2.3;
4.2.3.3.2.2.3若1≤j≤5将SF(sb)j加入到SF(sb)中,发送SF(sb)j到第j+1层transformer作为输入,若j=6,将SF(sb)12加入到SF(sb)中;
4.2.3.3.2.2.4令j=j+1,如果j≤6,转4.2.3.3.2.2.2,否则,说明已经提取出所有的文本语义特征,得到SF(sb),SF(sb)={SF(sb)1,…,SF(sb)j,…SF(sb)6,lb},转4.2.3.3.2.3;
4.2.3.3.2.3学生模型的分类层接收SF(sb),取出SF(sb)6,分类层的全连接层对SF(sb)6进行分类,得到样本sb的第二概率分布结果SR(sb),结束。
12.如权利要求1所述的一种基于轻量化预训练语言模型的文本分类方法,其特征在于4.2.3.3.3所述学生模型计算教师模型和学生模型对sb的处理结果的差值L的方法是:
4.2.3.3.3.1学生模型使用均方误差MSE函数计算TE(sb)和SE(sb)的差值,记为Lemd,Lemd=MSE(TE(sb),SE(sb));
4.2.3.3.3.2学生模型放缩教师模型对样本sb进行文本分类得到的概率分布结果TR(sb)得到放缩后的概率分布结果TR^(sb),TR^(sb)=TR(sb)/Temperature,放缩学生模型对样本sb进行文本分类的第二概率分布结果SR(sb)得到放缩后的第二概率分布结果SR^(sb),SR^(sb)=SR(sb)/Temperature,并调用softmax函数对TR^(sb)和SR^(sb)进行归一化,得到归一化后的TR^(sb)和SR^(sb),分别记为TR^(sb)’和SR^(sb)’;使用KL散度函数来衡量处理过后的教师模型和学生模型预测输出的分布距离Llogists,Llogists=KL(TR^(sb)’,SR^(sb)’);
4.2.3.3.3.3教师模型与学生模型的transformer层对齐,即学生模型的{1,2,3,4,5,6}对应教师模型的{2,4,6,8,10,12},采取的是一对多的方式,具体方法如下:
4.2.3.3.3.3.1学生模型的第x层对应教师模型前y层,初始化x=1,Lmid=0,Lmid的值是处理同一样本时教师模型前y层文本特征的融合值与学生模型第x层文本特征的差值:
4.2.3.3.3.3.2令y=2x;
4.2.3.3.3.3.3计算教师模型各层transformer文本特征的权重,学生模型调用softmax函数对[1,…,y]共y个整数进行归一化,得到[P1,…,Py]共y个权重;
4.2.3.3.3.3.5学生模型使用MSE函数计算TF_y与SF(sb)x的差值Lmid,Lmid=Lmid+MSE(TF_y,SF(sb)x);
4.2.3.3.3.3.6令x=x+1,若x≤6,转4.2.3.3.3.3.2,若x>6,转4.2.3.3.3.4;
4.2.3.3.3.4将SR(sb)与表示样本标签的独热编码lb做交叉熵CE函数,交叉熵结果记为Lce,即Lce=CE(lb,SR(sb));
4.2.3.3.3.5计算学生模型的总损失值L,L=(1-α)×Lce+α×Llogists+β×Lmid+γ×Lemd,结束。
13.如权利要求1所述的一种基于轻量化预训练语言模型的文本分类方法,其特征在于4.2.3.5.1.1所述学生模型的文本嵌入层对第k2个样本s`k2进行文本嵌入转换,得到s`k2的嵌入向量表示E(s`k2)的方法是:
4.2.3.5.1.1.1对样本s`k2中的句子按照单词之间空格进行分词,得到样本s`k2的句子分词和样本标签集合s`1 k2={w`1 k2,…,w`q k2,…,w`Q k2,l`k2};
4.2.3.5.1.1.2将s`1 k2的单词转换成为单词的编号,得到样本s`k2的句子单词编号和样本标签集合s`2 k2={w`1^k2,…w`q^k2,…,w`Q^k2,l`k2},w`q^k2是介于1-30522的整数;
4.2.3.5.1.1.3学生模型的文本嵌入层的三个全连接层依次对s`2 k2中单词的编号进行全连接处理,把单词编号转换成对应的词向量得到s`k2的嵌入向量表示E(s`k2),E(s`k2)={E(w`1 k2),…,E(w`q k2),…,E(w`Q k2),l`k2},E(w`q k2)是长度为768的一维向量结束。
14.如权利要求1所述的一种基于轻量化预训练语言模型的文本分类方法,其特征在于4.2.3.5.1.2所述学生模型的文本特征提取层中的6个transfromer层对E(s`k2)提取文本特征,得到由6个文本语义特征和样本标签组成的集合F(s`k2)的方法是:
4.2.3.5.1.2.1初始化j=1,令F(s`k2)={l`k2};
4.2.3.5.1.2.2若j=1,第j层transformer提取E(s`k2)的文本语义特征,得到F(s`k2)j,转4.2.3.5.1.2.3;若j>1,第j层transformer提取F(s`k2)j-1的文本语义特征,得到F(s`k2)j,转4.2.3.5.1.2.3;
4.2.3.5.1.2.3若1≤j≤5将F(s`k2)j加入到F(s`k2)中,发送F(s`k2)j到第j+1层transformer作为输入,若j=6,将F(s`k2)6加入到F(s`k2)中;
4.2.3.5.1.2.4令j=j+1,如果j≤6,转4.2.3.5.1.2.2,否则,说明已经提取出所有的文本语义特征,得到F(s`k2)={F(s`k2)1,…,F(s`k2)j,…F(s`k2)6,l`k2},结束。
15.如权利要求1所述的一种基于轻量化预训练语言模型的文本分类方法,其特征在于5.1所述对用户输入的文本集合C进行预处理,得到预处理后的文本集合C*的方法是:
5.1.1初始化已处理样本数目cnum=1;
5.1.2若用户输入文本集合的样本结构属于单个句子的类型,转5.1.3,若用户输入文本集合的样本结构属于句子对的类型,转5.1.4;
5.1.3采用句首加标志方法对文本集合中的第cnum个样本做预处理,
5.1.4采用句首句尾加标志方法对文本集合中的第cnum个样本进行预处理;
5.1.5令cnum=cnum+1,若cnum≤Z,转5.1.2预处理下一个样本,若cnum>Z,表示处理完毕,得到C*,结束。
16.如权利要求1所述的一种基于轻量化预训练语言模型的文本分类方法,其特征在于5.3.2.1所述学生模型文本嵌入层接收c*z,输出样本c*z的文本嵌入向量E(c*z)的方法是:
5.3.2.1.1对样本c*z按照单词之间空格进行分词,得到分词集合c*1 z={w*1 z,…w*o z,…,w*O z};
5.3.2.1.2对照Bert-base的词表把c*1 z中的单词转换成为单词的编号,得到单词编号集合c*^z,c*^z={w*^1 z,…w*^o z,…,w*^O z},w*^o z是一个介于1-30522的整数;
5.3.2.1.3依次使用文本嵌入层的全连接层把c*^z中单词的编号转换成对应的词向量,得到c*z的词向量集合E(c*z),E(c*z)={E(w*1 z),…,E(w*o z),…,E(w*O z)},E(w*o z)是一个长度为768维度的向量结束。
17.如权利要求1所述的一种基于轻量化预训练语言模型的文本分类方法,其特征在于5.3.2.2所述文本特征提取层中的6个transfromer层对E(c*z)进行特征提取,得到由6个文本语义特征组成的集合F(c*z)的方法是:
5.3.2.2.1初始化j=1;
5.3.2.2.2若j=1,第j层transformer提取E(c*z)文本语义特征,得到F(c*z)1,转5.3.2.2.3;若j>1,第j层transformer接收F(c*z)j-1计算文本语义特征,得到F(c*z)j,转5.3.2.2.3;
5.3.2.2.3若1≤j≤5,将F(c*z)j加入到F(c*z)中,发送F(c*z)j到第j+1层transformer作为输入,转5.3.2.2.2;若j=6,将F(c*z)6加入到F(c*z)中,转5.3.2.2.4;
5.3.2.2.4令j=j+1,如果j≤6,转5.3.2.2.2,否则,说明已经计算出所有的文本语义特征,得到F(c*z),F(c*z)={F(c*z)1,…,F(c*z)j,…F(c*z)6},结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111466873.8A CN114168709B (zh) | 2021-12-03 | 2021-12-03 | 一种基于轻量化预训练语言模型的文本分类方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111466873.8A CN114168709B (zh) | 2021-12-03 | 2021-12-03 | 一种基于轻量化预训练语言模型的文本分类方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114168709A CN114168709A (zh) | 2022-03-11 |
CN114168709B true CN114168709B (zh) | 2022-06-03 |
Family
ID=80482723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111466873.8A Active CN114168709B (zh) | 2021-12-03 | 2021-12-03 | 一种基于轻量化预训练语言模型的文本分类方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114168709B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114969321B (zh) * | 2022-03-14 | 2024-03-22 | 北京工业大学 | 基于多权重自训练的环境类投诉举报文本分类方法 |
CN116226575A (zh) * | 2023-02-23 | 2023-06-06 | 北京麦克斯泰科技有限公司 | 一种基于自动化的媒体账号管理方法和*** |
CN117573908B (zh) * | 2024-01-16 | 2024-03-19 | 卓世智星(天津)科技有限公司 | 基于对比学习的大语言模型蒸馏方法 |
CN117708336B (zh) * | 2024-02-05 | 2024-04-19 | 南京邮电大学 | 一种基于主题增强和知识蒸馏的多策略情感分析方法 |
CN118015316B (zh) * | 2024-04-07 | 2024-06-11 | 之江实验室 | 一种图像匹配模型训练的方法、装置、存储介质、设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111611377A (zh) * | 2020-04-22 | 2020-09-01 | 淮阴工学院 | 基于知识蒸馏的多层神经网络语言模型训练方法与装置 |
CN112183670A (zh) * | 2020-11-05 | 2021-01-05 | 南开大学 | 一种基于知识蒸馏的少样本虚假新闻检测方法 |
CN112541347A (zh) * | 2020-12-29 | 2021-03-23 | 浙大城市学院 | 一种基于预训练模型的机器阅读理解方法 |
CN113204633A (zh) * | 2021-06-01 | 2021-08-03 | 吉林大学 | 一种语义匹配蒸馏方法及装置 |
CN113312548A (zh) * | 2021-05-17 | 2021-08-27 | 浙江大学 | 基于知识蒸馏的信息检索方法 |
CN113673254A (zh) * | 2021-08-23 | 2021-11-19 | 东北林业大学 | 基于相似度保持的知识蒸馏的立场检测方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3748545A1 (en) * | 2019-06-07 | 2020-12-09 | Tata Consultancy Services Limited | Sparsity constraints and knowledge distillation based learning of sparser and compressed neural networks |
-
2021
- 2021-12-03 CN CN202111466873.8A patent/CN114168709B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111611377A (zh) * | 2020-04-22 | 2020-09-01 | 淮阴工学院 | 基于知识蒸馏的多层神经网络语言模型训练方法与装置 |
CN112183670A (zh) * | 2020-11-05 | 2021-01-05 | 南开大学 | 一种基于知识蒸馏的少样本虚假新闻检测方法 |
CN112541347A (zh) * | 2020-12-29 | 2021-03-23 | 浙大城市学院 | 一种基于预训练模型的机器阅读理解方法 |
CN113312548A (zh) * | 2021-05-17 | 2021-08-27 | 浙江大学 | 基于知识蒸馏的信息检索方法 |
CN113204633A (zh) * | 2021-06-01 | 2021-08-03 | 吉林大学 | 一种语义匹配蒸馏方法及装置 |
CN113673254A (zh) * | 2021-08-23 | 2021-11-19 | 东北林业大学 | 基于相似度保持的知识蒸馏的立场检测方法 |
Non-Patent Citations (3)
Title |
---|
Knowledge Distillation for Improved Accuracy in Spoken Question Answering;Chenyu You;《2021 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)》;20210513;全文 * |
Research of Weibo Text Classification based on Knowledge Distillation and Joint Model;Zhengwu Yuan;《2021 IEEE 5th Advanced Information Technology, Electronic and Automation Control Conference (IAEAC)》;20210405;全文 * |
基于深度神经网络的在线协作学习交互文本分类方法;甄园宜等;《现代远程教育研究》;20200525(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114168709A (zh) | 2022-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114168709B (zh) | 一种基于轻量化预训练语言模型的文本分类方法 | |
Kang et al. | Convolve, attend and spell: An attention-based sequence-to-sequence model for handwritten word recognition | |
CN109766277B (zh) | 一种基于迁移学习与dnn的软件故障诊断方法 | |
CN111738003B (zh) | 命名实体识别模型训练方法、命名实体识别方法和介质 | |
CN111695052A (zh) | 标签分类方法、数据处理设备、可读存储介质 | |
CN111694924A (zh) | 一种事件抽取方法和*** | |
CN109635124A (zh) | 一种结合背景知识的远程监督关系抽取方法 | |
CN111046670B (zh) | 基于毒品案件法律文书的实体及关系联合抽取方法 | |
CN112800776A (zh) | 双向gru关系抽取数据处理方法、***、终端、介质 | |
CN111966812B (zh) | 一种基于动态词向量的自动问答方法和存储介质 | |
CN112036184A (zh) | 基于BiLSTM网络模型及CRF模型的实体识别方法、装置、计算机装置及存储介质 | |
CN111695053A (zh) | 序列标注方法、数据处理设备、可读存储介质 | |
CN114528835A (zh) | 基于区间判别的半监督专业术语抽取方法、介质及设备 | |
CN114818717A (zh) | 融合词汇和句法信息的中文命名实体识别方法及*** | |
CN114429132A (zh) | 一种基于混合格自注意力网络的命名实体识别方法和装置 | |
CN115700515A (zh) | 文本多标签分类方法及装置 | |
CN117371523A (zh) | 基于人机混合增强的教育知识图谱构建方法与*** | |
CN116955644A (zh) | 基于知识图谱的知识融合方法、***及存储介质 | |
CN113806645A (zh) | 标签分类***及标签分类模型的训练*** | |
CN113806646A (zh) | 序列标注***及序列标注模型的训练*** | |
CN113705222B (zh) | 槽识别模型训练方法及装置和槽填充方法及装置 | |
CN111145914A (zh) | 一种确定肺癌临床病种库文本实体的方法及装置 | |
CN111581365B (zh) | 一种谓词抽取方法 | |
CN117725211A (zh) | 一种基于自构建提示模板的文本分类方法和*** | |
CN111666375A (zh) | 文本相似度的匹配方法、电子设备和计算机可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |