CN111667069B - 预训练模型压缩方法、装置和电子设备 - Google Patents
预训练模型压缩方法、装置和电子设备 Download PDFInfo
- Publication number
- CN111667069B CN111667069B CN202010522463.XA CN202010522463A CN111667069B CN 111667069 B CN111667069 B CN 111667069B CN 202010522463 A CN202010522463 A CN 202010522463A CN 111667069 B CN111667069 B CN 111667069B
- Authority
- CN
- China
- Prior art keywords
- model
- hidden layer
- hidden
- training
- clustering
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种预训练模型压缩方法、装置和电子设备。该方法包括:确定指定隐藏层的第一输出向量和至少两层隐藏层中至少部分隐藏层各自的第二输出向量;基于第一输出向量的聚类结果和各第二输出向量的聚类结果,确定至少部分隐藏层各自的影响占比;以及基于影响占比对预训练模型进行压缩,以减少至少两层隐藏层的层数;其中,指定隐藏层与预训练模型的最后一层隐藏层之间的距离小于至少部分隐藏层与最后一层隐藏层之间的平均距离。
Description
技术领域
本公开涉及人工智能技术领域,更具体地,涉及一种预训练模型压缩方法、装置和电子设备。
背景技术
随着信息技术的不断发展,人工智能技术越来越普及,神经网络作为人工智能技术的重要组成也越来越受到重视。
部分层数较多的神经网络,如预训练模型(Bidirectional EncoderRepresentations from Transformers,简称BERT),因为有较深的网络结构和庞大的参数规模,在计算过程中的计算量较大,难以满足上线的时延要求,所以需要对模型进行压缩。相关技术中,对模型进行压缩的方法主要包括:量化、剪枝和蒸馏中至少一种。
在实现本公开构思的过程中,发明人发现相关技术至少存在如下问题:相关技术中在使用这些方法进行预训练模型压缩时,仅考虑了模型的表达能力,并没有把下游的微调任务考虑进来,导致在特定领域的任务中仍然可能存在参数冗余的问题。
发明内容
有鉴于此,本公开提供了一种有助于改善参数冗余问题的预训练模型压缩方法、装置和电子设备。
本公开的一个方面提供了一种预训练模型压缩方法,该方法包括:首先,确定指定隐藏层的第一输出向量和至少两层隐藏层中至少部分隐藏层各自的第二输出向量。然后,基于各第一输出向量的聚类结果和第二输出向量的聚类结果,确定至少部分隐藏层各自的影响占比。接着,基于影响占比对预训练模型进行压缩,以减少至少两层隐藏层的层数。其中,指定隐藏层与模型的最后一层隐藏层之间的距离小于至少部分隐藏层与最后一层隐藏层之间的平均距离。
本公开实施例提供的预训练模型压缩方法,在确定至少两层隐藏层中至少部分隐藏层各自的第一输出向量和指定隐藏层的第二输出向量之后,基于各第一输出向量的聚类结果相对于第二输出向量的聚类结果的影响占比,确定出相对于下游微调任务数据集最重要的隐藏层,这样便于基于各隐藏层相对于下游微调任务数据集的重要程度对预训练模型进行压缩,在满足特定领域的任务对预训练模型输出结果准确度要求的基础上,有效减少隐藏层的层数,减小参数规模,降低预训练模型结构复杂度,提升运算效率。
本公开的一个方面提供了一种预训练模型压缩装置,包括:输出向量确定模块、影响占比确定模块和模型压缩模块。其中,输出向量确定模块用于确定指定隐藏层的第一输出向量和至少两层隐藏层中至少部分隐藏层各自的第二输出向量,其中,指定隐藏层与模型的最后一层隐藏层之间的距离小于至少部分隐藏层与最后一层隐藏层之间的平均距离。影响占比确定模块用于基于第一输出向量的聚类结果和各第二输出向量的聚类结果,确定至少部分隐藏层各自的影响占比。模型压缩模块用于基于影响占比对预训练模型进行压缩,以减少至少两层隐藏层的层数。
本公开的另一方面提供了一种电子设备,包括一个或多个处理器以及存储装置,其中,存储装置用于存储可执行指令,可执行指令在被处理器执行时,实现如上所述的方法。
本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,指令在被执行时用于实现如上所述的方法。
本公开的另一方面提供了一种计算机程序,计算机程序包括计算机可执行指令,指令在被执行时用于实现如上所述的方法。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的预训练模型压缩方法、装置和电子设备的应用场景;
图2示意性示出了根据本公开实施例的可以应用预训练模型压缩方法、装置和电子设备的示例性系统架构;
图3示意性示出了根据本公开实施例的预训练模型压缩方法的流程图;
图4示意性示出了根据本公开实施例的指定隐藏层的结构示意图;
图5示意性示出了根据本公开实施例的随机失活至少部分隐藏层的示意图;
图6示意性示出了根据本公开实施例的第一聚类簇的确定过程的示意图;
图7示意性示出了根据本公开实施例的第二聚类簇的确定过程的示意图;
图8示意性示出了根据本公开实施例的第二占比的确定过程示意图;
图9示意性示出了根据本公开实施例的对模型进行压缩的示意图;
图10示意性示出了根据本公开实施例的学生模型的结构示意图;
图11示意性示出了根据本公开实施例的预训练模型压缩装置的结构示意图;以及
图12示意性示出了根据本公开实施例的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。一个或多个实施例在没有这些具体细节的情况下也可以被实施。在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个特征。
为了便于理解本公开的技术方案,首先对自然语言处理模型进行说明。自然语言处理领域近几年来最令人激动的发展就是预训练语言模型,包括基于循环神经网络(Rerrent Neural Network,简称RNN)的语言向量模型(Embeddings from LanguageModel,简称ELMo)和通用语言模型微调(Universal Language Model Fine-tuning forText Classification,简称ULMFiT),基于机器翻译(Transformer)模型的OpenAI(Generative Pre-Training,简称GPT)及Google BERT以及进行参数共享的轻量级BERT模型(简称ALBERT模型)等。预训练模型的成功实践经验使得可以从海量的无标注的文本中学习到潜在的语义信息,无需为下游的神经语言程序学(Neuro-linguistic Programming,简称NLP)任务标注大量的训练语料。预训练语言模型的出现也宣告了NLP领域研究的新范式,即通过大量无监督语料进行语言模型预训练,再使用少量的标注领域语料进行微调来完成不同的下游NLP任务,例如:序列标注、文本分类等。同样的也可以利用预训练模型产生的隐藏层向量直接进行无监督的训练,例如:文本聚类等。
2018年Google AI团队提出的预训练模型BERT,刷新了自然语言理解任务的榜单,被誉为近年来自然语言处理领域最重大的进展之一。其网络结构是利用Transformer构造了一个12层的双向编码(Encoder)网络。
BERT等预训练模型训练时所需的计算量是非常巨大的。Google在BERT论文中指出其训练BERT large(相对于BERT base模型具有更多的模型参数)模型在16台服务器上使用了64张TPU计算卡进行了100万次迭代。这样的计算量对于一般公司利用GPU进行训练所需的计算资源提出了较高的要求。同时BERT等预训练模型因为有较深的网络结构和庞大的参数规模因此在进行预测等任务时面临着挑战,一般难以满足上线的时延要求。所以这些模型需要进行压缩,预训练模型压缩的主要方法为:量化、剪枝、和蒸馏。目前在使用这些方法进行预训练模型压缩的时候,仅单考虑了语言模型的表达能力,没有考虑下游的微调任务,因此这样的模型在特定领域的任务中仍然可能存在参数冗余的问题。所以需要提出一个基于特定任务的预训练模型压缩方法,以此来获取更好地效果和更快的推理速度。
本公开的实施例提供了一种预训练模型压缩方法、装置和电子设备。该预训练模型压缩方法包括影响占比确定过程和模型压缩过程。在影响占比确定过程中,首先,确定至少两层隐藏层中至少部分隐藏层各自的第一输出向量和指定隐藏层的第二输出向量,然后,基于各第一输出向量的聚类结果和第二输出向量的聚类结果,确定至少部分隐藏层各自的影响占比。在完成影响占比确定过程之后,进入模型压缩过程,基于影响占比对模型进行压缩,以减少至少两层隐藏层的层数。本公开的实施例基于各隐藏层的影响占比,确定出相对于下游微调任务数据集最重要的隐藏层,进而可以在满足特定领域的预测准确度要求的前提下,有效减少模型的模型参数,在降低模型结构复杂度的同时提升预测速度。
图1示意性示出了根据本公开实施例的预训练模型压缩方法、装置和电子设备的应用场景。
如图1所示,神经网络包括数个隐藏层,如隐藏层1~4等,其中,不同的隐藏层的输出对神经网络的输出的影响占比不同,如隐藏层2和隐藏层4在特定场景中对神经网络的影响占比较大,是特定场景中的重要隐藏层。隐藏层1、3在特定场景中对神经网络的影响占比较小,但是包括很多模型参数,如隐藏层节点权重参数、偏置参数等,隐藏层1、3会消耗过多的计算资源等,增加计算用时,无法满足如线上提供服务等需求。
本公开的实施例,基于各隐藏层的输出向量相对于指定隐藏层(如最后一层隐藏层的输出向量)的影响占比,确定各隐藏层的重要程度,进而实现针对特定场景的预训练模型压缩,如将重要隐藏层及该重要隐藏层之前的数个隐藏层利用单层长短时记忆(Longshort time memory,简称Lstm)神经网络进行拟合,或者对非重要隐藏层进行剪裁、蒸馏等处理,有效减少隐藏层的层数,进而减少模型参数,满足用户需求。
图2示意性示出了根据本公开实施例的可以应用预训练模型压缩方法、装置和电子设备的示例性系统架构。需要注意的是,图2所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图2所示,根据该实施例的系统架构200可以包括终端设备201、202、203,网络204和服务器205。网络204可以包括多个网关、集线器、网线等,用以在终端设备201、202、203和服务器205之间提供通信链路的介质。网络204可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备201、202、203通过网络204与其他终端设备和服务器205进行交互,以接收或发送信息等,如发送关联关系请求、发送信息请求、接收处理结果等。终端设备201、202、203可以安装有各种通讯客户端应用,例如文本处理应用、语言处理应用、银行类应用、运维类应用、网页浏览器应用、搜索类应用、办公类应用、即时通信工具、邮箱客户端、社交平台软件等应用(仅为示例)。
终端设备201、202、203包括但不限于自助终端、智能手机、虚拟现实设备、增强现实设备、平板电脑、膝上型便携计算机等等。
服务器205可以接收请求,例如接收来自终端设备201、202、203针对指定信息的分类请求等,服务器205可以从其它服务器(如信息平台、数据库服务器、云数据库等)或者自身获取所需的信息(如模型的拓扑结构、模型初始参数、训练数据、语料库等),进而基于这些获取的信息来构建、训练和压缩模型,以便于基于确定的模型向外提供如预测服务等。例如,服务器205可以为后台管理服务器、服务器集群等。后台管理服务器可以对接收到的服务请求、信息请求、模型更新指令等进行分析处理,并将处理结果(如请求的信息、处理的结果等)反馈给终端设备。
需要说明的是,本公开实施例所提供的预训练模型压缩方法一般可以由服务器205执行。本公开实施例所提供的预训练模型压缩方法也可以由不同于服务器205且能够与终端设备201、202、203和/或服务器205通信的服务器或服务器集群执行。应该理解,终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
图3示意性示出了根据本公开实施例的预训练模型压缩方法的流程图。
如图3所示,该预训练模型压缩方法包括操作S301~操作S305。
在操作S301,确定至少两层隐藏层中至少部分隐藏层各自的第一输出向量和指定隐藏层的第二输出向量。
在本实施例中,指定隐藏层与模型的最后一层隐藏层之间的距离小于至少部分隐藏层与最后一层隐藏层之间的平均距离。其中,平均距离是指定隐藏层中各隐藏层与最后一层隐藏层之间距离的平均值,如第一层隐藏层与最后一层隐藏层之间的距离大于第二层隐藏层与最后一层隐藏层之间的距离。该距离随着隐藏层的层数之间的差值增大而增大。
至少部分隐藏层可以是基于经验、仿真模拟等方式确定的。例如,在某些场景下,最后一层隐藏层通常比较重要,则可以确定不会剪裁掉该最后一层隐藏层,因此,无需对最后一层隐藏层进行下述操作。又例如,在某些场景下,可以确定某几个特定隐藏层可以被压缩的概率比较大,则可以仅针对该某几个特定隐藏层进行下述操作。此外,也可以是针对所有隐藏层进行下述操作。
指定隐藏层可以是与下游微调任务相关度高的一个或多个隐藏层。例如,最后一层隐藏层、最后数层隐藏层、指定的一层或数层隐藏层。
图4示意性示出了根据本公开实施例的指定隐藏层的结构示意图。
如图4所示,模型包括n层隐藏层,n是大于或等于1的正整数。如图4中,可以将隐藏层n作为指定隐藏层”。或者,可以将隐藏层n-1、n作为指定隐藏层’。或者,可以将隐藏层n-2、n-1、n作为指定隐藏层。或者,可以将更多曾隐藏层作为指定隐藏层∷。此外,也可以将如隐藏层n-2、n-1作为指定隐藏层,在此不再一一列举。
在一个实施例中,指定隐藏层包括至少一层隐藏层,至少一层隐藏层与最后一层隐藏层之间的第一平均距离小于至少两层隐藏层与最后一层隐藏层之间的第二平均距离。例如,指定隐藏层相对于隐藏层距离最后一层隐藏层的平均距离更近,这样使得指定隐藏层的输出作为下游微调任务数据集,提升确定的各隐藏层相对预训练模型输出的贡献(如重要度)的准确度。
具体地,确定至少两层隐藏层中至少部分隐藏层各自的第一输出向量和指定隐藏层的第二输出向量可以包括如下操作。首先,利用预训练模型处理针对指定场景的指定数据。然后,确定指定隐藏层的第一输出向量,以及确定至少部分隐藏层各自的第二输出向量。
例如,通过调用语料库给预训练模型输入针对指定场景的语料数据。
此外,对于构建的预训练模型,可以采用大量语料数据按照如下方式进行模型训练。首先,确定预训练模型的网络结构。然后,配置模型的超参数。接着,在进行语料库加载之后,通过调整预训练模型的模型参数以进行模型训练。该语料库可以是相关技术中进行预训练模型训练的语料库,例如,大规模中文语料库。需要说明的是,该语料库还可以用于对压缩后的模型进行模型训练。
其中,为了提升模型参数的鲁棒性,减少单个层参数缺失造成的影响,通过调整模型的模型参数以进行模型训练可以包括如下操作。重复执行以下操作直至满足停止训练条件,首先,失活(dropout)至少部分隐藏层,然后,基于训练数据和前向传播算法对模型进行训练,使得模型的输出趋近于与针对指定场景的训练数据相对应的场景标注信息。失活的实现是让神经网络的至少部分节点以超参数的概率停止工作或者激活被配置为0。其中,停止训练条件可以包括以下至少一种:模型收敛或达到迭代次数。例如,模型的训练轮数达到预设的数值或者训练任务达到较高的精度。
图5示意性示出了根据本公开实施例的随机失活至少部分隐藏层的示意图。
如图5所示,本实施中以隐藏层作为失活的对象,首先使得隐藏层2和隐藏层4失活,这样使得隐藏层1和隐藏层3等构成了模型的子集,首先对隐藏层1和隐藏层3进行训练,以确定模型参数。
在操作S303,基于各第一输出向量的聚类结果和第二输出向量的聚类结果,确定至少部分隐藏层各自的影响占比。
在本实施例中,利用指定隐藏层输出的第一输出向量的聚类结果和各隐藏层输出的第二输出向量的聚类结果的影响占比,来确定各隐藏层各自相对于预训练模型的影响占比。这样便于实现根据各隐藏层对预训练模型的影响占比来实现预训练模型压缩。其中,影响占比可以基于各隐藏层的输出向量的聚类结果与指定隐藏层的输出向量的聚类结果来确定。
在操作S305,基于影响占比对模型进行压缩,以减少至少两层隐藏层的层数。
在本实施例中,可以通过拟合替代重要隐藏层的方式等实现对模型进行压缩。例如,预训练模型有4个隐藏层,第一隐层的输出是第二隐层的输入,第二隐层的输出是第三隐层的输入,第三隐层的输出是第四隐层的输入。假如通过聚类确定第三层是比较重要的,可以用一个长短时记忆神经网络(Lstm)来拟合第三隐藏层的输出,一个Lstm来拟合最后一层的输出。这样第一个Lstm拟合了第一、第二和第三隐藏层,能有效减少预训练模型的隐藏层的层数。参考图1所示,隐藏层1和重要隐藏层2通过一个单层的长短时记忆神经网络1进行拟合,隐藏层3和重要隐藏层4通过一个单层的长短时记忆神经网络2进行拟合,有效减小了隐藏层的层数,同时减少了模型的模型参数。
以下分别对确定输出向量的过程、确定影响占比和预训练模型压缩的过程进行示例性说明。
在一个实施例中,基于各第一输出向量的聚类结果和第二输出向量的聚类结果,确定至少部分隐藏层各自的影响占比可以包括如下操作。
首先,对第一输出向量进行聚类,确定第一输出向量的指定个数第一聚类簇。然后,对于第一聚类簇中的每一个,获取与第一聚类簇中各第一输出向量对应的第二输出向量,第二输出向量是至少部分隐藏层中每个隐藏层各自的输出向量。接着,对第二输出向量进行聚类,确定第二输出向量的指定个数第二聚类簇。然后,基于指定个数第一聚类簇的聚类结果和指定个数第二聚类簇的聚类结果,确定至少部分隐藏层各自的影响占比。
图6示意性示出了根据本公开实施例的第一聚类簇的确定过程的示意图。
如图6所示,指定隐藏层可以包括一个或多个隐藏层,指定隐藏层的输入可以是位于指定隐藏层之前的隐藏层的输出向量,每个训练数据分别经过位于指定隐藏层之前的隐藏层进行处理后,输出一个特征向量作为指定隐藏层的各输入向量。图6中指定隐藏层的各输入向量经过指定隐藏层进行处理后(如对于一个输入向量,对指定隐藏层中各隐藏层的输出向量进行加权求和处理(例如,基于如下公式进行处理,此处以指定隐藏层包括三层隐藏为例进行举例,指定隐藏层还可以包括1层、2层、4层等,在此不再一一列举),其中,n是第n条语料,m是第n条语料的标签,得到各训练数据的第一输出向量。这样就可以对所有训练数据的第一输出向量进行聚类,得到指定个数的第二聚类簇,如图6中包括4个聚类簇:第二聚类簇1、第二聚类簇2、第二聚类簇3和第二聚类簇4。
图7示意性示出了根据本公开实施例的第二聚类簇的确定过程的示意图。图7以与一个第一聚类簇包括的第一输出向量对应的语料数据为例进行说明。
如图7所示,与各训练数据对应的第i-1层隐藏层的输出是各第一输出向量i-1,其作为第i层隐藏层的输入,经过第i层隐藏层处理后得到各第一输出向量i。各第一输出向量i作为第i+1层隐藏层的输入,经过第i+1层隐藏层处理后得到各第一输出向量i+1。以此类推,可以得到一个训练数据在各隐藏层的输出向量。重复上述过程可以得到与一个第一聚类簇对应的所有训练数据在各隐藏层的输出向量。然后,对与一个第一聚类簇对应的所有训练数据在各隐藏层的输出向量进行聚合,可以得到指定个数第二聚类簇。例如,预训练模型包括12层隐藏层,与一个第一聚类簇对应的训练数据共10条,则每个隐藏层处理这10个训练数据后可以分别得到10个第二输出向量。所有隐藏层对这10个训练数据进行处理后,共计可以得到120个第二输出向量。然后,可以对这120个输出向量进行聚类,得到指定个数的第二聚类簇。
在一个实施例中,基于指定个数第一聚类簇的聚类结果和指定个数第二聚类簇的聚类结果,确定至少部分隐藏层各自的影响占比可以包括如下操作。
首先,确定各第一聚类簇包括的第一输出向量个数在所有第一聚类簇包括的第一输出向量个数的第一占比,并且确定第一聚类簇下各第二聚类簇包括的第二输出向量个数在所有第二输出向量个数的第二占比。
然后,基于各第一占比和对应的各第二占比确定至少部分隐藏层各自的影响占比。
在本实施例中,利用各第一占比和对应的各第二占比确定各隐藏层的输出在各聚类簇的占比,进而确定各隐藏层对预训练模型输出的影响,简化了确定各隐藏层对预训练模型输出的影响的复杂度。
图8示意性示出了根据本公开实施例的第二占比的确定过程示意图。聚类后得到指定个数(如4个,可以是预设的,如有监督的聚类)聚类簇。例如,第一聚类簇包括第一聚类簇1、第一聚类簇2、第一聚类簇3和第一聚类簇4。第二聚类簇包括四个聚类簇。如第一聚类簇1具有相对应的第二聚类簇1,1、第二聚类簇1,2、第二聚类簇1,3、第二聚类簇1,4。第一聚类簇2具有相对应的第二聚类簇2,1、第二聚类簇2,2、第二聚类簇2,3、第二聚类簇2,4。第一聚类簇3和第一聚类簇4类似。
如图8所示,相应地,以第二占比为例进行说明。以与第一聚类簇1中第一输出向量对应的语料数据包括10条词语,预训练模型包括12层隐藏层为例进行说明。与第i层隐藏层对应的输出向量是10个第二输出向量i,与第i-1层隐藏层对应的输出向量是10个第二输出向量i-1,与第i+1层隐藏层对应的输出向量是10个第二输出向量i+1,其余隐藏层以此类推。10条词语在各隐藏层分别进行处理后,共得到120个第二输出向量,进行聚类后得到4个第二聚类簇:第二聚类簇1,1、第二聚类簇1,2、第二聚类簇1,3和第二聚类簇1,4。例如,第二聚类簇1,1包括10个向量,第二聚类簇1,2包括50个向量,第二聚类簇1,3包括20个向量,第二聚类簇1,4包括40个向量。相应地,第二聚类簇1,1的第二输出向量在所有第二聚类簇包括的120个第二输出向量中的第二占比可以通过下式来确定:10/(10+50+20+40)。第二聚类簇1,2的第二输出向量在所有第二聚类簇包括的120个第二输出向量中的第二占比可以通过下式来确定:50/120。第二聚类簇1,3的第二输出向量在所有第二聚类簇包括的120个第二输出向量中的第二占比可以通过下式来确定:20/120。第二聚类簇1,4的第二输出向量在所有第二聚类簇包括的120个第二输出向量中的第二占比可以通过下式来确定:40/120。
此外,基于与以上相似的方法可以获得指定隐藏层的各第一聚类簇在所有第一聚类簇中的第一占比。其中,当指定隐藏层包括多层隐藏层时,有助于提升后续确定的各隐藏层的影响占比的准确度。
为了便于基于第一占比和第二占比确定各隐藏层相对于各聚类簇的重要度,进而便于基于影响占比的排序确定各隐藏层的输出对预训练模型输出的影响大小,可以通过如下方式进行确。
例如,对于相对应的第一聚类簇和第二聚类簇,基于各第一占比和对应的各第二占比确定至少部分隐藏层各自的影响占比包括如下操作。
首先,计算各第一占比和相对应的各第二占比的乘积的取值。然后,基于取值确定相对于各第一聚类簇和/或各第二聚类簇影响最大的设定个数隐藏层,接着,统计各影响最大的设定个数隐藏层各自的出现频次,然后,基于出现频次确定至少部分隐藏层各自在所有隐藏层中的影响占比。其中,设定个数可以和指定个数、预设个数相同或不同。
以下以一个具体实施例对确定输出向量的过程和确定影响占比的过程进行说明,首先,从模型算法库中选择要进行预训练的模型结构,如神经网络的拓扑结构结构。
然后,配置模型的超参数。
接着,语言模型训练系统进行语料库的加载,以给模型输入训练数据,同时在网络进行前向传播的时加入层Dropout,以便模型可以学习到更加鲁棒性的参数,减少单个层参数缺失造成的影响。
然后,借助Flask部署模型提供API接口。
接着,进行语料库数据格式转换以适应不同的预训练模型输入的格式。例如:针对BERT模型,需要进行:MLM处理和NSP处理。其中,MLM处理是通过随机掩盖掉作为训练和数据的语句中的一些词。NSP处理是从语料库中随机抽取句子(A,B),以一定概率B是A的下一句或者不是。
然后,将带有领域标签的数据处理为预训练模型可以输入的格式。该单元处理的数据一般用于下游任务中进行模型微调(fine-tuning)。
在训练模型的同时,或者给训练好的模型输入训练数据,这样就可以获取每条训练数据在每个隐藏层的向量表示(即各隐藏层的输出向量),并以向量保存,其中n表示领域标签数据语料库中第n条数据,m表示数据标签为第m类,i表示模型第i个隐藏层。例如:BERT-base模型包含12个隐藏层,下游任务数据集中第3条数据且标签为4的所有隐藏层向量为/>
以下以一个具体实施例对确定影响占比的过程进行说明。
首先,调用指定隐藏层的第二输出向量,使用K-Means聚类算法进行聚类,并计算结果Ln,m用于代表对与第n条数据对应的指定隐藏层的输出向量进行聚类,产生聚类簇Aα(其中α≤标签个数),此处聚类的作用是把语料中语义相似数据聚在一个簇中,聚类簇的个数一般小于或等于数据标签个数。
假设两个语义相近的数据经过同一个预训练模型产生出的相同层的隐藏层向量都是相近的。获取到该条数据在所有隐藏层的输出向量,假如预训练模型有12个隐藏层,则最终的聚类对象为之后利用K-Means对其进行聚类。依此对每个聚类簇Aα都进行该操作产生新的聚类簇,并设置该聚类簇下的聚类的个数为模型最后压缩的层数C或C+1,返回聚类结果。例如A1下进行聚类,聚类的个数设置为4,就把A1下数据的所有隐藏层各自的输出向量分别聚成4个簇群分别为B11,B12,B13,B14。
接下来,找出对下游任务最重要的隐藏层,然后使用Lstm来拟合这些隐藏层的输出,最终输出一个多层的Lstm网络作为最终的压缩模型。在本实施例中,使用Lstm来拟合这些隐藏层的输出,而不是直接剪枝去除不重要的隐藏层,是由于如果直接剪枝不重要的隐藏层,被剪枝掉的隐藏层的上一层会与下一层隐藏层相接,给模型造成的影响较大,而通过Lstm来拟合这些重要隐藏层的输出可以有效缓解上述问题。
具体地,首先,利用第二聚类单元获取到每个Aα的聚类结果。然后,计算Aα中隐藏层i的占比AαPi。接着,计算Bαβ中隐藏层i的占比BαβPi。
在另一个实施例中,基于影响占比对模型进行压缩可以包括如下操作。
首先,确定影响占比最高的预设个数隐藏层。如确定占比排前4的隐藏层。
然后,基于影响占比最高的预设个数隐藏层对模型进行压缩。例如,利用单层Lstm神经网络分段拟合多个隐藏层等,其中,每个Lstm神经网络中可以对应一个影响占比高的隐藏层(重要的隐藏层)。
图9示意性示出了根据本公开实施例的对模型进行压缩的示意图。如图9所示,左图是待压缩模型,右图是利用Lstm模型进行拟合后得到的压缩后模型。
在另一个实施例中,上述方法还可以包括如下操作。
在确定影响占比最高的预设个数隐藏层之后,如果确定影响占比最高的预设个数隐藏层不包括最后一层隐藏层,则在预设个数隐藏层中添加最后一层隐藏层。这样可以使得压缩后的模型的输出与预训练模型的输出更加相似。
例如,基于影响占比最高的预设个数隐藏层对预训练模型进行压缩可以包括如下操作。利用训练数据基于师生关系模式对模型进行蒸馏,其中,基于师生关系模式确定的与预训练模型对应的学生模型,包括与预设个数隐藏层的层数相同的长短时记忆神经网络。
其中,使用预设个数的单层长短时记忆神经网络来分别拟合预设个数隐藏层各自的输出,每层隐藏层的损失函数为交叉熵,学生模型的损失为所有隐藏层的损失之和。
图10示意性示出了根据本公开实施例的学生模型的结构示意图。如图10所示,学生模型中包括C个Lstm模型,每个Lstm模型对应一个影响占比高的隐藏层或最后一层隐藏层。例如,隐藏层1~3是影响占比低的隐藏层,隐藏层4是影响占比高的隐藏层,则可以通过一个Lstm模型拟合隐藏层1~隐藏层4,这样就有效减少了隐藏层的数量。其中,C是大于等于2的正整数。
本实施例的预训练模型压缩方法会依据特定下游任务数据,产生出不同的压缩模型。本公开实施例提供的预训练模型压缩方法,可以更好地适应下游任务的数据集并在该特定领域达到较好的效果。
在一个具体实施例中,首先,计算AαPi*BαβPi,作为簇Bαβ下隐藏层i的初始权重,并将该Bαβ下的所有隐藏层的初始权重进行归一化处理,得到该簇下所有隐藏层最终的权重。取权重最大的隐藏层作为簇Bαβ的代表返回,这样得到了簇Aα下需要保留的隐藏层。
然后,统计所有簇Aα保留隐藏层的频率,返回前C个隐藏层,由此就确定了在该数据集下较为重要的保留隐藏层Hi。如果Hi中包含最后一层隐藏层,则Hi不变;如果Hi不包含最后一层隐藏层,保留隐藏层Hi=Hi+Hlast,其中,Hlast表示最后一层隐藏层。C可以预设的正整数。
接着,使用大量的数据进行师生模式(Teacher-Student模式)的蒸馏,学生(Student)模型的网络架构为C层或C+1层Lstm网络,使用单层Lstm来分别拟合需要保留的隐藏层的输出。定义拟合每层隐藏层的损失函数为交叉熵,最终模型的损失为所有隐藏层损失之和。C的取值和指定个数可以相同。
本公开提供的实施例中,首先定义预训练模型的网络结构并配置网络参数,同时在模型训练的过程中加入层Dropout,训练完成之后可以提供服务。然后,加载处理下游任务数据集并保存其经过预训练模型每个隐藏层的输出向量。接着,通过聚类的方式得到针对指定隐藏层的第一聚类簇Aα,以及针对各隐藏层的第二聚类簇Bαβ。然后,计算Aα中每个隐藏层的占比AαP,计算Bαβ中每个隐藏层的占比BαβP,AαP*BαβP归一化作为隐藏层最终的权重,取其中隐藏层权重最大的一个或多个作为Aα下保留的隐藏层。接着,统计所有Aα下保留隐藏层的出现概率,取最高的C个为针对特定场景下训练数据的最具影响的指定个数隐藏层。这样就可以进一步基于指定个数隐藏层进行模型蒸馏,输出压缩模型。
在另一个实施例中,上述方法还可以包括如下操作:基于Flask框架部署模型,并提供应用接口(API)以供调用。
以下以一个具体实施例对预训练模型压缩过程进行示例性说明。
首先,从模型算法库中选择要进行预训练的模型的网络拓扑结构。模型算法库中的预训练模型可以是基于Transformer结构的深层网络。例如:Bert、ALBert、中文预训练模型(如RoBERTa)、XLNet等预训练模型。
然后,配置预模型的超参数,例如:模型的学习率、迭代轮数、混合精度训练等。同时在网络进行前向传播的时候加入层Dropout,以便模型可以学习到更加鲁棒性的参数,减少模型中单个隐藏层参数缺失造成的影响,增强模型的泛化能力。例如:原始模型的隐藏层为1/2/3/4/,加入层Dropout策略,假如失活比例(dropout rate)是0.5,每次前向传播时随机选择一半隐藏层进行计算,如隐藏层2/4。
接着,借助数据调度模块进行大规模文本语料库数据的加载处理,转化数据格式为预训练模型支持的输入格式。
然后,借助Flask部署模型提供API接口。
接着,进行语料库数据格式转换以适应不同的预训练模型输入的格式。例如:针对BERT模型,首先,进行MLM处理,即通过随机掩盖掉语句中的一些词。然后,进行NSP处理,即从语料库中随机抽取句子(A,B),以一定概率B是A的下一句,或者B不是A的下一句。
然后,加载带有标签的数据并把相应的数据处理为预训练模型可以输入的格式。该单元处理的数据一般用于下游任务中进行模型微调(fine-tune)。
接着,可以通过调用领域标签数据语料库加载单元和预训练模型服务接口,来获取每条数据在每个隐藏层的输出向量(简称向量),并以向量保存,其中n表示领域标签数据语料库中第n条数据,m表示数据标签为第m类,i表示模型第i个隐藏层。例如:BERT模型包含12个隐藏层,下游任务中第3个数据且标签为4的所有隐藏层向量为
然后,使用K-Means聚类算法,调用模型向量保存单元获取领域标签数据样本数Y、类别数K以及隐藏层的输出向量,并计算结果Ln,m用于代表该条数据进行聚类,即训练样本为Ln,m,其中n<Y。随机选取g个聚类中心μ1,μ2,…,μg,对于每一个样例i计算其应该属于的类/>对于每一个类重新计算该类的聚类中心直至收敛,这样就产生第二聚类簇Aα(其中α≤K),此处聚类的作用是把语料中语义相似数据聚在一个聚类簇中,第二聚类簇的个数一般小于或等于数据类别数。g是大于零的正整数。
由于两个语义相近的数据经过同一个预训练模型产生出的相同层的隐藏层向量都是相近的。假如预训练模型有12个隐藏层则最终的聚类对象为之后利用K-Means对其进行聚类。以此对每个第二聚类簇Aα都进行该操作产生新的聚类簇,并设置该簇下的聚类的个数C为最终模型压缩后的层数。然后返回聚类结果。例如簇A1下进行聚类,聚类的个数设置为4,就把A1下的所有隐藏层的输出向量聚成4个簇群分别为B11,B12,B13,B14。
通过找出对下游任务最重要的隐藏层,然后使用Lstm来拟合这些隐藏层的输出,最终输出一个多层的Lstm网络作为最终的压缩模型。预训练模型压缩过程具体可以包括如下操作。
首先,利用第二聚类单元获取到每个Aα下的聚类结果。
然后,计算Aα中的占比:/>
接着,计算Bαβ中的占比:/>
然后,计算AαPi*BαβPi作为Bαβ下隐藏层i的初始权重,并将该Bαβ下的所有隐藏层的初始权重进行归一化处理,得到该聚类簇下所有隐藏层最终的权重。取权重最大的隐藏层作为聚类簇Bαβ的代表返回,这样得到了簇Aα下需要保留的隐藏层。例如,聚类簇A1下预训练模型的第3层隐藏层的占比A1P3=0.3,簇A1下第2个聚类簇B12的第3隐藏层的占比为0.6,则0.3*0.6=0.18为簇B12第3个隐藏层的初始化权重,假如第4隐藏层的初始化权重为0.32,归一化后第3层隐藏层和第4层隐藏层的权重分别为0.36(计算过程:0.18/(0.18+0.32))和0.64(0.32/(0.18+0.32)),由于0.64>0.36,所以聚类簇B12下预保留的隐藏层为预训练模型的第4个隐藏层。
接着,统计所有Aα保留隐藏层的频率,返回前C(Top C)个隐藏层,由此就确定了在该数据集下较为重要的隐藏层H。如果H中包含最后一层,则H不变;如果H不包含最后一层隐藏层,较为重要的隐藏层H=H+Hlast。例如,簇A1保留的隐藏层为1/2/6/12,簇A2保留的隐藏层为2/4/9/12,簇A3保留的隐藏层为3/6/9/12,簇A4保留的隐藏层为1/5/9/12。隐藏层1的频率为0.125,隐藏层2的频率为0.125,隐藏层4的频率为0.0625,隐藏层5的频率为0.0625,隐藏层6的频率为0.125,隐藏层9的频率为0.1875,隐藏层12的频率为0.25,假如模型的C=3,则隐藏层H包含为第12层H12,第9层H9,第1层H1。
然后,使用大量的数据进行Teacher-Student模式的蒸馏,Student模型的网络架构为C层或C+1层Lstm网络,使用单层Lstm来分别拟合影响占比高的隐藏层的输出。定义拟合每层隐藏层的损失函数为交叉熵,最终模型的损失为所有隐藏层损失之和。
在另一个实施例中,为了提升对预训练模型进行压缩后的模型,在特定场景下进行预测的准确度,可以基于语料库和指定场景的预料数据对压缩后的模型进行训练。例如,在基于影响占比对预训练模型进行压缩之后,通过调用语料库给压缩后的模型输入语料数据进行模型训练,确定压缩后的模型的初始模型参数。然后,给压缩后的模型输入针对指定场景的语料数据进行模型训练,以调整初始模型参数。其中,针对指定场景的语料数据的数量少于基于语料库进行模型训练时使用的语料数量。
本公开实施例提供的预训练模型压缩的方法,采用蒸馏的方式依据聚类确定的各隐藏层相对于指定隐藏层的影响占比,确定出下游微调任务数据集最重要的指定个数隐藏层,并基于Teacher-Student模式,利用Lstm模型(如单层Lstm)来拟合相应的隐藏层,生成最终的压缩模型。相对于传统的预训练模型压缩方法,可以有效地减少预训练模型的参数冗余,并且可以根据不同的下游任务数据产生出不同的压缩模型,使得最终的压缩模型可以轻松的部署上线,减少对计算资源的需求,在满足微调任务精度的同时提高响应速度。
本公开的另一方面提供了一种预训练模型压缩装置。
图11示意性示出了根据本公开实施例的预训练模型压缩装置的结构示意图。
如图11所示,该预训练模型压缩装置1100包括:输出向量确定模块1110、影响占比确定模块1120和模型压缩模块1130。
输出向量确定模块1110用于确定指定隐藏层的第一输出向量和至少两层隐藏层中至少部分隐藏层各自的第二输出向量,其中,指定隐藏层与模型的最后一层隐藏层之间的距离小于至少部分隐藏层与最后一层隐藏层之间的平均距离。
影响占比确定模块1120用于基于第一输出向量的聚类结果和各第二输出向量的聚类结果,确定至少部分隐藏层各自的影响占比。
模型压缩模块1130用于基于影响占比对预训练模型进行压缩,以减少至少两层隐藏层的层数。
本公开的另一方面提供了一种预训练模型压缩系统。
该预训练模型压缩系统可以包括文本预训练模块、数据处理模块、聚类模块和模型压缩模块。
其中,数据处理模块可以包括预训练模型语料库加载单元、领域标签数据语料库加载单元和模型向量保存单元。文本预训练模块和数据处理模块执行的操作可以参考操作S301相关部分内容,在此不再赘述。
聚类模块可以包括第一聚类单元和第二聚类单元。其中,第一聚类单元用于确定第一聚类簇,第二聚类单元用于确定第二聚类簇。模型压缩模块执行的操作可以参考操作S303相关部分内容,在此不再赘述。
模型压缩模块执行的操作可以参考操作S305相关部分内容,在此不再赘述。
需要说明的是,装置部分和系统部分的实施例中各模块等的实施方式、解决的技术问题、实现的功能、以及达到的技术效果分别与方法部分实施例中各对应的步骤的实施方式、解决的技术问题、实现的功能、以及达到的技术效果相同或类似,在此不再一一赘述。
根据本公开的实施例的模块中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。例如,输出向量确定模块1110、影响占比确定模块1120和模型压缩模块1130中的任意多个可以合并或单独实现、以硬件或软件的形式实现等。
本公开的另一方面提供了一种电子设备。
图12示意性示出了根据本公开实施例的电子设备的方框图。图12示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图12所示,根据本公开实施例的电子设备1200包括处理器1201,其可以根据存储在只读存储器(ROM)1202中的程序或者从存储部分1208加载到随机访问存储器(RAM)1203中的程序而执行各种适当的动作和处理。处理器1201例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1201还可以包括用于缓存用途的板载存储器。处理器1201可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1203中,存储有电子设备1200操作所需的各种程序和数据。处理器1201、ROM 1202以及RAM 1203通过总线1204彼此通讯连接。处理器1201通过执行ROM 1202和/或RAM 1203中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存储在除ROM 1202和RAM 1203以外的一个或多个存储器中。处理器1201也可以通过执行存储在一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备1200还可以包括输入/输出(I/O)接口1205,输入/输出(I/O)接口1205也连接至总线1204。电子设备1200还可以包括连接至I/O接口1205的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1207;包括硬盘等的存储部分1208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1209。通信部分1209经由诸如因特网的网络执行通信处理。驱动器1210也根据需要连接至I/O接口1205。可拆卸介质1211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1210上,以便于从其上读出的计算机程序根据需要被安装入存储部分1208。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1209从网络上被下载和安装,和/或从可拆卸介质1211被安装。在该计算机程序被处理器1201执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 1202和/或RAM 1203和/或ROM 1202和RAM 1203以外的一个或多个存储器。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (15)
1.一种用于处理文本数据的预训练模型的压缩方法,所述预训练模型包括至少两层隐藏层,所述方法包括:
调用语料库给所述预训练模型输入针对指定场景的语料数据;
利用所述预训练模型处理针对指定场景的语料数据;
基于处理结果确定指定隐藏层处理针对指定场景的各条语料数据的各个第一输出向量和所述至少两层隐藏层中至少部分隐藏层各自的第二输出向量,所述第一输出向量为针对指定场景的对应语料数据的向量表示;
对各个所述第一输出向量进行聚类,确定所述第一输出向量的指定个数第一聚类簇;
对于所述第一聚类簇中的每一个,获取与所述第一聚类簇中各第一输出向量对应的第二输出向量,所述第二输出向量是所述至少部分隐藏层中每个隐藏层各自的输出向量;
对所述第二输出向量进行聚类,确定所述第二输出向量的指定个数第二聚类簇,其中包括对与各第一聚类簇对应的所有语料数据在各隐藏层的输出向量进行聚合,得到指定个数第二聚类簇,以把语料中语义相似数据聚在一个簇中;
基于所述指定个数第一聚类簇的聚类结果和所述指定个数第二聚类簇的聚类结果,确定所述至少部分隐藏层各自的影响占比;以及
基于所述影响占比对所述预训练模型进行压缩,以减少所述至少两层隐藏层的层数;
其中,所述指定隐藏层与所述预训练模型的最后一层隐藏层之间的距离小于所述至少部分隐藏层与所述最后一层隐藏层之间的平均距离。
2.根据权利要求1所述的方法,其中,所述指定隐藏层包括至少一层隐藏层,所述至少一层隐藏层与所述最后一层隐藏层之间的第一平均距离小于所述至少两层隐藏层与所述最后一层隐藏层之间的第二平均距离。
3.根据权利要求2所述的方法,其中,所述基于所述指定个数第一聚类簇的聚类结果和所述指定个数第二聚类簇的聚类结果,确定所述至少部分隐藏层各自的影响占比包括:
确定各第一聚类簇包括的第一输出向量个数在所有第一聚类簇包括的第一输出向量个数的第一占比,并且确定第一聚类簇下各第二聚类簇包括的第二输出向量个数在所有第二输出向量个数的第二占比;以及
基于各第一占比和对应的各第二占比确定所述至少部分隐藏层各自的影响占比。
4.根据权利要求3所述的方法,其中,所述基于各第一占比和对应的各第二占比确定所述至少部分隐藏层各自的影响占比包括:对于相对应的第一聚类簇和第二聚类簇,
计算各第一占比和相对应的各第二占比的乘积的取值;以及
基于所述取值确定相对于各第一聚类簇或各第二聚类簇影响最大的设定个数隐藏层;
统计各影响最大的设定个数隐藏层各自的出现频次;以及
基于所述出现频次确定所述至少部分隐藏层各自在所有隐藏层中的影响占比。
5.根据权利要求1所述的方法,其中,所述基于所述影响占比对所述预训练模型进行压缩包括:
确定影响占比最高的预设个数隐藏层;以及
基于影响占比最高的预设个数隐藏层对所述预训练模型进行压缩。
6.根据权利要求5所述的方法,还包括:在确定影响占比最高的预设个数隐藏层之后,
如果确定影响占比最高的预设个数隐藏层不包括所述最后一层隐藏层,则在所述预设个数隐藏层中添加所述最后一层隐藏层。
7.根据权利要求5所述的方法,其中,所述基于影响占比最高的预设个数隐藏层对所述预训练模型进行压缩包括:
利用训练数据基于师生关系模式对所述预训练模型进行蒸馏,其中,基于师生关系模式确定的与所述预训练模型对应的学生模型,包括与所述预设个数隐藏层的层数相同的长短时记忆神经网络。
8.根据权利要求7所述的方法,其中,使用预设个数的单层长短时记忆神经网络来分别拟合所述预设个数隐藏层各自的输出,每层隐藏层的损失函数为交叉熵,所述学生模型的损失为所有隐藏层的损失之和。
9.根据权利要求1所述的方法,还包括:在所述基于所述影响占比对所述预训练模型进行压缩之后,
通过调用语料库给压缩后的模型输入语料数据进行模型训练,确定所述压缩后的模型的初始模型参数;以及
给所述压缩后的模型输入针对指定场景的语料数据进行模型训练,以调整所述初始模型参数。
10.根据权利要求1所述的方法,其中,所述预训练模型通过以下方式构建:
确定所述预训练模型的网络结构;
配置所述预训练模型的超参数;以及
在进行语料库加载之后,通过调整所述预训练模型的模型参数以进行模型训练。
11.根据权利要求10所述的方法,其中,所述通过调整所述预训练模型的模型参数以进行模型训练包括:重复执行以下操作直至所述预训练模型收敛或达到训练轮数,
失活至少部分隐藏层;以及
基于训练数据和前向传播算法对所述预训练模型进行训练。
12.根据权利要求1所述的方法,还包括:
基于Flask框架部署所述预训练模型,并提供应用接口以供调用。
13.一种用于处理文本数据的预训练模型的压缩装置,所述预训练模型预训练模型包括至少两层隐藏层,所述装置包括:
输出向量确定模块,用于在调用语料库给所述预训练模型输入针对指定场景的语料数据,利用所述预训练模型处理针对指定场景的语料数据之后,基于处理结果确定指定隐藏层处理针对指定场景的各条语料数据的各个第一输出向量和所述至少两层隐藏层中至少部分隐藏层各自的第二输出向量,其中,所述指定隐藏层与所述预训练模型的最后一层隐藏层之间的距离小于所述至少部分隐藏层与所述最后一层隐藏层之间的平均距离,所述第一输出向量为针对指定场景的对应语料数据的向量表示;
聚类模块,用于对各个所述第一输出向量进行聚类,确定所述第一输出向量的指定个数第一聚类簇;对于所述第一聚类簇中的每一个,获取与所述第一聚类簇中各第一输出向量对应的第二输出向量,所述第二输出向量是所述至少部分隐藏层中每个隐藏层各自的输出向量;对所述第二输出向量进行聚类,确定所述第二输出向量的指定个数第二聚类簇,其中包括对与各第一聚类簇对应的所有语料数据在各隐藏层的输出向量进行聚合,得到指定个数第二聚类簇,以把语料中语义相似数据聚在一个簇中;
影响占比确定模块,用于基于所述指定个数第一聚类簇的聚类结果和所述指定个数第二聚类簇的聚类结果,确定所述至少部分隐藏层各自的影响占比;以及
模型压缩模块,用于基于所述影响占比对所述预训练模型进行压缩,以减少所述至少两层隐藏层的层数。
14.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储可执行指令,所述可执行指令在被所述处理器执行时,实现根据权利要求1~12任一项所述的方法。
15.一种计算机可读存储介质,其上存储有指令,该指令被执行时实现根据权利要求1~12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010522463.XA CN111667069B (zh) | 2020-06-10 | 2020-06-10 | 预训练模型压缩方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010522463.XA CN111667069B (zh) | 2020-06-10 | 2020-06-10 | 预训练模型压缩方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111667069A CN111667069A (zh) | 2020-09-15 |
CN111667069B true CN111667069B (zh) | 2023-08-04 |
Family
ID=72386468
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010522463.XA Active CN111667069B (zh) | 2020-06-10 | 2020-06-10 | 预训练模型压缩方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111667069B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113033801A (zh) * | 2021-03-04 | 2021-06-25 | 北京百度网讯科技有限公司 | 神经网络模型的预训练方法、装置、电子设备和介质 |
CN113535899B (zh) * | 2021-07-07 | 2024-02-27 | 西安康奈网络科技有限公司 | 一种针对互联网信息情感倾向性的自动研判方法 |
CN114819140A (zh) * | 2022-03-31 | 2022-07-29 | 支付宝(杭州)信息技术有限公司 | 模型剪枝方法、装置和计算机设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106650825A (zh) * | 2016-12-31 | 2017-05-10 | 中国科学技术大学 | 一种机动车尾气排放数据融合系统 |
CN106919980A (zh) * | 2017-01-24 | 2017-07-04 | 南京大学 | 一种基于神经节分化的增量式目标识别系统 |
CN108415888A (zh) * | 2018-02-12 | 2018-08-17 | 苏州思必驰信息科技有限公司 | 用于神经网络语言模型的压缩方法和系统 |
CN109711483A (zh) * | 2019-01-08 | 2019-05-03 | 西安交通大学 | 一种基于Sparse Autoencoder的电力系统运行方式聚类方法 |
CN110442721A (zh) * | 2018-11-28 | 2019-11-12 | 腾讯科技(深圳)有限公司 | 神经网络语言模型、训练方法、装置及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102483643B1 (ko) * | 2017-08-14 | 2023-01-02 | 삼성전자주식회사 | 모델을 학습하는 방법 및 장치 및 상기 뉴럴 네트워크를 이용한 인식 방법 및 장치 |
US10621991B2 (en) * | 2018-05-06 | 2020-04-14 | Microsoft Technology Licensing, Llc | Joint neural network for speaker recognition |
-
2020
- 2020-06-10 CN CN202010522463.XA patent/CN111667069B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106650825A (zh) * | 2016-12-31 | 2017-05-10 | 中国科学技术大学 | 一种机动车尾气排放数据融合系统 |
CN106919980A (zh) * | 2017-01-24 | 2017-07-04 | 南京大学 | 一种基于神经节分化的增量式目标识别系统 |
CN108415888A (zh) * | 2018-02-12 | 2018-08-17 | 苏州思必驰信息科技有限公司 | 用于神经网络语言模型的压缩方法和系统 |
CN110442721A (zh) * | 2018-11-28 | 2019-11-12 | 腾讯科技(深圳)有限公司 | 神经网络语言模型、训练方法、装置及存储介质 |
CN109711483A (zh) * | 2019-01-08 | 2019-05-03 | 西安交通大学 | 一种基于Sparse Autoencoder的电力系统运行方式聚类方法 |
Non-Patent Citations (1)
Title |
---|
李江昀 等.深度神经网络模型压缩综述.《工程科学学报》.2019,第41卷(第10期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111667069A (zh) | 2020-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210295161A1 (en) | Training neural networks represented as computational graphs | |
CN111667069B (zh) | 预训练模型压缩方法、装置和电子设备 | |
KR20210029785A (ko) | 활성화 희소화를 포함하는 신경 네트워크 가속 및 임베딩 압축 시스템 및 방법 | |
JP2019528476A (ja) | 音声認識方法及び装置 | |
US11263223B2 (en) | Using machine learning to determine electronic document similarity | |
CN109923558A (zh) | 混合专家神经网络 | |
US20230196202A1 (en) | System and method for automatic building of learning machines using learning machines | |
US11853877B2 (en) | Training transfer-focused models for deep learning | |
US11423307B2 (en) | Taxonomy construction via graph-based cross-domain knowledge transfer | |
WO2019084558A1 (en) | SELECTING RESPONSE INTERVALS FROM ELECTRONIC DOCUMENTS USING AUTOMATIC APPRENTICESHIP | |
US20230315999A1 (en) | Systems and methods for intent discovery | |
US20220277031A1 (en) | Guided exploration for conversational business intelligence | |
Kamada et al. | A structural learning method of restricted Boltzmann machine by neuron generation and annihilation algorithm | |
US11900263B2 (en) | Augmenting neural networks | |
CN112463968B (zh) | 文本分类方法、装置和电子设备 | |
US20200394269A1 (en) | Machine Learning Based Intent Resolution for a Digital Assistant | |
Ravi | Efficient on-device models using neural projections | |
JP2024504179A (ja) | 人工知能推論モデルを軽量化する方法およびシステム | |
Naeem et al. | Complexity of deep convolutional neural networks in mobile computing | |
US10671909B2 (en) | Decreasing neural network inference times using softmax approximation | |
US11869128B2 (en) | Image generation based on ethical viewpoints | |
CN112307738B (zh) | 用于处理文本的方法和装置 | |
CN114020921A (zh) | 文本处理方法、装置、设备及存储介质 | |
CN113033213A (zh) | 使用注意力模型分析文本信息的方法及装置、电子设备 | |
CN112748953A (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 |