用于自然语言理解的神经网络的压缩的制作方法

    专利2022-07-08  86


    相关申请的交叉引用

    本申请根据35u.s.c.119(e)要求于2019年9月12日提交的名称为“compressingrecurrentneuralnetworksusedinnaturallanguageunderstanding(在自然语言理解中使用的递归神经网络的压缩)”的美国申请62/899,650和于2020年7月24日提交的名称为“compressingneuralnetworksfornaturallanguageunderstanding(用于自然语言理解的神经网络的压缩)”的美国申请16/938,098的权益和优先权,所述美国申请的全部内容出于所有目的通过引用以其全文并入本文。

    本公开总体涉及对话系统和机器学习。更具体地但不以非限制性的方式,本公开描述了用于使用相对较大的模型来生成大量标记的会话数据的技术,该大量标记的会话数据用于训练用于执行自然语言理解任务的相对较小的模型。



    背景技术:

    现在,越来越多的设备使得用户能够直接使用话音或口述语音与设备进行交互。例如,用户可以以自然语言对这种设备说话,其中,用户可以询问问题或进行请求要执行某个动作的陈述。作为响应,设备执行所请求的动作或使用话音输出来对用户的问题作出响应。由于直接使用话音进行交互对人类来说是与其周围环境进行交流的更自然且更直观的方式,因此,这种基于语音的系统的普及正以极大的速率增长。

    通过可以处于设备中的对话系统(有时也被称为聊天机器人或数字助理)促进了使用口述语音与设备进行交互的能力。对话系统通常使用机器学习模型来执行一系列对话处理任务。对话处理模型通常是大型、复杂的模型。这种复杂的模型通常在运行时执行缓慢,并且可能非常大(例如,预训练模型可能需要大量的存储资源和处理资源,有时达到这种模型必须容纳在超级计算机或多个服务器上的程度)。这使得难以将这种对话系统并入到低功率且资源匮乏的设备(例如,厨房电器、照明装置等)中。



    技术实现要素:

    本公开总体涉及自然语言理解。更具体地,描述了用于压缩用于在自然语言理解任务中使用的递归神经网络的技术。本文描述了各种实施例,包括方法、系统、存储有由一个或多个处理器可执行的程序、代码或指令的非暂态计算机可读存储介质等。

    在某些实施例中,一种用于训练神经网络以执行自然语言理解任务的方法包括:获得第一标记的会话数据;使用所述第一标记的会话数据来训练第一神经网络;获得第一未标记的会话数据;对所述第一未标记的会话数据执行经训练的第一神经网络以标记所述第一未标记的会话数据,从而生成第二标记的会话数据;以及使用所述第二标记的会话数据来训练用于执行自然语言理解任务的第二神经网络。

    在一些方面,在训练所述第一神经网络之前,所述方法进一步包括:获得第二未标记的会话数据;使用所述第二未标记的会话数据来训练第三神经网络以执行代理任务;以及基于所述第三神经网络生成所述第一神经网络。在一些方面,基于所述第三神经网络生成所述第一神经网络包括构建所述第一神经网络以包括所述第三神经网络的至少一部分。在一些方面,所述第三神经网络是所述第一神经网络的组件。在一些方面,所述代理任务包括预测语言任务。

    在一些方面,所述自然语言理解任务包括语义解析、意图分类或命名实体分类中的一个或多个。在一些方面,训练所述第二神经网络包括:对于所述第二标记的会话数据的第一训练输入,由所述第二神经网络输出预测输出;计算测量所述预测输出与和所述第一训练输入相关联的第一标签之间的误差的损失;基于所述损失,计算所述第二神经网络的第一组参数的更新值;以及通过将所述第一组参数的值改变为所述更新值来更新所述第二神经网络。

    实施例进一步包括被配置用于执行本文所描述的方法的系统和计算机可读存储器。

    在参考以下说明书、权利要求书和附图之后,前述内容连同其他特征和实施例将变得更加显而易见。

    附图说明

    图1是示出了根据某些实施例的对话系统的简化框图。

    图2是示出了根据某些实施例的模型压缩系统的简化框图。

    图3是示出了根据某些实施例的用于压缩用于自然语言理解任务的神经网络的方法的流程图。

    图4是示出了根据某些实施例的用于压缩用于自然语言理解任务的神经网络的另外的技术的流程图。

    图5描绘了用于实施实施例的分布式系统的简化图。

    图6是根据某些实施例的基于云的系统环境的简化框图,在该基于云的系统环境中,各种存储相关的服务可以作为云服务来提供。

    图7示出了可以用于实施某些实施例的示例性计算机系统。

    具体实施方式

    在以下描述中,出于解释的目的,阐述了具体细节以便提供对某些实施例的透彻理解。然而,将显而易见的是,可以在没有这些具体细节的情况下实践各种实施例。附图和描述不旨在是限制性的。单词“示例性”在本文中用来意指“用作示例、实例或说明”。在本文中被描述为示例性的任何实施例或设计不必被解释为比其他实施例或设计更优选或有利。

    能够经由话音输入和话音输出与用户进行对话的支持话音的系统可以以各种形式出现。例如,这种系统可以作为独立式设备、作为数字助理或虚拟助理、作为具有话音功能的服务等来提供。在这些形式中的每一种形式中,系统能够接收话音输入或语音输入、理解输入、生成响应或者响应于输入而采取动作、并且使用话音输出来输出响应。在某些实施例中,在这种支持话音的系统中的对话功能由对话系统或基础设施(“对话系统”)来提供。使用诸如聊天机器人或聊天机器人系统、数字助理等的各种术语来指代这种对话系统。

    对话系统可以使用过程的组合来操作。这种过程可以包括自然语言理解(nlu),该自然语言理解可以用于处理文本话语以生成含义表示。自然语言理解任务包括将语音数据(例如,文本话语)转换成适用于计算机处理的数据的任务。自然语言理解任务包括语义解析、命名实体识别和分类、空位填充(slotfilling)、词性标注、情感分析、词义消歧、词形还原、单词划分和句子边界检测等任务。

    如以上所指出的,用于对话处理任务的机器学习模型通常是大型或复杂的模型。通常,更复杂的模型的能力比更简单的模型的能力强,因为更复杂的模型可以理解更难懂的语言,并且可以以更复杂的方式作出响应。但是,与更简单的模型相比,复杂的模型也更大,并且在运行时使用更多的计算资源。虽然期望在小型嵌入式设备上执行对话处理任务,但是,在这种小型设备上运行复杂的模型可能根本不可行。

    在一些实施例中,用于在对话系统中执行自然语言处理任务的机器学习模型被“压缩”以创建“压缩模型”,该“压缩模型”在存储和处理要求方面可以足够小以在嵌入式设备上执行。第一机器学习模型从标记的训练数据训练。在一些实施例中,此第一机器学习模型是神经网络(“第一神经网络”,也被称为“标记模型”)。然后,此标记模型被用作教练模型(teacher)来训练更简单、更快速的模型。更简单、更快速的模型可以是最终在运行时使用的具有更小简档(profile)的神经网络(“第二神经网络”,本文中也被称为“压缩模型”)。以此方式压缩模型减少了模型的大小和执行模型所需的计算能力的量,以及存储模型所需的存储器。

    在一些实施例中,可以使用深度学习神经网络模型。通常,这种模型的复杂度由神经网络中的层数和神经网络中的节点数来表征。这些预训练模型可以具有12层或24层,并且每层可以在每层中具有数百万个节点。更简单的模型可以具有2层或3层,每层具有数百或数千个节点,并且可以比预训练模型小一个数量级或更多。

    在一些实施例中,利用标记的训练数据来训练标记模型以进行预测。这些预测可以用于生成可以用于创建压缩模型的大量的标记的数据。复杂的标记模型可以在相对较小的数据语料库上进行训练,然而更简单的压缩模型可能需要更多的数据以达到该相同的质量水平。因此,标记模型可以用于生成大量的标记的训练数据,以教导压缩模型来执行自然语言理解任务,从而有效地将复杂的标记模型的认知传送到较小的压缩模型。作为示例,对话系统可以访问大量的呼叫日志(例如,未标记的数据)。标记模型可以用于标记未标记的呼叫日志数据,并使用该呼叫日志数据来训练压缩模型。

    压缩模型可以被压缩以在一定的限制内适应。例如,为了在闹钟中使用自然语言理解,芯片将对其具有一定的存储器需求和速度需求。压缩模型可以根据这种硬件需求进行定制。用于自然语言理解任务的压缩模型小于标记模型(即,具有比标记模型更低的计算需求和存储器需求),但是具有与标记模型基本上相同的性能。

    在一些实施例中,标记模型本身可以基于另一个模型生成。可以训练用于生成标记模型的模型以执行与要执行的最终任务相关的代理任务。此过程被称为预训练。例如,可以训练非常大的“代理模型”以预测句子中的下一个单词或文本中的下一个句子。然后,此模型被用于生成标记模型,该标记模型被训练用于作出相关预测(例如,用于语义解析或情感分析)。相比于未利用任何预训练来生成的基本模型,这可以导致标记模型具有大大提高的性能。预训练模型对于诸如自然语言处理的任务非常有用,因为这些模型可以在庞大的数据集上训练,并学习非常大量的词汇。然而,由于预训练模型并入有许多不同类型的组件,因此,这种模型往往非常大,并且使用缓慢组件。通过使用具有大量内置信息的预训练模型,可以在相对较小的标记的训练数据的语料库上训练复杂的标记模型。然后,通过压缩这种模型或其衍生物,可以将大量的知识赋予到紧凑型压缩模型。

    图1示出了根据一些实施例的对话系统100的示例。对话系统100被配置为从用户102接收话音输入或语音输入104(也被称为语音话语)。然后,对话系统100可以解释话音输入。对话系统100可以维持与用户102的对话,并且可以基于对话音输入的解释来执行一个或多个动作或使一个或多个动作被执行。对话系统100可以准备适当的响应,并且使用话音输出或语音输出将响应输出给用户。

    在某些实施例中,由对话系统执行的处理由组件或子系统的流水线来实施,组件或子系统的流水线包括语音输入组件105、唤醒单词检测(wd)子系统106、自动语音识别(asr)子系统108、集成共享字典109、包括命名实体识别器(ner)子系统112和语义解析器子系统114的自然语言理解(nlu)子系统110、对话管理器(dm)子系统116、自然语言生成器(nlg)子系统118、文本到语音(tts)子系统120和语音输出组件124。以上列出的子系统可以仅在软件(例如,使用由一个或多个处理器或核可执行的代码、程序或指令)中、硬件中或硬件与软件的组合中实施。在某些实施方式中,子系统中的一个或多个子系统可以被组合成单个子系统。另外地或可替代地,在一些实施方式中,可以由多个子系统来实施如由特定子系统执行的本文所描述的功能。

    语音输入组件105包括被配置为接收语音输入104的硬件和软件。在一些实例中,语音输入组件105可以是对话系统100的一部分。在一些其他实例中,语音输入组件105可以与对话系统100分离并且通信地耦接至对话系统100。语音输入组件105可以例如包括耦接至软件的麦克风,该软件被配置为对语音输入进行数字化并将语音输入传输到唤醒单词检测子系统106。

    唤醒单词检测(wd)子系统106被配置为监听并监测音频输入流,用于获得与特殊声音或单词或一组单词(被称为唤醒单词)相对应的输入。在检测被配置用于对话系统100的唤醒单词时,wd子系统106被配置为激活asr子系统108。在某些实施方式中,可以为用户提供激活或去激活wd子系统106(例如,通过说出按下按钮的唤醒单词)的能力。当wd子系统106被激活(或在激活模式下操作)时,wd子系统106被配置为连续地接收音频输入流,并且对音频输入流进行处理以识别与唤醒单词相对应的音频输入或话音输入。当检测到与唤醒单词相对应的音频输入时,wd子系统106激活asr子系统108。

    如上所述,wd子系统106激活asr子系统108。在支持话音的系统的一些实施方式中,可以使用除唤醒单词以外的机制来触发或激活asr子系统108。例如,在一些实施方式中,可以使用设备上的按压按钮来触发asr子系统108进行处理,而不需要唤醒单词。在这种实施方式中,可以不提供wd子系统106。当按下或激活按压按钮时,将在按钮激活后接收到的语音输入提供给asr子系统108以进行处理。在一些实施方式中,在接收要处理的输入时,可以激活asr子系统108。

    asr子系统108被配置为在触发信号或唤醒信号(例如,可以在检测到语音输入中的唤醒单词时由wd子系统106发送唤醒信号,可以在激活按钮时接收唤醒信号等)之后接收和监测口述话音输入,并且将话音输入转换为文本。作为asr子系统108的处理的一部分,asr子系统108执行语音到文本的转换。口述语音输入或话音输入可以以自然语言的形式,并且asr子系统108被配置为用语音输入的语言生成相对应的自然语言文本。然后,将由asr子系统生成的文本馈送到nlu子系统110,以进行进一步处理。由asr子系统108接收的话音输入可以包括一个或多个单词、短语、从句、句子、问题等。asr子系统108被配置为生成每个口述从句的文本话语,并将文本话语馈送到nlu子系统110,以进行进一步处理。

    nlu子系统110接收由asr子系统108生成的文本。由nlu子系统110从asr子系统108接收的文本可以包括与口述单词、短语、从句等相对应的文本话语。nlu子系统110将每个文本话语(或一系列文本话语)转译成每个文本话语的相对应的逻辑形式。nlu子系统110可以进一步使用从asr子系统108传递的信息以从集成共享字典109快速获得信息,用于在生成逻辑形式时使用,如本文所述。

    在某些实施方式中,nlu子系统110包括命名实体识别器(ner)子系统112和语义解析器(sp)子系统114。ner子系统112接收文本话语作为输入、识别文本话语中的命名实体、并且利用与所识别的命名实体相关的信息来标注(tag)文本话语。然后,将标注的文本话语馈送到sp子系统114,sp子系统114被配置为生成每个标注的文本话语(或一系列标注的文本话语)的逻辑形式。为话语生成的逻辑形式可以识别与文本话语相对应的一个或多个意图。针对话语的意图识别话语的目的。意图的示例包括“orderpizza(订购披萨)”和“finddirections(查找方向)”。意图可以例如识别被请求要执行的动作。除了意图之外,生成文本话语的逻辑形式还可以识别针对所识别的意图的空位(也被称为参数或自变量)。例如,对于语音输入“i’dliketoorderalargepepperonipizzawithmushroomsandolives(我想要订购带有蘑菇和橄榄的大份意大利辣香肠披萨)”,nlu子系统110可以识别意图订购披萨。nlu子系统还可以识别并填充空位,例如,披萨_尺寸(用大份来填充)和披萨_浇头(用蘑菇和橄榄来填充)。nlu子系统可以使用基于机器学习的技术、规则(其可以是领域特定的)或两者的组合来生成逻辑形式。然后,将由nlu子系统110生成的逻辑形式馈送到dm子系统116,以进行进一步处理。

    在一些实施例中,nlu子系统110包括压缩模型115。压缩模型115是用于执行自然语言理解任务的相对较小的模型,压缩模型115已经使用本文所描述的技术进行压缩。在一些实施例中,压缩模型115是神经网络。压缩模型115可以是语义解析器(例如,语义解析器子系统114的一部分)。可替代地,或另外地,压缩模型可以是命名实体识别器(例如,ner子系统112的一部分)。可替代地,或另外地,压缩模型115可以是用于执行诸如空位填充、词性标注、情感分析、词义消歧等的自然语言理解任务的分离的子系统。以下关于图2至图4进一步详细描述用于生成压缩模型115的技术。

    dm子系统116被配置为基于从nlu子系统110接收的逻辑形式来管理与用户的对话。作为对话管理的一部分,dm子系统116被配置为跟踪对话状态、发起对多个动作或任务中的一个动作或任务的执行或自身执行多个动作或任务中的一个动作或任务、并且确定如何与用户进行交互。这些动作可以包括例如查询一个或多个数据库、产生执行结果及其他动作。例如,dm子系统116被配置为对在从nlu子系统110接收的逻辑形式中识别的意图进行解释。基于该解释,dm子系统116可以发起一个或多个动作,dm子系统116将该一个或多个动作解释为通过由用户所提供的话音输入所请求。在某些实施例中,dm子系统116基于当前的和过去的话音输入并基于被配置用于dm子系统116的一组规则(例如,对话策略)来执行对话状态跟踪。这些规则可以指定不同的对话状态、状态之间转变的条件、处于特定状态时要执行的动作等。这些规则可以是领域特定的。在某些实施例中,还可以使用基于机器学习的技术(例如,机器学习模型)。在一些实施例中,可以使用规则与机器学习模型的组合。dm子系统116还生成要被传递回对话中所涉及的用户的响应。这些响应可以基于由dm子系统116发起的动作以及动作的结果。将由dm子系统116生成的响应馈送到nlg子系统118,以进行进一步处理。

    nlg子系统118被配置为生成与由dm子系统116生成的响应相对应的自然语言文本。文本可以以使得该文本能够由tts子系统120转换为语音的形式生成。tts子系统120从nlg子系统118接收文本,并将文本中的每个文本转换为语音或话音音频,然后可以经由对话系统的音频或语音输出组件124(例如,扬声器或耦接至外部扬声器的通信信道)将该语音或话音音频输出给用户。在一些实例中,语音输出组件124可以是对话系统100的一部分。在一些其他实例中,语音输出组件124可以与对话系统100分离并且通信地耦接至对话系统100。

    如上所述,对话系统100的各种子系统协同工作提供使得对话系统100能够接收语音输入104、并使用语音输出122作出响应、并且使用自然语言语音来维持与用户的对话的功能。以上描述的各种子系统可以使用单个计算机系统或使用协同工作的多个计算机系统来实施。例如,对于实施支持话音的系统的设备,以上描述的对话系统100的子系统可以完全在用户与之进行交互的设备上实施。在一些其他实施方式中,对话系统100的一些组件或子系统可以在用户与之进行交互的设备上实施,而其他组件可以远离设备、可能在一些其他计算设备、平台或服务器上实施。

    如上所述,在某些实施例中,对话系统100可以使用子系统的流水线来实施。在一些实施例中,子系统中的一个或多个子系统可以被组合成单个子系统。在某些实施例中,可以由多个子系统来提供由特定子系统提供的功能。特定子系统还可以使用多个子系统来实施。

    在某些实施例中,可以使用机器学习技术来实施对话系统100的一个或多个功能。例如,可以使用监督机器学习技术(例如,使用神经网络(例如,深度神经网络)来实施的那些技术)来实施对话系统100的一个或多个功能。作为一个示例,可以提供被训练用于执行所执行的asr功能的神经网络,并且这种经训练的模型可以由asr子系统108使用,以用于asr子系统的处理。这种神经网络实施方式可以采用语音输入作为输入并且向nlu子系统输出文本话语。基于机器学习的模型也可以由对话系统100的其他子系统使用。

    图2示出了根据一些实施例的模型压缩系统200的示例。模型压缩系统200被配置为使用标记模型206以及训练数据库220中的未标记的会话数据222和标记的会话数据224来生成压缩模型115(例如,图1的对话系统100的压缩模型115)。在一些实施例中,代理模型202也用于生成标记模型206。在一些实施方式中,模型压缩系统200是对话系统100的子系统。可替代地,模型压缩子系统可以与对话系统分离,并且执行对压缩模型115的离线训练和准备,该压缩模型被推送至对话系统100以供执行。以上列出的子系统可以仅在软件(例如,使用由一个或多个处理器或核可执行的代码、程序或指令)中、硬件中或硬件与软件的组合中实施。在某些实施方式中,子系统中的一个或多个子系统可以被组合成单个子系统。另外地或可替代地,在一些实施方式中,可以由多个子系统来实施如由特定子系统执行的本文所描述的功能。

    在一些实施例中,训练数据库220是用于存储训练数据的存储单元和/或设备(例如,文件系统、数据库、表格的集合或其他存储机构)。训练数据库220可以包括多个不同的存储单元和/或设备。训练数据库220可以在模型压缩系统200本地(例如,本地存储),和/或通过网络(例如,云存储)连接至模型压缩系统200。

    在一些实施例中,存储至训练数据库220的训练数据用于训练代理模型202、标记模型206和/或压缩模型115。训练数据包括标记的会话数据224和未标记的会话数据222。未标记的会话数据222可以包括诸如聊天日志、电话记录、演讲或会议的抄本、电影脚本等的会话数据。未标记的会话数据222可以来自其中大量数据可用的源。在一些情况下,训练数据库220可以进一步存储另外的未标记的数据,例如从企业数据库或因特网(例如,从web抓取的一组网页、在线百科全书等)获得的数据。这可以用于甚至进一步丰富训练数据。标记的会话数据224是已经被标记或注释用于训练一个或多个机器学习模型的会话数据(例如,呼叫日志数据等)。例如,对用于训练模型以执行命名实体分类的标记的会话数据进行注释,使得利用命名实体类型(例如,人和城市)来标记命名实体(例如,johngoodman和巴黎)。

    在一些实施例中,标记模型206是用于执行自然语言理解任务的相对较大的模型。在一些实施方式中,标记模型206是神经网络,并且被称为第一神经网络。例如,标记模型206可以是具有12层或24层的递归神经网络。标记模型被训练用于执行诸如语义解析或命名实体分类的自然语言理解任务。尽管标记模型可能实际上并不在运行时使用,但是可以训练标记模型以执行最终期望要执行的任务,。标记模型206使用标记的会话数据224的全部或子集来训练。

    标记模型206用于标记训练数据库220中的未标记的会话数据222的全部或子集,以生成标记的会话数据224。例如,对于执行语义解析的训练模型,执行标记模型206来解析未标记的会话数据222中的文本从句,以生成含义表示。此含义表示可以链接至未标记的数据的相应部分,以生成标记的会话数据224。

    在一些实施例中,压缩模型115是用于执行自然语言理解任务的相对较小的模型。在一些实施方式中,压缩模型115是神经网络,并且被称为第二神经网络。例如,压缩模型115可以是具有2层或4层的递归神经网络。压缩模型115被训练用于执行诸如语义解析或命名实体分类的自然语言理解任务。压缩模型115可以被训练用于执行与训练标记模型206以执行的任务相同的任务。压缩模型115使用由标记模型206生成的标记的会话数据224来训练。

    在一些实施方式中,使用多个训练数据集来训练多个机器学习模型,使用该多个机器学习模型来生成用于在运行时使用的压缩模型115。用于训练标记模型206的训练数据集被称为标记的会话数据224中的第一标记的会话数据。标记模型206标记未标记的会话数据222中的第一未标记的会话数据。通过标记第一未标记的会话数据,标记模型生成标记的会话数据224中的第二标记的会话数据,该第二标记的会话数据用于训练压缩模型115。在一些实施方式中,还使用第三模型(代理模型202)来生成标记模型206。此代理模型202可以在另外的未标记的数据上进行训练,该另外的未标记的数据可以包括未标记的会话数据222中的第二未标记的会话数据。

    在一些实施例中,代理模型202是用于执行自然语言任务的大型模型(例如,预训练模型)。在一些实施方式中,代理模型202是神经网络,并且被称为第三神经网络。例如,代理模型202可以是具有24层或更多层的递归神经网络。代理模型202可以被训练用于执行代理任务,对于该代理任务有非常大量的数据是可用的。例如,给定出现单词的同一句子或段落中的所有其他单词时,可以训练代理模型202以预测来自web的句子中随机选择的单词。因为代理模型202是在非常多的不同数据(例如,极大量的词汇)上训练的,所以代理模型202可能非常大。

    在一些实施例中,标记模型206是基于代理模型202生成的组合模型。使用代理模型202生成标记模型206提高了由标记模型206做出的预测的准确性,因为代理模型202使得标记模型206能够以更可靠的方式从任务特定的训练数据进行归纳。

    用作代理模型202和/或标记模型206的大型模型的具体示例包括双向转换器模型(例如,基于转换器的双向编码器表示(bert))和深度双向语言模型(例如,语言模型嵌入(elmo)。bert是学习文本中的单词之间或单词的部分之间的上下文关系的双向转换器模型。(j.devlin等人,“bert:pre-trainingofdeepbidirectionaltransformersforlanguageunderstanding(bert:用于语言理解的深度双向转换器的预训练)”,可从https://arxiv.org/pdf/1810.04805.pdf(2019)获得)。elmo是深度上下文化的单词表示,该深度上下文化的单词表示使用在大型数据集上训练的深度预训练神经网络。elmo模型表征诸如语法和语义的单词使用,以及单词使用如何跨语言上下文变化。(m.peters等人,“deepcontextualizedwordrepresentations(深度上下文化的单词表示)”,可从https://arxiv.org/abs/1802.05365(2017)获得)。

    图3是示出了根据某些实施例的用于压缩用于自然语言理解任务的神经网络的方法300的流程图。图3中所描绘的处理可以在由相应系统的一个或多个处理单元(例如,处理器、核)执行的软件(例如,代码、指令、程序)中、硬件中或其组合中实施。软件可以存储在非暂态存储介质上(例如,存储器设备上)。图3中所呈现的且下文所描述的方法旨在是说明性的而非限制性的。尽管图3描绘了以特定序列或顺序发生的各种处理步骤,但这并不旨在是限制性的。在某些可替代的实施例中,可以以某种不同的顺序执行步骤或者还可以并行地执行一些步骤。在某些实施例中,图3中所描绘的处理可以由图2的模型压缩系统200来执行。

    在302处,模型压缩系统获得第一标记的会话数据。在初始时间处,可以利用特定于期望的任务(例如,意图或命名实体)的数据来手动地或自动地注释标记的会话数据。第一标记的会话数据可以是小数据集或大数据集。模型压缩系统可以通过下载数据来获得第一标记的会话数据。可替代地,或另外地,第一标记的会话数据可以被生成并存储在模型压缩系统本身上。如以上关于图2所描述的,第一标记的会话数据可以源自诸如呼叫中心日志、聊天日志等源,并且可以存储到模型压缩系统200的训练数据库220。

    在304处,模型压缩系统使用第一标记的会话数据来训练标记模型。在一些实施方式中,标记模型是用于执行自然语言理解任务的神经网络(例如,图2的标记模型206)。标记模型在本文中也被称为第一神经网络,尽管应理解的是,在一些实施方式中,可以选择其他类型的机器学习模型作为标记模型。

    模型压缩系统可以使用适合于感兴趣的自然语言理解任务(例如,用于语义解析、命名实体分类等)的标记的数据来训练标记模型。例如,可以使用已经利用逻辑形式来标记的会话数据(例如,利用相对应的逻辑形式来标记的一组话语)来训练标记模型。作为另一个示例,可以使用已经利用命名实体类型来标记的会话数据来训练标记模型,使得标记模型被训练用于对命名实体进行分类。在一些实施例中,训练标记模型包括使用可以用于生成标记模型的代理模型202,如以下关于图4进一步详细描述的。

    在一些实施例中,使用损失最小化技术来训练标记模型。例如,第一标记的会话数据包括各种训练输入。对于第一标记的会话数据的第一训练输入,标记模型被执行并输出预测输出。作为具体示例,标记模型接收样本话语(例如,“巴黎在哪个国家?”)作为输入(例如,到第一神经网络)。标记模型被配置为执行命名实体分类任务,并输出针对样本话语的预测命名实体(巴黎=城市)。模型压缩系统计算测量预测输出与和第一训练输入相关联的第一标签(例如,将巴黎的命名实体类型标记为城市)之间的误差的损失。不同类型的损失函数可以适用于不同的模型架构和最终目标。损失函数包括交叉熵函数(参见例如,nielson,“neuralnetworksanddeeplearning(神经网络和深度学习)”,章节3.2(最后更新时间2020年7月))和平均绝对误差损失函数(参见例如,以下中的平均绝对误差:sammutc.,webbg.i.(编辑),encyclopediaofmachinelearning(机器学习的百科全书),springer(斯普林格公司),波士顿,马萨诸塞州(2011))。模型压缩系统可以使用所计算的损失来计算标记模型的第一组参数的更新值。然后,通过将第一组参数的值改变为更新值来更新标记模型。

    在306处,对话系统使用经训练的标记模型来标记第一未标记的会话数据,以生成第二标记的会话数据。系统可以使用经训练的标记模型来标记未标记的会话数据。未标记的会话数据可以例如包括呼叫日志、文本聊天日志等。未标记的会话数据的其他示例包括电子邮件和其他书面文档。使用经训练的标记模型来标记未标记的数据可以包括使用经训练的标记模型来执行自然语言处理任务。对标记模型的输入可以包括特定的会话数据元素(例如,话语“我如何到达海滩?”)。经训练的标记模型可以执行自然语言任务以输出值,并且可以使用该值来标记会话数据。继续以上示例,经训练的标记模型已经被训练用于执行意图分类。经训练的标记模型对于输入话语“我如何到达海滩”的输出是意图方向_到(directions_to)。模型压缩系统使用意图方向_到来标记话语“我如何到达海滩?”。结果为标记的训练数据—话语:“我如何到达海滩?” 意图:“方向_到”。此标记的训练数据(“第二标记的会话数据”)可以保存到训练数据库220中的包括在302处使用的第一未标记的会话数据的相同数据集,或保存到训练数据库220中的不同数据集。

    在308处,系统使用第二标记的会话数据来训练用于自然语言理解任务的压缩模型。在一些实施例中,压缩模型是神经网络(例如,第二神经网络)。压缩模型是显著小于标记模型的模型。压缩模型被训练用于执行自然语言理解任务,该自然语言理解任务可以是标记模型已经被训练用于执行的相同类型的自然语言理解任务(例如,命名实体分类、语义解析等)。因为压缩模型显著小于标记模型,所以nlu模型的计算需求和存储器需求显著低于压缩模型的计算需求和存储器需求。

    在一些实施例中,使用损失最小化技术来训练压缩模型。这可以采用与以上关于在304处训练标记模型所描述的方式类似的方式来执行。对于第二标记的会话数据的第一训练输入,可以执行压缩模型。压缩模型输出预测输出。模型压缩系统计算测量预测输出与和第一训练输入相关联的第一标签之间的误差的损失。模型压缩系统可以使用所计算的损失来计算压缩模型的第一组参数的更新值。然后,通过将第一组参数的值改变为更新值来更新压缩模型。

    图4示出了用于基于代理模型生成图3的标记模型的步骤。在一些实施例中,可以最初执行图4的处理,以生成图3的标记模型。图4中所描绘的处理可以在由相应系统的一个或多个处理单元(例如,处理器、核)执行的软件(例如,代码、指令、程序)中、硬件中或其组合中实施。软件可以存储在非暂态存储介质上(例如,存储器设备上)。图4中所呈现的且下文所描述的方法旨在是说明性的而非限制性的。尽管图4描绘了以特定序列或顺序发生的各种处理步骤,但这并不旨在是限制性的。在某些可替代的实施例中,可以以某种不同的顺序来执行步骤或者还可以并行地执行一些步骤。在某些实施例中,图4中所描绘的处理可以由图2的模型压缩系统200来执行。图4的处理可以作为图3的处理的前序来执行。

    在402处,模型压缩系统获得第二未标记的会话数据。第二未标记的会话数据可以是大数据集,例如web的抓取、大的网站组和/或大的聊天日志组。模型压缩系统可以通过将数据下载到训练数据库220来获得第二未标记的会话数据。可替代地,或另外地,模型压缩系统可以远程访问未标记的会话数据(例如,经由api)。在一些情况下,第二未标记的会话数据与图3的处理中使用的第一未标记的会话数据相同。可替代地,在一些实施例中,使用不同的数据集(例如,第一未标记的会话数据和第二未标记的会话数据是不同的数据集)。例如,如果要在非常大的非结构化数据集上训练代理模型,则使用不同的数据集可能是合适的,而要由标记模型标记的第一未标记的会话数据是更适度大小的结构化数据集。

    在404处,模型压缩系统使用第二未标记的会话数据来训练代理模型以执行代理任务。在一些实施例中,代理模型是神经网络(例如,第三神经网络)。在一些实施方式中,代理模型是诸如bert或elmo的大的预训练模型。代理模型被训练用于执行代理任务。代理任务是将教导代理模型信息的任务,该代理模型信息对于训练标记模型和/或压缩模型将是有用的。例如,在图3的框304和306处使用的标记模型将用于语义解析。代理模型被训练用于预测句子中的下一个单词,使得代理模型可以在使用广泛的数据集的同时学习理解语言。因此,代理任务可以包括预测语言任务。在一些实施方式中,标记模型可以具有与代理模型相同或非常类似的架构。例如,两种模型均可以是具有相对较大数量的层(例如,12或24层)的递归神经网络。

    在406处,模型压缩系统基于代理模型生成标记模型(例如,在图3的处理中使用的第一神经网络)。模型压缩系统可以使用代理模型来构建标记模型。

    在一些实施方式中,基于代理模型构建标记模型可以包括构建标记模型(例如,第一神经网络)以包括代理模型(例如,第三神经网络)的至少一部分。例如,可以对代理模型进行微调以执行特定的自然语言处理任务。例如,对于是神经网络的代理模型,模型压缩系统可以替换输入层和输出层以适应要执行的任务。作为具体示例,代理模型可以被适配为接受表示话语的嵌入作为输入,并返回用于自然语言处理的感兴趣的值(例如逻辑形式、命名实体类型、情感、词性类型等)作为输出。如在图3的框302和304处所描述的,微调可以通过使用标记的训练数据训练代理模型来完成。

    在一些实施方式中,代理模型是标记模型的组件。例如,可以修改代理模型以输出如以上所描述的适当类型的值。然后,将此模型与被训练用于执行等同的自然语言处理任务的一个或多个另外的子模型组合。例如,可以构建两个命名实体识别器,或可以构建四个语义解析器模型等。然后,可以使用合适的技术(例如集成学习(参见例如,zhou等人,“ensemblingneuralnetworks:manycouldbebetterthanall(集成神经网络:许多可能比所有更好)”,artificialintelligence(人工智能),第137卷,第239-263页(2002))或孪生神经网络(参见例如,bromley等人,“signatureverificationusinga“siamese”(使用“孪生”进行签名验证)”,timedelayneuralnetwork(时间延迟神经网络)(1994)))来组合模型。

    可替代地,或另外地,代理模型可以用作标记模型的组件,而无需修改代理模型的输出。此方法对使用代理模型来完成与标记模型不同的任务来说可以是有用的。例如,代理模型可以是预测输入中的下一个单词的语言模型,并且作为标记模型的组件工作,该标记模型可以是将用户请求转译为逻辑形式的语义解析器。例如,预测组件可以用于加速由标记模型执行的语义解析。

    使用初始预训练的初始模型可以提高由标记模型做出的预测的准确性,因为该初始模型使得标记模型能够以更可靠的方式从任务特定的训练数据进行归纳。例如,标记模型可以适当地归纳到没有出现在任务特定的训练数据中的单词,因为这些单词出现在用于预训练初始模型的大量训练数据中。然而,因为标记模型将初始模型并入,并且高性能的预训练模型可能非常大并且具有高计算需求和存储器需求,所以,标记模型也可能具有高计算需求和存储器需求。因此,如以上关于图3所描述的,可以使用由标记模型标记的数据来生成较小的nlu模型。

    本文所描述的技术具有多个优点。自然语言理解模型通常太大以至于自然语言理解模型需要多个服务器来执行。在一些情况下,期望将nlu功能嵌入到诸如时钟收音机或智能手表的个人设备中,在这种情况下,模型必须小得多。本文所描述的压缩技术可以用于将nlu模型减小到适用于在这种嵌入式系统上执行的大小。即使对于在云中运行的nlu任务,也期望减少存储器使用需求和计算需求,这可以使用这些技术来实现。本文所描述的技术可以从具有大量语言知识的非常大的预训练模型开始,并且将该知识赋予在小的压缩模型上,从而在不牺牲准确性的情况下,极大地节省了存储器需求和存储需求以及用于执行模型的时间。

    以上描述的基础设施可以在包括云环境(可以是包括私有云环境、公共云环境和混合云环境的各种类型的云)、本地部署(on-premises)环境、混合环境等的各种不同的环境中实施。

    图5描绘了用于实施实施例的分布式系统500的简化图。在示出的实施例中,分布式系统500包括经由一个或多个通信网络510耦接到服务器512的一个或多个客户端计算设备502、504、506和508。客户端计算设备502、504、506和508可以被配置为执行一个或多个应用程序。

    在各种实施例中,服务器512可以被适配为运行能够使来自语音输入的意图的识别合理化的一个或多个服务或软件应用程序。

    在某些实施例中,服务器512还可以提供可以包括非虚拟环境和虚拟环境的其他服务或软件应用程序。在一些实施例中,这些服务可以作为基于web的服务或云服务(例如在软件即服务(saas)模型下)提供给客户端计算设备502、504、506和/或508的用户。操作客户端计算设备502、504、506和/或508的用户进而可以利用一个或多个客户端应用程序来与服务器512进行交互以利用由这些组件提供的服务。

    在图5所描绘的配置中,服务器512可以包括实施由服务器512执行的功能的一个或多个组件518、520和522。这些组件可以包括可以由一个或多个处理器执行的软件组件、硬件组件或其组合。应了解,可以与分布式系统500不同的各种不同的系统配置是可能的。因此,图5所示出的实施例是用于实施实施例系统的分布式系统的一个示例,并且不旨在是限制性的。

    根据本公开的教导,用户可以使用客户端计算设备502、504、506和/或508来压缩用于在nlu中使用的神经网络。客户端设备可以提供使客户端设备的用户能够与客户端设备进行交互的界面。客户端设备还可以经由此界面向用户输出信息。尽管图5仅描绘了四个客户端计算设备,但是,可以支持任何数量的客户端计算设备。

    客户端设备可以包括各种类型的计算系统,例如便携式手持设备、通用计算机(例如个人计算机和膝上型计算机)、工作站计算机、可穿戴设备、游戏系统、瘦客户端、各种消息传递设备、传感器或其他感测设备等。这些计算设备可以运行包括各种移动操作系统(例如,microsoftwindowswindowsandroidtmpalm)的各种类型和版本的软件应用程序和操作系统(例如,microsoftapple或类unix操作系统、linux或类linux操作系统(例如googlechrometmos))。便携式手持设备可以包括蜂窝电话、智能电话(例如,)、平板计算机(例如,)、个人数字助理(pda)等。可穿戴设备可以包括google头戴式显示器以及其他设备。游戏系统可以包括各种手持游戏设备、支持因特网的游戏设备(例如,具有或没有姿势输入设备的microsoft游戏控制台、sony系统、由提供的各种游戏系统、以及其他)等。客户端设备可以能够执行各种不同的应用程序,例如各种因特网相关的应用程序、通信应用程序(例如,电子邮件应用程序、短消息服务(sms)应用程序),并可以使用各种通信协议。

    一个或多个网络510可以是本领域技术人员所熟悉的可以使用各种可用协议中的任何一种可用协议来支持数据通信的任何类型的网络,该各种可用协议包括但不限于tcp/ip(传输控制协议/因特网协议)、sna(系统网络架构)、ipx(因特网分组交换)、等。仅通过示例的方式,一个或多个网络510可以是局域网(lan)、基于以太网的网络、令牌环、广域网(wan)、因特网、虚拟网络、虚拟私人网络(vpn)、内部网、外部网、公共交换电话网(pstn)、红外线网、无线网络(例如,根据电气与电子协会(ieee)1002.11协议套、和/或任何其他无线协议来操作的网络)和/或这些网络和/或其他网络的任何组合。

    服务器512可以由以下各项构成:一个或多个通用计算机、专用服务器计算机(通过示例的方式包括pc(个人计算机)服务器、服务器、中档服务器、大型计算机、机架式服务器等)、服务器场、服务器集群、或任何其他适当的布置和/或组合。服务器512可以包括运行虚拟操作系统的一个或多个虚拟机或涉及虚拟化的其他计算架构(例如逻辑存储设备的可以被虚拟化以维护用于服务器的虚拟存储设备的一个或多个灵活池(flexiblepool)。在各种实施例中,服务器512可以被适配为运行提供前述公开中所描述的功能的一个或多个服务或软件应用程序。

    服务器512中的计算系统可以运行一个或多个操作系统,该一个或多个操作系统包括以上所讨论的那些操作系统中的任何一个操作系统以及任何商业上可获得的服务器操作系统。服务器512也可以运行各种另外的服务器应用程序和/或中间层应用程序中的任何一种应用程序,包括http(超文本运输协议)服务器、ftp(文件传送协议)服务器、cgi(通用网关接口)服务器、服务器、数据库服务器等。示例性数据库服务器包括但不限于从(国际商业机器公司)等商业上可获得的那些数据库服务器。

    在一些实施方式中,服务器512可以包括一个或多个应用程序以分析并合并从客户端计算设备502、504、506和508的用户接收的数据馈送和/或事件更新。作为示例,数据馈送和/或事件更新可以包括但不限于馈送、更新或从一个或多个第三方信息源和连续数据流接收的实时更新,该实时更新可以包括与传感器数据应用程序、财务收报机、网络性能测量工具(例如,网络监测和流量管理应用程序)、点击流分析工具、汽车交通监测等相关的实时事件。服务器512还可以包括一个或多个应用程序以经由客户端计算设备502、504、506和508的一个或多个显示设备来显示数据馈送和/或实时事件。

    分布式系统500还可以包括一个或多个数据储存库514、516。在某些实施例中,这些数据储存库可以用于存储数据和其他信息。例如,数据储存库514、516中的一个或多个数据储存库可以用于存储用于训练用于nlu的模型的信息。数据储存库514、516可以驻留在各位置中。例如,由服务器512使用的数据储存库可以在服务器512本地或者可以远离服务器512并经由基于网络的或专用的连接与服务器512进行通信。数据储存库514、516可以是不同类型。在某些实施例中,由服务器512使用的数据储存库可以是数据库,例如关系数据库(例如由oracle和其他供应商提供的数据库)。这些数据库中的一个或多个数据库可以被适配为响应于sql格式的命令来实现到数据库以及来自数据库的数据的存储、更新和检索。

    在某些实施例中,数据储存库514、516中的一个或多个数据储存库还可以由应用程序使用以存储应用程序数据。由应用程序使用的数据储存库可以是诸如例如关键值存储储存库、对象存储储存库或由文件系统支持的通用存储储存库的不同类型。

    在某些实施例中,本公开中所描述的nlu相关的功能可以经由云环境作为服务来提供。图6是根据某些实施例的基于云的系统环境的简化框图,在该基于云的系统环境中,各种nlu相关的服务可以作为云服务来提供。在图6所描绘的实施例中,云基础设施系统602可以提供可以由用户使用一个或多个客户端计算设备604、606和608来请求的一个或多个云服务。云基础设施系统602可以包括一个或多个计算机和/或服务器,该一个或多个计算机和/或服务器可以包括以上针对服务器512所描述的那些计算机和/或服务器。云基础设施系统602中的计算机可以被组织为通用计算机、专用服务器计算机、服务器场、服务器集群或任何其他适当的布置和/或组合。

    一个或多个网络610可以促进客户端604、606和608与云基础设施系统602之间的数据通信和交换。一个或多个网络610可以包括一个或多个网络。网络可以是相同或不同的类型。一个或多个网络610可以支持用于促进通信的一个或多个通信协议(包括有线和/或无线协议)。

    图6所描绘的实施例仅是云基础设施系统的一个示例并且不旨在是限制性的。应了解,在一些其他实施例中,云基础设施系统602可以具有比图6所描绘的那些组件更多或更少的组件、可以组合两个或更多个组件或可以具有不同的组件配置或布置。例如,尽管图6描绘了三个客户端计算设备,但是在可替代的实施例中,可以支持任何数量的客户端计算设备。

    术语云服务通常用于指代由服务提供商的系统(例如,云基础设施系统602)按需且经由诸如因特网的通信网络变得可用于用户的服务。通常,在公共云环境中,构成云服务提供商的系统的服务器和系统与客户自身的自行管理的服务器和系统不同。云服务提供商的系统由云服务提供商管理。因此,客户可以使自身利用由云服务提供商提供的云服务,而不必针对服务购买单独的许可、支持或硬件和软件资源。例如,云服务提供商的系统可以托管应用程序,并且用户可以经由因特网按需订购并使用应用程序,而用户不必购买用于执行应用程序的基础设施资源。云服务被设计成提供对应用程序、资源和服务的容易的、可伸缩的访问。多个提供商提供云服务。例如,由加利福尼亚州红木海岸(redwoodshores,california)的oracle提供诸如中间件服务、数据库服务、java云服务以及其他服务的多种云服务。

    在某些实施例中,云基础设施系统602可以使用不同的模型(例如在软件即服务(saas)模型、平台即服务(paas)模型、基础设施即服务(iaas)模型和其他模型(包括混合服务模型)下)提供一个或多个云服务。云基础设施系统602可以包括实现对各种云服务的供给的一套应用程序、中间件、数据库和其他资源。

    saas模型使应用程序或软件能够作为服务通过如因特网的通信网络输送到客户,而客户不必购买用于底层应用程序的硬件或软件。例如,可以使用saas模型以为客户提供对由云基础设施系统602托管的按需应用程序的访问。由oracle提供的saas服务的示例包括但不限于用于人力资源/资本管理、客户关系管理(crm)、企业资源规划(erp)、供应链管理(scm)、企业绩效管理(epm)、分析服务、社交应用程序以及其他的各种服务。

    iaas模型通常用于将基础设施资源(例如,服务器、存储、硬件和联网资源)作为云服务提供给客户以提供弹性计算和存储能力。由oracle提供各种iaas服务。

    paas模型通常用于提供使客户能够开发、运行并管理应用程序和服务而客户不必采购、构建或维护这种资源的平台和环境资源作为服务。由oracle提供的paas服务的示例包括但不限于oraclejava云服务(jcs)、oracle数据库云服务(dbcs)、数据管理云服务、各种应用程序开发解决方案服务、以及其他服务。

    云服务通常以按需自助服务基础、基于订阅、弹性可伸缩、可靠、高度可用且安全的方式来提供。例如,客户可以经由订阅订单来订购由云基础设施系统602提供的一个或多个服务。然后,云基础设施系统602执行处理以提供客户的订阅订单中请求的服务。例如,云基础设施系统602训练用于nlu相关的任务的一组模型。云基础设施系统602可以被配置为提供一个或甚至多个云服务。

    云基础设施系统602可以经由不同的部署模型提供云服务。在公共云模型中,云基础设施系统602可以由第三方云服务提供商拥有,并且云服务被提供给任何一般的公众客户,其中,客户可以是个人或企业。在某些其他实施例中,在私有云模型下,云基础设施系统602可以在组织内(例如,在企业组织内)操作并且服务被提供给组织内的客户。例如,客户可以是诸如人力资源部门、薪资部门等的企业的各种部门或甚至是企业内的个人。在某些其他实施例中,在社区云模型下,云基础设施系统602和所提供的服务可以由相关的社区中的多个组织共享。也可以使用各种其他模型,例如以上所提到的模型的混合。

    客户端计算设备604、606和608可以是不同类型的(例如图5所描绘的设备502、504、506和508)并且可以能够操作一个或多个客户端应用程序。用户可以使用客户端设备来与云基础设施系统602进行交互,例如请求由云基础设施系统602提供的服务。例如,用户可以使用客户端设备来请求本公开中所描述的nlu相关的服务。

    在一些实施例中,由云基础设施系统602执行的用于提供nlu相关的服务的处理可以涉及大数据分析。此分析可以涉及使用、分析并操纵大数据集以检测并可视化数据内的各种趋势、行为、关系等。此分析可以由一个或多个处理器执行,从而可能并行地处理数据、使用数据执行模拟等。例如,大数据分析可以由云基础设施系统602执行,以用于基于接收到的语音输入来识别意图。用于此分析的数据可以包括结构化数据(例如,存储在数据库中或根据结构化模型结构化的数据)和/或非结构化数据(例如,数据团(datablob)(二进制大对象))。

    如图6中的实施例所描绘的,云基础设施系统602可以包括被用于促进供给由云基础设施系统602提供的各种云服务的基础设施资源630。基础设施资源630可以包括例如处理资源、存储或存储器资源、联网资源等。

    在某些实施例中,为了促进对这些资源的高效供给以用于支持由云基础设施系统602为不同客户提供的各种云服务,资源可以被捆绑成资源组或资源模块(也被称为“群聚(pod)”)。每个资源模块或群聚可以包括一种或多种类型的资源的预先集成且优化的组合。在某些实施例中,可以为不同类型的云服务预先供给不同的群聚。例如,可以为数据库服务供给第一组群聚、可以为java服务供给第二组群聚(该第二组群聚可以包括与第一组群聚中的群聚不同的资源的组合)等。对于一些服务,被分配用于供给服务的资源可以在服务之间共享。

    云基础设施系统602本身可以在内部使用由云基础设施系统602的不同组件共享并且促进由云基础设施系统602供给服务的服务632。这些内部共享服务可以包括但不限于安全和身份服务、集成服务、企业储存库服务、企业管理器服务、病毒扫描和白名单服务、高度可用性、备份和恢复服务、用于实现云支持的服务、电子邮件服务、通知服务、文件传送服务等。

    云基础设施系统602可以包括多个子系统。这些子系统可以在软件或硬件或其组合中实施。如图6所描绘的,子系统可以包括使云基础设施系统602的用户或客户能够与云基础设施系统602进行交互的用户界面子系统612。用户界面子系统612可以包括各种不同的界面,例如web界面614、在线商店界面616(其中,对由云基础设施系统602提供的云服务做广告,并且客户可购买由云基础设施系统602提供的云服务)和其他界面618。例如,客户可以使用客户端设备请求(服务请求634)由云基础设施系统602使用界面614、616和618中的一个或多个界面来提供的一个或多个服务。例如,客户可以访问在线商店、浏览由云基础设施系统602提供的云服务并且针对客户希望订阅的由云基础设施系统602提供的一个或多个服务下订阅订单。服务请求可以包括识别客户和客户期望订阅的一个或多个服务的信息。例如,客户可以针对由云基础设施系统602提供的nlu相关的服务下订阅订单。作为订单的一部分,客户可以提供识别请求的语音输入。

    在某些实施例(例如图6所描绘的实施例)中,云基础设施系统602可以包括被配置为处理新订单的订单管理子系统(oms)620。作为此处理的一部分,oms620可以被配置为:为客户创建账户(如果尚未创建);从客户接收要用于向客户开具账单以用于向客户提供所请求的服务的账单和/或计费信息;验证客户信息;在验证之后,为客户预订订单;并且策划各种工作流程以准备订单用于供给。

    一旦被正确地验证,oms620就可以调用被配置为为订单供给资源(包括处理资源、存储器资源和联网资源)的订单供给子系统(ops)624。供给可以包括为订单分配资源并配置资源以促进由客户订单所请求的服务。为订单供给资源的方式和所供给的资源的类型可以取决于由客户已经订购的云服务的类型。例如,根据一个工作流程,ops624可以被配置为确定正在请求的特定云服务并且识别可能已经为该特定云服务预先配置的群聚的数量。为订单分配的群聚的数量可以取决于所请求的服务的大小/量/层级/范围。例如,要分配的群聚的数量可以基于由服务所要支持的用户的数量、正在请求服务的持续时间等来确定。然后,可以为特定的请求客户定制分配的群聚以用于提供所请求的服务。

    云基础设施系统602可以向请求客户发送响应或通知644,以指示何时所请求的服务现在已准备好使用。在一些实例中,可以向客户发送使客户能够开始使用和利用所请求的服务的益处的信息(例如,链接)。在某些实施例中,对于请求nlu相关的服务的客户,响应可以包括基于所识别的意图而生成的响应。

    云基础设施系统602可以向多个客户提供服务。对于每个客户,云基础设施系统602负责管理与从客户接收的一个或多个订阅订单相关的信息、维护与订单相关的客户数据并且向客户提供所请求的服务。云基础设施系统602还可以收集关于客户使用所订阅的服务的使用情况统计。例如,可以针对所使用的存储量、所传送的数据量、用户的数量以及系统开机时间量和系统停机时间量等收集统计。可以使用此使用信息向客户开具账单。账单可以例如以月为周期来完成开具。

    云基础设施系统602可以并行地向多个客户提供服务。云基础设施系统602可以存储针对这些客户的信息(可能包括专有信息)。在某些实施例中,云基础设施系统602包括被配置为管理客户信息并提供对所管理的信息的分离使得与一个客户相关的信息不能够被另一个客户访问的身份管理子系统(ims)628。ims628可以被配置为提供诸如身份服务(例如信息访问管理)、认证和授权服务、用于管理客户身份和角色以及相关功能的服务等的各种安全有关的服务。

    图7示出了可以用于实施某些实施例的示例性计算机系统700。例如,在一些实施例中,计算机系统700可以用于实施以上描述的asr子系统、nlu子系统以及各种服务器和计算机系统中的任何一个。如图7所示,计算机系统700包括各种子系统,该各种子系统包括经由总线子系统702与多个其他子系统进行通信的处理子系统704。这些其他子系统可以包括处理加速单元706、i/o子系统708、存储子系统718和通信子系统724。存储子系统718可以包括非暂态计算机可读存储介质,该非暂态计算机可读存储介质包括存储介质722和系统存储器710。

    总线子系统702提供用于使计算机系统700的各种组件和子系统按预期彼此通信的机构。虽然总线子系统702被示意性地示出为单个总线,但是,总线子系统的可替代的实施例可以利用多个总线。总线子系统702可以是包括存储器总线或存储器控制器、外围总线、使用各种总线架构中的任何一种总线架构的局部总线等的若干类型的总线结构中的任何一种。例如,这种架构可以包括工业标准架构(isa)总线、微通道架构(mca)总线、增强型isa(eisa)总线、视频电子标准协会(vesa)局部总线以及外围组件互连(pci)总线(该外围组件互连总线可以被实施为被制造成ieeep1386.1标准的夹层(mezzanine)总线)等。

    处理子系统704控制计算机系统700的操作并且可以包括一个或多个处理器、专用集成电路(asic)或现场可编程门阵列(fpga)。处理器可以包括单核处理器或多核处理器。计算机系统700的处理资源可以被组织成一个或多个处理单元732、734等。处理单元可以包括一个或多个处理器、来自相同或不同处理器的一个或多个核、核和处理器的组合或核和处理器的其他组合。在一些实施例中,处理子系统704可以包括诸如图形处理器、数字信号处理器(dsp)等的一个或多个专用协处理器。在一些实施例中,处理子系统704的处理单元中的一些或全部可以使用诸如专用集成电路(asic)或现场可编程门阵列(fpga)的定制电路来实施。

    在一些实施例中,处理子系统704中的处理单元可以执行存储在系统存储器710中或计算机可读存储介质722上的指令。在各种实施例中,处理单元可以执行各种程序或代码指令并且可以维护多个同时执行的程序或过程。在任何给定时间,要执行的程序代码中的一些或全部可以驻留在系统存储器710中和/或计算机可读存储介质722上(包括潜在地驻留在一个或多个存储设备上)。处理子系统704可以通过适合的编程提供以上所描述的各种功能。在计算机系统700在执行一个或多个虚拟机的实例中,可以向每个虚拟机分配一个或多个处理单元。

    在某些实施例中,可以任选地提供处理加速单元706以用于执行定制处理,或用于卸载由处理子系统704执行的处理中的一些处理,以便加速由计算机系统700执行的整体处理。

    i/o子系统708可以包括用于向计算机系统700输入信息和/或用于从或经由计算机系统700输出信息的设备和机构。通常,使用术语输入设备旨在包括用于向计算机系统700输入信息的所有可能类型的设备和机构。用户界面输入设备可以包括例如键盘、指向设备(例如鼠标或追踪球)、并入到显示器中的触摸板或触摸屏、滚轮、点击轮、拨号盘、按钮、开关、小键盘、具有话音命令识别系统的音频输入设备、麦克风以及其他类型的输入设备。用户界面输入设备还可以包括运动感测和/或姿势识别设备,例如使用户能够控制输入设备并与输入设备进行交互的microsoft运动传感器、microsoft360游戏控制器、提供用于使用姿势和口述命令接收输入的界面的设备。用户界面输入设备还可以包括眼部姿势识别设备,例如检测来自用户的眼部活动(例如,在拍照和/或进行菜单选择时“眨眼”)并将眼部姿势变换为到输入设备(如google)的输入的google眨眼检测器。另外地,用户界面输入设备可以包括使用户能够通过话音命令与话音识别系统进行交互的话音识别感测设备。

    用户界面输入设备的其他示例包括但不限于三维(3d)鼠标、操纵杆或指向杆、游戏手柄和图形板、以及音频/视觉设备(例如扬声器、数码相机、数码摄像机、便携式媒体播放器、网络摄像机、图像扫描仪、指纹扫描仪、条形码读取器3d扫描仪、3d打印机、激光测距仪和眼部注视跟踪设备)。另外地,用户界面输入设备可以包括例如医学成像输入设备,例如计算机断层扫描、磁共振成像、正电子发射断层扫描和医学超声检查设备。用户界面输入设备还可以包括例如音频输入设备,例如midi键盘、数码乐器等。

    通常,使用术语输出设备旨在包括用于将信息从计算机系统700输出到用户或其他计算机的所有可能类型的设备和机构。用户界面输出设备可以包括显示子系统、指示灯或诸如音频输出设备的非视觉显示器等。显示子系统可以是阴极射线管(crt)、平板设备(例如使用液晶显示器(lcd)或等离子显示器的平板设备)、投影设备、触摸屏等。例如,用户界面输出设备可以包括但不限于在视觉上传达文本、图形和音频/视频信息的各种显示设备,例如监视器、打印机、扬声器、头戴式耳机、汽车导航系统、绘图仪、话音输出设备和调制解调器。

    存储子系统718提供用于存储由计算机系统700使用的信息和数据的储存库或数据存储。存储子系统718提供用于存储提供一些实施例的功能的基本编程和数据构造的有形非暂态计算机可读存储介质。存储子系统718可以存储当由处理子系统704执行时提供以上所描述的功能的软件(例如,程序、代码模块、指令)。软件可以由处理子系统704的一个或多个处理单元执行。存储子系统718还可以根据本公开的教导提供用于存储所使用的数据的储存库。

    存储子系统718可以包括一个或多个非暂态存储器设备,包括易失性存储器设备和非易失性存储器设备。如图7所示,存储子系统718包括系统存储器710和计算机可读存储介质722。系统存储器710可以包括多个存储器,该多个存储器包括用于在程序执行期间存储指令和数据的易失性主随机存取存储器(ram)和其中存储有固定指令的非易失性只读存储器(rom)或闪速存储器。在一些实施方式中,包含例如在启动期间帮助在计算机系统700内的元件之间传送信息的基本例程的基本输入/输出系统(bios)通常可以存储在rom中。ram通常包含目前由处理子系统704正在操作并执行的数据和/或程序模块。在一些实施方式中,系统存储器710可以包括诸如静态随机存取存储器(sram)、动态随机存取存储器(dram)等的多种不同类型的存储器。

    通过示例而非限制的方式,如图7所描绘的,系统存储器710可以加载正在执行的应用程序712(该应用程序可以包括诸如web浏览器、中间层应用程序、关系数据库管理系统(rdbms)等的各种应用程序)、程序数据714和操作系统716。通过示例的方式,操作系统716可以包括各种版本的microsoftapple和/或linux操作系统、各种商业上可获得的或类unix操作系统(包括但不限于各种gnu/linux操作系统、googleos等)和/或移动操作系统(例如ios、电话、os、os、os操作系统)以及其他操作系统。

    计算机可读存储介质722可以存储提供一些实施例的功能的编程和数据构造。计算机可读介质722可以为计算机系统700提供对计算机可读指令、数据结构、程序模块和其他数据的存储。当由处理子系统704执行时提供以上所描述的功能的软件(程序、代码模块、指令)可以存储在存储子系统718中。通过示例的方式,计算机可读存储介质722可以包括诸如硬盘驱动器、磁盘驱动器、光盘驱动器(例如cdrom、dvd、盘或其他光学介质)的非易失性存储器。计算机可读存储介质722可以包括但不限于驱动器、闪速存储器卡、通用串行总线(usb)闪存驱动器、安全数字(sd)卡、dvd盘、数字录像带等。计算机可读存储介质722还可以包括基于非易失性存储器的固态驱动器(ssd)(例如基于ssd的闪速存储器、企业级闪存驱动器、固态rom等)、基于易失性存储器的ssd(例如固态ram、动态ram、静态ram)、基于dram的ssd、磁阻ram(mram)ssd、以及使用dram和基于闪速存储器的ssd的组合的混合ssd。

    在某些实施例中,存储子系统718还可以包括可以进一步连接到计算机可读存储介质722的计算机可读存储介质读取器720。读取器720可以从存储器设备(例如盘、闪存驱动器等)接收数据并且被配置为从该存储器设备读取数据。

    在某些实施例中,计算机系统700可以支持虚拟化技术,包括但不限于对处理资源和存储器资源的虚拟化。例如,计算机系统700可以提供对执行一个或多个虚拟机的支持。在某些实施例中,计算机系统700可以执行诸如促进配置和管理虚拟机的管理程序的程序。每个虚拟机可以分配有存储器、计算(例如,处理器、核)、i/o和联网资源。每个虚拟机通常独立于其他虚拟机运行。虚拟机通常运行其自身的操作系统,该操作系统可以与由计算机系统700所执行的其他虚拟机执行的操作系统相同或不同。因此,多个操作系统可以潜在地由计算机系统700同时运行。

    通信子系统724提供到其他计算机系统和网络的接口。通信子系统724用作用于从其他系统接收数据并将数据从计算机系统700传输到其他系统的接口。例如,通信子系统724可以使计算机系统700能够经由因特网建立到一个或多个客户端设备的通信通道以用于从客户端设备接收信息并向客户端设备发送信息。例如,通信子系统可以用于与数据库进行通信以导入用于asr子系统和/或nlu子系统的更新的训练数据。

    通信子系统724可以支持有线通信协议和/或无线通信协议两者。例如,在某些实施例中,通信子系统724可以包括用于访问无线话音和/或数据网络的射频(rf)收发器组件(例如,使用蜂窝电话技术、诸如3g、4g或edge(全球演进增强型数据速率)的先进的数据网络技术、wifi(ieee802.xx家庭标准、或其他移动通信技术、或其任何组合))、全球定位系统(gps)接收器组件和/或其他组件。在一些实施例中,通信子系统724可以提供除了无线接口之外或替代无线接口的有线网络连接性(例如,以太网)。

    通信子系统724可以接收并传输各种形式的数据。例如,在一些实施例中,通信子系统724可以接收除了其他形式之外的以结构化和/或非结构化的数据馈送726、事件流728、事件更新730等形式的输入通信。例如,通信子系统724可以被配置为从社交媒体网络和/或其他通信服务的用户实时地接收(或发送)数据馈送726,例如馈送、更新、web馈送(例如丰富站点摘要(rss)馈送)和/或来自一个或多个第三方信息源的实时更新。

    在某些实施例中,通信子系统724可以被配置为接收本质上可以是连续的或无界的、没有明确结束的连续数据流形式的数据,该连续数据流可以包括实时事件的事件流728和/或事件更新730。生成连续数据的应用程序的示例可以包括例如传感器数据应用程序、财务收报机、网络性能测量工具(例如,网络监测和流量管理应用程序)、点击流分析工具、汽车交通监测等。

    通信子系统724还可以被配置为将数据从计算机系统700传递到其他计算机系统或网络。数据可以以各种不同的形式(例如结构化和/或非结构化的数据馈送726、事件流728、事件更新730等)传递到可以与耦接到计算机系统700的一个或多个流数据源计算机进行通信的一个或多个数据库。

    计算机系统700可以是各种类型中的一种,包括手持便携式设备(例如,蜂窝电话、计算平板计算机、pda)、可穿戴设备(例如,google头戴式显示器)、个人计算机、工作站、主机、自助服务终端、服务器机架、或任何其他数据处理系统。由于计算机和网络的不断变化的本质,对图7所描绘的计算机系统700的描述旨在仅作为具体示例。比图7所描绘的系统具有更多或更少的组件的许多其他配置是可能的。基于本文提供的公开和教导,本领域普通技术人员将理解实施各种实施例的其他方式和/或方法。

    虽然已经描述了具体实施例,但是各种修改、更改、可替代的构造和等同物是可能的。实施例不局限于在某些特定数据处理环境内的操作,而是自由地在多个数据处理环境内操作。另外地,尽管已经使用特定系列的事务和步骤描述了某些实施例,但是对于本领域技术人员而言应当显而易见的是,这不旨在是限制性的。虽然一些流程图将操作描述为顺序过程,但是,操作中的许多操作可以并行地或同时地执行。另外,操作的顺序可以重新布置。过程可以具有图中未包括的另外的步骤。以上所描述的实施例的各种特征和方面可以单独地或联合地使用。

    进一步地,虽然已经使用硬件和软件的特定组合描述了某些实施例,但是应当认识到,硬件和软件的其他组合也是可能的。某些实施例可以仅在硬件中或仅在软件中或使用其组合实施。本文所描述的各种过程可以在相同处理器或不同处理器上以任何组合来实施。

    在将设备、系统、组件或模块描述为被配置为执行某些操作或功能的情况下,这种配置可以例如通过对电子电路进行设计以执行操作、通过对可编程电子电路(如微处理器)进行编程以执行操作(例如通过执行计算机指令或代码,或通过被编程为执行存储在非暂态存储器介质上的代码或指令的处理器或核),或其任何组合来完成。过程可以使用包括但不限于用于过程间通信的传统技术的各种技术来进行通信,并且不同的过程对可以使用不同的技术,或者相同的过程对可以在不同的时间使用不同的技术。

    本公开中给出了具体细节以提供对实施例的透彻理解。然而,可以在没有这些具体细节的情况下实践实施例。例如,已经示出了公知的电路、过程、算法、结构和技术,而没有不必要的细节,以避免模糊实施例。此描述仅提供了示例实施例,并且不旨在限制其他实施例的范围、适用性或配置。而是,先前对实施例的描述将为本领域技术人员提供用于实施各种实施例的使能描述。可以对元件的功能和布置作出各种改变。

    因此,将从说明性而非限制性意义上看待说明书和附图。然而,将明显的是,在不脱离权利要求中阐述的更广泛的精神和范围的情况下,可以对其作出添加、减少、删除以及其他修改和改变。因此,虽然已经描述了具体实施例,但是这些具体实施例不旨在是限制性的。各种修改和等同物在权利要求的范围内。


    技术特征:

    1.一种计算机实施的方法,包括:

    获得第一标记的会话数据;

    使用所述第一标记的会话数据来训练第一神经网络;

    获得第一未标记的会话数据;

    对所述第一未标记的会话数据执行经训练的第一神经网络以标记所述第一未标记的会话数据,从而生成第二标记的会话数据;以及

    使用所述第二标记的会话数据来训练用于执行自然语言理解任务的第二神经网络。

    2.如权利要求1所述的方法,进一步包括,在训练所述第一神经网络之前:

    获得第二未标记的会话数据;

    使用所述第二未标记的会话数据来训练第三神经网络以执行代理任务;并且

    基于所述第三神经网络生成所述第一神经网络。

    3.如权利要求2所述的方法,其中,基于所述第三神经网络生成所述第一神经网络包括构建所述第一神经网络以包括所述第三神经网络的至少一部分。

    4.如权利要求2所述的方法,其中,所述第三神经网络是所述第一神经网络的组件。

    5.如权利要求2所述的方法,其中,所述代理任务包括预测语言任务。

    6.如权利要求1所述的方法,其中,所述自然语言理解任务包括语义解析、意图分类或命名实体分类中的一个或多个。

    7.如权利要求1所述的方法,其中,训练所述第二神经网络包括:

    对于所述第二标记的会话数据的第一训练输入,由所述第二神经网络输出预测输出;

    计算测量所述预测输出与和所述第一训练输入相关联的第一标签之间的误差的损失;

    基于所述损失,计算所述第二神经网络的第一组参数的更新值;以及

    通过将所述第一组参数的值改变为所述更新值来更新所述第二神经网络。

    8.一种非暂态计算机可读存储器,存储有由一个或多个处理器能够执行的多个指令,所述多个指令包括当由所述一个或多个处理器执行时使所述一个或多个处理器执行包括以下操作的处理的指令:

    获得第一标记的会话数据;

    使用所述第一标记的会话数据来训练第一神经网络;

    获得第一未标记的会话数据;

    对所述第一未标记的会话数据执行经训练的第一神经网络以标记所述第一未标记的会话数据,从而生成第二标记的会话数据;以及

    使用所述第二标记的会话数据来训练用于执行自然语言理解任务的第二神经网络。

    9.如权利要求8所述的非暂态计算机可读存储器,所述处理进一步包括,在训练所述第一神经网络之前:

    获得第二未标记的会话数据;

    使用所述第二未标记的会话数据来训练第三神经网络以执行代理任务;并且

    基于所述第三神经网络生成所述第一神经网络。

    10.如权利要求9所述的非暂态计算机可读存储器,其中,基于所述第三神经网络生成所述第一神经网络包括构建所述第一神经网络以包括所述第三神经网络的至少一部分。

    11.如权利要求9所述的非暂态计算机可读存储器,其中,所述第三神经网络是所述第一神经网络的组件。

    12.如权利要求9所述的非暂态计算机可读存储器,其中,所述代理任务包括预测语言任务。

    13.如权利要求8所述的非暂态计算机可读存储器,其中,所述自然语言理解任务包括语义解析、意图分类或实体识别中的一个或多个。

    14.如权利要求8所述的非暂态计算机可读存储器,其中,训练所述第二神经网络包括:

    对于所述第二标记的会话数据的第一训练输入,由所述第二神经网络输出预测输出;

    计算测量所述预测输出与和所述第一训练输入相关联的第一标签之间的误差的损失;

    基于所述损失,计算所述第二神经网络的第一组参数的更新值;以及

    通过将所述第一组参数的值改变为所述更新值来更新所述第二神经网络。

    15.一种计算机实施的系统,包括:

    一个或多个处理器;

    耦接至所述一个或多个处理器的存储器,所述存储器存储有由所述一个或多个处理器能够执行的多个指令,所述多个指令包括当由所述一个或多个处理器执行时使所述一个或多个处理器执行包括以下操作的处理的指令:

    获得第一标记的会话数据;

    使用所述第一标记的会话数据来训练第一神经网络;

    获得第一未标记的会话数据;

    对所述第一未标记的会话数据执行经训练的第一神经网络以标记所述第一未标记的会话数据,从而生成第二标记的会话数据;以及

    使用所述第二标记的会话数据来训练用于执行自然语言理解任务的第二神经网络。

    16.如权利要求15所述的系统,所述处理进一步包括,在训练所述第一神经网络之前:

    获得第二未标记的会话数据;

    使用所述第二未标记的会话数据来训练第三神经网络以执行代理任务;并且

    基于所述第三神经网络生成所述第一神经网络。

    17.如权利要求16所述的系统,其中,基于所述第三神经网络生成所述第一神经网络包括构建所述第一神经网络以包括所述第三神经网络的至少一部分。

    18.如权利要求16所述的系统,其中,所述第三神经网络是所述第一神经网络的组件。

    19.如权利要求15所述的系统,其中,所述自然语言理解任务包括语义解析、意图分类或命名实体分类中的一个或多个。

    20.如权利要求15所述的系统,其中,训练所述第二神经网络包括:

    对于所述第二标记的会话数据的第一训练输入,由所述第二神经网络输出预测输出;

    计算测量所述预测输出与和所述第一训练输入相关联的第一标签之间的误差的损失;

    基于所述损失,计算所述第二神经网络的第一组参数的更新值;以及

    通过将所述第一组参数的值改变为所述更新值来更新所述第二神经网络。

    21.如权利要求16所述的系统,其中,所述第二未标记会话数据不同于所述第一未标记会话数据。

    22.一种会话系统,所述会话系统使用根据权利要求15至21中任一项所述的计算机实施的系统来进行自然语言理解。

    技术总结
    本公开涉及一种用于自然语言理解的神经网络的压缩。基于由标记模型生成的标记的数据生成一种用于自然语言理解任务的模型。用于所述自然语言理解任务的所述模型小于所述标记模型(即,具有比组合模型更低的计算需求和存储器需求),但是具有与所述标记模型基本上相同的性能。在一些情况下,所述标记模型可以基于大型预训练模型来生成。

    技术研发人员:M·E·约翰逊
    受保护的技术使用者:甲骨文国际公司
    技术研发日:2020.09.02
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-20104.html

    最新回复(0)