训练和/或使用编码器模型确定自然语言输入的响应动作的制作方法

文档序号:21280212发布日期:2020-06-26 23:33阅读:232来源:国知局
训练和/或使用编码器模型确定自然语言输入的响应动作的制作方法



背景技术:

用户利用自由形式自然语言输入与各种应用程序对接。例如,用户可以使用此处称为“自动助理”(也称为“聊天机器人”,“交互式个人助理”,“智能个人助理”,“个人语音助理”,“会话代理”等)的交互式软件应用来参与人机对话。例如,人类(当他们与自动助理交互时可以称为“用户”)可以使用自由形式自然语言输入来提供命令、查询和/或请求(在本文中统称为“查询”),自由形式自然语言输入可以是被转换成文本然后进行处理的有声话语和/或通过键入的自由形式自然语言输入。

许多自动助理和其他应用被配置为响应于各种查询而执行一个或多个响应动作。例如,响应于自然语言查询“howareyou(你好吗)”,自动助理可以配置为以图形和/或声音输出“great,thanksforasking(很好,谢谢询问)”来响应查询。作为另一个示例,响应于对“what’stheweatherfortomorrow(明天天气如何)”的查询,可以将自动助理配置为(例如,通过api)与天气代理(例如,第三方代理)对接以确定“本地的”明天的天气预报,并且利用传达这样的天气预报的图形和/或声音输出来响应该查询。作为又一个示例,响应于对“playmusicvideosonmytv(在我的电视上播放音乐视频)”的用户查询,可以将自动助理配置为使音乐视频在用户的网络电视上流传输。

然而,响应于寻求执行自动助理可执行的动作的各种查询,许多自动助理可能无法执行该动作。例如,自动助理可以被配置为响应于“playmusicvideosonmytv”的查询而使音乐视频在用户的网络电视上流传输,但是可能无法响应于例如“makesomevideosofthemusicvarietyappearonthetube(使音乐曲目的一些视频出现在管子上)”的各种其他查询而执行这种动作,尽管其他查询都寻求执行相同的动作。因此,自动助理将不会执行查询所期望的动作,而是可以提供一般误差响应(例如,“idon’tknowhowtodothat(我不知道该怎么做”)或完全不响应。这可能导致用户不得不在另一个尝试中提供另一个查询,以使自动助理执行该动作。这浪费了各种资源,例如处理查询(例如,语音到文本处理)和/或传输查询(例如,当自动助理的组件位于远离提供查询的客户端的设备上时)所需的资源。



技术实现要素:

本说明书的实现方式针对与以下有关的系统,方法和计算机可读介质:训练编码器模型,该编码器模型可用于(直接和/或间接)确定自然语言文本字符串与一个或多个附加自然语言文本字符串中的每一个的语义相似性;和/或使用经训练的编码器模型来确定要响应自然语言查询执行的一个或多个响应动作。编码器模型是机器学习模型,例如神经网络模型。

例如,一些实现方式使用经训练的编码器模型来处理针对自动助理的自由形式自然语言输入。使用经训练的编码器模型处理自由形式自然语言输入会生成自由形式自然语言输入的编码,例如是值的矢量的编码。然后将编码与均具有一个或多个映射到其上(直接和/或间接映射)的自动助理动作的预定编码进行比较。映射到预定编码的自动助理动作可以包括,例如,提供针对听觉和/或图形表示的特定响应,提供针对听觉和/或图形表示的响应的特定类型,与第三方代理对接,与物联网(iot)设备对接,确定一个或多个值(例如,“槽值(slotvalue)”),以包括在给代理和/或iot设备的命令中,等等。预定编码可以每个都是已分配给对应自动助理动作的对应文本段的编码。此外,可以使用经训练的编码器模型基于对对应文本段的处理来生成每个预定编码。此外,基于被分配给关于其生成预定编码的文本段的对应自动助理动作,预定编码被映射到对应自动助理动作。作为一个示例,可以使用经训练的编码器模型基于对“你好吗”的处理来生成预定编码,并且可以基于被分配给文本段“你好吗”(例如,以前由自动助理的程序员手动分配)的响应将预定编码映射到提供“很好,谢谢询问”的响应的自动助理动作。

比较(自由形式自然语言输入的编码与预定编码)可以被用来确定与该编码“最接近”的一个或多个预定编码。然后,可以由自动助理,可选地取决于“最接近”的预定编码“足够接近”(例如,满足距离阈值),执行映射到一个或多个“最接近”的预定编码的动作。作为一个示例,每种编码可以是值的矢量,并且两种编码的比较可以是矢量的点积,这导致指示两个矢量之间距离的标量值(例如,标量值可以是从0到1,其中标量值的大小指示距离),并且指示基于其生成编码的两个文本段的语义相似性。

作为一个特定示例,程序员可以将待分配的“使音乐视频在电视上流传输”的自动助理动作明确分配给文本段“在我的电视上播放音乐视频”,但是可以不明确分配该动作(或任何动作)到文本段“使音乐曲目的一些视频出现在管子上”。可以使用经训练的编码器模型来处理文本段“在我的电视上播放音乐视频”,以生成文本段的编码,并且可以利用“使音乐视频在电视上流传输”的自动助理动作的映射来存储该编码。此后,可以基于来自用户的用户界面输入,将自由形式自然语言输入“使音乐曲目的一些视频出现在管子上”引导至自动助理。可以使用经训练的编码器模型来处理输入“使音乐曲目的一些视频出现在管子上”以生成编码,并将该编码与预定编码(包括“在我的电视上播放音乐视频”的预定编码)进行比较。基于该比较,可以确定“在我的电视上播放音乐”的预定编码最接近“使音乐曲目的一些视频出现在管子上”的编码,并且满足接近度阈值。作为响应,自动助理可以执行映射到预定编码的动作。

以这些和其他方式,即使没有将自动助理动作明确地直接映射到自然语言输入,自动助理也通过执行适当的自动助理动作来鲁棒且准确地响应各种自然语言输入。这导致改进的自动助理。另外,从计算资源的角度来看,作为编码与预定编码的比较,生成“使音乐曲目的一些音乐视频出现在管子上”的编码是有效的(因为可以使用简单点积和/或其他比较)。此外,最大内部产品搜索和/或其他技术可以被用来进一步提高效率。这导致自动助理(相对于其他技术)更快地执行响应动作和/或确定响应动作以(相对于其他技术)使用较少的计算资源来执行。而且,存储编码到自动助理动作的映射比存储完整文本段到自动助理动作的映射可以更有效地利用存储空间。另外,由于单个预定编码可以在语义上(距离上)表示多个语义上相似的文本段,而无需将那些文本段中的每一个映射到自动助理动作,因此可以提供对自动助理动作的更少映射。此外,在自动助理接收查询作为语音输入的情况下,可以减少处理语音输入以确定查询(例如语音到文本处理)所需的资源,因为可以执行适当的自动助理动作,而没有要求用户在尝试获得所需结果时输入另一个查询的失败的查询响应。类似地,当查询是由远离自动助理的系统处理的(例如,当自动助理的组件位于远离提供查询的客户端设备的设备上时),发送查询并接收适当的响应所需的资源可以减少,因为可以执行适当的自动助理动作,而不必发送另一个查询来尝试获得相同的结果。这样,可以减少网络资源的使用。

另外和/或可替代地,本说明书的实现方式涉及用于训练编码器模型的各种技术。编码器模型是机器学习模型,例如神经网络模型。可以利用各种编码器模型架构,例如前馈神经网络模型、递归神经网络模型(即,包括一个或多个递归层,例如长短期存储器(lstm)层和/或门控递归单元(gru)层)、递归和卷积神经网络模型(即,包括一个或多个卷积层和一个或多个递归层)和/或转换器编码器。

在训练编码器模型的一些实现方式中,将编码器模型训练为基于与可以使用编码器模型的“语义文本相似性”任务(例如,上面相对于自动助理示例描述的语义相似性任务)不同的一个或多个任务而进行训练的较大的网络架构的一部分。在那些实现方式的一些中,编码器模型被训练为更大的网络架构的一部分,该更大的网络架构被训练为使得能够预测文本响应是否是对文本输入的真实响应。作为一个工作示例,可以利用训练实例,每个训练实例都包括训练实例输入,该训练实例输入包括:文本输入的输入特征以及文本响应的响应特征。训练实例各自进一步包括训练实例输出,该训练实例输出指示对应训练实例输入的文本响应是否是针对训练实例输入的文本输入的实际响应。对于正训练实例,基于被指示为实际上是对对话资源中文本输入的“响应”的文本响应,使用文本响应。例如,文本输入可以是第一用户的时间较早的电子邮件、文本消息、聊天消息、社交网络消息、互联网评论(例如,来自互联网讨论平台的评论)等,并且响应可以是附加用户的全部或部分响应电子邮件、文本消息、聊天消息、社交网络消息、互联网评论等。例如,文本输入可以是互联网讨论,响应可以是对互联网讨论的回复。

在训练期间,并继续工作示例,将训练实例的训练实例输入的输入特征应用为编码器模型的输入(而不应用训练实例输入的响应特征),并且输入编码基于使用编码器模型处理该输入生成。此外,将训练实例输入的响应特征应用为编码器模型的输入(而不应用训练实例输入的输入特征),并且响应编码基于使用编码器模型处理该输入来生成。使用推理模型进一步处理响应编码,以生成最终响应编码。推理模型可以是机器学习模型,例如前馈神经网络模型。然后基于输入编码和最终响应编码的比较来确定响应分值。例如,响应分值可以基于输入矢量和响应矢量的点积。例如,点积可以产生从0到1的值,其中“1”指示对应响应是对对应电子通信的适当响应的最高可能性,“0”指示最低可能性。然后,可以基于以下各项的比较来更新推理模型和编码器模型两者:响应分值(和可选的此处描述的批处理技术中的附加响应分值);以及由训练实例指示的响应分值(例如,对于正训练实例为“1”或其他“正(positive)”响应分值,对于负训练实例为“0”或其他“负(negative)”响应分值)。例如,可以基于响应分值与指示的响应分值之间的差来确定误差,并且在推理模型和编码器模型上反向传播误差。

通过这种训练,对编码器模型进行训练以使其独立地被使用(即,没有推理模型)以导出提供对对应输入的鲁棒且准确的语义表示的对应编码。同样,通过对每个都是基于文本输入和实际响应的正实例,和每个都是基于文本输入和非实际响应的文本响应的负实例进行训练,对应输入的语义表示至少部分基于文本输入与实际文本响应;以及文本输入与不是实际响应的文本响应之间的学习的差异。此外,可以如本文所述以无监督的方式有效地生成基于文本输入和文本响应的训练实例,并且可以从一个或多个语料库(例如如在这里所述的可公开获得的互联网评论)中生成大量多样的训练实例。如此大量的无监督和多样化的训练实例的使用可以产生强大的可以一般化到许多不同的文本段的编码器模型。

在训练之后,可以独立地使用编码器模型(即,没有推理模型)来确定两个文本字符串之间的语义相似性(语义文本相似性任务)。例如,可以基于使用经训练的编码器模型处理第一文本字符串来生成第一文本字符串的第一编码,并且可以基于使用经训练的编码器模型处理第二文本字符串来生成第二文本字符串的第二编码。此外,可以对两种编码进行比较以确定分值,该分值指示第一文本字符串和第二文本字符串之间的语义相似性的程度。例如,该分值可以基于第一编码和第二编码的点积。例如,点积可以产生从0到1的值,其中“1”指示最高相似度,“0”指示最低相似度(和最高不相似度)。

这样的分值可以用于各种目的。例如,这样的分值可以用于各种自动助理目的,例如上述那些目的。作为另一示例,搜索引擎可以使用这种分值来确定一个或多个在语义上类似于所接收的文本查询的文本查询。此外,由于指示两个文本段之间的相似性的分值基于两个文本段的对应编码的比较,因此经训练的编码器模型可以用于预先确定各种文本段的编码(例如,明确分配给对应响应动作(例如对应自动助理动作)的那些),以及存储的那些预定编码(例如,以及到它们对应响应动作的映射)。因此,可以通过使用经训练的编码器模型处理自然语言查询以生成编码,然后将所生成的编码与给定文本段的预存储编码进行比较,来确定输入自然语言查询与给定文本段的相似性。这消除了对运行时确定预存编码的需求,从而节省了运行时的各种计算资源和/或减少了运行时生成响应的延迟。此外,在运行时,基于使用经训练的编码器模型处理查询来确定自然语言输入查询输入矢量的编码,并且自然语言查询的相同编码可以与多个预定编码进行比较。这使得能够在运行时通过对编码器模型的单次调用来确定编码,并且与多个预定编码中的每一个相比,使用该编码。

在训练编码器模型的一些实现方式中,编码器模型被训练为基于与可以为其使用编码器模型的“语义文本相似性”任务不同的多个任务而进行训练的较大网络架构的一部分。在那些实现方式的一些中,基于预测文本响应是否是对文本输入的真实响应的任务来训练编码器模型(例如,如上所述),并且基于至少一个不同于语义文本相似性任务的附加任务来训练编码器模型。在那些实现方式中,在针对每个任务的训练中利用并更新了编码器模型,但是针对每个任务利用并更新了较大网络架构的不同附加组件。例如,上述推理模型可以用于预测文本响应是否为真实响应的任务,并且针对该任务的确定的误差用于在训练期间更新推理模型和编码器模型。而且,例如,对于附加任务,可以利用附加模型,并且针对该附加任务的确定的误差在训练期间被用于更新该附加模型和编码器模型。

在基于不同于“语义文本相似性”任务的多个任务训练编码器模型的各种实现方式中,同时对多个任务训练编码器模型。换句话说,编码器模型不是首先对第一任务被训练,然后在完成对第一任务的训练后再对第二任务被训练,等等。相反,编码器模型的权重的一个或多个更新(例如,通过误差的一个或多个反向传播)可以是基于第一任务的,然后,编码器模型的权重的一个或多个更新可以是基于第二任务的,然后,编码器模型的权重的一个或多个更新可以是基于第一任务的,然后,编码器模型的权重的一个或多个更新可以是基于第二任务的,等等。在这些各种实现方式中的一些中,可以在训练中利用独立的工作者(计算机工作),并且每个工作者使用针对对应任务的训练实例的批次只对对应任务进行训练。可以将不同数量的工作者投入到任务中,从而调整每个任务在训练编码器模型时的影响。作为一个示例,95%的工作者可以对预测文本响应是否是真正的响应任务进行训练,而5%的工作者可以对附加任务进行训练。

可以利用各种附加任务,并且可以利用除编码器模型之外的各种附加网络架构组件。附加任务的一个示例是自然语言推断任务,其可以使用监督训练实例(例如来自斯坦福自然语言推断(snli)数据集的监督训练实例)进行训练。这样的训练实例每个都包括一对文本段作为训练实例输入,以及训练实例输出,该训练实例输出是该对文本段的多个类别(例如,蕴涵,矛盾和中立的类别)中的一个类别的人工标签。可以用于自然语言推断任务的附件网络架构组件可以包括前馈神经网络模型,例如具有完全连接的层和softmax层的模型。

在针对自然语言推断任务的训练中,训练实例的训练实例输入的第一文本段被应用为编码器模型的输入(而不应用训练实例输入的第二文本段),并且第一编码基于使用编码器模型处理该输入而生成。此外,训练实例输入的第二文本段被应用为编码器模型的输入(而不应用训练实例输入的第一文本段),并且第二编码基于使用编码器模型处理该输入而生成。可以基于第一编码和第二编码生成特征矢量,例如(u1,u2,|u1-u2|,u1*u2)的特征矢量,其中u1代表第一编码,u2代表第二编码。可以使用针对自然语言推断任务的前馈神经网络模型来处理特征矢量,以针对多个类别(例如,蕴涵、矛盾和中立的类别)中的每个类别生成预测。可以比较该预测和训练实例的训练实例输出的标记类别,并基于比较(以及可选的此处描述的批处理技术自然语言推断任务的附加比较)更新自然语言推断任务的前馈神经网络模型。例如,可以基于比较确定误差,并在两个模型上反向传播。

本文公开的各种实现方式可以包括一个或多个非暂时性计算机可读存储介质,其存储可由处理器(例如,中央处理单元(cpu),图形处理单元(gpu)和/或张量处理单元(tpu))执行的指令,以执行方法,例如本文所述的一种或多种方法。其他各种实现方式可以包括一个或多个计算机的系统,该计算机包括一个或多个处理器,该一个或多个处理器可操作来执行存储的指令以执行诸如本文所述的一个或多个方法中的方法。

应当理解,本文中更详细描述的前述概念和附加概念的所有组合被认为是本文公开的主题的一部分。例如,出现在本公开的结尾处的要求保护的主题的所有组合被认为是本文公开的主题的一部分。

附图说明

图1示出了根据本文公开的一些实现方式的训练编码器模型的示例。

图2a示出了根据本文公开的一些实现方式的编码器模型的示例。

图2b示出了根据本文公开的一些实现方式的编码器模型的另一示例。

图2c示出了根据本文公开的一些实现方式的编码器模型的又一示例。

图3示出了根据本文公开的一些实现方式的训练编码器模型的另一示例。

图4是示出根据本文公开的一些实现方式的训练编码器模型的示例方法的流程图。

图5是示出针对分配给响应动作的文本段生成编码的示例方法的流程图。

图6是示出了使用经训练的编码器模型来确定要响应于自然语言查询而执行的一个或多个响应动作的示例方法的流程图。

图7示出了计算设备的示例架构。

具体实施方式

语义文本相似性(sts)是一种用于测量两个文本片段的相似性或等效性的任务。准确测量相似性在含义上是一个基本的语言理解问题,它适用于许多自然语言处理(nlp)挑战,包括机器翻译、摘要、问题解答和语义搜索。

本文公开的实现方式涉及训练编码器模型和/或利用经训练的编码器模型来生成文本段的嵌入(在本文中也称为编码)。此外,实现方式涉及将给定文本段的给定嵌入与附加文本段的嵌入进行比较,以确定最接近给定嵌入的一个或多个嵌入。在那些实现方式的一些中,给定文本段是查询,最接近给定嵌入的嵌入被映射到一个或多个响应动作,并且响应动作基于最接近映射到响应动作的嵌入响应于查询而被执行。

在各种实现方式中,编码器模型被训练为基于不同于可以使用编码器模型的“语义文本相似性”任务(例如,关于自动助理示例的上述的语义相似性任务)的一个或多个任务而进行训练的较大的网络架构的一部分。在那些实现方式的一些中,编码器模型被训练为被训练为使得能够预测文本响应是否是对文本输入的真实响应的更大的网络架构的一部分。这样的训练可以利用包括训练实例输入的训练实例,该训练实例输入包括:文本输入的输入特征以及文本响应的响应特征。文本输入和响应可以无监督的方式从一个或多个会话语料库中确定。作为一个非限制性示例,可以基于来自一个或多个因特网讨论平台语料库的结构化对话数据来确定训练实例。这样的语料库可以包含数百万个帖子和数十亿条评论,以及有关该评论的作者和该评论所回复的先前评论的元数据。如果评论a回复评论b,则语料库中的“评论a”被称为语料库中的“评论b”的子对象。可以从语料库中提取评论及其子对象,以形成用于正训练实例的文本输入,文本响应对。可以选择地应用一个或多个规则来从训练实例中滤除某些评论。例如,如果评论满足以下一个或多个条件,则可以将其排除:字符数≥阈值(例如350),字母字符的百分比≤阈值(例如70%),以“https”,“/r/”或“@”开头,和/或作者的名字包含“bot”和/或其他术语。即使应用这些过滤器和/或其他过滤器,也可以从这样的语料库中确定数百万个输入,响应对,并将其用于生成正训练实例。

在将编码器模型训练为被训练为能够预测文本响应是否为对文本输入的真实响应的更大的网络架构的一部分时,确定文本响应是否为对文本输入的真实响应的任务可以被建模为p(y|x),以便在给定文本输入(x)的情况下对所有可能的文本响应(y)进行排名。更正式地:

由于文本响应的总数太大,难以针对所有其他文本响应来计算文本响应y的概率。因此,可以通过针对随机采样的k-1个响应计算概率来近似估算概率-上面的等式可以写成:

可以训练较大的网络架构(包括编码器模型)以估计所有可能的文本输入,文本响应对p(x,y)的联合概率。可以利用判别训练,该训练使用softmax函数来最大化真实响应y的概率。因此,它可以表示为其中s(x,y)是神经网络学习的评分函数,最终的训练目标可以表示为:

在训练编码器模型作为被训练以能够预测文本响应是否是对文本输入的真实响应的更大的网络架构的一部分时,目标是训练编码器模型,以便可以将其用于生成文本段的一般文本嵌入。由于目标是学习一般文本嵌入,并且每个训练实例都包括带有文本输入和文本响应的训练实例输入,因此,使用相同的编码器模型处理(但单独地)文本输入和训练实例输入的文本响应两者,以生成用于文本输入的编码矢量u和用于文本响应的编码矢量v。接下来,将用于文本响应的编码矢量v进一步馈入前馈神经网络(推理模型),以获得最终响应矢量v'。在输入和响应被编码后,点积utv'被用于获得最终分值。在训练过程中,对于k个输入-响应对的训练批次,将输入与同一批次中的所有响应配对,并馈入评分模型,并且上面的训练目标用于最大化真实响应的概率。

现在转向图1,提供了训练编码器模型130的示例,其中,编码器模型130被训练为更大的网络架构(还包括推理网络模型140)的一部分,该更大的网络架构被训练为能够预测文本响应是否是对文本输入的真实响应。

图1包括输入响应资源101。输入响应资源101可以包括一个或多个会话资源,例如互联网讨论平台中的线程、聊天消息、社交网络消息等。训练实例引擎170利用输入响应资源101以自动生成输入响应训练实例190。每个输入响应训练实例190包括训练实例输入,该训练实例输入包括:从资源101确定的文本输入的输入特征,以及从资源101确定的文本响应的响应特征。每个输入响应训练实例190还包括训练实例输出,该训练实例输出指示对应的训练实例输入的文本响应是否是针对训练实例输入的文本输入的实际响应。对于正训练实例,基于被指示为实际上是对对话资源中的文本输入的“响应”而利用文本响应。

在一些实现方式中,训练实例引擎170仅生成并存储正训练实例。在那些实现方式的一些中,基于被用于训练的正训练实例的批次,在训练时生成负训练实例。例如,可以基于三个正训练实例的批次来生成六个负训练实例。例如,可以基于将给定训练实例的(训练实例输入的)输入文本段与其他两个训练实例中的(训练实例输入的)每个响应文本段配对来生成两个负训练实例(假设其他两个训练实例的响应文本段不是对给定文本段的输入文本段的“真实”响应)。在那些实现方式的某些版本中,负训练实例是通过考虑训练期间生成的各个编码来有效地生成的,如本文中更详细描述的。

在图1中,训练引擎180从输入响应训练实例190检索训练实例191a。训练引擎180可以由一个或多个处理器来实现。训练实例包括输入191a1、响应191a2和指示。如本文所述,输入191a1可以基于从对话资源确定的文本输入。输入191a1可以是文本输入本身,也可以是其表示,例如嵌入文本段的各种n-gram(例如,unigram、bigram、trigram和/或其他n-gram)的一袋词、基于另一个模型(例如glove嵌入模型和/或word2vec嵌入模型)嵌入文本段的全部或部分、和/或其他表示。如本文所述,响应191a2可以基于从对话资源确定的文本响应。响应191a2可以是文本响应本身或其表示。该指示指示训练实例191a是负训练实例还是正训练实例(即,响应191a2是否是针对作为对输入191a2所基于的通信的真实响应的响应)。在一些实现方式中,指示可以被省略。例如,输入响应训练实例190可以仅存储“正”输入和响应,并且可以为来自输入响应训练实例190的训练实例假定“正”标签。

训练引擎180使用编码器模型130处理训练实例191a的输入191a1,以生成输入编码191b1。训练引擎180还使用编码器模型130处理训练实例191a的响应191a2,以生成响应编码191b2。编码器模型130在图1中被两次示出以演示它被利用两次来生成两个单独的编码191b1和191b2。然而,可以理解,它仍然仅仅是单个编码器模型。

训练引擎180使用推理网络模型140处理响应编码191b2以生成最终响应编码197a。推理网络模型140有效地(通过训练)将响应编码转换为“输入”空间。

相似性度量模块122基于输入编码191b1和最终响应编码197a的比较来确定值。例如,相似性度量模块122可以确定作为最终响应编码197a与输入编码191b1的转置之间的点积的标量结果的值。

相似性度量模块122将值提供给误差模块182,误差模块182可以是训练引擎180的模块。误差模块182基于该值与由训练引擎180为训练实例191a提供的正指示或负指示191a3的比较来确定误差183a(如果有的话)。正指示或负指示191a3可以基于训练实例191a的指示(如果有的话),或者可以如上所述进行推断。例如,如果训练实例191a是正训练实例,则指示191a3可以是“1”(或其他值),而如果训练实例191a是负训练实例,则指示191a3可以是“0”(或其他值)。然后,误差模块182基于误差(当使用批处理学习并且基于误差图1的训练实例191a是训练实例的批次的一部分时,可选地基于针对该批次确定的其他误差)来更新推理网络模型140和编码器模型130两者。例如,误差模块182可以基于误差和损失函数,在推理网络模型140和编码器模型130上执行反向传播。

尽管针对单个训练实例示出了图1,但是应当理解,在训练期间,将在训练中利用大量训练实例。

现在转向图2a-2c,提供了编码器模型130的各种示例。虽然图2a-2c具体地示出了各种实现方式,但可以根据本文描述的技术来训练具有不同架构的编码器模型。出于说明性目的,图2a-2c的编码器模型被图示为用于生成输入191a1的输入编码191b1。应该理解的是,这些模型也可以用于生成响应191a2的响应编码191b2,并且应当理解,不同的编码器模型可以生成不同的编码。

图2a示出了第一编码器模型130a,其是编码器模型130的一种实现方式。第一编码器模型130a是深度神经网络(dnn),其是具有多个tanh层131a1-131an的前馈网络。在一些实现方式中,应用于第一编码器模型130a的输入191a1可以是一袋n-gram表示。该袋n-gram表示可以包括在训练实例中,也可以从文本段中(在训练实例中或在推断时)生成。在一些实现方式中,为了构建具有一袋n-gram的dnn编码器,可以从大量(例如,所有)会话资源中提取n-gram特征。对于每个n-gram特征,可以在训练过程中学习固定大小的嵌入。最后,嵌入值可以在一个评论中的所有n-gram特征的每个维度上求和,然后除以评论长度的平方根。最终矢量可用作dnn编码器的输入。

图2b示出了第二编码器模型130b,其是编码器模型130的另一实现方式。第二编码器模型130b包括建立在一个或多个卷积神经网络(cnn)层132b2之上的双向lstm层132b3。第二编码器模型130b还包括词输入层132b1,其中可以将文本段的每个n-gram的嵌入用作输入。给定文本段中的词(和/或其他n-gram)的序列(w1,w2,...,wt),每个词都可以嵌入到矢量中。然后,卷积层132b2用于利用tanh激活函数对嵌入的词矢量执行卷积。注意,卷积层132b2的过滤器的数量与词嵌入的维度相同。然后使用双向lstm处理输出序列

其中可以看作是组合相邻的信息的词wi的扩充。最后,使用单个完全连接层132b4将双向lstm层132b3上生成的输出转换为所需的嵌入大小。在所使用的双向lstm层132b3上生成的输出可以是最后一个隐藏状态模型,该模型将lstm层132b3的前向lstm的最后一个隐藏状态与lstm层132b3的后向lstm的最后一个隐藏状态连接起来。双向lstm层132b3是两层堆叠的lstm,每个lstm单元中的隐藏单位大小可以与词嵌入大小相同。

图2c示出了第三编码器模型130c,其是编码器模型130的另一实现方式。第三编码器模型130c是具有转换器架构的模型。转换器架构大量使用了注意力机制,在很大程度上省去了重复和卷积。虽然一些转换器架构包括编码器和解码器,但是在图2c中仅包括编码器组件。由于转换器编码器输出是可变长度的序列,因此可以通过计算所有序列位置的均值来将其减小为固定长度。第三编码器模型130c包括多头注意力133c2,添加和归一化133c3,前馈133c4以及添加和归一化133c5分量。输入191a1的输入嵌入133c1可以被应用为第三编码器模型130c的输入。

在训练编码器模型的一些实现方式中,编码器模型被训练为基于与可以使用编码器模型130的“语义文本相似性”任务不同的多个任务而训练的较大的网络架构的一部分。在那些实现方式的一些中,基于预测文本响应是否是对文本输入的真实响应的任务来训练编码器模型130(例如,如上所述),并且基于也与语义文本相似性任务不同的至少一个附加任务来训练编码器模型130。

附加任务的一个示例是自然语言推断任务,其可以使用监督训练实例(例如来自斯坦福自然语言推断(snli)数据集的监督训练实例)来训练。这样的训练实例每个都包括一对文本段作为训练实例输入,以及训练实例输出,该训练实例输出是该对的文本段的多个类别(例如,蕴涵、矛盾和中立的类别)中的一个类别的人工标签。可以用于自然语言推断任务的附加网络架构组件可以包括前馈神经网络模型,例如具有完全连接的层和softmax层的模型。

现在转向图3,示出了训练编码器模型130作为基于多个任务训练更大的网络架构的一部分的一个示例。在图3中,输入响应训练实例190用于生成误差,该误差用于以与关于图1所描述的相同的方式来更新推理网络模型140和编码器模型130。

图3还包括nli训练实例192,其可以包括例如来自上述snli数据集的那些。训练引擎180从nli训练实例192中检索训练实例192a。训练实例192a包括第一输入192a1和第二输入192a2的训练实例输入,以及指示第一和第二输入的类别的标签的训练实例输出192a3,(例如,它们是彼此蕴涵的,彼此矛盾的或是中立的)。

训练引擎180使用编码器模型130处理训练实例192a的第一输入192a2以生成第一输入编码192b1。训练引擎180还使用编码器模型130处理训练实例192a的第二输入192a2以生成第二输入编码192b2。在图3中四次示出了编码器模型130以演示它被用于基于输入响应训练实例190生成用于训练的单独的嵌入,以及基于nli训练实例192生成单独的嵌入。但是,可以理解,它仍然只是单个编码器模型-即基于针对图3所示的两个不同任务而确定的误差来加以训练。

训练引擎180使用附加模型150处理第一输入编码192b1和第二输入编码192b2,以生成训练实例192a的输入192a1和192a2的类别的预测。特别地,在图3中,训练引擎180构造特征矢量151(u1,u2,|u1-u2|,u1*u2),其中u1代表第一输入编码192b1,并且u2代表第二输入编码192b2。将特征矢量馈入三向分类器,该三向分类器包括完全连接的层152和三向(针对三个类别)softmax层153,以生成类别的预测。

误差模块182基于预测类别与由训练引擎180为训练实例192a提供的标记类别192a3的比较来确定误差184a(如果有的话)。然后,误差模块182基于误差184a(以及当使用批处理学习并且图3的训练实例192a是来自nli训练实例192的训练实例的批次的一部分时,可选地基于该批次所确定的其他误差)来更新附加模型150和编码器模型130两者。例如,误差模块182可以基于误差和损失函数在附加模型150和编码器模型130上执行反向传播。

尽管关于单个训练实例192a示出了图3,应当理解,在训练期间,将在训练中利用来自nli训练实例192的大量训练实例。

通过基于图3的训练,基于以输入响应训练实例190为基础确定的误差并且基于以nli训练实例192为基础确定的误差来更新编码器模型130。可以同时关于这些不同的任务训练编码器模型130。换句话说,编码器模型130不是首先基于输入响应训练实例190被训练,然后在完成对输入响应训练实例190的训练之后,再对nli训练实例192进行训练。相反,编码器模型130的权重的一个或多个更新(例如,通过误差的一个或多个反向传播)可以基于输入响应训练实例190,然后编码器模型130的权重的一个或多个更新可以基于nli训练实例192,然后编码器模型130的权重的一个或多个更新可以基于输入响应训练实例190,然后编码器模型的权重的一个或多个更新可以基于nli训练实例192,等等。在各种实现方式中的某些中,可以在训练中利用独立的工作者(计算机工作),并且每个工作者使用针对对应的任务的训练实例的批次只对对应的任务进行训练。可以将不同数量的工作者投入到任务中,从而调整每个任务在编码器模型训练中的影响。

现在转向图4,提供了示出了根据本文公开的各种实现方式的训练编码器模型的方法400的流程图。为了方便起见,参照执行流程图的操作的系统来描述这些操作。该系统可以包括一个或多个组件,例如一个或多个处理器(例如,cpu,gpu和/或tpu)。尽管以特定顺序示出了方法400的操作,但这并不意味着是限制性的。一个或多个操作可能会被重新排序,省略或添加。

在框452处,系统识别训练实例的批次。例如,每个训练实例可以是具有输入、响应以及训练实例是正实例还是负实例(例如,响应是否为对输入的“真实”响应)的指示的训练实例。

在框454,系统选择该批次的训练实例。

在框456,系统基于使用编码器模型处理所选择的训练实例的输入来生成输入编码。

在框458,系统基于使用编码器模型处理所选择的训练实例的响应来生成响应编码。

在框460,系统基于在推理模型上处理框458中的响应编码来生成最终响应编码。

在框462,系统基于框456的输入编码和框460的最终响应编码来确定相关性值。

在框464,系统基于框462中的相关性值与训练实例所指示的相关性值的比较来确定训练实例的误差。例如,在训练实例是正训练实例的情况下,训练实例指示的响应分值可以是“1”或其他“正”值。

在框464,系统确定批次中是否有任何其他未处理的训练实例。如果是这样,则系统进行到框454并选择附加训练实例。然后,系统基于附加训练实例执行方框456、458、460、462和464。

如果在框466的迭代处,系统确定批次中不存在任何其他未处理的训练实例,则系统前进至框468。

在框468处,系统基于以不同训练实例为基础的输入编码和最终响应编码的点积来确定附加负响应分值。例如,系统可以基于在方框456基于第一训练实例生成的输入编码和在方框460基于不同的第二训练实例生成的最终响应编码的点积,来确定附加负响应分值。通过使用基于两个不同训练实例生成的输入编码和最终响应编码,可以假定对应的输入和响应不是基于“实际”输入响应对。因此,可以假设在框468处生成的附加响应分值是附加“负”响应分值(即,关于有效的“负”训练实例生成的)。框468的执行有效地提供了附加负训练实例,同时使得能够重用先前生成的输入编码和最终响应编码。换句话说,有效地获得了附加负训练实例,而无需计算量大的进一步的输入编码和最终响应编码的生成。

作为一个特定的示例,假设方框452的批次由100个正训练实例组成。在基于100个正训练实例进行训练之后,已生成100个输入编码和100个最终响应编码。可以基于第一训练实例的第一输入编码和第二训练实例的第二最终响应编码的点积来生成第一“负”相关性值。可以基于第一输入编码和第三训练实例的第三最终响应编码的点积来生成第二“负”相关性值。可以基于第一输入编码和第四至一百个训练实例的最终响应编码的点积来确定其他“负”相关性值。此外,可以基于第二训练实例的输入编码和其他训练实例(不是第二训练实例的那些)的最终响应编码类似地确定99个“负”相关性值;基于第三训练实例的输入编码以及其他训练实例(不是第三训练实例的那些)的最终响应编码,类似地确定99个“负”相关性值;等等。对应地,可以通过基于正训练实例已经生成的编码的相对计算有效的点积计算来生成9,900个“负”相关性值。此外,可以基于所有“负”相关性值和在输入编码器模型和响应编码器模型上(在方框474处)反向传播的总误差的函数(例如,softmax函数)来(在下面的方框472处)确定总误差。

在框470处,系统基于在框468处确定的附加负响应分值来确定附加误差。特别地,由于在框468处确定的响应分值被认为是用于附加负实例的,因此,系统基于框468的负响应分值与“0”或其他“负”值的比较来确定附加误差。

在框472,系统确定批次的误差。批次的误差可以基于在方框464和方框470的迭代中确定的误差。

在框474处,系统基于批次的误差在编码器模型和推理模型上反向传播。

然后,系统可以识别训练实例的新批次,并为新批次重启方法400。这样的训练可以持续直到满足一个或多个标准。尽管图4示出了特定批处理训练方法,但是应当理解,可以在训练中另外或替代地利用非批处理训练。而且,在一些实现方式中,可以省略框468和470和/或可以省略或添加其他框。此外,尽管图4示出了基于单个任务的训练,如本文所述,也可以利用多任务训练。

现在转向图5,提供了示出了根据本文公开的各种实现方式的为分配给响应动作的文本段生成编码的方法500的流程图。为了方便起见,参照执行流程图的操作的系统来描述该操作。该系统可以包括一个或多个组件,例如一个或多个处理器(例如,cpu,gpu和/或tpu)。尽管以特定顺序示出了方法500的操作,但这并不意味着是限制性的。一个或多个操作可能会被重新排序,省略或添加。

在框552处,系统识别分配给响应动作的文本段,例如分配给自动助理响应动作的文本段。

在框554,系统基于使用训练的编码器模型对文本段的处理来生成编码。

在框556,系统存储编码与响应动作的关联。

在框558,系统确定是否存在附加文本段。如果是这样,则系统进行到框552,并识别附加文本段。可以将附加文本段分配给相同的响应动作或另一个响应动作。然后,系统基于附加文本段执行框554和556。

如果在框558的迭代处,系统确定不存在附加文本段,则系统结束方法500。通过框552、554和556的多次迭代,可以生成多个文本段的多个编码,并存储编码与对应的响应动作的多个关联。例如,可以与第一自动助理响应动作相关联地存储多个文本段的多个编码,可以与第二自动助理响应动作相关联地存储多个文本段的多个编码,等等。

现在转向图6,提供了示出了根据本文公开的各种实现方式的使用经训练的编码器模型来确定一个或多个响应于自然语言查询而执行的响应动作的方法600的流程图。为了方便起见,参照执行流程图的操作的系统来描述该操作。该系统可以包括一个或多个组件,例如一个或多个处理器(例如,cpu,gpu和/或tpu)。尽管以特定顺序示出了方法600的操作,但这并不意味着是限制性的。一个或多个操作可能会被重新排序,省略或添加。

在框652处,系统接收查询。该查询可以例如作为口头话语或作为键入的查询来提供。

在框654处,系统基于使用训练的编码器模型对查询的处理来生成查询编码。例如,在查询是口头话语的情况下,可以执行捕获口头话语的音频数据的语音到文本处理,并且可以使用经训练的编码器模型来处理生成的文本,以生成查询编码。而且,例如,在查询是键入的查询的情况下,可以使用经训练的编码器模型来处理键入的查询的文本,以生成查询编码。

在框656处,系统基于框654中生成的编码与和对应响应动作相关联地预先存储的编码的比较来识别响应动作。例如,系统可以识别具有预存储的编码的响应动作,该编码在嵌入空间中在距离上与框654中生成的编码最接近。在一些实现方式中,系统基于其预存储的编码最接近于在方框654中生成的编码并且基于该预存储的编码相对于在方框654中生成的编码满足了接近度阈值来识别响应动作。

在框658,系统执行响应于接收到的查询的响应动作。

图7是示例计算设备710的框图,该示例计算设备可以可选地用于执行本文描述的技术的一个或多个方面。计算设备710包括至少一个处理器714(例如cpu,gpu和/或tpu),其经由总线子系统712与多个外围设备通信。这些外围设备可以包括存储子系统724(包括例如,存储器子系统725和文件存储子系统726),用户界面输出设备720,用户界面输入设备722和网络接口子系统715。输入设备722和输出设备720允许用户与计算设备710交互。网络接口子系统715提供到外部网络的接口,并且耦合到其他计算设备中的对应接口设备。

用户界面输入设备722可以包括键盘,诸如鼠标,轨迹球,触摸板或图形输入板之类的指向设备,扫描仪,并入显示器的触摸屏,诸如语音识别系统,麦克风的音频输入设备,和/或其他类型的输入设备。通常,术语“输入设备”的使用旨在包括所有可能的设备类型以及将信息输入到计算设备710或通信网络中的方式。

用户界面输出设备720可以包括显示子系统,打印机,传真机或诸如音频输出设备的非可视显示器。显示子系统可以包括阴极射线管(crt),诸如液晶显示器(lcd)的平板设备,投影设备或其他用于创建常规图像的机制。显示子系统还可以例如经由音频输出设备来提供非视觉显示。通常,术语“输出设备”的使用旨在包括所有可能类型的设备以及将信息从计算设备710输出到用户或另一机器或计算设备的方式。

存储子系统724存储提供本文所述的一些或所有模块的功能的编程和数据构造。例如,存储子系统724可以包括执行本文描述的方法的所选方面的逻辑。

这些软件模块通常由处理器714单独执行或与其他处理器组合执行。存储子系统724中使用的存储器子系统725可以包括多个存储器,包括用于在程序执行期间存储指令和数据的主随机存取存储器(ram)730以及其中存储了固定指令的只读存储器(rom)732。文件存储子系统726可以为程序和数据文件提供持久存储,并且可以包括硬盘驱动器,固态驱动器,软盘驱动器以及相关联的可移动介质,cd-rom驱动器,光盘驱动器或可移动媒体盒带。实现某些实现方式的功能的模块可以由文件存储子系统726存储在存储子系统724中,或者存储在处理器714可访问的其他机器中。

总线子系统712提供了一种机制,该机制用于使计算设备710的各个组件和子系统按预期彼此通信。尽管总线子系统712被示意性地示出为单个总线,但是总线子系统的替代实现方式可以使用多个总线。

计算设备710可以是各种类型,包括工作站,服务器,计算集群,刀片服务器,服务器场或任何其他数据处理系统或计算设备。由于计算机和网络的不断变化的性质,因此对图7中所描绘的计算设备710的描述仅旨在作为为了说明一些实现方式的目的的特定示例。计算设备710的许多其他配置可能具有比图7中描绘的计算设备更多或更少的组件。

在一些实现方式中,提供了一种由一个或多个处理器实施的方法,该方法包括识别均包括输入和响应的多个正训练实例。对于所述正训练实例中的每个正训练实例:输入是基于对应电子通信的内容的,并且回复是基于响应于对应电子通信的对应响应电子通信的。该方法还包括基于正训练实例来训练编码器模型。基于正训练实例的给定实例来训练编码器模型包括:基于使用编码器模型处理输入来生成输入编码;基于使用编码器模型处理响应来生成响应编码;基于使用推理模型处理响应编码来生成最终响应编码;基于输入编码和最终响应编码的比较来确定值;并基于该值与由给定实例指示的给定值的比较来更新推理模型和编码器模型两者。

本文公开的技术的这些和其他实现方式可以包括以下特征中的一个或多个。

在一些实现方式中,该方法还包括基于多个不同的附加训练实例来训练编码器模型,其中多个不同的附加训练实例用于与多个正训练实例的任务不同的任务。基于不同的附加训练实例的给定不同实例训练编码器模型可以包括:基于使用编码器模型处理给定不同实例的第一输入来生成第一编码;基于使用编码器模型处理给定不同实例的第二输入来生成第二编码;基于使用附加模型处理第一编码和第二编码来生成预测,其中在基于正训练实例训练编码器模型时不利用附加模型;并基于预测与给定不同实例的标记输出的比较,更新附加模型和编码器模型两者。标记输出可以指示例如自然语言推断任务的多个潜在类别中的特定类别。基于多个不同的附加训练实例来训练编码器模型可以与基于正训练实例训练编码器模型同时发生。基于多个不同的附加训练实例来训练所述编码器模型可以是通过一个或多个第一工作者线程,并且基于正训练实例来训练所述编码器模型是通过一个或多个第二工作者线程。

在一些实现方式中,该方法还包括在训练编码器模型之后:独立于推理模型,使用经训练的编码器模型来确定两个文本段的相似性值,其中相似性值指示两个文本段的语义相似性。使用经训练的编码器模型来确定两个文本段的相似性值可以包括:接收针对自动助理的查询;基于使用经训练的编码器模型处理查询来生成查询编码;将查询编码与多个预定查询编码进行比较,每个预定查询编码与一个或多个对应动作相关联地存储;基于所述比较,确定与所述查询编码最相似的给定预定查询编码;并响应于该查询并基于与查询编码最相似的给定预定查询编码,使自动助理执行与给定预定查询编码相关联地存储的一个或多个对应动作。该方法可以进一步包括:确定查询编码与给定预定查询编码之间的距离满足接近度阈值,并且可以进一步响应于确定该距离满足接近度阈值而使自动助理执行一个或多个对应动作。将查询编码与多个预定查询编码进行比较可以包括:生成多个标量值,每个标量值是基于查询编码和给定预定查询编码中的对应一个的对应点积的;基于所述比较,确定与所述查询编码最相似的给定预定查询编码可以包括:基于以该查询编码与该给定预定查询编码的点积为基础的标量值是所生成的多个标量值中的最小的来选择该给定预定查询编码。该查询可以是未由自动助理明确地映射到一个或多个对应动作的查询。该查询可以是基于在第一计算设备处接收到的用户输入的,并且一个或多个对应动作可以包括控制一个或多个附加设备。

在一些实现方式中,提供了一种由一个或多个处理器实施的方法,该方法包括:基于针对第一任务定制的多个第一训练实例并且基于针对第二任务定制的多个第二训练实例,同时训练编码器模型。第一任务不同于第二任务,并且第一任务和第二任务不同于语义文本相似性任务。该方法还包括在训练编码器模型之后:使用经训练的编码器模型来确定两个文本段的语义文本相似性。

在一些实现方式中,提供了一种由一个或多个处理器实现的方法,该方法包括:接收针对自动助理的查询;以及基于使用经训练的编码器模型处理查询来生成查询编码;将查询编码与多个预定查询编码进行比较,每个预定查询编码与一个或多个对应动作相关联地存储;基于所述比较,确定与所述查询编码最相似的给定预定查询编码;并响应于该查询并基于与查询编码最相似的给定预定查询编码,使自动助理执行与给定预定查询编码相关联地存储的一个或多个对应动作。

尽管本文已经描述和示出了几种实现方式,但是可以利用用于执行功能和/或获得结果的多种其他手段和/或结构和/或本文描述的优点中的一个或多个,并且每个这样的变形和/或修改被认为在本文描述的实现方式的范围内。更一般地,所有参数,维度,材料和/或配置将取决于所使用的教导的特定应用或多个应用。仅使用常规实验,本领域技术人员将认识到或能够确定本文所述的具体实现方式的许多等同形式。因此,应当理解,前述实现方式仅以示例的方式给出,并且在所附权利要求及其等同物的范围内,可以以不同于具体描述和要求保护的方式来实施实现方式。本公开的实现方式针对本文所述的每个单独的特征,系统,物品,材料,套件和/或方法。另外,如果这样的特征,系统,物品,材料,套件和/或方法不是相互矛盾的,则两个或更多个这样的特征,系统,物品,材料,套件和/或方法的任意组合被包括在本公开的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1