用于神经网络的计算高效富于表达的输出层的制作方法

文档序号:22679125发布日期:2020-10-28 12:38阅读:149来源:国知局
用于神经网络的计算高效富于表达的输出层的制作方法

本说明书涉及使用神经网络生成输出。



背景技术:

神经网络是采用一个或多个层的非线性单元来针对接收到的输入预测输出的机器学习模型。一些神经网络除了包括输出层之外还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中的下一层的输入,所述下一层即下一隐藏层或输出层。网络的每个层根据相应的参数集的当前值根据接收到的输入生成输出。



技术实现要素:

本说明书描述一种实现为在一个或多个位置的一个或多个计算机上的计算机程序的系统,该系统使用神经网络处理网络输入以生成网络输出。

特别地,所描述的系统采用包括一个或更多个初始神经网络层的神经网络。初始层接收网络输入并根据网络输入生成隐藏状态。

神经网络还包括计算效率高但表达能力强的输出层,该输出层接收隐藏状态并且然后将隐藏状态映射到在可能输出集合上的概率分布。所描述的输出层可以代替输出概率分布的常规输出层,例如,softmax层或混合softmax(mixtureofsoftmaxes,mos)层的。

可以实现本说明书中描述的主题的特定实施例以实现以下优点中的一个或多个。

softmax已经是各种广泛的神经网络包括例如大多数神经语言模型和机器翻译模型的标准输出层。然而,softmax是神经网络例如神经语言和机器翻译模型的表达能力的基础局限,因为它将由输出层生成的输出表示约束为低秩的,这可能不足以对自然语言或其它高度上下文相关的输出词汇(vocabulary)的复杂度进行建模。

为了对此进行改进,已经提出了生成更高秩输出表示的技术。这样的方法的一个示例是混合softmax(mos),所述mos将离散的潜在变量引入到输出层中,使得由于log-sum-exp非线性变换,所以对数概率矩阵是高秩的。然而,mos和其它提出的解决方案与softmax相比在存储器和时间二者方面是计算昂贵的,这使它们在计算预算有限时变得几乎不太有用。

另一方面,所描述的输出层(称为“mixtape”层)在仍然改进softmax的表达能力的同时降低附加的计算成本。能够将所描述的输出层作为附加层插入到任何现有网络中,即,在生成隐藏状态的初始层之后并且代替现有网络的常规输出层。

不是如在mos中一样在概率空间中采用标量混合,而是mixtape在logit空间中应用向量门控机制,以避免使用多个计算昂贵的softmax。

此外,在一些实施方式中mixtape还使用一种或多种其它技术来降低计算成本。

首先,由于需要为词汇中的每个单词计算softmax门以生成用于向量门控的概率,所以向量门控机制可能是计算昂贵的。这能够通过使用s形树分解来减轻,所述s形树分解将softmax概率门控分布分解成二叉树结构,其中每个分支承载由s形函数确定的概率质量的一部分。使用s形树分解来计算概率是计算高效得多,因为它避免了无论是在软件中还是在专用硬件上执行起来计算昂贵的softmax中的归约运算和除法运算。

其次,能够采用门共享来为所有不频繁的输出共享门值,从而产生部分高秩表示。此技术节约了大量的存储器和计算,即,因为需要为所有不频繁的输出计算和存储仅单个门值,而不影响mixtape层的性能,因为即使在不共享门的情况下,不频繁的输出的门值也通常难以准确地估计。

利用上述技术,mixtape在许多任务包括语言建模和机器翻译上获得相当或甚至更好的性能的同时大大改进mos的效率。例如,在正常词汇量(例如,10k-30k个可能的输出)情况下,mixtape层在相同批大小情况下比mos层快1.6倍到11.5倍,而在相同存储器预算情况下快3.5倍到10.5倍。

因此,所描述的输出层允许神经网络相对于常规softmax输出层实现提高的性能,同时减轻实现该提高的性能所需要的附加计算成本。即便当计算预算有限时或者当需要低等待时间处理时,例如在移动装置上或在具有有限的处理能力、有限的存储器或二者的专用硬件上,这也允许有效地部署所描述的系统。

在下面的附图和描述中阐述本说明书中描述的主题的一个或多个实施例的细节。根据说明书、附图和权利要求书,主题的其它特征、方面和优点将变得显而易见。

附图说明

图1示出示例神经网络系统。

图2示出为接收到的网络输入生成网络输出的示例。

图3是用于生成可能的输出的门控logit的示例过程的流程图。

图4是用于训练筛选模型的示例过程的流程图。

在各个附图中的相似的附图标记和标号指示相似的元件。

具体实施方式

图1示出示例神经网络系统100。神经网络系统100是被实现为一个或多个位置中的一个或多个计算机上的计算机程序的系统的示例,其中实现以下所述的系统、组件和技术。

系统100包括神经网络,所述神经网络包括不止一个初始神经网络层110。初始层接收网络输入102并且根据网络输入102生成隐藏状态112。隐藏状态112将通常是最后初始神经网络层的输出或来自多个初始神经网络层的输出的组合,例如,如果神经网络包括跳过连接的话。

该神经网络还包括计算高效但富于表达的输出层,被称为mixtape输出层120,其接收隐藏状态112,然后将隐藏状态112映射到在可能输出的词汇上的概率分布132。所描述的输出层120能够替换输出概率分布的常规输出层,例如softmax层或混合softmax(mos)层。

因此,系统100能够执行各种任务中的任一个,所述各种任务需要将网络输入102映射到概率分布132,然后要么1)使用概率分布132来从可能输出的词汇中选择输出,例如,通过从概率分布132中采样或者选择具有最高概率132的输出,要么2)使用概率分布132来计算在训练神经网络时使用的损失。

换句话说,系统100能够被配置成接收各种不同的网络输入102中的任一个并且使用神经网络来将这些输入映射到各种网络输出中的任一个。在一些情况下,网络输出是单个概率分布,然而在其它情况下,生成网络输出需要为输出序列中的多个时间步的每一个生成相应的概率分布。

例如,神经网络可以是神经机器翻译神经网络。也就是说,如果网络输入是原始语言的单词的序列例如句子或短语,则网络输出可以是作为输入序列变成目标语言的翻译的输出序列,即表示原始语言的单词的序列的目标语言的单词的序列。神经网络然后能够在输出序列中的时间步中的每一个处生成相应的概率分布,并且能够从该概率分布中选择在该时间步的输出,例如翻译中的单词。

作为另一示例,神经网络可以是语音辨识神经网络。也就是说,如果网络输入是表示口语发言的音频数据的序列,则输出序列可以是文本符号例如表示发言的字素、字符或单词的序列,即,是输入序列的转录。神经网络然后能够在输出序列中的时间步中的每一个处生成相应的概率分布,并且能够从该概率分布中选择在该时间步的输出,例如,转录中的文本符号。

作为另一示例,神经网络可以是自然语言处理神经网络。例如,如果网络输入是原始语言的单词的序列例如句子或短语,则输出序列可以是原始语言的输入序列的摘要,即与输入序列比具有更少的单词但是保留输入序列的基本含义的序列。作为另一示例,如果网络输入是形成问题的单词的序列,则输出序列可以是形成对问题的答案的单词的序列。

作为另一示例,神经网络可以是计算机辅助医学诊断系统的一部分。例如,网络输入可以是来自电子病历的数据并且输出序列可以是一种或多种预测的疗法。

作为另一示例,系统可以是图像处理系统的一部分。例如,网络输入可以是图像并且输出可以是描述该图像的文本的序列。作为另一示例,网络输入可以是文本或不同上下文的序列并且输出序列可以是描述该上下文的图像。作为另一示例,任务可以是图像分类,其中输入是图像并且输出标识该图像中描绘的对象所属的一个或多个类别(来自一组可能的对象类别)。

神经网络能够具有各种架构中的任一种。也就是说,初始神经网络层110能够采取各种形式中的任一种并且执行各种操作中的任一个。

例如,神经网络能够具有用以对网络输入进行编码的编码器神经网络和用以根据经编码的网络输入生成输出序列的解码器神经网络。作为生成输出序列的一部分,神经网络针对输出序列中的多个时间步中的每一个生成概率分布并且使用针对该时间步的概率分布来选择在该时间步的输出。

在此示例中,初始神经网络层110将包括编码器神经网络和所有解码器神经网络,除了用所描述的输出层120替换的输出层。在一些示例中,解码器是自动回归神经网络,例如递归神经网络或自动回归卷积神经网络或自动回归基于注意力的神经网络。

更一般地,哪些初始神经网络层110是神经网络的一部分还依赖于神经网络被配置成执行的任务。例如,对于序列处理任务,这些层能够包括如下中的一个或多个:递归层例如(长短期记忆)lstm层、前馈层、自我注意力层或卷积层。对于图像分类任务,这些层可以是根据输入图像生成隐藏状态的卷积神经网络。

哪些输出是在概率分布132在其上被生成的可能输出的词汇中也依赖于神经网络被配置来执行的任务。例如,当任务是机器翻译时,词汇包括目标语言的单词。当任务是语音辨识时,词汇能够包括目标自然语言字母表中的文本符号,即音素、字符、词块或单词中的一个或多个。当任务是图像分类时,词汇能够包括各自标识不同的对象类别的标签的集合。

通常,所描述的技术适用于具有可能的输出的大词汇的任何机器学习任务,例如,具有目标自然语言的单词或其它文本符号的输出词汇的任务或具有遍及大量可能的类的输出词汇的分类任务。

特别地,当词汇量大并且神经网络需要产生在输出上的概率分布以便生成网络输出时,常规方法已将softmax层用作神经网络的输出层。

softmax已经成为各式各样神经网络包括例如大多数神经语言模型和机器翻译模型的标准输出层。然而,softmax是神经网络例如神经语言和机器翻译模型的表达能力的基础局限,因为它将由输出层生成的输出表示约束为低秩的,这可能不足以对自然语言或其它高度上下文相关的输出词汇的复杂度进行建模。因此,softmax输出层限制了神经网络在各种大词汇任务上的准确性。

为了对此进行改进,已经提出了生成更高秩的输出表示的技术。这样的方法的一个示例是混合softmax(mos),所述mos将离散的潜在变量引入到输出层中,使得由于log-sum-exp非线性变换,对数概率矩阵是高秩的。然而,mos和其它提出的解决方案与softmax相比在存储器和时间二者方面是计算昂贵的,这使它们在计算预算有限时变得几乎不太有用。

另一方面,本说明书采用mixtape输出层120。通过使用mixtape输出层120来生成概率分布,神经网络能够在比mos显著地更加计算高效的同时实现比得上或好于mos的性能。

将在下面参考图2-4更详细地描述由输出层120执行以将隐藏状态112映射到概率分布132的操作。

一旦已经生成了概率分布132,系统100能够提供概率分布132作为系统的网络输出,例如,以供呈现给用户或给另一系统,或者能够选择具有最高概率的可能的输出中的一个或多个并且提供所述一个或多个可能的网络输出作为系统的网络输出,或者使用概率分布132来计算神经网络的训练期间的损失。或者,系统100能够与网络输入102相关联地存储概率分布132或具有最高得分的一个或多个可能的输出以供以后使用。

图2是用于针对接收到的网络输入生成概率分布的示例过程200的流程图。为了方便,将过程200描述为由位于一个或多个位置中的一个或多个计算机的系统执行。例如,适当地编程的神经网络系统例如图1的神经网络系统100能够执行过程200。

系统使用一个或多个初始神经网络层来对网络输入进行处理以生成隐藏状态(步骤202)。隐藏状态通常是具有固定维数d1的数值的向量。隐藏状态通常是一个或多个初始神经网络层中的最后神经网络层的输出,或者,当初始层包括跳过连接或残差连接时,是初始神经网络层中的两个或更多个的输出的组合例如求和、级联或平均。

系统使用mixtape输出层来对隐藏状态进行处理以将隐藏状态映射到概率分布(步骤204),所述概率分布包括可能输出的词汇中的每个可能输出的相应的概率。

作为生成概率分布的一部分,mixtape输出层为多个门中的每一个生成相应的上下文嵌入(步骤206)。嵌入是具有固定维数的数值的有序合集,例如,具有固定数目的数值的向量。组成多个的门数k是固定的,即作为神经网络的架构的一部分。例如,k能够等于4、8或16。

为了生成针对给定门的上下文嵌入,输出层能够通过具有特定于门的参数的一个或多个第一前馈神经网络层来对隐藏状态进行处理。作为特定示例,根据隐藏状态gc生成的针对门k的上下文嵌入hc,k能够满足:

hc,k=tanh(hkgc),

其中hk是仅用于门k的dxd1参数矩阵。

mixtape输出层然后针对词汇中的可能的输出中的每一个生成相应的门控logit(步骤208)。

logit通常是指得分或其它数值。不同于可能输出的概率被要求合计为一的概率分布---例如在可能输出上的概率分布---logit没有这种要求。

门控logit被称为“门控”是因为它们是通过应用向量门控,即通过针对每个可能的输出计算特定于门的值的加权和来生成的。

在下面参考图3更详细地描述计算门控logit。

mixtape输出层然后将softmax函数应用于门控logit以生成概率分布(步骤210)。

也就是说,与混合softmax以及用以提高常规softmax输出层的表达能力的其它方法不同,mixtape输出层仅应用单个softmax函数作为生成概率分布的一部分。

因为softmax函数是计算昂贵的,需要为每个logit计算并存储指数,所以相对于混合softmax和相关方法,仅应用单个softmax大大地改进mixtape输出层的计算效率。

图3是用于针对词汇中的给定可能的输出生成门控logit的示例过程300的流程图。为了方便,将过程300描述为由位于一个或多个位置中的一个或多个计算机的系统执行。例如,适当地编程的神经网络系统的mixtape输出层例如图1的神经网络系统100的mixtape输出层120能够执行过程300。

mixtape输出层对于词汇中的每个可能的输出执行过程300以针对每个可能的输出生成相应的门控logit。

mixtape输出层根据隐藏状态生成针对可能的输出的门中的每一个的相应的预激活先验(步骤302)。

在一些实施方式中,输出层生成针对每个可能的输出的特定于预激活先验的预激活先验。

特别地,在这些实现方式中,针对每个门,mixtape输出层通过具有特定于门的参数和特定于给定可能的输出的参数的一个或多个第二前馈神经网络层来对隐藏状态进行处理以针对该门生成相应的预激活先验。

作为特定示例,针对给定可能的输出x和给定门k的预激活先验lc,x,k能够满足:

其中vx是特定于给定可能的输出x的维数d2的参数向量,uk是d2乘d1并且特定于门k的参数矩阵,gc是隐藏状态,uk是维数d1的参数向量,并且bx,k是特定于给定可能的输出x和给定门k的偏置值。

在一些其它实施方式中,输出层实现门共享。在门共享中,可能的输出的词汇被分成多个频繁的可能的输出和多个不频繁的可能的输出。

例如,分区能够由外部系统完成并且作为输入提供给系统。

作为另一示例,系统能够通过如下方式来执行分区:将例如在用于训练神经网络的训练数据集中的地面实况输出中的前s个最频繁地发生的可能的输出指派给频繁的可能的输出分区,并且将词汇中的剩余可能的输出指派给不频繁的可能的输出分区。

当实现门共享时,对于每个频繁的可能的输出,输出层生成针对该频繁的可能的输出的特定于该频繁的可能的输出的预激活先验。例如,对于每个频繁的可能的输出,输出层能够像将在未在实现门共享时那样生成预激活先验,即,通过通过具有特定于门的参数和特定于给定可能的输出的参数的一个或多个第二前馈神经网络层来对隐藏状态进行处理以生成针对门的相应的预激活先验。

对于每个不频繁的可能的输出,输出层生成针对该不频繁的可能的输出的在所有不频繁的可能的输出上共享的预激活先验。换句话说,对于给定门k和给定隐藏状态,针对门k的预激活先验对于不频繁的可能的输出的每一个来说将是相同的。

例如,对于任何给定门,输出层能够将特定于该给定门的共享参数向量应用于隐藏状态以针对该门生成共享的预激活先验。作为特定示例,针对每个不频繁的可能的输出x和给定门k的预激活先验lc,x,k能够满足:

通过针对所有不频繁的可能的输出生成共享的预激活先验,输出层能够显著地改进生成概率分布的计算效率。此外,因为即使在不共享门的情况下不频繁的输出的预激活先验也通常难以准确地估计,所以系统能够在没有显著性能降级的情况下实现这些计算节约。

mixtape输出层根据预激活先验生成针对可能的输出的门中的每一个的相应的门先验概率(步骤304)。也就是说,mixtape输出层将针对门的预激活先验映射到合计为一的概率的集合。

在一些实施方式中,mixtape输出层将softmax函数应用于预激活先验以生成门的门先验概率。

然而,针对词汇中的每个可能的输出计算相应的softmax可能是计算昂贵的,因为可能的输出的数目通常是大的。

在其它实施方式中,为了以更加计算高效的方式执行概率计算,mixtape输出层使用称为s形树分解的技术。

在s形树分解中,当门的总数为k时,mixtape输出层将s形函数应用于针对这些门中的k-1个门的预激活先验以生成k-1个s形输出,然后根据k-1个s形输出生成k个门先验概率。在下面参考图4更详细地描述s形树分解。

当使用门共享时,输出层仅需要将针对不频繁的输出的共享的预激活先验的集合映射到概率一次,然后能够对于所有不频繁的输出重新使用相同的门先验概率。

输出层通过计算上下文嵌入的加权和来生成给定可能的输出的加权和,其中针对每个门的上下文嵌入通过门的门先验概率加权在加权和中(步骤406)。

输出层然后通过将针对可能的输出的输出嵌入应用于加权和即通过计算输出嵌入与加权和之间的点积来计算给定可能的输出的门控logit(步骤408)。输出嵌入是数值的d维向量或其它有序合集。此输出嵌入能够被预先训练或者能够被与神经网络的训练一起联合地学习。

在一些其它实施方式中,不是执行步骤406然后步骤408,而是mixtape输出层替代地通过首先将针对可能的输出的输出嵌入应用于上下文嵌入中的每一个以生成可能的输出的k个门logit并且然后计算可能的输出的门logit的加权和来计算可能的输出的门控logit以计算给定可能的输出的门控logit,其中每个给定门的门logit通过给定门的对应的门先验概率来加权。

因此,能够将用于考虑到上下文c即如网络输入中反映的上下文和由初始神经网络层所维持的任何内部状态将概率p(x|c)指派给词汇中的给定可能的输出x的mixtape输出层的总体计算表达为:

其中πc,x,k是针对k个门中的门k的先验概率,wx是针对可能的输出x的输出嵌入,hc,k是根据隐藏状态gc生成的针对门k的上下文嵌入,并且求和x’是遍及词汇中的所有可能的输出的求和。

图4示出由mixtape输出层120执行以将隐藏状态112映射到概率分布132的处理的示例实现方式。

在图4的示例中,mixtape输出层120使用k=4个门并且可能的输出(在图中称为“令牌”)的词汇包括m个可能的输出。

如图4中所示,mixtape输出层接收由初始神经网络层110生成的隐藏状态112(“最后层隐藏状态”)。

根据隐藏状态112,输出层120使用一组前馈神经网络层410来计算门先验概率430和门logit440。

对于m个可能的输出中的每一个,门先验概率430包括门中的每一个的相应的门先验概率。因此,如从图4可以看出的,在存在k=4个门的图4的示例中,门先验概率430对于m个可能的输出中的每一个包括4个门先验概率。

如上所述,为了计算门先验概率430,系统首先针对每个可能的输出使用神经网络层410来计算k=4个预激活先验,然后根据预激活先验针对可能的输出生成k=4个门先验概率。

特别地,在图4的示例中,输出层使用s形分解420来根据预激活先验生成先验概率430。

图表480图示了当k=4时使用k-1个s形输出的s形树分解420的应用。通常,当应用s形树分解时,输出层将softmax分布分解成s形函数的树结构。具体地,输出层使用k-1个s形输出来定义沿着树分枝的概率。特别地,如图表480中所示,s形树中的每条边是使用s形函数计算的概率。每个门先验概率是沿着从根到叶的路径的概率的乘积。例如,能够将图表480中描绘的分解表达为:

γc,x,k=σ(lc,x,k)对于k=1...k–1

πc,x,1=γc,x,1γc,x,2

πc,x,2=γc,x,1(1-γc,x,2)

πc,x,3=(1-γc,x,1)γc,x,3

πc,x,3=(1-γc,x,1)(1-γc,x,3),

其中σ是s形函数。

因此,系统能够避免在计算先验概率时对预激活先验执行softmax将需要的归约和除法运算。

附加地,在图4的示例中,输出层正在实现门共享。因此,每个频繁的可能的输出(即,令牌1…s)的门先验430由针对该频繁的可能的输出的特定于该频繁的可能的输出并且可能因此不同的预激活先验生成。对于每个不频繁的可能的输出(即,令牌s+1...m),门先验430由在所有不频繁的可能的输出上共享并且因此全部相同的预激活先验生成。

对于m个可能的输出中的每一个,门logit440针对门中的每一个包括相应的logit。因此,如从图4可以看出的,在存在k=4个门的图4的示例中,门logit440对于m个可能的输出中的每一个包括4个logit。

特别地,为了生成门logit440,输出层首先通过如下方式生成针对所述多个门中的每一个的相应的上下文嵌入:对于这些门中的每一个,通过具有特定于门的参数的层410中的一个或多个第一前馈神经网络层来对隐藏状态进行处理。

对于m个可能的输出中的每一个,输出层然后将针对可能的输出的输出嵌入应用于上下文嵌入中的每一个以生成可能的输出的k个门logit。换句话说,为了针对任何给定可能的输出m生成门k的门logit,输出层计算针对门k的上下文嵌入与针对可能的输出m的上下文嵌入之间的点积。

mixtape输出层然后使用门先验概率430和门logit440来执行向量门控450以生成门控logit460,所述门控logit460包括m个可能的输出中的每一个的单个相应的门控logit。

为了对于可能的输出中的每一个执行向量门控450,输出层针对可能的输出计算门logit的加权和以生成可能的输出的门控logit,其中每个给定门的门logit通过给定门的对应的门先验概率来加权。

应该注意的是,在图4中图示的示例中被执行来生成门控logit460的处理在数学上相当于上述技术,其中为了生成给定可能的输出的门控logit,输出层首先通过计算针对门的上下文嵌入的和来计算给定可能的输出的加权和(其中针对每个门的上下文嵌入通过针对给定可能的输出的门的门先验概率来加权),并且然后通过将针对可能的输出的输出嵌入应用于加权和来计算可能的输出的门控logit。

输出层然后将softmax函数470应用于门控logit460以将门控logit460映射到概率分布132。

本说明书连同系统和计算机程序组件一起使用术语“被配置”。对于要被配置成执行特定操作或动作的一个或多个计算机的系统意指系统已在其上安装了在操作中使该系统执行这些操作或动作的软件、固件、硬件或软件、固件、硬件的组合。对于要被配置成执行特定操作或动作的一个或多个计算机程序意指该一个或多个程序包括指令,所述指令当由数据处理装置执行时,使该装置执行操作或动作。

本说明书中描述的主题和功能操作的实施例可用数字电子电路、用有形地具体实现的计算机软件或固件、用包括本说明书中公开的结构及其结构等同物的计算机硬件或者用它们中的一个或多个的组合来实现。本说明书中描述的主题的实施例可实现为一个或多个计算机程序,即在有形非暂时性存储介质上编码以供由数据处理装置执行或者控制数据处理装置的操作的计算机程序指令的一个或多个模块。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行访问存储设备或它们中的一个或多个的组合。替换地或此外,可将程序指令编码在人工生成的传播信号上,该传播信号例如是机器生成的电、光或电磁信号,该传播信号被生成来对信息进行编码以用于传输到适合的接收器装置以供由数据处理装置执行。

术语“数据处理装置”指代数据处理硬件并且包含用于处理数据的所有种类的装置、设备和机器,作为示例包括可编程处理器、计算机或多个处理器或计算机。装置还可以是或者进一步包括专用逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。装置除了包括硬件之外还可以可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。

也可以被称为或者描述为程序、软件、软件应用、app、模块、软件模块、脚本或代码的计算机程序可用包括编译或解释语言或声明或过程语言的任何形式的编程语言编写;并且它可被以任何形式部署,包括作为独立程序或者作为模块、组件、子例行程序或适合于在计算环境中使用的其它单元。程序可以但是不必对应于文件系统中的文件。程序可以被存储在保持其它程序或数据的文件的一部分中,例如存储在标记语言文档中的一个或多个脚本;在专用于所述程序的单个文件中或者在多个协调文件中,例如存储代码的一个或多个模块、子程序或部分的文件。可将计算机程序部署成在一个计算机上或者在位于一个站点处或者分布在多个站点上并通过数据通信网络互连的多个计算机上执行。

在本说明书中,术语“数据库”广泛地用于指代任何数据集:数据不需要被以任何特定方式构造,或者根本不构造,并且它可被存储在一个或多个位置中的存储设备上。因此,例如,索引数据库可包括多个数据集,其中的每一个可以被不同地组织和访问。

类似地,在本说明书中术语“引擎”广泛地用于指代被编程来执行一个或多个具体功能的基于软件的系统、子系统或过程。通常,引擎将作为安装在一个或多个位置中的一个或多个计算机上的一个或多个软件模块或组件被实现。在一些情况下,一个或多个计算机将专用于特定引擎;在其它情况下,可在同一计算机或多个计算机上安装并运行多个引擎。

本说明书中描述的过程和逻辑流程可由执行一个或多个计算机程序的一个或多个可编程计算机执行以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程还可由例如是fpga或asic的专用逻辑电路执行,或者通过专用逻辑电路和一个或多个编程计算机的组合来执行。

适合于执行计算机程序的计算机可基于通用微处理器或专用微处理器或两者,或任何其它种类的中央处理器。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的必要元件是用于执行或者实行指令的中央处理单元以及用于存储指令和数据的一个或多个存储设备。中央处理单元和存储器可由专用逻辑电路补充或者并入在专用逻辑电路中。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘,或者操作上被耦合以从所述一个或多个大容量存储设备接收数据或者将数据传送到所述一个或多个大容量存储设备或者两者以用于存储数据。然而,计算机不必具有这样的设备。此外,计算机可被嵌入在另一设备中,所述另一设备例如是移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制器、全球定位系统(gps)接收器或便携式存储设备,例如通用串行总线(usb)闪存驱动器等。

适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,作为示例包括半导体存储设备,例如eprom、eeprom和闪速存储器设备;磁盘,例如内部硬盘或可移动盘;磁光盘;以及cdrom和dvd-rom盘。

为了提供与用户的交互,可在计算机上实现本说明书中描述的主题的实施例,所述计算机具有用于向用户显示信息的显示设备以及用户可用来向该计算机提供输入的键盘和定点设备,所述显示设备例如是crt(阴极射线管)或lcd(液晶显示器)监视器,所述定点设备例如是鼠标或轨迹球。其它种类的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以任何形式接收来自用户的输入,包括声、语音或触觉输入。此外,计算机可通过向由用户使用的设备发送文档并从由用户使用的设备接收文档来与用户交互;例如,通过响应于从web浏览器接收到请求而向用户的设备上的web浏览器发送网页。另外,计算机可通过向个人设备发送文本消息或其它形式的消息并且继而从用户接收响应消息来与用户交互,所述个人设备例如是正在运行消息传送应用的智能电话。

用于实现机器学习模型的数据处理装置还可包括例如用于处理机器学习训练或生产即推理、工作负载的公共和计算密集部分的专用硬件加速器单元。

可使用机器学习框架来实现和部署机器学习模型。所述机器学习框架例如是tensorflow框架、microsoftcognitivetoolkit框架、apachesinga框架或apachemxnet框架。

本说明书中描述的主题的实施例可被实现在计算系统中,所述计算系统包括后端组件,例如作为数据服务器;或者包括中间件组件,例如应用服务器;或者包括前端组件,例如具有用户可用来与本说明书中描述的主题的实现方式交互的图形用户界面、web浏览器或app的客户端计算机;或者包括一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可通过例如通信网络的任何形式或介质的数字数据通信来互连。通信网络的示例包括局域网(lan)和广域网(wan),例如互联网。

计算系统可包括客户端和服务器。客户端和服务器一般地彼此远离并通常通过通信网络来交互。客户端和服务器的关系借助于在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器向用户设备传输例如html页面的数据例如以用于向与作为客户端的设备交互的用户显示数据并从该用户接收用户输入的目的。可在服务器处从设备接收在用户设备处生成的数据,例如,用户交互的结果。

虽然本说明书包含许多具体实施方式细节,但是这些不应该被解释为对任何发明的或可能要求保护的范围的限制,而是相反地被解释为对可能特定于特定发明的特定实施例的特征的描述。也可在单个实施例中组合地实现在本说明书中在单独的实施例的上下文中描述的某些特征。相反地,也可单独地或者按照任何适合的子组合在多个实施例中实现在单个实施例的上下文中描述的各种特征。此外,尽管特征可能在上面被描述按照某些组合起作用并且甚至最初被如此要求保护,但是来自要求保护的组合的一个或多个特征可在一些情况下被从该组合中除去,并且所要求保护的组合可以针对子组合或子组合的变化。

类似地,虽然按照特定次序在附图中描绘并在权利要求书中记载操作,但是这不应该被理解为要求按照所示的特定次序或者按照顺序次序执行这样的操作,或者要求执行所有图示的操作以实现所预期的结果。在某些情况下,多任务处理和并行处理可以是有利的。此外,上述实施例中的各种系统模块和组件的分离不应该被理解为在所有实施例中要求这样的分离,并且应该理解的是,所描述的程序组件和系统一般地可被一起集成在单个软件产品中或者包装到多个软件产品中。

已描述了主题的特定实施例。其它实施例在所附权利要求的范围内。例如,权利要求中记载的动作可被以不同的次序执行并仍然实现所预期的结果。作为一个示例,附图中描绘的过程不一定要求所示的特定次序或顺序次序以实现所预期的结果。在一些情况下,多任务处理和并行处理可以是有利的。

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