掌桥专利:专业的专利平台
掌桥专利
首页

使用神经网络选择计算内核变量

文献发布时间:2023-06-19 11:32:36


使用神经网络选择计算内核变量

技术领域

本申请总体上涉及选择最佳内核来对一组或更多组数学输入(诸如一个或更多个矩阵)执行计算。对于给定的计算,可以采用多种方法来执行该运算。通常,方法的性能可能取决于影响方法运行时间的多种因素。因此,针对给定的一组约束选择内核会极大地影响请求运算的应用程序的性能。

背景技术

当对矩阵或一组矩阵执行计算时,许多因素会影响完成计算所花费的时间。因为可能存在多个内核来执行运算,所以通常很难评估要使用哪个内核来执行运算。通过选择效率低下的内核来执行计算,性能可能会低于最佳性能。因此,选择最佳内核对于使计算性能最大化很重要。但是,选择内核的时间和资源成本必须最小化,以防止选择过程占用比使用可能次佳的内核所节省的时间更多的时间。

附图说明

图1示出了可以在其中实现本文描述的实施例的示例环境;

图2示出了根据本文描述的实施例的示例数据流;

图3示出了其中可以实现本文描述的实施例的示例环境;

图4示出了一个或更多个实施例的流程图;

图5示出了一个或更多个实施例的流程图;

图6示出了根据至少一个实施例的用于训练可以利用的图像合成网络的系统;

图7示出了根据至少一个实施例的可以利用的统计模型的各层;

图8示出了根据至少一个实施例的推理和/或训练逻辑;

图9示出了根据至少一个实施例的推理和/或训练逻辑。

具体实施方式

当请求矩阵计算时,应用程序可能不了解可用于执行计算的各种内核。如本文所使用的,“内核”是指对输入数据执行数学计算的任何低级例程。对于给定的运算,可能存在多个内核来执行该运算,并且可以编写每个内核以优化某些输入数据的性能。例如,应用程序可需要通用矩阵乘法(GeMM),而无需对运算的执行方式感兴趣。相反,该应用程序只对尽快执行运算感兴趣。由于许多运算可能具有可用于执行该运算的多个内核,因此选择最佳内核(选择最佳内核所需的时间量最少)可以极大地减少所请求的计算的运行时间。

因为许多内核的性能可能受各种因素影响,所以可以将深度神经网络训练为基于输入因子对一组内核进行排名(rank)。输入因子可以包括输入矩阵和/或正在执行内核的硬件的特性(characteristics)。然后,DNN可以基于是用于该计算的最佳内核的可能性来提供被排名的内核列表,并且可以使用基于经排名的列表选择的内核之一来执行该计算。

然而,尽管DNN可以改善选择最佳内核来执行运算所花费的时间,但仍需要对DNN进行大量训练才能准确预测内核的相关性。因为训练是一个时间和资源密集的过程,所以提供给DNN的训练数据应限于对DNN训练最重要的那些训练集。因此,训练DNN会提出与选择正确的训练数据来生成相关的其自己的问题。因为输入可以是任何大小(不超过硬件的上限),所以概括有意义的训练集会带来一个难题。

因此,准确地预测最佳内核同时仍然有效地进行选择的DNN具有很高的优势。此外,必须选择输入到DNN的训练,以便有效地完成训练,同时在运算时仍保持DNN的准确预测。因此,除了输入数据的初始训练集之外,由DNN做出的预测可以用于识别在预测计算内核方面特别困难的一个或更多个输入集。然后可以使用符合那些故障区域的生成的训练数据对DNN进行进一步的训练。

图1是其中可以实现本文描述的实施例的示例环境的图示。该环境包括内核选择系统100、神经网络训练系统120、客户端应用程序130和应用程序编程接口(API)140。应用程序130可以利用API经由网络(例如因特网、局域网(LAN)和/或其他网络)与内核选择系统100进行通信。API 140允许应用程序130与内核选择系统100进行通信,而无需应用程序130具有内核选择系统100如何操作的知识。因此,应用程序130可以提交对计算的请求以及一个或更多个参数(例如用于内核的输入数据),并作为响应接收结果。

数据库102包括多个内核,这些内核可用于执行应用程序130经由API 140请求的一个或更多个运算。每个内核可与特定计算相关联,并可与提供的输入数据一起使用以产生结果。例如,数据库105中存储的内核可以与通用矩阵乘法(GeMM)计算相关联。然后,可以由诸如内核处理器104之类的执行组件来利用GeMM内核,该执行组件可以利用GeMM内核来执行计算。在一些实施例中,数据库102可以包括用于给定计算的多个内核。例如,数据库102可以包括用于执行GeMM计算的内核K

内核处理器104是执行内核以为给定的一组输入计算计算结果的组件。在一些实施例中,内核处理器104可以是与正在执行内核选择引擎100相同的处理器。在一些实施例中,内核处理器104和正在执行内核选择引擎100的处理器两者都可以是单独的处理器和/或被合并到同一系统中的处理器。例如,内核处理器104可以是在与正在执行内核选择引擎100的一个或更多个单独的处理器相同的系统上运行的图形处理单元(GPU)。

候选内核生成器106确定可以由内核处理器104利用以确定结果计算的一个或更多个候选内核。候选内核生成器106识别数据库102中可用于执行在请求中已经接收到的运算的内核以及输入数据的特性。例如,可以将一个或更多个内核限制为可以用作计算结果的输入的矩阵的大小,和/或一个或更多个内核可以是特定于特定计算的。因此,候选内核生成器106可以确定数据库102中存储的内核列表,该内核列表可以用于向应用程序130提供结果。

过滤器108从候选内核列表中删除在给定系统的特定限制下不实际和/或不可能执行的任何内核。例如,过滤器108可以识别内核处理器104的硬件约束,并确定对于给定的内核,内核处理器104不具有(或不太可能具有)用于利用该内核处理给定输入的资源。因此,过滤器108可以从候选内核列表中删除该内核,使得神经网络不会将该内核作为潜在的最佳内核进行处理。

一旦确定了候选内核列表,就向神经网络110提供该列表以及输入数据。训练神经网络以基于候选内核列表确定每个内核的相关性得分,该相关性得分可预测给定内核将如何对输入数据执行计算。如本文进一步描述的,可以由训练系统120来训练神经网络。

排序器(sorter)112基于神经网络的输出,按相关性对候选内核进行排序(sort)。例如,对于具有相关性得分的给定的内核列表,排序器112可以对该列表进行排序,使得列表中的第一内核是用于对输入数据执行计算的最相关的内核。然后选择引擎114从经排序的列表中选择内核,例如具有最高相关性得分的内核。然后将所选择的内核提供给内核处理器104,其可以使用所选择的内核和输入数据来执行计算。然后可以经由API 140将内核处理器104的结果提供给应用程序130。

参照图2,提供了流程图,该流程图示出了将输入数据处理为经排名的(ranked)内核列表以执行计算。该应用程序首先将输入数据提供给API202。该输入数据可以包括矩阵、矩阵大小和/或描述要执行的输入矩阵或计算的其他输入。在一些实施例中,已经执行了计算。因此,可以维持会话高速缓存204,该会话高速缓存204包括针对已经在会话内提供的矩阵的结果计算。通过维护高速缓存,可以将结果立即提供给应用程序,而无需进行附加的计算和/或使用神经网络。在一些实施例中,如果需要精确的结果,则可以将输入提供给高优先级高速缓存。根据这样的实施例,高优先级高速缓存在选择内核时不利用神经网络,而是直接将经排名的内核列表提供给选择组件114以由内核处理器104进行处理。因为可能的内核的数量非常大,高优先级高速缓存可能不包括所有可能的内核,并且可能比利用神经网络占用更多资源来执行。因此,可以在神经网络将不按要求执行的有限情况下利用高优先级高速缓存。

如果两个高速缓存都不用于生成经排名的内核列表,则生成内核列表。候选内核列表的生成可以由与候选内核生成器106共享一个或更多个特性的组件来执行。一旦生成候选内核,就将列表提供给过滤器210,过滤器210可以删除在给定一个或更多个约束条件(例如执行处理器的硬件约束条件)下不可能执行或执行是不现实的任何内核。然后将经过滤的内核列表提供给神经网络212。在一些实施例中,可以将经过滤的内核列表与附加信息(例如表征内核和/或输入的派生特征、正被请求的计算和/或目标执行硬件的特定硬件规格)一起提供给神经网络。神经网络生成每个内核的预测的排名得分或相关性得分。然后对得到的内核列表进行排序214,并且生成经排名的内核列表216。然后,诸如选择组件114之类的选择组件可以利用经排名的内核列表216来执行计算并向应用程序提供结果。

尽管利用神经网络来选择用于执行计算的内核可以导致更快和更有效的性能,但是给定成功训练网络所需的有限资源和时间的情况下,训练神经网络也必须是有效的。此外,必须对经训练的神经网络进行训练,以使结果总体上是准确的,并导致潜在输入数据集的正确概括。例如,用于计算的输入空间可以无限大,因为可以提供任何大小的矩阵作为输入。因此,不可能在所有可能的输入上训练神经网络。因此,如本文所述,选择最佳训练数据或识别对训练神经网络有最大影响的训练数据可以降低训练神经网络的成本,同时仍然导致可以有效地对内核进行排名的神经网络。

图3是可用于训练神经网络以对内核进行排名以执行计算的示例环境。训练系统300可以是与图1所示的训练系统120相同的系统。训练系统包括与图1中的内核处理器104相同或共享特性的内核处理器302。在一些实施例中,训练系统300中可以包括多个内核处理器,每个内核处理器具有不同的硬件规格。例如,可以在各种处理器上执行内核,每个处理器具有不同的行为特性,并且可以提供处理器的特性,与输入数据、计算结果信息和/或其他神经网络输入一起作为神经网络304的训练数据。神经网络304可以与图1的神经网络110相同和/或共享相似的特性。

输入生成器306生成矩阵特性以用作神经网络304的训练输入。训练输入可以包括可以在执行数学运算的请求中提供的一个或更多个矩阵的特性。例如,可以生成可以在其上执行通用矩阵乘法(GeMM)的两个矩阵的特性。在一些实施例中,输入生成器306可以生成随机矩阵特性。但是,如前所述,输入空间是无限的。因此,在一些实施例中,输入生成器306可以从一个或更多个其他组件接收输入,以更好地确保生成的输入对于训练神经网络304是重要的。

内核数据库308包括多个内核,每个内核可以对一组输入矩阵执行计算。对于每个训练输入,可以将存储在内核数据库308中的多个内核中的每个内核提供给内核处理器302以执行计算。例如,内核数据库可以包括内核K1…Kn,可以将每个内核提供给内核处理器302(或提供给多个内核处理器)以生成结果集。该结果集可以包括关于在内核处理器302上执行训练输入的信息。该结果集可以包括,例如在处理器上执行的每个内核的处理器信息、内核的运行时间和/或训练输入的类别。

输入类别可以包括将矩阵识别为是可能输入的空间内的特定子空间的一部分的矩阵的特性。例如,某些矩阵可能难以建模,这可能构成一类矩阵。在一些实施例中,一类矩阵可以是矩阵的子空间,由此矩阵中的小变化导致用于执行计算的最佳内核的显着变化。

相关性计算器310在执行矩阵计算的同时,基于内核的运行时间来确定结果集中每个内核的相关性得分。相关性得分可以是例如介于0和1之间的数值,其中1表示内核是完全相关的,而0表示内核是不可能的。因此,相关性得分为0.25的内核可能会比分配了相关性得分为0.75的内核表现更差(例如,运行时间更长)。然后可以根据相关性得分对结果集进行排名,以进行进一步处理。

可以将结果集和训练输入提供给神经网络作为训练数据。然后,神经网络可以处理输入以确定每个内核的预测的相关性得分,然后可以将其排名为内核的预测排名。在一些实施例中,可以向指示处理器用于执行计算的硬件行为信息提供训练输入和经排名的结果集。因此,当从神经网络304请求计算时,可以向硬件规格提供输入,使得神经网络在生成预测的内核列表时可以考虑硬件差异。

在一些实施例中,可以在训练期间基于神经网络304的输出来生成附加的训练输入。可以由输入生成器306基于与输入数据的类别有关的信息来生成附加输入。例如,可以将训练输入提供给神经网络以进行训练,并且可以将预测的内核排名与内核的实际排名进行比较。如果列表不同或相差超过阈值差,则可以确定训练输入的类别,并且可以将信号提供给输入生成器306以生成与该类别有关的附加的训练输入。因此,然后可以向神经网络304提供附加的训练输入,以帮助神经网络304减小实际排名的列表和预测排名的列表之间的差异。通过这样做,可以将后续的训练输入更好地调整为训练输入最影响不正确(或次佳)输出的那些情况。

在一些实施方式中,可以使用基于列表的损失函数来确定预测的列表和实际结果列表之间的差异。例如,詹森-香农(Jensen-Shannon)散度和/或对称的库尔巴克-利勃勒(Kullback-Liebler)散度可用于确定实际结果与预测结果之间的损失。在损失对于一类矩阵来说很重要的情况下(例如,神经网络在一组矩阵上的表现差),当顶部预测结果确实与实际的顶部结果内核不匹配(或者,例如,实际的最佳内核不在预测结果顶部的阈值排名之内),对神经网络的附加训练输入可包括该类矩阵的更多训练输入。这可以包括更新一个或更多个类别的矩阵的权重因子,以使得与在训练数据中具有较低权重因子的其他类别相比,神经网络将接收该类别的更多训练输入。

在一些实施例中,识别出属于相同类别的两个或更多个训练输入。可以如本文所述处理每个训练输入,并且可以确定每个预测结果的准确性。如果一个训练输入的预测结果的准确性与一个或更多个其他预测结果的预测结果的准确性之间的差在数学上很重要,则可以生成相同类别的附加训练输入并将其提供给神经网络作为训练输入。

在一些实施例中,可以生成训练输入以确保训练数据跨越训练输入空间的重要部分。例如,由于执行内核的处理器的硬件限制,矩阵大小可能会限制为特定的最大大小。因此,用于神经网络的训练输入应包括与可能被神经网络接收以进行处理的可能输入匹配的矩阵大小。

参照图4,提供了流程图,其示出了如本文所述的示例实施例。一些实施例可以具有更多或更少的步骤,和/或可以以不同的顺序执行一个或更多个步骤。图4所示的方法可以由与图1至图3所示的环境共享一个或更多个特性的环境来执行,如本文所述。

在步骤405中,接收对矩阵计算的请求。可以经由诸如图1的API 140之类的应用程序编程接口(API)来接收该请求。请求可以包括一个或更多个矩阵,要执行的计算类型和/或输入矩阵的其他特性。在一些实施例中,应用程序可以从API函数库请求计算。

在步骤410中,将一个或更多个矩阵的特性提供给经训练的神经网络。所述特性可以包括例如输入矩阵的维度、矩阵的表征和/或描述输入的其他特性。训练神经网络以生成可用于执行矩阵计算的经排名的候选内核列表。在一些实施例中,可以使用本文描述的一个或更多个实施例来训练神经网络。例如,可以使用如图3所示的训练系统300来训练神经网络。

在步骤415中,神经网络生成经排名的内核列表以执行所请求的计算。例如,神经网络可以确定内核列表中每个内核的相关性得分。相关性得分可以指示内核是执行该计算的最佳内核的可能性有多大。在步骤420中,选择最佳内核。最佳内核可以是例如由神经网络分配最高相关性得分的内核。

在步骤425中,利用最佳内核来生成结果。该结果可以由配置为执行矩阵计算的处理器生成。例如,结果可以由与内核处理器104共享一个或更多个特性的处理器生成。在步骤430中,响应于接收到请求而提供结果。可以经由诸如图1的API 140之类的API来提供结果。

参考图5,提供了流程图,其示出了如本文所述的示例实施例。一些实施例可以具有更多或更少的步骤,和/或可以以不同的顺序执行一个或更多个步骤。图5所示的方法可以由与图1-图3所示的环境共享一个或更多个特性的环境来执行,如本文所述。

在步骤505中,生成训练输入。训练输入可以包括可以在执行计算的请求中提供的一个或更多个矩阵的特性。生成训练输入以训练神经网络,以将相关性得分分配给一个或更多个内核,从而可以选择最佳内核。矩阵可以是随机生成的,并且可以是随机大小的。在一些实施例中,可以基于执行一个或更多个内核以计算结果的一个或更多个处理器的硬件限制来限制所生成的训练输入。例如,训练输入可以由与图3的输入生成器306共享一个或更多个特性的组件生成。输入生成器可以确定内核处理器302的硬件规格,并将训练输入限制为仅在内核处理器302能力范围内的矩阵。在一些实施例中,可以基于一个或更多个其他约束来生成训练输入,如本文所述。

在步骤510中,为训练输入生成结果集。结果集包括可用于对结果集执行计算的一个或更多个内核。例如,结果集可以包括可用于执行一般矩阵乘法的内核。处理器可以利用每个内核来生成结果,并且用于执行每个计算的运行时间可以包含在结果集中。在步骤515中,将相关性得分分配给结果集中的每个内核,该相关性得分指示该内核在执行计算中的性能质量。因此,与执行速度较慢的内核相比,可以为运行时间较快的内核分配更高的得分。在步骤520中,可以基于运行时间和/或所分配的相关性得分对内核进行排名。

在步骤525中,将训练输入和相关性得分提供给神经网络以进行训练。训练神经网络以接收一个或更多个矩阵的特性作为输入,并生成按相关性得分排名的经排名的内核列表。在一些实施例中,可以利用神经网络基于输入从候选内核列表中选择最佳内核。

在一些实施例中,可以将神经网络的输出用来进一步生成训练输入。例如,在神经网络未选择最佳内核的情况下,可以生成与导致次佳结果的输入具有相似类别的附加训练输入。在一些实施例中,可以为一个或更多个输入类别分配权重,该权重指示从该类别向神经网络提供训练输入的频率。因此,当生成将来的训练输入时,可以将训练输入限制为改善神经网络性能的输入。

在一些实施例中,可以将训练输入提供给神经网络,并且神经网络在确定内核列表中的性能可降低(例如,,花费更多时间来制作列表、预测与训练前相比更不佳的内核列表)。在那些情况下,可以将神经网络的状态重置为预训练状态,并且可以从将来的训练输入生成中删除该训练输入和/或该训练输入的类别。

图6示出了至少一个实施例中的可用于对数据进行分类或生成推理的示例系统600。在至少一个实施例中,可以在本文讨论的至少一个实施例中使用有监督训练和无监督训练。在至少一个实施例中,提供一组训练数据602(例如,分类的或标记的数据)作为输入,以用作训练数据。在至少一个实施例中,训练数据可以包括要为其训练神经网络的至少一种类型的对象的实例,以及标识该类型的对象的信息。在至少一个实施例中,训练数据可以包括一组图像,每个图像包括一种对象类型的表示,其中,每个图像还包括标签、元数据、分类或其他识别相应图像中表示的对象类型的信息或与之相关联。各种其他类型的数据也可以用作训练数据,可以包括文本数据、音频数据、视频数据等等。在至少一个实施例中,将训练数据602作为训练输入提供给训练管理器604。在至少一个实施例中,训练管理器604可以是包括用于训练神经网络(或其他模型或算法等)的硬件和软件的系统或服务,例如执行训练应用程序的一个或更多个计算设备。在至少一个实施例中,训练管理器604接收指示要用于训练的模型类型的指令或请求。在至少一个实施例中,模型可以是可用于这种目的的任何适当的统计模型、网络或算法,例如可以包括人工神经网络、深度学习算法、学习分类器、贝叶斯网络等。在至少一个实施例中,训练管理器604可以从适当的存储库606中选择初始模型或其他未经训练的模型,并利用训练数据602来训练模型,从而生成可以用于对相似类型的数据进行分类或生成其他此类推理的经训练的训练模型608(例如,经训练后的深度神经网络)。在不使用训练数据的至少一个实施例中,仍然可以根据训练管理器604选择适当的初始模型以对输入数据进行训练。

在至少一个实施例中,可以以多种不同的方式来训练模型,这可以部分地取决于所选择的模型的类型。在至少一个实施例中,可以向机器学习算法提供一组训练数据,其中模型是通过训练过程创建的模型伪像。在至少一个实施例中,训练数据的每个实例包含正确的答案(例如,分类),可以将其称为目标或目标属性。在至少一个实施例中,学习算法在训练数据中找到将输入数据属性映射到目标的模式,要预测的答案,并且输出捕获这些模式的机器学习模型。在至少一个实施例中,然后可以使用机器学习模型来针对未指定目标的新数据获得预测。

在至少一个实施例中,训练管理器604可以从一组机器学习模型中进行选择,机器学习模型包括二进制分类、多分类和回归模型。在至少一个实施例中,要使用的模型的类型可以至少部分取决于要预测的目标的类型。在至少一个实施例中,用于二进制分类问题的机器学习模型可预测二进制结果,例如两个可能的分类之一。在至少一个实施例中,诸如逻辑回归的学习算法可用于训练二进制分类模型。在至少一个实施例中,针对多类别分类问题的机器学习模型允许针对多个类别生成预测,例如预测两个以上结果之一。多项式逻辑回归对于训练多类模型可能很有用。回归问题的机器学习模型可预测数值。线性回归对于训练回归模型很有用。

在至少一个实施例中,为了训练根据一个实施例的机器学习模型,训练管理器必须确定输入训练数据源以及其他信息,例如包含要预测的目标的数据属性的名称、所需的数据转换指令和训练参数,以控制学习算法。在至少一个实施例中,在训练过程期间,训练管理器604可以基于在训练数据源中指定的目标的类型来自动选择适当的学习算法。在至少一个实施例中,机器学习算法可以接受用于控制训练过程和所得机器学习模型的某些属性的参数。这些在本文中称为训练参数。在至少一个实施例中,如果未指定任何训练参数,则训练管理器可以利用已知的默认值来很好地处理大范围的机器学习任务。可以为其指定值的训练参数的示例包括最大模型尺寸、通过训练数据的最大通过次数、随机播放类型、正则化类型、学习率和正则化量。可以用调整值以微调性能的选项指定默认设置。

在至少一个实施例中,最大模型尺寸是在训练模型期间创建的模式的总尺寸,以字节为单位。在至少一个实施例中,默认情况下,可以创建指定大小的模型,例如100MB的模型。如果训练管理器无法确定足够的模式来填充模型尺寸,则可以创建较小的模型。如果训练管理器发现的图案数量超出了指定尺寸所能容纳的数量,则可以通过修整对学习模型的质量影响最小的图案来实现最大截止值。选择模型尺寸可控制模型的预测质量和使用成本之间的权衡。在至少一个实施例中,较小的模型可能会导致训练管理器移除许多模式以适应最大尺寸限制,从而影响预测的质量。在至少一个实施例中,较大的模型查询实时预测的成本可能更高。在至少一个实施例中,较大的输入数据集不一定会导致较大的模型,因为模型存储模式而不是输入数据。在至少一个实施例中,如果模式少且简单,则生成的模型将很小。具有大量原始属性(输入列)或派生特征(数据转换的输出)的输入数据可能会在训练过程中找到并存储更多模式。

在至少一个实施例中,训练管理器604可以对训练数据执行多次通过或迭代以尝试发现模式。在至少一个实施例中,可以存在默认的通过次数,例如十次通过,而在至少一个实施例中,可以设置最大通过次数,例如高达一百次通过。在至少一个实施例中,可能没有最大集合,或者可能存在会触发训练过程结束的收敛准则或其他因素集合。在至少一个实施例中,训练管理器604可以在训练期间监视模式的质量(诸如用于模型收敛),并且可以在没有更多数据点或模式要发现时自动停止训练。在至少一个实施例中,仅具有少量观察结果的数据集可能需要更多的在数据上的通过以获得足够高的模型质量。较大的数据集可能包含许多相似的数据点,这可以减少对大量通过的需求。在数据上选择更多数据通过的潜在影响是,模型训练可能需要更长的时间,并且在资源和系统利用率方面会花费更多。

在至少一个实施例中,在训练之前或在训练通过之间混洗(shuffle)训练数据。在至少一个实施例中,混洗是用于生成真正随机排序的随机或伪随机混洗,尽管可能存在适当的约束以确保不存在某些类型的数据的分组,或者如果存在此分组,混洗的数据可以被重新混洗等。在至少一个实施例中,混洗改变了用于训练的数据的顺序或排列,以使训练算法不会连续遇到相似类型的数据或单个类型的数据的分组以用于接连的太多观察。在至少一个实施例中,可以训练模型来预测对象。在至少一个实施例中,上载之前,数据可能会按对象类型排序。然后,在至少一个实施例中,算法可以按对象类型按字母顺序处理数据,首先仅遇到特定对象类型的数据。在至少一个实施例中,模型将开始学习模式以用于该类型对象。然后,在至少一个实施例中,模型将仅遇到第二种对象类型的数据,并将尝试调整模型以适合该对象类型,这可能会使适合第一种对象类型的模式退化。对象类型之间的这种突然切换可能会产生无法学习如何准确预测对象类型的模型。在至少一个实施例中,可以在将训练数据集划分为训练和评估子集之前的至少一个实施例中执行混洗,从而对于两个阶段都利用相对均匀的数据类型分布。在至少一个实施例中,训练管理器604可以使用例如伪随机混洗技术来自动混洗数据。

在至少一个实施例中,在创建机器学习模型时,在至少一个实施例中,训练管理器604可以使用户能够指定设置或应用定制选项。在至少一个实施例中,用户可以指定一个或更多个评估设置,指示要保留的一部分输入数据,用于评估机器学习模型的预测质量。在至少一个实施例中,用户可以指定一个策略,该策略指示哪些属性和属性转换可用于模型训练。在至少一个实施例中,用户还可以指定控制训练过程和所得模型的某些属性的各种训练参数。

在至少一个实施例中,一旦训练管理器确定完成模型训练,例如通过使用本文讨论的至少一个最终准则,就可以提供训练模型608,以供分类器614用于对验证数据612进行分类(或以其他方式生成推理)。在至少一个实施例中,这涉及模型的训练模式和模型的推理模式之间的逻辑转换。然而,在至少一个实施例中,训练后的模型608将首先被传递到评估器610,该评估器610可以包括在至少一个计算资源(例如,至少一个服务器的CPU或GPU)上执行的应用程序、过程或服务,用于评估训练模型的质量(或其他方面)。在至少一个实施例中,对模型进行评估,以确定该模型在预测新数据和未来数据的目标时是否至少会提供最低的可接受或阈值性能。如果不是,则训练管理器604可以继续训练此模型。在至少一个实施例中,由于将来的数据实例通常将具有未知的目标值,因此可能希望在已知目标答案的数据上检查机器学习的准确性度量,并将该评估用作未来数据的预测准确性的代理。

在至少一个实施例中,使用被提供用于训练的训练数据的子集602评估模型。可以使用如上所述的混洗和拆分方法来确定该子集。此评估数据子集将标有目标,因此可以充当地面实况的来源以用于评估。在至少一个实施例中,使用用于训练的相同数据来评估机器学习模型的预测准确性是没有用的,因为对于记住训练数据的模型可能会生成肯定的评估,而不是对其进行概括。在至少一个实施例中,一旦训练完成,就使用训练后的模型608处理评估数据子集,评估器610可以通过将地面实况数据与该模型的相应输出(或预测/观察值)进行比较来确定该模型的准确性。至少一个实施例中的评估器610可以提供摘要或性能度量,摘要或性能度量指示预测值和真实值的匹配程度如何。在至少一个实施例中,如果训练的模型不满足至少最小性能标准或其他这样的准确性阈值,则可以指示训练管理器604进行进一步的训练,或者在某些情况下,尝试训练新的或不同的模型。在至少一个实施例中,如果经训练的模型608满足相关标准,则可以提供训练的模型以供分类器614使用。

在至少一个实施例中,当创建和训练机器学习模型时,可能期望在至少一个实施例中指定模型设置或训练参数,其将导致能够做出准确的预测的模型。在至少一个实施例中,参数包括(向前和/或向后)要执行的通过数量、正则化或细化、模型尺寸和混洗类型。在至少一个实施例中,选择对评估数据产生最佳预测性能的模型参数设置可能会导致模型过度拟合。在至少一个实施例中,当模型存储了训练和评估数据源中出现的模式,但未能概括数据中的模式时,就会发生过度拟合。当训练数据包括评估中使用的所有数据时,经常会发生过度拟合。在至少一个实施例中,已经过度拟合的模型在评估期间可能会表现良好,但可能无法对新数据或其他验证数据做出准确的预测。在至少一个实施例中,为了避免选择过度拟合的模型作为最佳模型,训练管理器可以保留其他数据以验证模型的性能。例如,训练数据集可以分为60%用于训练,40%用于评估或验证,可以分为两个或更多阶段。在至少一个实施例中,在选择了最适合评估数据的模型参数之后,导致在验证数据的子集(例如半数该验证数据)上收敛,可以使用其余的该验证数据执行第二验证,以确保该模型的性能。如果此模型符合验证数据的期望,则此模型不会过度拟合数据。在至少一个实施例中,可以将测试集或保留集用于测试参数。在至少一个实施例中,使用第二验证或测试步骤有助于选择适当的模型参数以防止过度拟合。但是,从训练过程中拿出更多数据进行验证会使可用于训练的数据更少。对于较小的数据集,这可能会出现问题,因为可能没有足够的数据可用于训练。在至少一个实施例中,在这种情况下的一种方法是执行交叉验证,如本文其他地方所述。

在至少一个实施例中,有许多度量或见解可用于审查和评估给定模型的预测准确性。在至少一个实施例中,一示例评估结果包含预测准确性度量标准和可视化,预测准确性度量标准以报告模型的总体成功;可视化以帮助探索模型超出预测准确性度量标准的准确性。结果还可以提供查看设置得分阈值(如二进制分类)的影响的能力,并可以生成有关标准的警报以检查评估的有效性。度量和可视化的选择可以至少部分取决于要评估的模型的类型。

在至少一个实施例中,一旦令人满意地训练和评估了经训练的机器学习模型,就可以将其用来构建或支持机器学习应用程序。在一个实施例中,构建机器学习应用程序是涉及一系列步骤的迭代过程。在至少一个实施例中,可以根据观察到的内容以及模型要预测的答案来构筑内核机器学习问题。在至少一个实施例中,然后可以收集、清理和准备数据,以使其适合于机器学习模型训练算法使用。可以对这些数据进行可视化和分析,以进行完整性检查,以验证数据的质量并理解数据。原始数据(例如输入变量)和答案数据(例如目标)可能无法以可用于训练高度预测模型的方式表示。因此,可能希望从原始变量构建更具预测性的输入表示或特征。可以将结果特征输入到学习算法中,以构建模型并根据从模型构建中保留的数据评估模型的质量。然后可以使用模型为新数据实例生成目标答案的预测。

在至少一个实施例中,在图6的示例系统600中,在评估之后,经训练的模型610被提供给分类器614或使其可用,该分类器614能够使用该经训练的模型来处理验证数据。例如,在至少一个实施例中,这可能包括从用户或未分类的第三方接收到的数据,例如查询图像,这些图像正在寻找有关这些图像中表示的信息。在至少一个实施例中,可以由分类器使用训练后的模型来处理该验证数据,并且可以将所产生的结果616(诸如分类或预测)发送回相应的源或以其他方式进行处理或存储。在至少一个实施例中,并且在允许这种使用的情况下,这些现在分类的数据实例可以被存储到训练数据存储库,其可以被训练管理器用于训练的模型608的进一步训练。在至少一个实施例中,将在新数据可用时对模型进行连续训练,但是在至少一个实施例中,将根据诸如数据集的尺寸或模型的复杂性之类的因素,定期对这些模型进行训练,例如每天或每周一次。

在至少一个实施例中,分类器614可以包括适当的硬件和软件,用于使用经训练的模型来处理验证数据612。在至少一个实施例中,分类器将包括一个或更多个计算机服务器,每个计算机服务器具有一个或更多个能够处理数据的图形处理单元(GPU)。在至少一个实施例中,GPU的配置和设计可能使它们比CPU或其他此类组件更适合用于处理机器学习数据。在至少一个实施例中,至少一个实施例中的经训练的模型可以被加载到GPU存储器中,并且所接收的数据实例被提供给GPU以进行处理。GPU可以具有比CPU多得多的内核,并且CPU内核较GPU内核也复杂得多。在至少一个实施例中,给定的GPU可能能够通过不同的硬件线程同时处理数千个数据实例。在至少一个实施例中,GPU也可以配置为最大化浮点吞吐量,这可以为大型数据集提供明显的其他处理优势。

在至少一个实施例中,即使当使用GPU、加速器和其他此类硬件来加速诸如训练模型或使用此类模型进行数据分类之类的任务时,此类任务仍可能需要大量时间、资源分配和成本。在至少一个实施例中,如果要使用600个通过来训练机器学习模型,并且数据集包括要用于训练的1000000个数据实例,则每个通路都需要处理所有百万个实例。架构的不同部分也可以由不同类型的设备支持。在至少一个实施例中,可以在逻辑上集中的位置处使用一组服务器来执行训练,如可以作为服务来提供,而原始数据的分类可以由这样的服务或在客户端设备以及其他这种选项上执行。这些设备还可以由同一实体或多个实体拥有、操作或控制。

在至少一个实施例中,图7中示出的示例神经网络700在至少一个实施例中可以被训练或以其他方式利用。在至少一个实施例中,统计模型是人工神经网络(ANN),其包括多个节点层,包括输入层702、输出层706和中间节点的多个层704,通常称为“隐藏”层,因为内部层和节点在神经网络中通常是不可见或不可访问的。在至少一个实施例中,尽管仅出于解释目的示出了几个中间层,但是应当理解,对可以利用的中间层的数量没有限制,并且对层的任何限制通常将是使用模型处理所需的资源或时间的因素。在至少一个实施例中,还可以使用其他类型的模型、网络、算法或过程,因为可以包括其他数量或节点和层的选择以及其他这种选项。在至少一个实施例中,验证数据可以由网络的各层处理,以生成一组推理或推理分数,然后可以将其馈送到损失函数708。

在至少一个实施例中,给定层的所有节点都互连到相邻层的所有节点。在至少一个实施例中,中间层的节点然后将分别连接到两个相邻层的节点。在至少一个实施例中,在某些模型中,节点也称为神经元或连接的单元,节点之间的连接称为边缘。每个节点都可以为接收到的输入执行一个功能,例如通过使用指定的功能。在至少一个实施例中,节点和边缘可以在训练期间获得不同的权重,并且节点的各个层可以对接收到的输入执行特定类型的转换,其中这些转换也可以在训练期间进行学习或调整。在至少一个实施例中,学习可以是有监督的学习,也可以是无监督的学习,这可能至少部分取决于训练数据集中包含的信息类型。在至少一个实施例中,可以利用各种类型的神经网络,例如可以包括包括多个卷积层和一组池化层的卷积神经网络(CNN),并且各种类型的神经网络已被证明对于诸如图像识别的应用是有益的。由于要确定的参数数量相对较少,因此CNN比其他网络也更易于训练。

在至少一个实施例中,可以使用各种调整参数来训练这种复杂的机器学习模型。选择参数、拟合模型并评估模型是模型调整过程的一部分,通常称为超参数优化。在至少一个实施例中,这种调整可以包括对基础模型或数据进行内省。在训练或生产环境中,稳健的工作流程对于避免超参数的过拟合非常重要,如本文其他地方所述。交叉验证和向训练数据集添加高斯噪声是避免对任何一个数据集过度拟合的有用技术。可能希望对超参数进行优化,以保持训练和验证集固定。在至少一个实施例中,可以在某些类别中调整超参数,因为可以包括数据预处理(例如将单词翻译成向量)、CNN架构定义(例如,滤波器尺寸、滤波器数量),随机梯度下降(SGD)参数(例如学习率),和正则化或细化(例如,信号丢失概率)以及其他这种选项。

在至少一个实施例中,可以将数据集的实例嵌入到特定尺寸的较低维空间中。在预处理期间,在至少一个实施例中,该空间的尺寸是要调整的参数。在至少一个实施例中,CNN的架构包含许多可调参数。滤波器尺寸的参数可以表示对应于将要分析的实例尺寸的信息的解释。在计算语言学中,这称为n元语法尺寸。示例CNN使用三种不同的滤波器尺寸,它们代表了可能不同的n-gram尺寸。每个滤波器尺寸的滤波器数量可以对应于滤波器的深度。每个滤波器都尝试学习与实例结构不同的内容,例如文本数据的句子结构。在卷积层中,激活函数可以是整流的线性单元,并且池化类型设置为最大池。然后可以将结果串联到一维向量中,最后一层完全连接到二维输出上。这对应于可以应用优化功能的二进制分类。一种这样的功能是实现梯度下降的均方根(RMS)传播方法,其中示例超参数可以包括学习率、批处理尺寸、最大梯度法线和历元。使用神经网络,正则化可能是一个非常重要的考虑因素。在至少一个实施例中,输入数据可以相对稀疏。在这种情况下,主要的超参数可能是倒数第二层的丢失,这表示一定比例的节点在每个训练周期不会“触发”。示例训练过程可以基于对先前配置的性能的反馈来建议不同的超参数配置。可以使用建议的配置来训练该模型,在指定的验证集上评估模型,并提供性能报告。可以重复此过程,例如权衡探索(了解更多有关不同配置的信息)和开发(利用先前的知识以获得更好的结果)

由于可以并行化训练CNN并且可以利用GPU支持的计算资源,因此可以针对不同场景尝试多种优化策略。复杂的场景允许调整模型架构和预处理以及随机梯度下降参数。这扩展了模型配置空间。在基本情况下,仅调整预处理和随机梯度下降参数。与基本方案相比,在复杂方案中可以有更多的配置参数。可以使用线性或指数步数执行关节空间的调整,并通过模型的优化循环进行迭代。这样的调整过程的成本可以大大低于诸如随机搜索和网格搜索之类的调整过程,而不会造成任何明显的性能损失。

在至少一个实施例中,可以利用反向传播来计算用于确定神经网络的权重的梯度。反向传播是微分的一种形式,如上所述,梯度下降优化算法可以使用它来调整应用于各种节点或神经元的权重。可以使用相关损失函数的梯度来确定权重。反向传播可以利用损失函数关于由统计模型生成的输出的导数。如上所述,各个节点可以具有定义各个节点的输出的关联激活功能。可以适当地使用各种激活函数,例如可以包括径向基函数(RBF)和sigmoid,它们可以被各种支持向量机(SVM)用于数据转换。节点的中间层的激活功能在本文中被称为内积内核。这些功能可以包括,例如,标识功能、台阶功能、S形功能、斜坡功能等等。激活函数也可以是线性或非线性的等。

在至少一个实施例中,使用训练数据集来训练未经训练的神经网络。在至少一个实施例中,训练框架是PyTorch框架、Tensorflow、Boost、Caffe、Microsoft CognitiveToolkit/CNTK、MXNet、Chainer、Keras、Deeplearning4j或其他训练框架。在至少一个实施例中,训练框架训练未经训练的神经网络,并使它能够使用本文所述的处理资源来训练以生成训练后的神经网络。在至少一个实施例中,可以随机选择或者通过使用深度信念网络的预训练来选择权重。在至少一个实施例中,可以以有监督、部分有监督或无监督的方式执行训练。

在至少一个实施例中,使用有监督学习来训练未经训练的神经网络,其中训练数据集包括与输入的期望输出配对的输入,或者其中训练数据集包括具有已知输出的输入并且神经网络的输出是手动分级的。在至少一个实施例中,以有监督的方式训练未经训练的神经网络,以处理来自训练数据集的输入,并将所得的输出与一组期望的或想要的输出进行比较。在至少一个实施例中,错误然后通过未经训练的神经网络传播回去。在至少一个实施例中,训练框架调整控制未经训练的神经网络的权重。在至少一个实施例中,训练框架包括用于监视未经训练的神经网络朝着模型(例如经训练的神经网络)收敛的程度的工具,该模型适合于基于已知输入数据(例如新数据)生成正确的答案(例如在结果中)。在至少一个实施例中,训练框架重复训练未经训练的神经网络,同时使用损失函数和调整算法(诸如随机梯度下降算法)来调整权重,以细化未经训练的神经网络的输出。在至少一个实施例中,训练框架训练未经训练的神经网络,直到未经训练的神经网络达到想要的精度为止。在至少一个实施例中,然后可以部署经训练的神经网络来实现任何数量的机器学习操作。

在至少一个实施例中,使用无监督学习来训练未经训练的神经网络,其中,未经训练的神经网络尝试使用未标记的数据来训练自身。在至少一个实施例中,无监督学习训练数据集将包括输入数据,而没有任何关联的输出数据或“地面真实(ground truth)”数据。在至少一个实施例中,未经训练的神经网络可以学习训练数据集内的分组,并且可以确定各个输入如何与未经训练的数据集相关。在至少一个实施例中,可以使用无监督训练来生成自组织图,该自组织图是一种经训练的神经网络,其能够执行对减少新数据的维数有用的操作。在至少一个实施例中,无监督训练也可以用于执行异常检测,其允许识别新数据集中偏离新数据集的正常模式的数据点。

在至少一个实施例中,可以使用半监督学习,该技术是其中训练数据集中包括标记和未标记数据的混合的技术。在至少一个实施例中,训练框架可以用于执行增量学习,诸如通过转移的学习技术。在至少一个实施例中,增量学习使训练后的神经网络能够适应新数据,而不会忘记在初始训练期间在网络中注入的知识。

图8示出了用于执行与一个或更多个实施例相关联的推理和/或训练操作的推理和/或训练逻辑815。下面结合图8和图9提供关于推理和/或训练逻辑815的细节。

在至少一个实施例中,推理和/或训练逻辑815可以包括但不限于代码和/或数据存储器801,以存储前向和/或输出权重和/或输入/输出数据和/或其他参数,在一个或更多个实施例的方面中用于配置用于训练和/或用于推理的神经网络的神经元或层。在至少一个实施例中,训练逻辑815可以包括或耦合到用于存储图形代码或其他软件以控制定时和/或顺序的代码和/或数据存储器801,权重和/或其他参数信息将加载到其中以配置包括整数和/或浮点单元(统称为算术逻辑单元(ALU))的逻辑。在至少一个实施例中,诸如图形代码之类的代码基于与该代码对应的神经网络的架构,将权重或其他参数信息加载到处理器ALU中。在至少一个实施例中,代码和/或数据存储器801存储在使用一个或更多个实施例的方面的训练和/或推理期间的输入/输出数据和/或权重参数的正向传播期间结合一个或更多个实施例训练或使用的神经网络的每一层的权重参数和/或输入/输出数据。在至少一个实施例中,代码和/或数据存储器801的任何部分都可以包括在片内或片外数据存储器上,片上或片外数据存储器包括处理器的L1、L2或L3高速缓存或系统内存。

在至少一个实施例中,代码和/或数据存储器801的任何部分可以在一个或更多个处理器或其他硬件逻辑设备或电路的内部或外部。在至少一个实施例中,代码和/或代码和/或数据存储器801可以是高速缓冲存储器、动态随机可寻址存储器(“DRAM”)、静态随机可寻址存储器(“SRAM”)、非易失性存储器(例如闪存)、或其他存储器。在至少一个实施例中,代码和/或代码和/或数据存储器801是处理器的内部还是外部的选择,例如,是由DRAM、SRAM、闪存或某种其他存储类型组成的,取决于在片内与片外的可用存储、正在执行的训练和/或推理功能的等待时间要求、在神经网络的推理和/或训练中使用的数据的批量大小或这些因素的某种组合。

在至少一个实施例中,推理和/或训练逻辑815可以包括但不限于代码和/或数据存储器805,其用于存储与在一个或更多个实施例的方面中神经网络训练的和/或用于推理的神经元或层相对应的向后和/或输出权重和/或输入/输出数据。在至少一个实施例中,代码和/或数据存储器805存储在使用一个或更多个实施例的各方面在训练和/或推理期间在输入/输出数据和/或权重参数向后传播期间结合一个或更多个实施例训练或使用的神经网络的每一层的权重参数和/或输入/输出数据。在至少一个实施例中,训练逻辑815可以包括或耦合到用于存储图形代码或其他软件以控制定时和/或顺序的代码和/或数据存储器805,权重和/或其他参数信息将加载到其中以配置包括整数和/或浮点单元(统称为算术逻辑单元(ALU))的逻辑。在至少一个实施例中,诸如图形代码之类的代码基于与该代码相对应的神经网络的架构,将权重或其他参数信息加载到处理器ALU中。在至少一个实施例中,代码和/或数据存储器805的任何部分可以与其他片上或片外数据存储器一起包括,其他片上或片外数据存储器包括处理器的L1、L2或L3高速缓存或系统存储器。在至少一个实施例中,代码和/或数据存储器805的任何部分可以在一个或更多个处理器或其他硬件逻辑设备或电路上内部或外部。在至少一个实施例中,代码和/或数据存储器805可以是高速缓冲存储器、DRAM、SRAM、非易失性存储器(例如闪存)或其他存储设备。在至少一个实施例中,代码和/或数据存储器805是处理器内部还是外部的选择,例如,是由DRAM、SRAM、闪存还是其他存储类型组成,取决于片上还是片外的可用存储、正在执行的训练和/或推理功能的等待时间要求、在神经网络的推理和/或训练中使用的数据的批大小或这些因素的某种组合。

在至少一个实施例中,代码和/或数据存储器801和代码和/或数据存储器805可以是分开的存储结构。在至少一个实施例中,代码和/或数据存储器801和代码和/或数据存储器805可以是相同的存储结构。在至少一个实施例中,代码和/或数据存储器801和代码和/或数据存储器805可以是部分相同的存储结构和部分分离的存储结构。在至少一个实施例中,代码和/或数据存储器801和代码和/或数据存储器805的任何部分可以与其他片上或片外数据存储器包括在一起,包括处理器的L1、L2或L3高速缓存或系统存储器。

在至少一个实施例中,推理和/或训练逻辑915可以包括但不限于包括整数和/或浮点单元的一个或更多个算术逻辑单元(“ALU”)910,以至少部分地基于训练和/或推理代码(例如,图形代码)或由其指示执行逻辑和/或算术操作,其结果可以产生存储在激活存储器920中的作为存储在代码和/或数据存储器901和/或代码和/或数据存储器905中的输入/输出和/或权重参数数据的函数的激活(例如,来自神经网络内的层或神经元的输出值)。在至少一个实施例中,存储在激活存储器920中的激活是根据由ALU 910响应于执行指令或其他代码执行的线性代数和/或基于矩阵的数学生成的,其中将存储在代码和/或数据存储器905和/或代码和/或数据存储器901中的权重值与其他值(例如偏差值、梯度信息、动量值或其他参数或超参数)一起用作操作数,这些值中的任意或者全部可以存储在代码和/或数据存储器905或代码和/或数据存储器901或其他片上或片下存储器。

在至少一个实施例中,一个或更多个处理器或其他硬件逻辑设备或电路中包括一个或更多个ALU 910,而在另一实施例中,一个或更多个ALU 910可以在使用它们的处理器或其他硬件逻辑设备或电路(例如,协处理器)的外部。在至少一个实施例中,ALU 910可以被包括在处理器的执行单元之内,或者以其他方式被包括在处理器的执行单元可以访问的一套ALU中,该套ALU可以在同一处理器内或者分布在不同类型的不同处理器之间(例如,中央处理器、图形处理单元、固定功能单元等)。在至少一个实施例中,代码和/或数据存储器901、代码和/或数据存储器905和激活存储器920可以在同一处理器或其他硬件逻辑装置或电路上,而在另一实施例中,它们可以在不同的处理器或其他硬件逻辑装置或电路中,或相同和不同处理器或其他硬件逻辑设备或电路的某种组合中。在至少一个实施例中,激活存储器920中的任何部分可以与其他片上或片外数据存储器包括在一起,包括处理器的L1、L2或L3高速缓存或系统存储器。此外,推理和/或训练代码可以与处理器或其他硬件逻辑或电路可访问的其他代码一起存储,并可以使用处理器的提取、解码、调度、执行、退出和/或其他逻辑电路来提取和/或处理。

在至少一个实施例中,激活存储器920可以是高速缓冲存储器、DRAM、SRAM、非易失性存储器(例如,闪存)或其他存储器。在至少一个实施例中,激活存储器920可以完全或部分在一个或更多个处理器或其他逻辑电路之内或之外。在至少一个实施例中,激活存储器920是处理器的内部还是外部的选择,例如,或者是由DRAM、SRAM、闪存或某种其他存储类型组成的,取决于片上可用存储、进行训练和/或推理功能的延迟要求、在推理和/或训练神经网络中使用的数据的批量大小或这些因素的某种组合。在至少一个实施例中,图8中所示的推理和/或训练逻辑915可以与专用集成电路(“ASIC”)(例如来自谷歌的

图9示出了根据至少一个或更多个实施例的推理和/或训练逻辑915。在至少一个实施例中,推理和/或训练逻辑915可以包括但不限于硬件逻辑,其中计算资源是专用的或以其他方式专用地与对应于神经网络内的一层或更多层神经元的权重值或其他信息结合使用。在至少一个实施例中,图9中所示的推理和/或训练逻辑915可以与专用集成电路(ASIC)(例如Google的

在至少一个实施例中,代码和/或数据存储器901和905以及相应的计算硬件902和906中的每一个分别对应于神经网络的不同层,从而提供从代码和/或数据存储器901和计算硬件902的一个“存储/计算对901/902”得到的激活作为代码和/或数据存储器905和计算硬件906的“存储/计算对905/906”的输入,以镜像神经网络的概念组织。在至少一个实施例中,每个存储/计算对901/902和905/906可以对应于一个以上的神经网络层。在至少一个实施例中,在推理和/或训练逻辑915中可以包括在存储计算对901/902和905/906之后或与之并行的附加存储/计算对(未示出)。

其他变型在本公开的精神内。因此,尽管所公开的技术易于进行各种修改和替代构造,但是某些示出的其实施例在附图中示出并且已经在上面进行了详细描述。然而,应当理解,无意将本发明限制为所公开的一种或更多种特定形式,相反,意图是涵盖落入本公开的精神和范围内的所有修改、替代构造和等同形式,如所附权利要求所定义的。

在描述所公开的实施例的上下文中(特别是在所附权利要求的上下文中)术语“一”、“一个”和“所述”以及类似指代的使用应被解释为涵盖单数和复数,除非本文另有说明或与上下文明显矛盾并且没有个对术语进行定义。除非另外指出,否则术语“包括”、“具有”、“包含”和“含有”应解释为开放式术语(即,意思是“包括但不限于”)。术语“连接”(未经修改且指的是物理连接),应理解为完全或部分地包含在,附加到或连接在一起,即使有某物介入。本文中数值范围的引用仅旨在用作一种简写方法,除非本文另有说明,否则分别指代落入该范围内的每个单独值,并且每个单独值都被并入说明书中,就如同在此单独引用一样。术语“集合”(例如,“项目的集合)”或“子集”的使用,除非上下文另有说明或与之矛盾,否则应解释为包含一个或更多个成员的非空集合。此外,除非上下文另有说明或与之矛盾,否则相应集合的术语“子集”不是必需表示相应集合的适当子集,但是该子集和相应集合可以相等。

连接的语言,例如“A、B和C中的至少一个”或“A、B和C至少一个”形式的短语,除非另有明确说明或与上下文明显矛盾否则,否则可以作为通常使用与上下文一起理解以呈现项目、条款等,可以是是A或B或C,也可以是A和B以及C的集合的任何非空子集。例如,在具有三个成员的集合的示例性示例中,连接短语“A、B和C中的至少一个”和“A,B和C中的至少一个”是指以下任意集合:{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}。因此,这种连接语言通常并不旨在暗示某些实施例需要至少一个A、至少一个B和至少一个C,他们每一个用于呈现。另外,除非另有说明或与上下文矛盾,否则术语“多个”表示复数的状态(例如,“多个项目”表示复数个项目)。“多个”中项目的数量的至少是两个,但是当明确地或通过上下文指示时可以是更多。此外,除非另有说明或从上下文中另外可知,否则短语“基于”是指“至少部分基于”而不是“仅基于”。

可以以任何合适的顺序来执行本文描述的过程的操作,除非本文另有指示或与上下文明显矛盾。在一个实施例中,诸如本文描述的那些过程(或其变型和/或组合)的过程在一个或更多个计算机系统中的一个控制下通过硬件或其组合执行,一个或更多个计算机系统配置有可执行指令并且被实现为在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或更多个计算机程序或一个或更多个应用程序)。在一个实施例中,代码以计算机程序的形式存储在计算机可读存储介质上,该计算机程序包括可由一个或多个处理器执行的多个指令的计算机程序。在一个实施例中,计算机可读存储介质是非暂时性计算机刻度存储介质,其不包括暂时信号(例如,传播的瞬态电或电磁传输)但包括瞬时信号的收发器内的非暂时性数据存储电路(例如,缓冲器、高速缓存和队列)。在一个实施例中,代码(例如,可执行代码或源代码)被存储在其上存储有可执行指令(或其他存储器以存储可执行指令)的一组一个或更多个非暂时性计算机可读存储介质上,该可执行指令在由计算机系统的一个或更多个处理器执行时(即,作为被执行的结果),使计算机系统执行本文所述的操作。在一个实施例中,该组非暂时性计算机可读存储介质包括多个非暂时性计算机可读存储介质,以及多个非暂时性计算机可读存储介质中的一个或更多个单独的非暂时性存储介质缺少全部代码,而多个非暂时性计算机可读存储介质共同存储所有代码。在一个实施例中,可执行指令被执行,使得不同的指令被不同的处理器执行-例如,非暂时性计算机可读存储介质存储指令,并且主CPU执行一些指令,而图形处理器单元执行其他指令。在一个实施例中,计算机系统的不同组件具有独立处理器,以及不同处理器执行指令的不同子集。

因此,在一个实施例中,计算机系统配置为实现单独或共同执行本文所述的过程的操作的一个或更能多个服务,并且这样的计算机系统配置有能够使操作的执行的适用的硬件和/或软件。此外,实现本公开的实施例的计算机系统是单个设备,并且在另一实施例中,是一种分布式计算机系统,其包括以不同方式操作的多个设备,使得该分布式计算机系统执行本文所述的操作,并且使得单个设备不执行所有操作。

除非另外要求,本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本发明的实施例,而不对本发明的范围构成限制。本说明书中的语言不应解释为表示任何未要求保护的要素对于实施本发明是必不可少的。

本文引用的所有参考文献,包括出版物、专利申请和专利,均以引用的方式并入本文,其程度如同每个参考文献被单独且具体地指示以引用方式并入本文一样,并在此全文进行阐述。

在说明书和权利要求书中,可以使用术语“耦合”和“连接”及其派生词。应当理解,这些术语可能不旨在作为彼此的同义词。相反,在特定示例中,“连接”或“耦合”可用于指示两个或更多个元件彼此直接或间接物理或电接触。“耦合”也可能意味着两个或多个元素彼此不直接接触,但仍彼此协作或交互。

除非另有说明,否则应理解,在整个说明书中,诸如“处理”、“计算处理”、“计算”、“确定”等术语均指计算机或计算系统或类似的电子计算设备的动作和/或过程,这些电子设备将在计算系统的寄存器和/或存储器中表示为物理量(例如电子)的数据(例如电子)操作和/或转换为类似地表示为计算系统的存储器、寄存器或其他此类信息存储器、传输或显示设备中的物理量的其他数据。

在类似的方式中,术语“处理器”可以指处理来自寄存器和/或存储器的电子数据并将该电子数据转换成可以存储在寄存器和/或存储器中的其他电子数据的任何设备或设备的一部分。作为非限制性示例,“处理器”可以是中央处理单元(CPU)或图形处理单元(GPU)。“计算平台”可以包括一个或更多个处理器。如本文所使用的,“软件”过程可以包括例如随时间执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。同样,每个过程可以指代多个过程,以依次或并行,连续或间歇地执行指令。术语“系统”和“方法”在本文中可互换使用,以达到一种该系统可以体现一种或更多种方法并且该方法可以被认为是系统的程度。

在本文档中,可以参考获得、获取、接收或将模拟或数字数据输入子系统、计算机系统或计算机实现的机器。可以以多种方式来完成获得、获取、接收或输入模拟和数字数据的过程,例如通过接收作为函数调用或对应用程序接口的调用的参数的数据。在一些实施方式中,获得、获取,接收或输入模拟或数字数据的过程可以通过经由串行或并行接口传输数据来完成。在另一个实施方式中,获得、获取、接收或输入模拟或数字数据的过程可以通过经由计算机网络将数据从提供实体转移到获取实体来完成。也可以参考提供、输出、传输、发送或呈现模拟或数字数据。在各种示例中,提供、输出、传输、发送或呈现模拟或数字数据的过程可以通过将数据作为函数调用的输入或输出参数、应用程序编程接口或进程间通信机制的参数进行传输来完成。

尽管以上讨论阐述了所描述的技术的示例实施方式,但是其他架构可以用于实现所描述的功能,并且意图在本公开的范围内。此外,尽管出于讨论目的在上面定义了具体的职责分配,但是根据情况,各种功能和职责可能以不同的方式分配和划分。

此外,尽管已经以结构特征和/或方法动作专用的语言描述了主题,但应理解,所附权利要求书中定义的主题不必限于所描述的特定特征或动作。而是,将特定特征和动作公开为实现权利要求的示例性形式。

相关技术
  • 使用神经网络选择计算内核变量
  • 基于变量选择和概率神经网络的制造过程质量缺陷根源诊断方法
技术分类

06120112964872