CN114625840A - 一种自然语言处理模型的训练方法和装置 - Google Patents
一种自然语言处理模型的训练方法和装置 Download PDFInfo
- Publication number
- CN114625840A CN114625840A CN202210272019.6A CN202210272019A CN114625840A CN 114625840 A CN114625840 A CN 114625840A CN 202210272019 A CN202210272019 A CN 202210272019A CN 114625840 A CN114625840 A CN 114625840A
- Authority
- CN
- China
- Prior art keywords
- vector matrix
- learnable
- layer
- task
- prompt
- 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.)
- Pending
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/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
- 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
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/211—Syntactic parsing, e.g. based on context-free grammar [CFG] or unification grammars
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Computing Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Algebra (AREA)
- Software Systems (AREA)
- Machine Translation (AREA)
Abstract
本申请提供了一种自然语言处理模型的训练方法和装置,该方法包括:获取每一层为采用自注意力机制的层结构的预训练语言模型,获取每一层用于学习NLP任务中的第一任务的第一可学习向量矩阵和第二可学习向量矩阵,然后根据第一可学习向量矩阵和第二可学习向量矩阵生成每一层的第一拼接键向量矩阵和第一拼接值向量矩阵,最后利用第一任务的训练样本数据对第一可学习向量矩阵和第二可学习向量矩阵进行训练。通过第一拼接键向量矩阵和第一拼接值向量矩阵使得第一可学习向量矩阵和第二可学习向量矩阵参与到训练中,由于固定预训练语言模型,大大减少训练参数;使可学习向量矩阵先学习NLP基础任务再学习NLP上层任务,能够提升小样本的学习能力。
Description
技术领域
本申请涉及自然语言处理技术领域,尤其涉及一种自然语言处理模型的训练方法和装置。
背景技术
在自然语言处理(Natural Language Processing,NLP)领域,“提示”(Prompt)是将人为的规则给到预训练模型,使模型可以更好地理解人的指令的一项技术,可以简单理解为给任务的输入加入补充文本,以便更好地利用预训练模型。
与一般的微调(Fine-Tuning)相比,提示调整(Prompt Tuning)将Prompt加入到微调过程中,并且可以做到只对Prompt部分的参数进行训练,同时保证整个预训练模型的参数固定不变,这种灵活性是一般的Fine-tuning无法做到的。
但是,Prompt方法的效果和小样本学习能力还有提升的空间。
发明内容
本申请提供了一种自然语言处理模型的训练方法和装置,能够进一步提升prompt方法的效果和小样本的学习能力。
第一方面,提供了一种自然语言处理模型的训练方法,包括:
获取预训练语言模型,预训练语言模型的每一层为采用自注意力机制的层结构;
获取每一层的第一可学习向量矩阵和第二可学习向量矩阵,第一可学习向量矩阵和第二可学习向量矩阵均用于学习NLP任务中的第一任务;
生成每一层的第一拼接键向量矩阵和第一拼接值向量矩阵,第一拼接键向量矩阵由当前层的第一可学习向量矩阵与当前层的键向量拼接得到,第一拼接值向量矩阵由当前层的第二可学习向量矩阵与当前层的值向量拼接得到;
向预训练语言模型输入第一任务的训练样本数据,根据每一层的第一拼接键向量矩阵、第一拼接值向量矩阵和当前层的查询向量计算当前层的输出,根据最后一层的输出和第一任务的损失函数得到每一层最优的第一可学习向量矩阵和第二可学习向量矩阵。
本申请实施例通过在预训练语言模型的每一层中设置用于提示(prompt)作用的第一可学习向量矩阵和第二可学习向量矩阵,然后将第一可学习向量矩阵与当前层的键向量进行拼接处理得到的第一拼接键向量矩阵,以及将第二可学习向量矩阵与当前层的值向量进行拼接处理得到的第一拼接值向量矩阵,作为当前层的输入,使得第一可学习向量矩阵和第二可学习向量矩阵参与到每一层的训练和更新,由于原预训练语言模型的参数被固定,因此大大减少了训练参数。在向模型中输入NLP任务的训练样本后,能够使得第一可学习向量矩阵和第二可学习向量矩阵学习NLP任务,从而使得每一层的prompt具有了NLP任务的特征。在实际应用中,先嵌入用来学习NLP任务中的基础任务(例如,词性分析任务、语块分析任务、依存句法分析任务等)的可学习向量矩阵,为模型注入基础语言知识,然后再嵌入用来学习NLP上层任务的可学习向量矩阵,这样对学习NLP上层任务(例如,命名实体识别任务、文本语义相关任务、文本蕴含任务、分类任务等)有很大的帮助,进一步提升了模型小样本的学习能力,即提升了提示学习的效果。
在一种可能的实施方式中,每一层的第一可学习向量矩阵由当前层的第三可学习向量矩阵与当前层之前参与的所有NLP任务训练得到的可学习向量矩阵拼接得到,每一层的第二可学习向量矩阵由当前层的第四可学习向量矩阵与当前层之前参与的所有NLP任务训练得到的可学习向量矩阵拼接得到,其中,第三可学习向量矩阵和第四可学习向量矩阵均为被设置为学习第一任务的向量矩阵。
在一种可能的实施方式中,在得到每一层最优的第一可学习向量矩阵和第二可学习向量矩阵之后,方法还包括:
设置每一层的第五可学习向量矩阵和第六可学习向量矩阵,第五可学习向量矩阵和第六可学习向量矩阵均用于学习NLP任务中的第二任务,第一任务与第二任务不同;
生成每一层的第一拼接可学习向量矩阵和第二拼接可学习向量矩阵,第一拼接可学习向量矩阵由当前层的第五可学习向量矩阵与当前层的第一可学习向量矩阵拼接得到,第二拼接可学习向量矩阵由当前层的第六可学习向量矩阵与当前层的第二可学习向量矩阵拼接得到;
生成每一层的第二拼接键向量矩阵和第二拼接值向量矩阵,第二拼接键向量矩阵由当前层的第一拼接可学习向量矩阵与当前层的键向量拼接得到,第二拼接值向量矩阵由当前层的第二拼接可学习向量矩阵与当前层的值向量拼接得到;
向预训练语言模型输入第二任务的训练样本数据,根据每一层的第二拼接键向量矩阵、第二拼接值向量矩阵和当前层的查询向量计算当前层的输出,根据最后一层的输出和所述第二任务的损失函数得到每一层最优的第一拼接可学习向量矩阵和第二拼接可学习向量矩阵,并且限制所述第一可学习向量矩阵的参数变化和所述第二可学习向量矩阵的参数变化。
在一种可能的实施方式中,NLP任务包括NLP基础任务和NLP上层任务,NLP基础任务包括词性分析任务、语块分析任务和依存句法分析任务,NLP上层任务包括命名实体识别任务、文本语义相关任务、文本蕴含任务和分类任务。
在一种可能的实施方式中,当前层之前参与的所有NLP任务为NLP基础任务,第一任务为NLP上层任务。
在一种可能的实施方式中,预训练语言模型第1层的输出h1采用以下公式实现:
其中,q1为向模型输入的查询向量矩阵,k1为向模型输入的键向量矩阵,v1为向模型输入的值向量矩阵,表示拼接,prompt_K为与k1对应的可学习向量矩阵,prompt_V为与v1对应的可学习向量矩阵,为k1与prompt_K拼接后的向量矩阵,为v1与prompt_V拼接后的向量矩阵,f为当前层使用的函数,h1为当前层的输出。
在一种可能的实施方式中,预训练语言模型第n层的输出hn采用以下公式实现,其中,n为整数,n>1:
qn,kn,vn=hn-1Wq,hn-1Wk,hn-1Wv;
其中,hn-1为第n-1层的输出,Wq为当前层查询向量的线性变换矩阵,Wk为当前层键向量的线性变换矩阵,Wv为当前层值向量的线性变换矩阵,qn为当前层的查询向量,kn为当前层的键向量,vn为当前层的值向量,表示拼接,prompt_K为与kn对应的可学习向量矩阵,prompt_V为与vn对应的可学习向量矩阵,为kn与prompt_K拼接后的向量矩阵,为vn与prompt_V拼接后的向量矩阵,f为当前层使用的函数,hn为当前层的输出。
在一种可能的实施方式中,prompt_K和prompt_V采用以下公式实现:
其中,promptc1_K表示被设置为学习当前NLP任务的与当前层的键向量对应的可学习向量矩阵,promptc2_K表示当前层之前参与的所有NLP任务训练得到的与当前层键向量对应的可学习向量矩阵,promptc1_V表示被设置为学习当前NLP任务的与当前层的值向量对应的可学习向量矩阵,promptc2_V表示当前层之前参与的所有NLP任务训练得到的与当前层键向量对应的可学习向量矩阵。
在一种可能的实施方式中,预训练语言模型在学习首个NLP任务的情况下,损失函数包括当前NLP任务的损失(loss)部分与对当前NLP任务参数的限制部分的和;或者,
预训练语言模型在学习非首个NLP任务的情况下,损失函数包括当前NLP任务的损失(loss)部分、对当前NLP任务参数的限制部分与对之前参与的所有NLP任务已经训练好的参数的限制部分的和。
在一种可能的实施方式中,在生成每一层的第一拼接可学习向量矩阵和第二拼接可学习向量矩阵之前,方法还包括:对第一可学习向量矩阵和第二可学习向量矩阵进行层标准化处理,和/或,对第五可学习向量矩阵和第六可学习向量矩阵进行层标准化处理。
第二方面,提供了一种自然语言处理模型的训练装置,包括:
第一模块,用于获取预训练语言模型,预训练语言模型的每一层为采用自注意力机制的层结构;
第二模块,用于获取每一层的第一可学习向量矩阵和第二可学习向量矩阵,第一可学习向量矩阵和第二可学习向量矩阵均用于学习NLP任务中的第一任务;
第三模块,用于生成每一层的第一拼接键向量矩阵和第一拼接值向量矩阵,第一拼接键向量矩阵由当前层的第一可学习向量矩阵与当前层的键向量拼接得到,第一拼接值向量矩阵由当前层的第二可学习向量矩阵与当前层的值向量拼接得到;
第四模块,用于向预训练语言模型输入第一任务的训练样本数据,根据每一层的第一拼接键向量矩阵、第一拼接值向量矩阵和当前层的查询向量计算当前层的输出,根据最后一层的输出和第一任务的损失函数得到每一层最优的第一可学习向量矩阵和第二可学习向量矩阵。
本申请实施例提供的一种自然语言处理模型的训练装置,通过在每一层中设置用于提示(prompt)作用的第一可学习向量矩阵和第二可学习向量矩阵,然后将第一可学习向量矩阵与当前层的键向量进行拼接处理得到的第一拼接键向量矩阵,以及将第二可学习向量矩阵与当前层的值向量进行拼接处理得到的第一拼接值向量矩阵,作为当前层的输入,使得第一可学习向量矩阵和第二可学习向量矩阵参与到每一层的训练和更新,由于原预训练语言模型的参数被固定,因此大大减少了训练参数。在向模型中输入NLP任务的训练样本后,能够使得第一可学习向量矩阵和第二可学习向量矩阵学习NLP任务,从而使得每一层的prompt具有了NLP任务的特征。在实际应用中,先嵌入用来学习NLP任务中的基础任务(例如,词性分析任务、语块分析任务、依存句法分析任务等)的可学习向量矩阵,为模型注入基础语言知识,然后再嵌入用来学习NLP上层任务的可学习向量矩阵,这样对学习NLP上层任务(例如,命名实体识别任务、文本语义相关任务、文本蕴含任务、分类任务等)有很大的帮助,进一步提升了模型小样本的学习能力,即提升了提示学习的效果。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一例自然语言处理模型的训练方法的示意性流程图;
图2是本申请实施例提供的再一例自然语言处理模型的训练方法的示意性流程图;
图3是本申请实施例提供的一例预训练语言模型架构示意图;
图4是本申请实施例提供的又一例自然语言处理模型的训练方法的示意性流程图;
图5是本申请实施例提供的再一例预训练语言模型架构示意图;
图6是本申请实施例提供的又一例自然语言处理模型的训练方法的示意性流程图;
图7是本申请实施例提供的又一例自然语言处理模型的训练方法的示意性流程图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为了便于理解本申请中的方案,以下对一些技术概念进行简单介绍:
提示(Prompt)学习:将人为的规则给到预训练模型,使模型可以更好地理解人的指令的一项技术,可以简单理解为给任务的输入加入补充文本,以便更好地利用预训练模型。在提示学习中,补充文本可以提示模板的形式来作为模型的输入,提示模板的制作分为手工创建模板和自动化生成模板,而自动化生成模板又分为离散提示(又叫做硬提示(hardprompt))和连续提示(又叫做软提示(soft prompt))。
硬提示(hard prompt):hard prompt中,prompt是一个实际的文本字符串。例如,输入的文本x=“I love this movie”。首先,设计一个prompt模板(Prompt Template):Overall it was a[z]movie,在实际研究中,[z]是需要模型进行填充的空位,[z]的位置和数量决定了prompt的类型。例如,根据[z]位置的不同,可以将prompt分为cloze prompt([z]在句中)和prefix prompt([z]在句末)。具体选择哪一种则取决于任务形式和模型类别。
软提示(soft prompt):在soft prompt中,prompt直接在底层语言模型的嵌入空间中进行描述。例如,在“提示调整”方法中,通过在嵌入式输入中插入可训练变量来学习连续的提示。
提示调整(Prompt Tuning,P-tuning):将prompt加入到微调过程中,并且可以做到只对prompt部分的参数进行训练,同时保证整个预训练模型的参数固定不变。
NLP基础任务:深度学习模型能够利用NLP基础任务来学习基础语言知识,NLP基础任务例如有词性分析(POS)任务、语块分析(CHUNK)任务和依存句法分析(DEP)任务等。
NLP上层任务:深度学习模型在具体应用时学习的任务,例如有文本语义相关(Relatedness)任务、文本蕴涵(Entailment)任务和命名实体识别(NER)任务等。
NLP多任务学习:在NLP领域中,各个任务间经常是有层级关系的,例如从词法分析到句法分析到上层的实际应用任务,例如具体任务可以是:词性分析(POS)->语块分析(CHUNK)->依存句法分析(DEP)->文本语义相关(Relatedness)->文本蕴涵(Entailment),即可以让模型逐层学习,先学习词性、然后学习语块依次往下,最后应用到上层任务上。
Transformer层:Transformer是2017年的一篇论文《Attention is All YouNeed》提出的一种模型架构,提出了自注意力(attention)机制,这个attention操作的目的就是计算当前表达(token)与每个位置(position)之间的“相关度”,从而决定每个position的向量(vector)在最终该时间步(timestep)的上下文(context)中占的比重有多少。transformer模型中所使用的attention公式为其中,q为查询(query)向量矩阵,k为键(key)向量矩阵,v为值(value)向量矩阵。
Transformer的双向编码表示(Bidirectional Encoder Representation fromTransformers,BERT)语言模型:BERT利用掩码语言模型(Masked Language Model,MLM)进行预训练并且采用深层的双向Transformer组件来构建整个模型。
自2018年以来,预训练模型的体量不断增大,如T5、GPT-3、悟道等,大模型成为NLP领域一项非常重要的技术突破。同时,预训练模型微调过程中所需的硬件和数据需求也在不断增长,丰富的下游任务也使得预训练和微调阶段的设计更为复杂。目前,PromptTuning可以做到只对Prompt部分的参数进行训练,同时保证整个预训练模型的参数固定不变,为训练大模型提供了新的思路,但是在下游任务上的效果以及在小样本的学习能力上有待提升。
需要说明的是,目前针对Transformer层还没有本领域通用的中文解释,因此本申请采用Transformer来指代这种层结构或者模型。
为了进一步提升模型的效果和模型的小样本学习能力,本申请实施例提供了一种自然语言处理模型的训练方法,如图1中的方法100所示,其中,图1是本申请实施例提供的一例自然语言处理模型的训练方法的示意性流程图,方法100包括:
S110,获取预训练语言模型,预训练语言模型的每一层为采用自注意力机制的层结构。
在一个示例中,采用自注意力机制的层结构是transformer层,该预训练语言模型是bert模型。
根据上述内容对自注意力机制的介绍可知,采用了自注意力机制的层将查询向量、键向量和值向量作为隐藏层的输入来计算输出。
S120,获取每一层的第一可学习向量矩阵和第二可学习向量矩阵。
其中,第一可学习向量矩阵和第二可学习向量矩阵均用于学习NLP任务中的第一任务。
在一种可能的实施方式中,NLP任务包括NLP基础任务和NLP上层任务,其中,NLP基础任务包括词性分析任务、语块分析任务和依存句法分析任务;NLP上层任务包括命名实体识别任务、文本语义相关任务、文本蕴含任务和分类任务。
嵌入到模型的每一层的第一可学习向量矩阵和第二可学习向量矩阵可以看作提示(prompt)矩阵,在实际应用中,先嵌入用来学习NLP基础任务(例如,词性分析任务、语块分析任务、依存句法分析任务等)的可学习向量矩阵,为模型注入基础语言知识,然后再嵌入用来学习NLP上层任务的可学习向量矩阵,这样对模型学习NLP上层任务(例如,命名实体识别任务、文本语义相关任务、文本蕴含任务、分类任务等)有很大的帮助,进一步提升了模型小样本的学习能力,即提升了提示学习的效果。
由于该第一任务可以是该模型学习的第一个任务,也可以在学习该第一任务之前已经进行了其他任务的学习和训练,因此该方法中,每一层的第一可学习向量矩阵和第二可学习向量矩阵有两种含义:一种是经过拼接处理后的矩阵,另一种是首次嵌入该模型的未经过拼接处理的矩阵。
若每一层的第一可学习向量矩阵和第二可学习向量矩阵是经过拼接处理后的矩阵,出于方案灵活性的考虑,在第一可学习向量矩阵和第二可学习向量矩阵由已经学习了NLP基础任务的矩阵拼接得到的情况下,也可以用于学习NLP上层任务,例如命名实体识别任务、文本语义相关任务、文本蕴含任务、分类任务等。
在一个示例中,在每一层的第一可学习向量矩阵和第二可学习向量矩阵是经过拼接处理后的矩阵的情况下,有以下实现方式:
每一层的第一可学习向量矩阵由当前层的第三可学习向量矩阵与当前层之前参与的所有NLP任务训练得到的可学习向量矩阵拼接得到,每一层的第二可学习向量矩阵由当前层的第四可学习向量矩阵与当前层之前参与的所有NLP任务训练得到的可学习向量矩阵拼接得到,其中,第三可学习向量矩阵和第四可学习向量矩阵均被设置为学习第一任务。由于,第一可学习向量矩阵包含了第三可学习向量矩阵,第二可学习向量矩阵包含了第四可学习向量矩阵,我们也可以说第一可学习向量矩阵和第二可学习向量矩阵也是用于学习第一任务的矩阵。需要注意的是,在实际应用中,当前层之前参与的所有NLP任务训练得到的可学习向量矩阵虽然参与到了新任务的训练,但是相比于各自第一次被训练好时的状态,其参数的变化会被限制。进一步可选地,当前层的第三可学习向量矩阵与当前层之前参与的所有NLP任务训练得到的可学习向量矩阵拼接顺序有两种:一种是当前层的第三可学习向量矩阵在前,当前层之前参与的所有NLP任务训练得到的可学习向量矩阵在后;另一种是当前层的第三可学习向量矩阵在后,当前层之前参与的所有NLP任务训练得到的可学习向量矩阵在前。不同的拼接顺序会使得矩阵的相对位置不一样,影响到层输出的结果。
下面举例说明“前”或者“后”,假设有需要进行拼接处理的矩阵A和矩阵B,A=[a,b,c,d],B=[e,f,g,h],其中,a,b,c,d,e,f,g,h,每个为1*15维的向量矩阵,那么A在前,B在后拼接后的矩阵为[a,b,c,d,e,f,g,h],A在后,B在前拼接后的矩阵为[e,f,g,h,a,b,c,d],因此,“前”或者“后”应理解为拼接矩阵的逻辑顺序,而不是矩阵的空间位置。
S130,生成每一层的第一拼接键向量矩阵和第一拼接值向量矩阵。
具体地,第一拼接键向量矩阵由当前层的第一可学习向量矩阵与当前层的键向量拼接得到,第一拼接值向量矩阵由当前层的第二可学习向量矩阵与当前层的值向量拼接得到。
可选地,当前层的第一可学习向量矩阵与当前层的键向量的拼接顺序有两种,当前层的第二可学习向量矩阵与当前层的值向量拼接顺序有两种,具体内容参见S120中有关拼接顺序方案的说明,在此不再赘述。
S140,利用第一任务训练样本数据,训练和更新每一层的第一可学习向量矩阵和第二可学习向量矩阵。
具体地,向预训练语言模型输入第一任务的训练样本数据,根据每一层的第一拼接键向量矩阵、第一拼接值向量矩阵和当前层的查询向量计算当前层的输出,根据最后一层的输出和第一任务的损失函数得到每一层最优的第一可学习向量矩阵和第二可学习向量矩阵。
在S110~S140的具体实现中,本申请提供了以下公式以便于理解上述方案。
在一个示例中,预训练语言模型第1层的输出h1采用以下公式实现:
其中,q1为向模型输入的查询向量矩阵,k1为向模型输入的键向量矩阵,v1为向模型输入的值向量矩阵,表示拼接,prompt_K为与k1对应的可学习向量矩阵,prompt_V为与v1对应的可学习向量矩阵,为k1与prompt_K拼接后的向量矩阵,为v1与prompt_V拼接后的向量矩阵,f为当前层使用的函数,h1为当前层的输出。
在一个示例中,prompt_K在深度方向的大小和prompt_V在深度方向的大小均与预训练语言模型的隐藏层在深度方向的大小相同。
进一步地,预训练语言模型第n层的输出hn采用以下公式实现,其中,n为整数,n>1:
qn,kn,vn=hn-1Wq,hn-1Wk,hn-1Wv;
其中,hn-1为第n-1层的输出,Wq为当前层查询向量的线性变换矩阵,Wk为当前层键向量的线性变换矩阵,Wv为当前层值向量的线性变换矩阵,qn为当前层的查询向量,kn为当前层的键向量,vn为当前层的值向量,表示拼接,prompt_K为与kn对应的可学习向量矩阵,prompt_V为与vn对应的可学习向量矩阵,为kn与prompt_K拼接后的向量矩阵,为vn与prompt_V拼接后的向量矩阵,f为当前层使用的函数,hn为当前层的输出。
在一个示例中,prompt_K和prompt_V均为拼接处理后的矩阵,且拼接顺序有两种方式,prompt_K和prompt_V采用以下公式实现:
其中,promptc1_K表示被设置为学习当前NLP任务的与当前层的键向量对应的可学习向量矩阵,promptc2_K表示当前层之前参与的所有NLP任务训练得到的与当前层键向量对应的可学习向量矩阵,promptc1_V表示被设置为学习当前NLP任务的与当前层的值向量对应的可学习向量矩阵,promptc2_V表示当前层之前参与的所有NLP任务训练得到的与当前层值向量对应的可学习向量矩阵。
在一个示例中,在得到每一层最优的第一可学习向量矩阵和第二可学习向量矩阵之后,方法还包括:
设置每一层的第五可学习向量矩阵和第六可学习向量矩阵,第五可学习向量矩阵和第六可学习向量矩阵均用于学习NLP任务中的第二任务,第一任务与第二任务不同;
生成每一层的第一拼接可学习向量矩阵和第二拼接可学习向量矩阵,第一拼接可学习向量矩阵由当前层的第五可学习向量矩阵与当前层的第一可学习向量矩阵拼接得到,第二拼接可学习向量矩阵由当前层的第六可学习向量矩阵与当前层的第二可学习向量矩阵拼接得到;
生成每一层的第二拼接键向量矩阵和第二拼接值向量矩阵,第二拼接键向量矩阵由当前层的第一拼接可学习向量矩阵与当前层的键向量拼接得到,第二拼接值向量矩阵由当前层的第二拼接可学习向量矩阵与当前层的值向量拼接得到;
向预训练语言模型输入第二任务的训练样本数据,根据每一层的第二拼接键向量矩阵、第二拼接值向量矩阵和当前层的查询向量计算当前层的输出,根据最后一层的输出和第二任务的损失函数得到每一层最优的所述第一拼接可学习向量矩阵和所述第二拼接可学习向量矩阵,并且限制所述第一可学习向量矩阵的参数变化和所述第二可学习向量矩阵的参数变化。
需要注意的是,第一拼接可学习向量矩阵和所述第二拼接可学习向量矩阵虽然参与了第二任务的训练,但是由于在实际应用中,会限制经第一任务训练后的第一可学习向量矩阵参数的变化和第二可学习向量矩阵参数的变化,以防止遗忘。
可选地,当前层的第五可学习向量矩阵与当前层的第一可学习向量矩阵的拼接顺序有两种方式,当前层的第六可学习向量矩阵与当前层的第二可学习向量矩阵拼接顺序有两种方式,具体实现方式参见上述有关拼接顺序方案的说明,在此不再赘述。
在一个示例中,先按照词性分析任务、语块分析任务、依存句法分析任务的顺序进行相应可学习向量矩阵的嵌入和各自对应的基础任务的学习,然后再嵌入用于进行NLP上层任务学习的可学习向量矩阵,可学习向量矩阵在具备基础语言知识后,再进行上层任务的学习,有利于提升小样本学习的能力,进一步提升prompt效果。
在一种可能的实施方式中,预训练语言模型在学习首个NLP任务的情况下,损失函数包括当前NLP任务的损失(loss)部分与对当前NLP任务参数的限制部分的和;或者,
预训练语言模型在学习非首个NLP任务的情况下,损失函数包括当前NLP任务的损失(loss)部分、对当前NLP任务参数的限制部分与对之前参与的所有NLP任务已经训练好的参数的限制部分的和。
在一个示例中,在生成每一层的第一拼接可学习向量矩阵和第二拼接可学习向量矩阵之前,方法还包括:对第一可学习向量矩阵和第二可学习向量矩阵进行层标准化处理,和/或,对第五可学习向量矩阵和第六可学习向量矩阵进行层标准化处理。
其中,层标准化(Layer Normalization)是在每一层对单个样本的所有神经元节点进行规范化,可以提高模型的训练速度和精度,使得模型更加稳健。
在方法100中,在每一层中设置用于提示(prompt)作用的第一可学习向量矩阵和第二可学习向量矩阵,然后将第一可学习向量矩阵与当前层的键向量进行拼接处理得到的第一拼接键向量矩阵,以及将第二可学习向量矩阵与当前层的值向量进行拼接处理得到的第一拼接值向量矩阵,作为当前层的输入,使得第一可学习向量矩阵和第二可学习向量矩阵参与到每一层的训练和更新,由于原预训练语言模型的参数被固定,因此大大减少了训练参数。在向模型中输入NLP任务的训练样本后,能够使得第一可学习向量矩阵和第二可学习向量矩阵学习NLP任务,从而使得每一层的可学习的向量矩阵具有了NLP任务的特征。在实际应用中,先嵌入用来学习NLP任务中的基础任务(例如,词性分析任务、语块分析任务、依存句法分析任务等)的可学习向量矩阵,为模型注入基础语言知识,然后再嵌入用来学习NLP上层任务的可学习向量矩阵,这样对学习NLP上层任务(例如,命名实体识别任务、文本语义相关任务、文本蕴含任务、分类任务等)有很大的帮助,进一步提升了模型小样本的学习能力,即提升了提示学习的效果。
在方法100的基础上,本申请结合具体预训练模型和训练步骤,通过以下实施例对方法100进行详细举例说明。图2是本申请实施例提供的再一例自然语言处理模型的训练方法的示意性流程图。如图2中的方法200所示,以预训练语言模型为12层的bert(其中隐含层为768维)为例,该方法200可以包括:
S210,在bert模型中的每一层设置两个用于学习词性分析(pos)特征的向量矩阵。
具体地,假设该两个可学习的向量矩阵分别记为prompt_pos_K,prompt_pos_V,其中,prompt_pos_K的形状为15*768,prompt_pos_V的形状为15*768,prompt_pos_K和prompt_pos_V可为随机生成的向量矩阵,设置时的prompt_pos_K和prompt_pos_V可以相同,也可以不同。
可选地,不同层之间的可学习的向量矩阵的设置是独立的。
图3是本申请实施例提供的一例预训练语言模型架构示意图,下面结合图3对prompt_pos_K和prompt_pos_V进行介绍,以训练prompt_pos_K和prompt_pos_V的词性(pos)特征为例。如图3所示,在bert模型中的每一层设置prompt_pos_K和prompt_pos_V,prompt_pos_K可看做由h0,h1,…,hi(i=15)组成的向量矩阵,其中,h0到hi可看做是向量矩阵的虚拟表示,每个虚拟表示的形状为1*768;prompt_pos_V可看做由h0’,h1’,…,hi’(i=15)组成的向量矩阵,其中,h0’到hi’可看做是向量矩阵的虚拟表示,每个虚拟表示的形状为1*768。假设输入x=“Amazing!”,经过嵌入层处理后用向量表示输入x,向量为e([CLS])、e(Amazing)和e(!)(e为模型的嵌入函数),将该词向量输入到bert模型中,通过pos标注数据对rompt_pos_K和prompt_pos_V进行训练,由于bert模型的参数被冻结,即不参与训练,所以只对rompt_pos_K和prompt_pos_V进行训练。
可以看出,设置的prompt_pos_K和prompt_pos_V相当于是每一个transformer层的prompt。
需要说明的是,本申请对预训练语言模型不作限定,只要是采用了attention机制的就可以。
S220,利用词性分析任务的训练样本对所有层的可学习的向量矩阵进行训练。
在该方法中,主要包括两个设置:
设置一,每一层的输出按照以下方式设置:
第一层的输出采用以下公式(1)和公式(2)实现:
其中,q1为根据输入x确定的查询向量矩阵,k1为根据输入x确定的键(key)向量矩阵,v1为根据输入x确定的值(value)向量矩阵。表示拼接,为k1与第一层的prompt_pos_K拼接后的向量矩阵,例如,k1的形状为200*768,那么的形状为215*768,为v1与第一层的prompt_pos_V拼接后的向量矩阵,例如,v1的形状为200*768,那么的形状为215*768。Transformer-Layer()为当前transformer层的函数,h1为q1、和经过Transformer-Layer()处理后的输出,即为当前transformer层的输出。
下面举例说明“拼接”的含义:
假设输入到bert模型中的文本为“你是一个好学生”,一个transformer层的k向量对应[CLS]你是一个好学生[SEP],k向量和prompt_pos_K拼接后的形式如h0,h1,…,hi(i=15)[CLS]你是一个好学生[SEP],形状为215*768。
由于向量矩阵的拼接顺序不同,会使得相对位置不同,影响到transformer层的输出结果,因此,公式(1)还可以被公式(3)替换,公式(3)如下所示:
结合上述说明,第n层的输出采用以下公式(4)、公式(5)和公式(6)实现,其中n>1,n为整数:
qn,kn,vn=hn-1Wq,hn-1Wk,hn-1Wv (4)
其中,Wq、Wk和Wv分别是对应当前层的qn、kn和vn的线性变换矩阵,hn-1表示第n-1层的输出,qn为hn-1映射到Wq后的向量矩阵(即qn为hn-1和Wq的矩阵乘积),kn为hn-1映射到Wk后的向量矩阵,vn为hn-1映射到Wv后的向量矩阵。其他内容参见公式(1)和公式(2),在此不再赘述。
同理,根据向量矩阵的拼接顺序,公式(5)还可以被公式(7)替换,公式(7)如下所示:
需要说明的是,公式(5)和公式(7)中的prompt_pos_K和prompt_pos_V虽然没有表示层的位置,但是应理解为指的是当前层被设置的两个可学习的向量矩阵。
设置二,损失函数按照以下方式设置:
根据模型最后一层的输出计算损失(loss),prompt_pos_K、prompt_pos_V以及当前任务的全连接层进行了训练(需要注意的是,不同任务的全连接层是不同的),而bert模型中的参数被固定。其中,计算loss如以下公式(8)所示:
其中,θpos=(Wpos,bpos,prompt_pos_K,prompt_pos_V),表示与pos任务相关联的模型参数集,c表示类别,Wpos为全连接层的权重矩阵,bpos为偏置向量。J1(θpos)为loss的输出,为loss,是pos的学习目标,λ||θpos||2是L2范数的正则化项,是对pos层的参数限制,λ是L2-范数正则化超参数,可根据需要进行配置。
在一个示例中,将prompt_pos_K和prompt_pos_V经过层标准化(LayerNormalization)处理后,再分别与当前层的k向量矩阵和v向量矩阵进行拼接。
需要说明的是,上述有关向量矩阵形状的说明为示例性说明,本申请对此不作限定。
在方法200中,将当前层的可学习的向量矩阵(即用于提示(prompt)作用的可学习向量矩阵)分别与当前层的k向量矩阵和v向量矩阵拼接,然后作为当前层的输入,从而使得当前层的可学习的向量矩阵进行训练,由于只对pos层的参数进行训练,bert模型中的参数被冻结,减少了训练参数。同时由于利用了pos任务的训练样本,使得可学习的向量矩阵具有了词性特征,模型具备了基础语言知识,有利于后续上层NLP任务中小样本的学习,提升了提示学习的效果。
在一种可能的实施方式中,方法200中的pos数据也可替换为语块(chunk)数据,或其他NLP基础任务的数据,从而让可学习的向量矩阵学习到语块特征或者其他基础任务的特征,下面以chunk任务的训练样本为例结合方法200进行方法300的说明,方法300可以包括:
S310,在bert模型中的每一层设置两个用于学习语块分析(chunk)特征的向量矩阵。
具体地,假设该两个可学习的向量矩阵分别记为prompt_chunk_K,prompt_chunk_V,其中,prompt_chunk_K的形状为18*768,prompt_chunk_V的形状为18*768,prompt_chunk_K和prompt_chunk_V可为随机生成的向量矩阵,设置时的prompt_chunk_K和prompt_chunk_V可以相同,也可以不同。
此任务下的预训练语言模型架构示意图参见图3,在此不再赘述。
S320,利用语块分析任务的训练样本对所有层的可学习的向量矩阵进行训练。
在该方法中,主要包括两个设置:
设置一,每一层的输出按照以下方式设置:
第一层的输出采用以下公式(9)和公式(10)实现:
由于向量矩阵的拼接顺序不同,会使得相对位置不同,影响到transformer层的输出结果,因此,公式(9)还可以被公式(11)替换,公式(11)如下所示:
结合上述说明,第n层的输出采用以下公式(12)、公式(13)和公式(14)实现,其中n>1,n为整数:
qn,kn,vn=hn-1Wq,hn-1Wk,hn-1Wv (12)
同理,根据向量矩阵的拼接顺序,公式(13)还可以被公式(15)替换,公式(15)如下所示:
设置二,损失函数按照以下方式设置:
根据模型最后一层的输出计算损失(loss),12层的bert参数是固定的,prompt_chunk_K、prompt_chunk_V以及当前任务的全连接层进行了训练(需要注意的是,不同任务的全连接层是不同的)。其中,计算loss如以下公式(16)所示:
其中,θchk=(Wchk,bchk,prompt_chunk_K,prompt_chunk_V),上述各个公式的其他内容参见上述公式(1)至公式(8)中的说明,在此不再赘述。总的来说,为chunk的学习目标,+λ||θchk||2是对chunk层的参数限制。
在一个示例中,将prompt_chunk_K和prompt_chunk_V经过层标准化(LayerNormalization)处理后,再分别与当前层的k向量矩阵和v向量矩阵进行拼接。
图4是本申请实施例提供的又一例自然语言处理模型的训练方法的示意性流程图,如图4中的方法400所示,在一种可能的实施方式中,在方法200中利用pos数据训练好的可学习向量矩阵的基础上,嵌入用于学习chunk的可学习向量矩阵,该方法400包括:
S410的内容即S210的内容,S420的内容即S220的内容,即在进行S210和S220后,进行S430和S440。
S430,在模型中的每一层设置两个用于学习语块特征的向量矩阵。
具体地,该两个可学习的向量矩阵分别记为prompt_chunk_K,prompt_chunk_V,其中,prompt_chunk_K的形状为18*768,prompt_chunk_V的形状为18*768,prompt_chunk_K和prompt_chunk_V可为随机生成的向量矩阵,设置时的prompt_chunk_K和prompt_chunk_V可以相同,也可以不同。
可选地,不同层之间的可学习的向量矩阵的设置是独立的。
由于方法200中训练的模型已经含有prompt_pos_K和prompt_pos_V,维度分别为15*768,在此基础上嵌入prompt_chunk_K和prompt_chunk_V,相当于将训练好的模型的参数进行了迁徙。
图5是本申请实施例提供的再一例预训练语言模型架构示意图,下面结合图5对prompt_chunk_K和prompt_chunk_V进行介绍。如图5所示,prompt_chunk_K可看做由hi+1,hi+2,…,hj(j=i+18)组成的向量矩阵,prompt_chunk_V可看做由hi+1’,hi+2’,…,hj’组成的向量矩阵,该方法中只对prompt_chunk_K和prompt_chunk_V进行训练。其它内容参见图3,在此不再赘述。
将prompt_chunk_K和prompt_pos_K组合的向量矩阵定义为prompt_K,即,如图5所示,prompt_K的形状为33*768(或称为维度为[33,768]),由于拼接顺序不同,会使得向量矩阵的相对位置不一样,会影响到transformer层的输出,因此prompt_K的另一种计算方式为类似地,prompt_chunk_V和prompt_pos_V组合的向量矩阵定义为prompt_V,prompt_V的计算方式有或者
在一个示例中,将prompt_chunk_K和prompt_chunk_V经过层标准化处理后再分别与prompt_pos_K和prompt_pos_V进行拼接。
在一个示例中,将prompt_pos_K和prompt_pos_V经过层标准化处理后再分别与prompt_chunk_K和prompt_chunk_V进行拼接。
S440,利用chunk任务的训练样本对所有层的可学习的向量矩阵进行训练。
需要注意,此时的可学习的向量矩阵指的是拼接后的prompt_K和prompt_V。
在该方法中,主要包括两个设置:
设置一,每一层的输出按照以下方式设置:
第一层的输出采用以下公式(17)和公式(18)实现:
由于向量矩阵的拼接顺序不同,会使得相对位置不同,影响到transformer层的输出结果,因此,公式(17)还可以被公式(19)替换,公式(19)如下所示:
结合上述说明,第n层的输出采用以下公式(20)、公式(21)和公式(22)实现,其中n>1,n为整数:
qn,kn,vn=hn-1Wq,hn-1Wk,hn-1Wv (20)
同理,根据向量矩阵的拼接顺序,公式(21)还可以被公式(23)替换,公式(23)如下所示:
上述公式的内容参见方法200中的有关公式的说明,在此不再赘述。
设置二,损失函数按照以下方式设置:
根据模型最后一层的输出计算损失(loss),训练prompt_chunk_K、prompt_chunk_V以及当前任务的全连接层。其中,计算loss如公式(24)所示:
其中,θchk=(Wchk,bchk,prompt_pos_K,prompt_pos_V,prompt_chunk_K,prompt_chunk_V),Wchk是当前任务的全连接层的权重矩阵,bchk为当前任务的偏置向量,θpos表示当前任务的pos层的参数,θ′pos表示上一个任务(在本实施例中为方法200中的pos任务)训练好后的pos层的参数,δ||θpos-θ′pos||2是连续正则化项,λ和δ参数的大小可以根据需要进行配置。总的来说,公式(24)中的第一部分是当前chunk任务的学习目标,第二部分是对当前任务的chunk层的参数限制,即prompt_chunk_K,、prompt_chunk_V和最后的全连接层,第三部分是对pos层参数的限制,防止pos的参数变化过大,是防止遗忘的手段,保留了pos任务时的训练成果。公式(24)的其他部分的内容参见方法200中相关公式的说明,在此不再赘述。可以看出,prompt_pos_K,prompt_pos_V,prompt_chunk_K,prompt_chunk_V全部都参与到了chunk任务的训练,但是为了防止遗忘,将prompt_pos_K和prompt_pos_V的参数的变化进行了限制。
方法400中,在已经具备词性特征的可学习向量矩阵上再次嵌入用于学习chunk任务的可学习向量矩阵prompt_chunk_K和prompt_chunk_V,然后将prompt_chunk_K和上个pos任务训练后的prompt_pos_K拼接,将prompt_chunk_V和上个pos任务训练后的prompt_pos_V拼接,将当前层新的可学习向量矩阵(即prompt_K和prompt_V)分别与当前层的k向量矩阵和v向量矩阵拼接后,作为当前transformer层的输入,最后利用损失函数对prompt_chunk_K和prompt_chunk_V进行训练和更新。由于只对可学习向量矩阵的参数进行训练,bert模型中的参数被冻结,大大减少了训练参数。同时可学习的向量矩阵具有词性特征和语块特征,模型具备了基础语言知识,有利于后续上层NLP任务中小样本的学习,提升了提示学习的效果。
在一个示例中,还可以在具备语块特征的prompt上再次嵌入用于学习pos任务的可学习向量矩阵prompt_pos_K和prompt_pos_V,即在方法300训练好的模型上进行pos任务的学习,然后将prompt_pos_K和上个chunk任务训练后的prompt_chunk_K拼接,将prompt_pos_V和上个chunk任务训练后的prompt_chunk_V拼接,将当前层新的prompt分别与当前层的k向量矩阵和v向量矩阵拼接后,作为当前transformer层的输入,最后利用损失函数对prompt_pos_K和prompt_pos_V进行训练和更新。具体设置根据方法400进行类推即可,在此不再赘述。
图6是本申请实施例提供的又一例自然语言处理模型的训练方法的示意性流程图,如图6中的方法500所示,在一种可能的实施方式中,在方法400中利用chunk数据训练好的可学习向量矩阵的基础上,再次嵌入用于学习依存句法分析(dep)特征的可学习向量矩阵,该方法400包括:
S510~S540的内容分别为S410~S440的内容。
S550,在模型中的每一层设置两个用于学习依存句法分析(dep)特征的向量矩阵。
具体地,该两个可学习的向量矩阵分别记为prompt_dp_K,prompt_dp_V,其中,prompt_dp_K的形状为20*768,prompt_chunk_V的形状为20*768,prompt_dp_K和prompt_dp_V可为随机生成的向量矩阵,设置时的prompt_dp_K和prompt_dp_V可以相同,也可以不同。
可选地,不同层之间的可学习的向量矩阵的设置是独立的。
由于方法400中训练的模型已经含有prompt_pos_K、prompt_pos_V、prompt_chunk_K和prompt_chunk_V,维度分别为15*768、15*768、18*768、18*768,在此基础上嵌入prompt_dp_K和prompt_dp_V,相当于将训练好的模型的参数进行了迁徙。
方法500中的预训练语言模型架构示意图参见图3和图5,在此不再赘述。
在方法400的基础上,将prompt_dp_K与上一个chunk任务训练好的prompt_K拼接,生成新的prompt_K,其形状为53*768,即,或者同理,将prompt_dp_V与上一个chunk任务训练好的prompt_V拼接,生成新的prompt_V,其形状为53*768,即,或者
在一个示例中,将prompt_dp_K和prompt_dp_V经过层标准化处理后再进行拼接处理。
在一个示例中,将原来的prompt_K和prompt_V经过层标准化处理后再进行拼接处理。
S560,利用依存句法分析任务的训练样本对所有层的可学习的向量矩阵进行训练。
在该方法中,主要包括两个设置:
设置一,每一层的输出按照以下方式设置:
第一层的输出采用以下公式(25)和公式(26)实现:
由于向量矩阵的拼接顺序不同,会使得相对位置不同,影响到transformer层的输出结果,因此,公式(25)还可以被公式(27)替换,公式(27)如下所示:
结合上述说明,第n层的输出采用以下公式(28)、公式(29)和公式(30)实现,其中n>1,n为整数:
qn,kn,vn=hn-1Wq,hn-1Wk,hn-1Wv (28)
同理,根据向量矩阵的拼接顺序,公式(29)还可以被公式(31)替换,公式(31)如下所示:
可以看出,由于prompt_K和prompt_V的提出,使得公式(25)至公式(31)的表现形式与公式(17)至公式(23)的表现形式相同,而每项在不同任务时的数据是不同的。例如,公式(25)至公式(31)中的prompt_K包括prompt_dp_K,而公式(17)至公式(23)中的prompt_K不包括prompt_dp_K。
上述公式的内容参见方法400中的有关公式的说明,在此不再赘述。
设置二,损失函数按照以下方式设置:
根据模型最后一层的输出计算损失(loss),训练prompt_dp_K、prompt_dp_V以及当前任务的全连接层。其中,计算loss如公式(32)所示:
其中,θdep=(Wdep,bdep,prompt_pos_K,prompt_pos_V,prompt_chunk_K,prompt_chunk_V,prompt_dp_K,prompt_dp_V),Wdep是当前任务的全连接层的权重矩阵,bdep为当前任务的偏置向量,θchk表示当前任务的chunk层参数,θ′chk表示上一个任务(在本实施例中为方法400中的chunk任务)训练好后的chunk层参数,其他内容参见公式(8)和公式(16)的相关说明,在此不再赘述。总的来说,公式(32)中的第一部分为当前任务dep的学习目标。第二部分是对当前任务的dep层的参数限制,即prompt_dep_K、prompt_dep_V和最后的全连接层,第三部分是对之前任务训练好的参数的限制,防止参数变化过大,是防止遗忘的手段。可以看出,prompt_pos_K,prompt_pos_V,prompt_chunk_K,prompt_chunk_V,prompt_dp_K,prompt_dp_V全部都参与到了依存句法分析任务的训练,但是为了防止遗忘,将prompt_pos_K,prompt_pos_V、prompt_chunk_K和prompt_chunk_V的参数的变化进行了限制。
方法500中,在已经具备词性特征和语块特征的可学习向量矩阵上再次嵌入用于学习依存句法(dep)任务的可学习向量矩阵prompt_dp_K和prompt_dp_V,然后将prompt_dp_K和上个chunk任务训练后的prompt_K拼接,从而生成新的prompt_K。将prompt_dep_V和上个chunk任务训练后的prompt_V拼接,从而生成新的prompt_V。将当前层新的prompt分别与当前层的k向量矩阵和v向量矩阵拼接后,作为当前transformer层的输入,最后利用损失函数对prompt_dp_K和prompt_dp_V进行训练和更新。由于只对可学习向量矩阵的参数进行训练,bert模型中的参数被冻结,大大减少了训练参数。同时可学习的向量矩阵具有词性特征、语块特征和依存句法特征,模型具备了基础语言知识,有利于后续上层NLP任务中小样本的学习,提升了提示学习的效果。
可以看出,在方法500中的模型学习任务的顺序是词性分析(POS)->语块分析(CHUNK)->依存句法分析(DEP),本申请对学习任务的顺序不作限制,例如也可以是语块分析(CHUNK)->词性分析(POS)->依存句法分析(DEP)。进一步地,在方法500的基础上还可以继续学习其他NLP任务,例如文本语义相关(Relatedness)和文本蕴涵(Entailment)等。
在一种可能的实施方式中,模型中的prompt进行了NLP基础任务的学习后,还可以继续进行上层任务的训练,下面以分类任务为例进行说明。图7是本申请实施例提供的又一例自然语言处理模型的训练方法的示意性流程图,图7中的方法600包括:
S610~S660的内容即S510~S560的内容。
S670,在模型中的每一层设置两个用于学习分类任务特征的向量矩阵。
具体地,该两个可学习的向量矩阵分别记为prompt_cls_K,prompt_cls_V,其中,prompt_cls_K的形状为15*768,prompt_cls_V的形状为15*768,prompt_cls_K和prompt_cls_V可为随机生成的向量矩阵,设置时的prompt_cls_K和prompt_cls_V可以相同,也可以不同。
可选地,不同层之间的可学习的向量矩阵的设置是独立的。
由于方法500中训练的模型已经含有prompt_pos_K、prompt_pos_V、prompt_chunk_K、prompt_chunk_V、prompt_dp_K和prompt_dp_V,维度分别为15*768、15*768、18*768、18*768,20*768,20*768在此基础上嵌入prompt_cls_K和prompt_cls_V,相当于将训练好的模型的参数进行了迁徙。
方法600中的预训练语言模型架构示意图参见图3和图5,在此不再赘述。
在方法500的基础上,将prompt_cls_K与上一个依存句法任务训练好的prompt_K拼接,生成新的prompt_K,其形状为68*768,即,或者同理,将prompt_cls_V与上一个依存句法任务训练好的prompt_V拼接,生成新的prompt_V,其形状为68*768,即,或者
在一个示例中,将prompt_cls_K和prompt_cls_V经过层标准化处理后再进行拼接处理。
S680,利用分类任务的训练样本对所有层的可学习的向量矩阵进行训练。
在该方法中,主要包括两个设置:
设置一,每一层的输出按照以下方式设置:
第一层的输出采用以下公式(33)和公式(34)实现:
由于向量矩阵的拼接顺序不同,会使得相对位置不同,影响到transformer层的输出结果,因此,公式(33)还可以被公式(35)替换,公式(35)如下所示:
结合上述说明,第n层的输出采用以下公式(36)、公式(37)和公式(38)实现,其中n>1,n为整数:
qn,kn,vn=hn-1Wq,hn-1Wk,hn-1Wv (36)
同理,根据向量矩阵的拼接顺序,公式(37)还可以被公式(39)替换,公式(39)如下所示:
可以看出,由于prompt_K和prompt_V的提出,使得公式(33)至公式(39)的表现形式与公式(17)至公式(23)的表现形式相同,而每项在不同任务时的数据是不同的。例如,公式(33)至公式(39)中的prompt_K包括prompt_cls_K,而公式(17)至公式(23)中的prompt_K不包括prompt_cls_K。
上述公式的内容参见方法400中的有关公式的说明,在此不再赘述。
设置二,损失函数按照以下方式设置:
根据模型最后一层的输出计算损失(loss),训练prompt_cls_K、prompt_cls_V以及当前任务的全连接层。其中,计算loss如公式(40)所示:
其中,θcls=(Wcls,bcls,prompt_pos_K,prompt_pos_V,prompt_chunk_K,prompt_chunk_V,prompt_dp_K,prompt_dp_V,prompt_cls_K,prompt_cls_V),Wcls是当前任务的全连接层的权重矩阵,bcls为当前任务的偏置向量。公式(40)中的第一部分为当前分类任务的学习目标,第二部分是对分类任务的参数限制,即prompt_cls_K、prompt_cls_V和最后的全连接层,第三部分是对之前任务训练好的参数的限制,防止参数变化过大,是防止遗忘的手段。公式的其他内容参见方法400中相关公式的说明,在此不再赘述。可以看出,prompt_pos_K,prompt_pos_V,prompt_chunk_K,prompt_chunk_V,prompt_dp_K,prompt_dp_V,prompt_cls_K,prompt_cls_V全部都参与到了分类任务的训练,但是为了防止遗忘,将prompt_pos_K、prompt_pos_V、prompt_chunk_K、prompt_chunk_V、prompt_dp_K和prompt_dp_V的参数的变化进行了限制。
方法600中,在已经具备词性特征、语块特征和依存句法特征的可学习向量矩阵上再次嵌入用于学习分类任务的可学习向量矩阵prompt_cls_K和prompt_cls_V,然后将prompt_cls_K和上个依存句法任务训练后的prompt_K拼接,从而生成新的prompt_K。将prompt_cls_V和上个依存句法任务训练后的prompt_V拼接,从而生成新的prompt_V。将当前层新的prompt分别与当前层的k向量矩阵和v向量矩阵拼接后,作为当前transformer层的输入,最后利用损失函数对prompt_cls_K和prompt_cls_V进行训练和更新。该方法使得在减少了训练参数的同时,在模型具备词性特征、语块特征和依存句法特征等这些基础语言知识特征的基础上,学习分类任务,提升了小样本的学习能力,即提升了提示学习的效果。
在上述自然语言处理模型的训练方法的基础上,本申请还提供了一种自然语言处理模型的训练装置,该装置包括:
第一模块,用于获取预训练语言模型,预训练语言模型的每一层为采用自注意力机制的层结构;
第二模块,用于获取每一层的第一可学习向量矩阵和第二可学习向量矩阵,第一可学习向量矩阵和第二可学习向量矩阵均用于学习NLP任务中的第一任务;
第三模块,用于生成每一层的第一拼接键向量矩阵和第一拼接值向量矩阵,第一拼接键向量矩阵由当前层的第一可学习向量矩阵与当前层的键向量拼接得到,第一拼接值向量矩阵由当前层的第二可学习向量矩阵与当前层的值向量拼接得到;
第四模块,用于向预训练语言模型输入第一任务的训练样本数据,根据每一层的第一拼接键向量矩阵、第一拼接值向量矩阵和当前层的查询向量计算当前层的输出,根据最后一层的输出和第一任务的损失函数得到每一层最优的第一可学习向量矩阵和第二可学习向量矩阵。
该装置的其他实现方式参见方法100至方法600中的说明,在此不再赘述。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种自然语言处理模型的训练方法,其特征在于,包括:
获取预训练语言模型,所述预训练语言模型的每一层为采用自注意力机制的层结构;
获取每一层的第一可学习向量矩阵和第二可学习向量矩阵,所述第一可学习向量矩阵和所述第二可学习向量矩阵均用于学习NLP任务中的第一任务;
生成每一层的第一拼接键向量矩阵和第一拼接值向量矩阵,所述第一拼接键向量矩阵由当前层的第一可学习向量矩阵与当前层的键向量拼接得到,所述第一拼接值向量矩阵由当前层的第二可学习向量矩阵与当前层的值向量拼接得到;
向所述预训练语言模型输入所述第一任务的训练样本数据,根据每一层的第一拼接键向量矩阵、第一拼接值向量矩阵和当前层的查询向量计算当前层的输出,根据最后一层的输出和所述第一任务的损失函数得到每一层最优的第一可学习向量矩阵和第二可学习向量矩阵。
2.根据权利要求1所述的方法,其特征在于,所述每一层的第一可学习向量矩阵由当前层的第三可学习向量矩阵与当前层之前参与的所有NLP任务训练得到的可学习向量矩阵拼接得到,所述每一层的第二可学习向量矩阵由当前层的第四可学习向量矩阵与当前层之前参与的所有NLP任务训练得到的可学习向量矩阵拼接得到,其中,所述第三可学习向量矩阵和所述第四可学习向量矩阵均为被设置为学习所述第一任务的向量矩阵。
3.根据权利要求1或2所述的方法,其特征在于,在得到每一层最优的第一可学习向量矩阵和第二可学习向量矩阵之后,所述方法还包括:
设置每一层的第五可学习向量矩阵和第六可学习向量矩阵,所述第五可学习向量矩阵和所述第六可学习向量矩阵均用于学习所述NLP任务中的第二任务,所述第一任务与所述第二任务不同;
生成每一层的第一拼接可学习向量矩阵和第二拼接可学习向量矩阵,所述第一拼接可学习向量矩阵由当前层的第五可学习向量矩阵与当前层的第一可学习向量矩阵拼接得到,所述第二拼接可学习向量矩阵由当前层的第六可学习向量矩阵与当前层的第二可学习向量矩阵拼接得到;
生成每一层的第二拼接键向量矩阵和第二拼接值向量矩阵,所述第二拼接键向量矩阵由当前层的第一拼接可学习向量矩阵与当前层的键向量拼接得到,所述第二拼接值向量矩阵由当前层的第二拼接可学习向量矩阵与当前层的值向量拼接得到;
向所述预训练语言模型输入所述第二任务的训练样本数据,根据每一层的第二拼接键向量矩阵、第二拼接值向量矩阵和当前层的查询向量计算当前层的输出,根据最后一层的输出和所述第二任务的损失函数得到每一层最优的所述第一拼接可学习向量矩阵和所述第二拼接可学习向量矩阵,并且限制所述第一可学习向量矩阵的参数变化和所述第二可学习向量矩阵的参数变化。
4.根据权利要求1或2所述的方法,其特征在于,所述NLP任务包括NLP基础任务和NLP上层任务,所述NLP基础任务包括词性分析任务、语块分析任务和依存句法分析任务,所述NLP上层任务包括命名实体识别任务、文本语义相关任务、文本蕴含任务和分类任务。
5.根据权利要求1所述的方法,其特征在于,所述预训练语言模型第1层的输出h1采用以下公式实现:
其中,q1为向模型输入的查询向量矩阵,k1为向模型输入的键向量矩阵,v1为向模型输入的值向量矩阵,表示拼接,prompt_K为与k1对应的可学习向量矩阵,prompt_V为与v1对应的可学习向量矩阵,为k1与prompt_K拼接后的向量矩阵,为v1与prompt_V拼接后的向量矩阵,f为当前层使用的函数,h1为当前层的输出;
所述预训练语言模型第n层的输出hn采用以下公式实现,其中,n为整数,n>1:
qn,kn,vn=hn-1Wq,hn-1Wk,hn-1Wv;
7.根据权利要求1所述的方法,其特征在于,所述预训练语言模型在学习首个NLP任务的情况下,损失函数包括当前NLP任务的损失(loss)部分与对当前NLP任务参数的限制部分的和;或者,
所述预训练语言模型在学习非首个NLP任务的情况下,损失函数包括当前NLP任务的损失(loss)部分、对当前NLP任务参数的限制部分与对之前参与的所有NLP任务已经训练好的参数的限制部分的和。
8.根据权利要求2所述的方法,其特征在于,所述当前层之前参与的所有NLP任务为NLP基础任务,所述第一任务为NLP上层任务。
9.根据权利要求3所述的方法,其特征在于,在生成每一层的第一拼接可学习向量矩阵和第二拼接可学习向量矩阵之前,所述方法还包括:
对所述第一可学习向量矩阵和所述第二可学习向量矩阵进行层标准化处理,和/或,
对所述第五可学习向量矩阵和所述第六可学习向量矩阵进行层标准化处理。
10.一种自然语言处理模型的训练装置,其特征在于,包括:
第一模块,用于获取预训练语言模型,所述预训练语言模型的每一层为采用自注意力机制的层结构;
第二模块,用于获取每一层的第一可学习向量矩阵和第二可学习向量矩阵,所述第一可学习向量矩阵和所述第二可学习向量矩阵均用于学习NLP任务中的第一任务;
第三模块,用于生成每一层的第一拼接键向量矩阵和第一拼接值向量矩阵,所述第一拼接键向量矩阵由当前层的第一可学习向量矩阵与当前层的键向量拼接得到,所述第一拼接值向量矩阵由当前层的第二可学习向量矩阵与当前层的值向量拼接得到;
第四模块,用于向所述预训练语言模型输入所述第一任务的训练样本数据,根据每一层的第一拼接键向量矩阵、第一拼接值向量矩阵和当前层的查询向量计算当前层的输出,根据最后一层的输出和所述第一任务的损失函数得到每一层最优的第一可学习向量矩阵和第二可学习向量矩阵。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210272019.6A CN114625840A (zh) | 2022-03-18 | 2022-03-18 | 一种自然语言处理模型的训练方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210272019.6A CN114625840A (zh) | 2022-03-18 | 2022-03-18 | 一种自然语言处理模型的训练方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114625840A true CN114625840A (zh) | 2022-06-14 |
Family
ID=81902437
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210272019.6A Pending CN114625840A (zh) | 2022-03-18 | 2022-03-18 | 一种自然语言处理模型的训练方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114625840A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115438176A (zh) * | 2022-11-08 | 2022-12-06 | 阿里巴巴达摩院(杭州)科技有限公司 | 下游任务模型生成及任务执行的方法和设备 |
-
2022
- 2022-03-18 CN CN202210272019.6A patent/CN114625840A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115438176A (zh) * | 2022-11-08 | 2022-12-06 | 阿里巴巴达摩院(杭州)科技有限公司 | 下游任务模型生成及任务执行的方法和设备 |
CN115438176B (zh) * | 2022-11-08 | 2023-04-07 | 阿里巴巴达摩院(杭州)科技有限公司 | 下游任务模型生成及任务执行的方法和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Huang et al. | Chordripple: Recommending chords to help novice composers go beyond the ordinary | |
Karimi et al. | Creative sketching partner: an analysis of human-AI co-creativity | |
Horgan et al. | Connectionism and the Philosophy of Psychology | |
Hayashi et al. | Latent relation language models | |
KR102352251B1 (ko) | 자질 선별을 통한 고성능 기계독해 방법 | |
Gū et al. | Top-down tree structured decoding with syntactic connections for neural machine translation and parsing | |
Bai et al. | Learning to copy coherent knowledge for response generation | |
Dahlstedt | Between material and ideas: A process-based spatial model of artistic creativity | |
Huang et al. | C-Rnn: a fine-grained language model for image captioning | |
CN112069827B (zh) | 一种基于细粒度主题建模的数据到文本生成方法 | |
CN114896371A (zh) | 一种自然语言处理模型的训练方法和装置 | |
CN116186216A (zh) | 基于知识增强和双图交互的问题生成方法及系统 | |
CN114625840A (zh) | 一种自然语言处理模型的训练方法和装置 | |
Li et al. | Tmsa: a mutual learning model for topic discovery and word embedding | |
Bulhak | On the simulation of postmodernism and mental debility using recursive transition networks | |
JP7058438B2 (ja) | 対話応答システム、モデル学習装置および対話装置 | |
Liu et al. | Personalized multimodal feedback generation in education | |
CN114662659B (zh) | 一种基于多阶段迁移学习策略综合的众包文本集成方法 | |
Cambouropoulos et al. | Cognitive musicology and artificial intelligence: Harmonic analysis, learning, and generation | |
Chen et al. | Static correlative filter based convolutional neural network for visual question answering | |
Gupta et al. | Implementation of artificial intelligence based chatbot system with long term memory | |
US20240184982A1 (en) | Hierarchical text generation using language model neural networks | |
Wołk et al. | Deep learning and sub-word-unit approach in written art generation | |
Liu | Prompt-tuning in Controlled Dialogue Generation | |
Jain et al. | Semantic Parser Using a Sequence-to-Sequence RNN Model to Generate Logical Forms |
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 |