用于深度多任务网络中自适应损失平衡的梯度归一化系统和方法与流程

文档序号:21367670发布日期:2020-07-04 04:43阅读:576来源:国知局
用于深度多任务网络中自适应损失平衡的梯度归一化系统和方法与流程

相关申请的交叉引用

本申请要求2017年10月26日提交的美国专利申请号62/577,705、2017年12月16日提交的美国专利申请号62/599,693、2018年2月8日提交的美国专利申请号62/628,266以及于2018年7月9日提交的美国专利申请号62/695,356的优先权,其每个申请题为“用于深度多任务网络中自适应损失平衡的梯度归一化系统和方法”,并且其每一个的全部内容通过引用整体并入本文。

版权声明

该专利文件的公开的一部分包含受版权保护的材料。版权所有者不反对任何人以专利与商标局专利文件或记录中的形式复制专利文件或专利公开的内容,但保留其他所有版权。

本公开总体上涉及用于机器学习的系统和方法,并且更具体地涉及训练机器学习模型。



背景技术:

深度神经网络(dnn)是一种计算机器学习方法。dnn属于一类人工神经网络(nn)。利用nn,可以构建模拟生物神经网络的特征的计算图。生物神经网络包括对计算很重要的特征,并负责生物系统的许多功能,这些功能否则可能很难通过其他方法捕获。在一些实施方式中,这样的网络被布置成其中连接是单向的顺序分层结构。例如,可以将特定层的人工神经元的输出连接到后续层的人工神经元的输入。dnn可以是具有大量层(例如,10、100或更多层)的nn。

不同的nn在不同的视角上彼此不同。例如,拓扑或架构(例如,层的数量以及层如何互连)以及不同nn的权重可以不同。权重可以近似类似于生物系统中神经连接的突触强度。权重影响从一层传播到另一层的效果的强度。人工神经元的输出可以是其输入的加权和的非线性函数。nn的权重可以是出现在这些求和中的权重。



技术实现要素:

在一个示例中,一种用于训练多任务网络的系统可以包括:非暂时性存储器,其被配置为存储:可执行指令,以及用于确定与多个任务相关联的输出的多任务网络;以及硬件处理器,其与该非暂时性存储器通信,该硬件处理器由该可执行指令编程为:接收与用于所述多个任务的多个参考任务输出相关联的训练图像;对于所述多个任务中的每个任务,相对于所述多任务网络的多个网络权重,确定由所述任务的任务权重调整的(1)使用具有所述训练图像作为输入的所述多任务网络所确定的所述任务的任务输出与(2)与所述训练图像相关联的所述任务的对应参考任务输出的单任务损失的梯度范数;以及基于所述任务的所述单任务损失确定所述任务的相对训练速率;确定包括(1)针对每个任务所确定的梯度范数与(2)对应的目标梯度范数之间的差的梯度损失函数,所述对应的目标梯度范数是基于以下来确定的:(a)所述多个任务的平均梯度范数,(b)所述任务的所述相对训练速率,以及(c)超参数;确定所述梯度损失函数相对于所述多个任务中的每个任务的任务权重的梯度;以及使用所述梯度损失函数相对于所述任务权重的所述梯度,确定所述多个任务中的每个任务的更新任务权重。

在另一个示例中,一种用于训练多任务网络的方法可以包括:接收多个训练图像中的训练图像,每个训练图像与用于多个任务的多个参考任务输出相关联;对于所述多个任务中的每个任务,相对于所述多任务网络的多个网络权重,确定由所述任务的任务权重调整的单任务损失的梯度范数,所述单任务损失是(1)使用具有所述训练图像作为输入的多任务网络所确定的所述任务的任务输出与(2)与所述训练图像相关联的所述任务的对应参考任务输出的单任务损失;以及基于所述任务的所述单任务损失确定所述任务的相对训练速率;确定包括(1)所确定的每个任务的梯度范数与(2)对应的目标梯度范数之间的差的梯度损失函数,所述对应的目标梯度范数是基于以下来确定的:(a)所述多个任务的平均梯度范数,和(b)所述任务的所述相对训练速率;以及使用梯度损失函数相对于所述任务权重的梯度确定所述多个任务中的每个任务的更新任务权重。

在又一个示例中,一种头戴式显示系统可以包括:非暂时性存储器,其被配置为存储:可执行指令,以及用于确定与多个任务相关联的输出的多任务网络,其中,该多任务网络使用以下内容来训练:相对于所述多任务网络的多个网络权重的由所述任务的任务权重调整的(1)使用具有训练图像作为输入的所述多任务网络所确定的所述多个任务中的任务的任务输出与(2)与所述训练图像相关联的所述任务的对应参考任务输出的单任务损失的梯度范数,基于所述任务的所述单任务损失所确定的所述任务的相对训练速率,包括(1)所确定的所述任务的梯度范数与(2)对应的目标梯度范数之间的差的梯度损失函数,所述对应的目标梯度范数是基于以下来确定的:(a)所述多个任务的平均梯度范数,(b)所述任务的所述相对训练速率,以及(c)超参数,使用所述梯度损失函数相对于所述任务的所述任务权重的梯度的所述任务的更新任务权重;显示器;传感器;以及与所述非暂时性存储器和所述显示器通信的硬件处理器,所述硬件处理器由所述可执行指令编程为:接收由所述传感器捕获的传感器输入;使用所述多任务网络确定所述多个任务中的每个任务的任务输出;以及使所述显示器向增强现实设备的用户显示与所确定的任务输出有关的信息。

本说明书中描述的主题的一种或多种实施方式的细节在附图和以下描述中阐述。根据说明书、附图和权利要求书,其他特征、方面和优点将变得显而易见。该概述或以下详细描述均不旨在限定或限制本发明主题的范围。

附图说明

图1a是训练多任务网络时跨任务的失衡梯度范数的示例示意图。

图1b是训练多任务网络时跨任务的平衡梯度范数的示例示意图。

图2a-2f示出了用于使用具有相似损失函数和不同损失尺度(scale)的训练任务训练多任务网络的示例结果。图2a-2c示出了2任务系统上梯度归一化(gradnorm)的结果。图2d-2f示出了10任务系统上梯度归一化的结果。具有损失尺度的网络结构图在图2a和2d中示出,训练期间的轨迹wi(t)在图2b和2e中示出,任务归一化的测试损失曲线在图2c和2f中示出。超参数值α=0.12用于所有示例运行。

图3a-3c是gradnorm(超参数α=1.5)的示例测试和训练损失曲线、均等权重基线和大型数据集上的不确定性权重的图。使用了nyuv2+关键点(kpts)、vgg16骨干。

图4是示出针对随机任务权重和gradnorm的示例网格搜索性能的图。

图5a-5b是示例图,其示出较高的α值趋向于将权重wi(t)进一步推开,这更积极地减小了过度拟合或学习得太快的任务的影响。

图6是示出了针对超参数α的各种设置的性能增益的示例图。

图7a-7d是示出超参数的值在训练期间可以如何恒定(例如,图7a)或在训练期间可以如何变化(例如,图7b-7d)的示例的图。

图8是使用gradnorm训练多任务网络的示例过程的流程图。

图9示意性地示出了可实现多任务网络的实施例的可穿戴显示系统的示例。

在所有附图中,可以重复使用附图标记以指示参考元素之间的对应关系。提供附图是为了说明本文描述的示例实施例,而不旨在限制本公开的范围。

具体实施方式

概述

表示数据关系和模式的模型,诸如函数、算法、系统等,可以接受输入,并以某种方式产生与输入相对应的输出。例如,模型可以被实现为机器学习方法,例如卷积神经网络(cnn)或深度神经网络(dnn)。深度学习是基于学习数据表示的思想而不是特定于任务的方法的更广泛的机器学习方法系列的一部分,并且在解决对增强现实、混合现实、虚拟现实和机器智能有用的视听计算问题方面显示出了希望。在机器学习中,卷积神经网络(cnn或convnet)可以包括一类深度前馈人工神经网络,并且cnn已成功应用于分析视觉图像。机器学习方法包括一系列方法,这些方法可以为各种问题(包括眼睛图像分割或眼睛跟踪)提供鲁棒而准确的解决方案。

本文公开了用于训练多任务网络的系统和方法的示例。深度多任务网络(其中一个神经网络产生多个预测输出)比单任务对等网络(counterpart)可提供更好的速度和性能,但需要进行适当的训练。例如,可以训练或教导深度多任务网络,以同时解决多个学习任务,同时利用任务之间的共性和差异。使用任务之间的共享表示,可以并行学习多个任务。例如,多任务神经网络可以在所有任务之间共享隐藏层,同时提供各自的特定于任务的输出层(这有时称为硬参数共享)。作为另一种方法,每个任务可以具有带有自己参数的自己的神经网络。可以在特定于任务的网络的各个层之间使用正则化(regularization)约束,以鼓励参数相似(这有时称为软参数共享)。

本文公开了梯度归一化(gradnorm)方法的示例,该方法通过动态调整梯度幅度(magnitude)来自动平衡深度多任务模型中的训练。与单任务网络、静态基线和其他自适应多任务损失平衡技术相比,对于各种网络架构,对于回归和分类任务,以及在合成和真实数据集上,gradnorm可提高准确性和/或减少多个任务之间的过度拟合。尽管某些实现仅利用单个不对称超参数α,但gradnorm可以匹配或超过穷举网格搜索方法的性能。因此,对于gradnorm的某些实施例,可能需要进行几次训练运行,而与任务的数量无关。梯度操纵可以很好地控制多任务网络的训练动态,并且可以使多任务学习的广泛应用成为可能。

计算机视觉中的单任务学习在深度学习中取得了成功,目前,许多单任务模型在执行各种各样的任务上达到或超越了人类准确性。然而,用于全场景理解的最终视觉系统应当能够同时且有效地执行许多不同的感知任务,尤其是在诸如智能手机、可穿戴设备(例如,参考图9描述的可穿戴显示系统900)以及机器人或无人机之类的嵌入式系统的有限计算环境内。这样的系统可以通过多任务学习来实现,其中,一个模型在多个任务之间共享权重,并在一个前向传递中进行多个推断。这样的网络不仅具有可伸缩性,而且这些网络内的共享特征可以引发更鲁棒的正则化并因此提高性能。使用本文公开的方法训练的多任务网络可以具有更高的效率和更高的性能。

多任务网络可能难以训练:不同的任务需要适当地平衡,因此网络参数收敛到对所有任务都有用的鲁棒的共享特征。在某些方法中,多任务学习中的方法可以通过操纵网络的前向传递来找到这种平衡(例如,通过在特征之间构建显式的统计关系或优化多任务网络架构)。但是,任务失衡可能会阻碍适当的训练,因为它们表现为反向传播梯度之间的失衡。训练期间过于占主导的任务例如可以通过诱导具有相对较大幅度的梯度来表达这种主导性。本文公开的训练方法通过调整多任务损失函数来直接修改梯度幅度,从而从根本上缓解了此类问题。

在一些实施例中,多任务损失函数是单任务损失li的加权线性组合l=∑iwili,其中,总和遍历所有t任务。本文公开了一种自适应方法,以在一个或多个训练步骤或迭代(例如,每个训练步骤t:wi=wi(t))处改变wi。损失函数的这种线性形式可以方便地实现梯度平衡,因为wi直接线性地耦合到每个任务的反向传播梯度幅度。本文公开的梯度归一化方法可以在每个训练步骤t中为每个wi发现好的值(例如,最佳值),以平衡每个任务对改进(例如,最优)模型训练的贡献。为了改善(例如,优化)用于梯度平衡的权重wi(t),当来自任何任务的反向传播梯度太大或太小时,本文公开的方法可以对网络进行惩罚。当以相似的速率训练任务时,可以达到正确的平衡。例如,如果任务i训练相对较快,则其权重wi(t)应相对于其他任务权重wj(t)|j≠i降低,以使其他任务对训练产生更大的影响。在一些实施例中,可以在训练中实现批量归一化。梯度归一化方法可以跨任务进行归一化,并使用速率平衡作为理想目标以通知归一化。这种梯度归一化(在本文中称为gradnorm)可以提高网络性能,同时显著削减过度拟合。

在一些实施例中,gradnorm方法对于直接调整梯度幅度的多任务损失平衡可能是有效的。该方法可以匹配或超过非常昂贵的穷举网格搜索过程的性能,但是在一些实施方式中其仅包括调整单个超参数,或者在一些实施例中仅包括调整两个或多个超参数。gradnorm可以启用直接梯度相互作用,这可以成为控制多任务学习的有效方法。

在一些实施例中,本文公开的梯度归一化方法可以在计算机视觉、自然语言处理、语音合成、特定领域的应用(诸如交通预测)、一般的跨域应用、课程学习中具有应用。在一些实施方式中,基于诸如总损失减少之类的全局奖励来联合训练任务。gradnorm的实施例可以应用于训练用于增强现实、混合现实或虚拟现实(参见例如参考图9描述的增强现实系统)的多任务神经网络。

多任务学习可以很好地适合于计算机视觉领域,其中做出多个鲁棒的预测对于完整的场景理解至关重要。深度网络已被用来解决多种视觉任务的各种子集,从3-任务网络到ubernet中更大的子集。单个计算机视觉问题可以框架化为多任务问题,例如在maskr-cnn中进行分割或在yolo-9000中进行对象检测。聚类方法已显示出超越深度模型的成功,而诸如深度关系网络和十字交叉网络之类的结构使深度网络能够搜索任务之间有意义的关系并了解任务之间共享哪些特征。标签之间的分组可用于搜索可能的架构以进行学习。联合似然等式可用于基于每个任务中的固有不确定性来导出任务权重。

示例gradnorm方法

对于多任务损失函数l(t)=∑wi(t)li(t),可以通过以下目标来学习这些函数wi(t):(1)将不同任务的梯度范数放置在一个共同的尺度上,通过该尺度可以推断出它们的相对幅度,以及(2)动态调整梯度范数,所以不同的任务以相似的速率训练。相关量在下面描述,首先是关于要操纵的梯度。

w:在其中应用gradnorm的完整网络权重的子集w可以是权重的最后共享层,以节省计算成本。在一些实施例中,w的这种选择可以使gradnorm增加训练时间(例如,仅增加~5%)。

相对于所选权重w的加权单任务损失wi(t)li(t)的梯度的l2范数。

训练时间t处的所有任务的平均(或预期)梯度范数。

下面描述每个任务i的各种训练速率。

时间t处的任务i的损失比率。是任务i的逆训练速率的度量(例如,较低的值对应于任务i的更快的训练速率)。在一些实施例中,网络可以具有稳定的初始化并且可以直接使用li(0)。当li(0)严重依赖初始化时,可以替代地使用理论上的初始损失。例如,对于li,c类之间的ce损失,li(0)=log(c)。

任务i的相对逆训练速率。

使用gradnorm的平衡梯度的示例

gradnorm可以为梯度幅度建立共同尺度和/或可以平衡不同任务的训练速率。在一个示例中,用于梯度的共同尺度可以是平均梯度范数其在每个时间步t建立基线,通过该基线可以确定相对梯度大小。任务i的相对逆训练速率ri(t)可以用来对梯度进行速率平衡。具体地,ri(t)值越大,任务i的梯度幅度就越高,以鼓励任务更快地训练。因此,每个任务i的梯度范数可以是:

其中,α是超参数。超参数α设置恢复力的强度,该恢复力将任务拉回到共同的训练速率。如果任务的复杂性差异很大,导致任务之间的学习动态基本上不相同,则可以使用较高的α值来加强更强的训练速率平衡。当任务更加对称时,较低的α值可能是合适的。请注意,α=0尝试固定(pin)每个任务的反向传播梯度的范数在w处相等。超参数α在训练期间可以是恒定的(示例参见图7a),或者在训练期间可以变化(例如,α可以是训练时间t的函数)。例如,α可以开始为正值(例如,大约1.5,其可以是参考图6所述的有效值),然后随着训练进行减小(逐渐(示例参见图7b)或逐步(示例参见图7c))。该方法可以有利地在训练开始时提供更强的训练速率平衡(例如,以更快地训练每个任务),同时在训练的后期放松训练速率平衡。在某些情况下,α可以为负(例如,对于训练的至少一部分),例如,变量α可以从正值开始,并在训练期间朝着训练结束变化到相对较小的负值(例如,约-0.1)(示例请参见图7d)。因此,在各种实施方式中,超参数α可以在-1到5、-1到3、0.5到3、或其他合适的范围内。

等式1给出了每个任务i的梯度范数的目标,并且可以更新损失权重wi(t)以将梯度范数朝着每个任务的目标移动。在某些实施例中,然后可以将gradnorm实现为每个任务在每个时间步的在实际和目标梯度范数之间的l1损失函数lgrad,将所有任务求和:

其中,求和贯穿于所有t任务。区分此损失lgrad时,可以将目标梯度范数视为固定常数,以防止损失权重wi(t)虚假地向零漂移。然后可以针对wi区分lgrad,因为wi(t)直接控制每任务的梯度幅度。然后可以经由更新规则来应用计算的梯度以更新每个wi(例如,如图1b所示)。

在以下示例中,任务是计算机视觉任务,包括标识房间图像中的深度、表面法线和关键点。以下示例仅是说明性的,而不旨在进行限制。如图1a所示,跨任务的失衡梯度范数可能导致多任务网络100a内的次优训练。gradnorm可以计算梯度损失lgrad(例如,参见图1a),该梯度损失在训练多任务网络100b时调整损失权重wi以解决梯度范数中的这种失衡。这种平衡可以导致均衡的梯度范数。在一些实施例中,可以将相对较高或较低的梯度幅度用于某些任务,以进行更好的(例如,最优)训练。

表1总结了gradnorm方法的实施例。在每个更新步骤之后,可以对权重wi(t)进行重新归一化,以使得∑iwi(t)=t,以便使梯度归一化与全局学习速率解耦合。

表1.利用gradnorm进行训练

示例伪代码

表2示出了示例伪代码编程语言,其可用于执行本文所述的梯度归一化技术的实施例。

表2.gradnorm的实施例的示例pytorch实现

用于具有相似损失函数和不同损失尺度的训练任务的示例训练

为了说明gradnorm,构建了多任务网络的常见方案:训练具有相似损失函数但不同损失尺度的任务。在这种情况下,对于所有损失权重wi(t),wi(t)=1,网络训练可能会由具有更大损失尺度的任务主导,这些任务会反向传播更大的梯度。gradnorm可以解决此问题。

考虑使用标准平方损失对函数进行训练的t回归任务

fi(x)=σitanh((b+∈i)x),等式(3)

其中,tanh(.)逐元素起作用。输入是维度250,输出是维度100,而b和∈i是常数矩阵,其元素分别根据正态分布生成。因此,每个任务在b中共享信息,但也包含特定于任务的信息∈i。σi可以是用于训练的关键参数:它们是设置输出fi的尺度的固定的标量。fi的较高尺度会导致该任务的较高平方损失期望值。由于这些任务的响应值差异较大,因此很难学习,但它们还会反向传播更大的梯度。当较高σi任务主导跨所有任务的训练时,这种情况可能导致次优训练动态。

为了训练该模型,使用了具有每层100个神经元的4层完全连接的relu激活网络作为公共干线。最终的仿射变换层产生了t个最终预测(对应于t个不同任务)。为了确保有效分析,使用了初始化为相同随机值的模型,并为其馈送了从相同固定随机种子生成的数据。由于输出函数fi都是相同的函数形式,因此将不对称α设置为低至0.12,因此可以预期任务之间的不对称最小。

在该示例中,使用任务归一化的测试时间损失来判断测试时间性能,其是每个任务的测试损失比率之和,∑ili(t)/li(0)。当存在不同的损失尺度时,简单的损失之和可能是多任务网络的性能度量不足:较高的损失尺度任务可能会在损失中占很大比例。可能不存在可以在所有情况下提供有意义的多任务性能度量的通用单个标量,但是在此示例中,除了损失尺度σi外,这些任务在统计上是相同的。因此,有一个明确的整体网络性能度量,其是由每个任务的方差归一化的损失之和,等同于(直至尺度因子)损失比率之和。

对于t=2,选择了值(σ0,σ1)=(1.0,100.0)。图2a-2c示出了训练结果。如果在训练中使用相等的权重wi=1,则任务1会由于任务1的损失尺度较高而抑制任务0的学习。但是,梯度归一化增加了w0(t)以抵消来自t1的较大梯度,并且改进的任务平衡导致更好的测试时间性能。

当任务数量增加时,梯度归一化的可能好处变得更加明显。对于t=10,从宽正态分布中采样σ1,结果如图2d-2f所示。相对于简单地对每个任务进行相同的加权,gradnorm显著提高了测试时间性能。与t=2情况类似,对于t=10,对于较小的σ1任务,wi(t)增长更大。

对于t=2和t=10,gradnorm都更稳定并且胜过不确定性加权。随着每个任务损失的减少,执行wi(t)~1/li(t)的不确定性加权会导致权重wi(t)过大和过快增长。尽管这样的网络在开始时训练很快,但是训练很快就会恶化。这个问题主要是由于不确定性加权无限制地允许wi(t)变化(与始终确保∑wi(t)的gradnorm相比),这随着网络的训练推动全局学习速率迅速提高。

在单个gradnorm运行期间,观察到每个wi(t)的轨迹是稳定且收敛的。如下所示,时间平均的权重∑t[wi(t)]接近最佳静态权重,这表明gradnorm可以大大简化繁琐的网格搜索过程。

具有更大数据集的示例训练

nyuv2的两个变体被用作主要数据集。标准nyuv2数据集携带用于不同房间类型(浴室、客厅、书房等)中的各种室内场景的深度、表面法线和语义分割标签(聚类为13个不同的类)。nyuv2相对较小(795个训练,654个测试图像),但同时包含回归和分类标签,使其成为测试gradnorm在各种任务中的鲁棒性的良好选择。

标准的nyuv2深度数据集通过每个视频的翻转和附加帧进行了增强,从而生成了90,000个图像,具有逐像素深度、表面法线和房间关键点标签(分割标签不适用于这些附加帧)。关键点标签由人类注释,而表面法线是通过算法生成的。然后将整个数据集按场景拆分,进行90/10训练/测试拆分。这两个数据集在本文中分别称为nyuv2+分割(nyuv2+seg)和nyuv2+关键点(nyuv2+kpts)。

所有输入都被下采样到320x320像素,而输出到80x80像素。这些分辨率使模型可以保持相对较细,同时又不损害地面真实输出图中的语义复杂性。vgg式模型架构源自题为“roomlayoutestimationmethodsandtechniques(房间布局估计方法和技术)”的美国专利公开号2018/0268220,其全部内容通过引用合并于此。

模型和一般训练特性

研究了两种不同的模型:(1)具有对称vgg16编码器/解码器的segnet网络,以及(2)具有改进的resnet-50编码器和浅resnet解码器的全卷积网络(fcn)网络。vggsegnet重用了maxpool索引来执行上采样,而resnetfcn学习了所有上采样过滤器。resnet架构被进一步精简(在其过滤器和激活两方面),以与更重、更复杂的vggsegnet形成对比:步幅2层被较早移动,而所有2048过滤器层均被1024过滤器层替换。最终,vggsegnet的参数为29m,而精简的resnet为15m。直到最后一层,所有任务之间都共享所有模型参数。结果表明gradnorm对基础架构选择的鲁棒性。前述示例模型仅用于说明,而不旨在进行限制。gradnorm可以应用于任何其他类型的神经网络,包括例如例如如美国专利公开号2018/0137642(其内容在此通过引用整体并入本文)中描述的用于“立方体检测的深度学习系统”的递归神经网络。

标准的逐像素损失函数用于每个任务:用于分割的交叉熵、用于深度的平方损失、和用于法线的余弦相似度。如在美国专利公开号2018/0268220中一样,为48个房间关键点类型中的每一个生成了高斯热图,并以逐像素平方损失预测了这些热图。所有回归任务都是二次方损失(表面法线预测使用的余弦损失是前导阶(leadingorder)的二次方),从而允许每个任务i使用ri(t)作为每个任务的相对逆训练速率的直接代理(proxy)。

所有运行都在4个titanxgtx12gbgpu上以24的批量大小进行训练,并在推理时在单个gpu上以30fps运行。所有nyuv2运行都以2e-5的学习速率开始。nyuv2+关键点(kpts)最后运行80000步,学习速率每25000步下降0.2。nyuv2+分割(seg)最后运行20000步,学习速率每6000步下降0.2。对于gradnorm和不确定性加权基线,以0.025的学习速率更新wi(t)。尽管gradnorm对所选的优化器不敏感,但所有优化器都是adam(一种源自自适应矩估计的用于随机优化的方法,用于更新网络权重)。gradnorm是使用tensorflowv1.2.1实现的。

表3.gradnorm和各种基线的测试误差,nyuv2+seg。值越低越好。每个任务的最佳性能以黑体显示,下划线标出次优。

nyuv2的示例结果

表3示出了gradnorm在nyuv2+seg数据集上的性能的示例。gradnormα=1.5相对于均等权重基线(对于所有t,i,wi=1)提高了所有三个任务的性能,并且超过或匹配(在统计噪声范围内)每个任务的单个网络的最佳性能。通过在gradnorm训练运行期间计算每个任务的时间平均权重∑t[wi(t)],然后使用固定为这些值的权重重新训练网络,gradnorm静态网络使用从gradnorm网络导出的静态权重。因此,gradnorm也可以用于提取静态权重的良好值。如下所示,这些权重非常接近从穷举网格搜索中提取的最优权重。

为了示出如何在存在较大数据集的情况下执行gradnorm,对nyuv2+kpts数据集进行了广泛的实验,该数据集被增加了50倍(factorof50x)的数据。结果显示在表4中。与nyuv2+seg运行一样,gradnorm网络的性能优于其他多任务方法,并且匹配(在噪声范围内)或超过了单任务网络的性能。

表4.gradnorm和各种基线的测试误差,nyuv2+kpts。值越低越好。每个任务的最佳性能以黑体显示,下划线标出次优。

图3a-3c示出了vggsegnet模型的较大nyuv2+kpts数据集上gradnorm(α=1.5)和基线的测试和训练损失曲线的示例。尽管收敛到高得多的训练损失,但gradnorm将测试时间深度误差降低了5%左右。gradnorm通过积极地对网络进行速率平衡(由于高度不对称α=1.5而实现的)来实现这一目标,并最终将深度权重wdepth(t)抑制到低于0.10。关键点回归也存在相同的趋势,这是网络正则化的明显信号。相反,不确定性加权总是使测试和训练误差朝同一方向移动,因此不是很好的正则化器。训练精简的resnetfcn也产生了相似的结果。

梯度归一化在一次传递中找到最优网格搜索权重

对于vggsegnet,使用nyuv2+kpts上的随机任务权重从头(scratch)训练了100个网络。从均匀分布中采样权重,并将其重新归一化至求和为t=3。为了提高计算效率,训练包括了正常80000次迭代中的15000次迭代,然后将该网络的性能与gradnormα=1.5vggsegnet网络在相同的15000个步骤中进行了比较。结果示于图4中。图4示出了随机任务权重与gradnorm,nyuv2+kpts的网格搜索性能。相对于和从gradnorm网络导出的一组静态权重et[wi(t)]之间的l2距离,绘制了具有权重的静态多任务网络在三个任务上的平均性能变化。显示零性能变化时的参考线以供参考。所有比较均在15000步训练中进行。

即使在训练了100个网络之后,网格搜索仍然不能达到gradnorm网络。网络性能和任务权重距离与时间平均gradnorm权重et[wi(t)]之间存在很强的负相关性。相较于我们的gradnorm网络,l2距离约3的网格搜索网络平均每任务的误差几乎翻了一番。因此,gradnorm在一个单次训练运行中就找到了最优网格搜索权重。

调整不对称α的影响

在这些示例数值实验中,该方法中唯一的超参数是超参数α,如本文所述,其也被称为不对称参数。nyuv2的最优值α接近α=1.5,而在上节中的高度对称示例中使用α=0.12。该观察结果加强了α作为非对称参数的特性。

在这些示例中,调整α导致性能提高,但是发现对于nyuv2,在均等权重基线上,几乎0<α<3的任何值都提高网络性能。图5a-5b是示出训练nyuv2+kpts期间的权重wi(t)的图。示出了两个不同α值的训练期间任务权重wi(t)如何变化的轨迹。较大的α值推动权重分开得更远,导致任务之间的对称性降低。图5a-5b示出了较高的α值趋向于将权重wi(t)进一步推开,这更积极地减小了过度拟合或学习得太快的任务的影响(在此示例中为深度)。在不影响深度任务的网络性能的情况下,在α=1.75(未示出),抑制wdepth(t)到0.02以下。

示例定性结果

chen等人在第35届国际机器学习会议论文集(2018)793-802(以下称“chen等人”)的《gradnorm:用于深度多任务网络中自适应损失平衡的梯度归一化》(通过引用将其全部内容合并于本文)的图6中示出了针对nyuv2+seg和nyuv2+kpts数据集的测试集图像与地面实况上的vggsegnet输出的可视化。地面实况标签示出为与均等权重网络、三个单个网络和最佳gradnorm网络的输出并列。某些改进是渐进的,但是gradnorm在任务中产生了出色的视觉效果,对此有表3和表4中的显著定量改进。

chen等人的图6示出推理时的示例可视化。nyuv2+kpts输出示出在左侧,而nyuv2+seg输出示出在右侧。示出的可视化是根据随机测试集图像生成的。某些改进是渐进的,但是在gradnorm视觉上更清晰地改进的预测周围示出了红色框。对于nyuv2+kpts输出,gradnorm示出了在法线预测中优于均等权重网络,而在关键点预测中优于单个网络。对于nyuv2+seg,在深度和分割准确性方面,比单个网络有所改进。这些与表3和表4中报告的数字一致。

示例性能增益对比α

α不对称性超参数可以允许适应任务之间的对称性的各种不同先验。较低的α值可能会导致梯度范数在各个任务中具有相似的幅度,从而确保每个任务在整个训练过程中对训练动态的影响大致相同。较高的α值会惩罚损失下降得太快的任务,而不是将更多的权重放在损失下降得更慢的任务上。

对于nyuv2实验,选择α=1.5作为α的最佳值,并且增加α可以将任务权重wi(t)进一步拉开。对于gradnorm数值稳定的几乎所有正值α,都获得了总体性能增益。这些结果汇总在图6中。在nyuv2情况下对应于≥3的较大的正值时,一些权重被推得太接近于零,并且gradnorm更新在该示例数据集上可能变得不稳定。图6示出了对于α的各种设置在nyuv2+kpts上的性能增益。对于α的各种值,在nyuv2+kpts上绘制了平均性能增益(被定义为在所有任务中测试损失与均等权重基线相比的百分比变化的平均值)。示出了vgg16骨干(实线)和resnet50骨干(虚线)的结果。在所有测试的α值下都观察到性能增益,尽管增益似乎在α=1.5左右达到峰值。对于vgg16骨干,没有超过α>2的点示出为gradnorm权重;但是,这不是对gradnorm的限制。

如图6所示,几乎在α的所有值下都实现了性能增益。但是,特别是对于nyuv2+kpts,这两种骨干架构的性能增益似乎在α=1.5都达到了峰值。此外,尽管通过适当设置α,resnet架构似乎比vgg架构对α更鲁棒,但是两种架构都提供了相似的增益水平。在所有α值上一致的积极(positive)性能增益表明,任何类型的梯度平衡(即使在次优条件下)对于多任务网络训练也可能是有利的。

多任务面部地标数据集的示例性能

在多任务面部地标(faciallandmark)(mtfl)数据集上进行了其他实验。该数据集包含大约13,000个面部图像,拆分为10,000个图像的训练集和3,000个图像的测试集。每个图像都标记有五个面部地标(左眼、右眼、鼻子、左唇和右唇)的(x,y)坐标,以及四个类别标签(性别、微笑、眼镜和姿势)。来自数据集的示例标签包括(性别:男性,微笑:真实,眼镜:假,姿势:额骨)、(性别:女性,微笑:真实,眼镜:假,姿势:左)、以及(性别:男性,微笑:假,眼镜:真,姿势:左)。

由于mtfl数据集是分类和回归任务的丰富混合,因此mtfl数据集提供了测试gradnorm的好机会。实验是在两种不同的图像输入分辨率下进行的:40×40和160×160。对于40×40的实验,使用与mtfl2014中使用的架构相同的架构以确保公平地进行比较,而对于160×160的实验,则使用mtfl2014中的架构的较深版本:较深的模型层堆栈为[conv-5-16][pool-2][conv-3-32]2[pool-2][conv-3-64]2[pool-2][[conv-3-128]2[pool-2]]2[conv-3-128]2[fc-100][fc-18],其中conv-x-f标示用过滤器大小x和f输出过滤器进行的卷积,pool-2标示步幅为2的2×2池化层,以及fc-x是具有x输出的密集层。所有网络输出18个值:面部地标的10个坐标,以及每个分类器的4对2个softmax分数。

mtfl数据集的结果示于表5中。关键点误差是针对所有五个面部地标的l2距离误差的平均值,并被归一化到眼间距离,而故障率是对其关键点误差超过10%的图像的百分比。对于这两种分辨率,gradnorm在所有任务上均胜过其他方法(眼镜和姿势预测除外,这两种方法总是很快收敛到多数分类器,并且拒绝进一步训练)。gradnorm在关键点上匹配了mtfl2014的性能,尽管后者没有尝试针对分类器性能进行优化,而只是强调关键点准确性。总而言之,这些结果表明gradnorm显著提高了性别和微笑的分类准确性,同时至少在所有其他任务上都匹配了所有其他方法。

表5.gradnorm和各种基线的实施例在多任务面部地标(mtfl)数据集上的测试误差。值越低越好,并且每个任务的最佳性能用黑体表示。针对两种不同的输入分辨率40×40和160×160进行了实验。在所有情况下,gradnorm均表现出优异的性能,尤其是在性别和微笑分类上。gradnorm在40×40分辨率的关键点预测上也匹配了mtfl2014的性能,尽管后者只是试图优化关键点准确性(在此过程中会降低分类准确性)。

眼镜和姿势分类总是收敛于多数分类器。在某些实施例中,对于gradnorm,可以通过不连续增加这些任务的损失权重来克服在训练期间变得“卡住”的此类任务。gradnorm可以通过例如在线检测病理任务并将其从gradnorm更新等式中删除来缓解此问题。

gradnorm仍然在该数据集上提供了卓越的性能。所有损失权重均初始化为wi(0)=1。相对于分类器损失,不确定性加权倾向于增加关键点的损失权重,而gradnorm则积极降低相对关键点损失权重。对于gradnorm训练运行,wkpt(t)收敛到值≤0.01,这表明即使与不确定性加权或均等权重方法相比,即使梯度减小了两个数量级,关键点任务也得到了正确的训练而不会降低准确性。

gradnorm可以正确地标识mtfl数据集中的分类任务相对未受过训练并且需要提升。相比之下,不确定性加权通过将更多的相对重点放在关键点回归上来做出相反的决定,并且通常在分类上表现不佳(尤其是对于较高分辨率输入)。因此,这些实验突出了gradnorm标识并受益于在训练期间需要更多关注的任务的能力。

有关gradnorm的附加观察

如本文所述,梯度归一化可以通过直接在网络中的梯度上进行操作而充当良好的模型正则化器,并在多任务网络中导致出色的性能。gradnorm可以由有吸引力的简单的速率平衡启发法来驱动,并且可以适应相同统一模型内复杂性变化的问题,并且在某些实施例中,仅使用单个表示任务不对称性的超参数。gradnorm网络还可以用于快速提取最优固定任务权重,从而消除了对穷举网格搜索方法的需求,该方法随着任务数量的增加而指数式昂贵。

gradnorm的实施例可以提供一种用于基于平衡不同任务的训练速率来在多任务学习设置中调整损失权重的有效方法。对于合成数据集和实际数据集,gradnorm在各种场景中都提高了多任务测试时间性能,并且可以通过超参数α适应不同任务之间的各种不对称性水平。结果表明,gradnorm提供了优于其他多任务自适应加权方法的性能,并且可以与穷举网格搜索的性能匹配或超越其性能,同时时间密集度大大降低。

在一些实施例中,gradnorm可以具有除多任务学习之外的应用。gradnorm可应用于类平衡和序列到序列模型,在梯度信号冲突的问题会降低模型性能的所有情况。gradnorm的实施例不仅可以提供一种用于多任务学习的鲁棒的新方法,而且还表明,梯度调整可以有利地用于训练复杂任务上的大型有效模型。

训练多任务网络的示例过程

图8是训练多任务网络的示例过程800的流程图。多任务网络可以用于确定与多个任务相关联的输出。多任务网络可以包括多个共享层和包括多个任务特定过滤器的输出层。多任务网络的输出层可以包括仿射变换层。诸如具有非暂时性存储器和硬件处理器的计算系统之类的计算系统可以实现过程800以训练多任务网络。计算系统的非暂时性存储器可以存储或被配置为存储可执行指令。硬件处理器可以与非暂时性存储器通信并且可以由可执行指令编程为使用gradnorm的实施例来执行过程800以训练多任务网络。

过程800开始于框804,在框804,计算系统接收与用于多个任务的多个参考任务输出相关联的训练图像。多个任务可以包括回归任务、分类任务或其组合。多个任务可以包括例如感知任务,诸如面部识别、视觉搜索、手势标识或识别、语义分割、对象检测、房间布局估计、长方体检测、照明检测、同时定位和映射、对象或化身的重新定位、或诸如语音识别或自然语言处理的语音处理任务、或其组合。

在框808处,计算系统可以确定由任务的任务权重调整的(1)每个任务的任务输出与(2)任务的对应参考任务输出的单任务损失li(t)的梯度范数可以相对于多任务网络的多个网络权重来确定梯度范数。任务的对应参考任务输出可以与训练图像相关联。由任务权重调整的单任务损失的梯度范数可以是由任务权重调整的单任务损失的l2范数。

计算系统可以确定(1)使用具有训练图像作为输入的多任务网络所确定的每个任务的任务输出与(2)与训练图像相关联的任务的对应任务输出的单任务损失。为了确定单任务损失,计算系统可以使用多个损失函数中与任务相关联的损失函数来确定(1)使用具有训练图像作为输入的多任务网络所确定的每个任务的任务输出与(2)与训练图像相关联的任务的对应任务输出的单任务损失。计算系统可以将多个任务的梯度范数的平均值确定为平均梯度范数。

在框812处,计算系统可以基于任务的单任务损失来确定任务的相对训练速率。为了基于任务的单任务损失来确定任务的相对训练速率,计算系统可以基于任务的单任务损失li(t)和任务的另一单任务损失(诸如li(0))的损失比率来确定该任务的相对训练速率的逆ri(t)。为了确定任务的相对速率的逆,计算系统可以将任务的损失比率和多个任务的损失比率的平均值的比率确定为相对训练速率的逆。

在框816处,计算系统可以确定包括(1)针对每个任务确定的梯度范数与(2)对应的目标梯度范数之间的差的梯度损失函数lgrad。对应目标梯度范数可以基于以下来确定:(a)多个任务的平均梯度范数、(b)任务的相对训练速率和(c)超参数α,例如梯度损失函数可以是l1损失函数。该对应的目标梯度范数可以基于以下来确定:(a)多个任务的平均梯度范数、(b)任务的相对训练速率的逆、以及(c)超参数。将多个任务的平均梯度范数乘以任务的逆相对训练速率的超参数的幂确定为对应的目标梯度范数。超参数α在训练期间可以是恒定的(说明请参见图7a),或者可以在训练期间变化(说明请参见图7b-7d)。如本文所述,在各种实施例中,超参数α可以在-1至3、0.5至3的范围内或其他一些范围内。

在框820处,计算系统可以相对于多个任务中的每个任务的任务权重确定梯度损失函数的梯度为了确定梯度损失函数的梯度,计算系统可以确定梯度损失函数相对于多个任务中的每个任务的任务权重的梯度,同时保持任务的目标梯度范数不变。

在框824处,计算系统可以使用梯度损失函数相对于任务权重的梯度来确定多个任务中的每个任务的更新任务权重wi(t+1)。计算系统可以归一化多个任务的更新权重。为了归一化多个任务的更新权重,计算系统可以将多个任务的更新权重归一化到多个任务中的数量。

计算系统可以确定包括由每个任务的任务权重调整的单任务损失的多任务损失函数,确定多任务损失函数相对于多任务网络的所有网络权重的梯度,以及基于多任务损失函数的梯度确定多任务网络的更新网络权重。

示例nn层

诸如深度神经网络(dnn)之类的神经网络(nn)的一层可以对其输入应用线性或非线性变换以生成其输出。深度神经网络层可以是归一化层、卷积层、软符号层、整流线性层、级联层、池化层、递归层、类初始(inception)层或它们的任意组合。归一化层可以通过例如l2归一化来归一化其输入的亮度以生成其输出。归一化层可以例如一次相对于彼此归一化多个图像的亮度,以生成多个归一化图像作为其输出。用于归一化亮度的方法的非限制性示例包括局部对比度归一化(lcn)或局部响应归一化(lrn)。局部对比度归一化可以通过在每像素基础上对图像的局部区域进行归一化以使其平均值为零且方差为1(或平均值和方差的其他值)来非线性地归一化图像的对比度。局部响应归一化可以将局部输入区域上的图像归一化为平均值为零且方差为1(或平均值和方差的其他值)。归一化层可以加快训练过程。

卷积层可以应用一组将其输入卷积以生成其输出的内核。软符号层可以将软符号函数应用于其输入。软符号函数(softsign(x))可以是例如(x/(1+|x|))。软符号层可以忽略每元素异常值的影响。整流线性层可以是整流线性层单元(relu)或参数化整流线性层单元(prelu)。relu层可以将relu函数应用于其输入以生成其输出。relu函数relu(x)可以是例如max(0,x)。prelu层可以将prelu函数应用于其输入以生成其输出。prelu函数prelu(x)可以例如是x(如果x≥0)和ax(如果x<0),其中a是正数。级联层可以级联其输入以生成其输出。例如,级联层可以级联四个5×5图像以生成一个20×20图像。池化层可以应用池化函数,该函数对其输入进行下采样以生成其输出。例如,池化层可以将20×20图像下采样为10×10图像。池化函数的非限制性示例包括最大池化、平均池化或最小池化。

在时间点t,递归层可以计算隐藏状态s(t),并且递归连接可以将时间t的隐藏状态s(t)提供给递归层作为后续时间点t+1的输入。递归层可以基于时间t的隐藏状态s(t)计算时间t+1的输出。例如,递归层可以在时间t将软符号函数应用于隐藏状态s(t),以计算其在时间t+1的输出。在时间t+1的递归层的隐藏状态将其在时间t的递归层的隐藏状态s(t)作为其输入。递归层可以通过例如将relu函数应用于其输入来计算隐藏状态s(t+1)。类初始层可以包括归一化层、卷积层、软符号层、诸如relu层和prelu层之类的整流线性层、级联层、池化层或其任意组合中的一个或多个。

在不同的实施方式中,nn中的层数可以不同。例如,dnn中的层数可以是50、100、200或更多。在不同的实施方式中,深度神经网络层的输入类型可以不同。例如,一层可以接收多个层的输出作为其输入。一层的输入可以包括五层的输出。作为另一示例,一层的输入可以包括nn层的1%。一层的输出可以是多个层的输入。例如,一层的输出可用作五层的输入。作为另一个示例,一层的输出可用作nn层的1%的输入。

一层的输入大小或输出大小可以非常大。图层的输入大小或输出大小可以为n×m,其中,n标示宽度,m标示输入或输出的高度。例如,n或m可以为11、21、31或更大。在不同的实施方式中,层的输入或输出的通道大小可以不同。例如,层的输入或输出的通道大小可以是4、16、32、64、128或更大。在不同的实施方式中,层的内核大小可以不同。例如,内核大小可以是n×m,其中n标示内核的宽度,m标示内核的高度。例如,n或m可以为5、7、9或更大。在不同的实施方式中,层的步幅大小可以不同。例如,深度神经网络层的步幅大小可以为3、5、7或更大。

在一些实施例中,nn可以指代一起计算nn的输出的多个nn。可以针对不同的任务训练多个nn中的不同nn。处理器(例如,参考图9描述的本地数据处理模块924的处理器)可以计算多个nn中的nn的输出以确定nn的输出。例如,多个nn中的nn的输出可以包括似然度得分。处理器可以基于多个nn中的不同nn的输出的似然度得分来确定包括多个nn的nn的输出。

示例可穿戴显示系统

在一些实施例中,用户设备可以是或可以包括在可穿戴显示设备中,其可以有利地提供更身临其境的虚拟现实(vr)、增强现实(ar)或混合现实(mr)体验,其中将数字再现的图像或其部分以看起来是或可被感知为是真实的方式呈现给穿戴者。

不受理论的限制,据信人眼通常可以解释有限数量的深度平面以提供深度感知。因此,可以通过向眼睛提供与这些有限数量的深度平面中的每个相对应的图像的不同呈现,来实现感知深度的高度可信的模拟。例如,包含波导的堆叠的显示器可以被配置为穿戴在用户或观看者的眼睛前面。通过使用多个波导来引导来自图像注入设备(例如,离散的显示器或复用显示器的输出端,其通过一个或多个光纤管道传输图像信息)的光以对应于与特定波导相关联的深度平面的特定角度(和发散量)到观看者的眼睛,可以利用波导的堆叠为眼睛/大脑提供三维感知。

在一些实施例中,可以利用波导的两个堆叠来向每只眼睛提供不同的图像,一个堆叠用于观看者的一只眼睛。作为一个示例,增强现实场景可以使得ar技术的穿戴者看到现实世界的公园般的设置,该设置以人物、树木、背景中的建筑物以及混凝土平台为特征。除了这些物品之外,ar技术的穿戴者还可能会感知到他“看”到了站在现实世界平台上的机器人雕像,并且飞过其身边的卡通般的化身角色似乎是大黄蜂的象征(personification),即使机器人雕像和大黄蜂在现实世界中不存在。波导的堆叠可以用于生成与输入图像相对应的光场,并且在一些实施方式中,可穿戴显示器包括可穿戴光场显示器。在美国专利公开号2015/0016777中描述了用于提供光场图像的可穿戴显示设备和波导堆叠的示例,该专利公开的全部内容通过引用合并于此。

图9示出了可穿戴显示系统900的示例,其可用于向显示系统穿戴者或观看者904呈现vr、ar或mr体验。可穿戴显示系统900可被编程为执行本文中所描述的任何应用或实施例(例如,执行cnn、对输入激活图或内核的值进行重新排序、眼睛图像分割或眼睛跟踪)。显示系统900包括显示器908以及支持该显示器908的功能的各种机械和电子模块和系统。显示器908可以耦合至框架912,该框架可由显示系统穿戴者或观看者904穿戴并且被配置为将显示器908定位在穿戴者904的眼睛前面。显示器908可以是光场显示器。在一些实施例中,扬声器916耦合到框架912,并在用户的耳道附近定位,未示出的另一个扬声器在用户的另一耳道附近定位,以提供立体声/可成形的声音控制。显示系统900可以包括可以获取穿戴者904周围的环境的图像(例如,静止图像或视频)的面向外部的成像系统944(例如,一个或多个照相机)。通过面向外部的成像系统944获得的图像可以通过在穿戴者904周围的环境中参考图8描述的方法800训练的多任务网络的实施例来分析。

显示器908可以例如通过有线引线或无线连接可操作地耦合920到本地数据处理模块924,该本地数据处理模块924可以以各种配置安装,例如固定地附接到框架912、固定地附接到用户穿戴的头盔或帽子、嵌入耳机中或以其他方式可拆卸地附接到用户904(例如,以背包式配置、皮带耦合式配置)。

本地处理和数据模块924可以包括硬件处理器以及非暂时数字存储器(例如非易失性存储器(例如闪存)),两者均可以用于协助处理、缓存和存储数据。数据可以包括:(a)从传感器(其可以例如可操作地耦合到框架912或以其他方式附接到穿戴者904)捕获的数据,传感器例如图像捕获设备(例如照相机)、麦克风、惯性测量单元、加速度计、指南针、gps单元、无线电设备和/或陀螺仪;和/或(b)使用远程处理模块928和/或远程数据存储库932获取和/或处理的数据,可能在这样的处理或检索之后传递给显示器908。本地处理和数据模块924可以通过通信链路936、940(例如经由有线或无线通信链路)可操作地耦合到远程处理模块928和远程数据存储库932,使得这些远程模块928、932可操作地彼此耦合并且可用作本地处理和数据模块924的资源。图像捕获设备可以用于捕获在眼睛图像分割或眼睛跟踪过程中使用的眼睛图像。

在一些实施例中,远程处理模块928可以包括一个或多个处理器,该处理器被配置为分析和处理数据和/或图像信息,例如由图像捕获设备捕获的视频信息。视频数据可以本地存储在本地处理和数据模块924中和/或远程数据存储库932中。在一些实施例中,远程数据存储库932可以包括数字数据存储设施,其可以通过互联网或“云”资源配置中的其他网络配置来使用。在一些实施例中,所有数据被存储并且所有计算在本地处理和数据模块924中执行,从而允许来自远程模块的完全自主的使用。

在一些实施方式中,本地处理和数据模块924和/或远程处理模块928被编程为执行对本文公开的输入激活图或内核的值进行重新排序、眼睛图像分割或眼睛跟踪的实施例。例如,本地处理和数据模块924和/或远程处理模块928可以被编程为使用参考图8描述的方法800训练的多任务网络执行任务预测和确定的实施例。图像捕获设备可以捕获特定应用的视频(例如增强现实(ar)、人机交互(hci)、自动驾驶汽车、无人机或一般地机器人技术)。可以通过处理模块924、928中的一个或两个使用cnn对视频进行分析。在某些情况下,将输入激活图或内核的值进行重新排序、眼睛图像分割或眼睛跟踪中的至少一些卸载到远程处理模块(例如,在“云”中)可以提高计算效率或速度。cnn的参数(例如,权重、偏差项、用于池化层的子采样因子、不同层中内核的数量和大小、特征图的数量等)可以存储在数据模块中。

任务预测或确定的结果(例如,参考图8描述的多任务网络800的输出)可以由处理模块924、928中的一个或两个用于附加操作或处理。例如,可穿戴显示系统900的处理模块924、928可被编程为基于多任务网络的输出执行附加应用(诸如增强现实、人机交互(hci)、自动驾驶汽车、无人机或一般的机器人技术中的应用)。

附加任务

gradnorm的实施例不限于计算机视觉任务,其中在图像或视觉数据上训练多任务网络。在其他实施例中,训练样本可以包括由传感器捕获的非图像数据,例如音频数据、加速度数据、定位数据、温度数据、射频数据或光学跟踪数据。传感器的示例包括音频传感器(例如,麦克风)、惯性测量单元(imu)、加速计、指南针、陀螺仪、温度传感器、运动传感器、深度传感器、全球定位系统(gps)单元和无线电设备。在其他实施例中,用于医学相关任务的训练样本可以包括诸如性别、年龄、心率、体温、白细胞计数、疾病状态、疾病进展、症状、疾病诊断等的测量。例如,对于与语音识别或自然语言处理有关的任务,训练样本可以包括音频数据集(或视频附带的音频数据)或单词、句子、段落或文本的电子表示或嵌入(例如,n-gram)。任务可以包括例如词性(pos)标记、分块依赖性解析、语义相关性或文本含义。

任务可以与医学治疗或医学决策有关。例如,任务可以包括确定应该对患有特定疾病的患者进行哪些实验室测试或进行哪些风险评估。举例来说,训练数据可包括患有特定疾病或症状(例如肺炎)的患者的测量(例如性别、年龄、心率、体温、白细胞计数等)。gradnorm的实施例可用于训练用于预测患者的疾病风险评估或实验室测试的多任务网络。

因此,gradnorm所使用的训练数据可以包括图像、视频、音频、电子记录、数据库等,其可以与相应的训练标签、分类或信号相关联。

附加方面

在第1方面中,公开了一种用于训练多任务网络的系统。系统包括:非暂时性存储器,其被配置为存储:可执行指令;以及用于确定与多个任务相关联的输出的多任务网络;以及与所述非暂时性存储器通信的硬件处理器,所述硬件处理器由所述可执行指令编程为:接收与用于所述多个任务的多个参考任务输出相关联的训练图像;对于所述多个任务中的每个任务,相对于所述多任务网络的多个网络权重,确定由所述任务的任务权重调整的(1)使用具有所述训练图像作为输入的所述多任务网络所确定的所述任务的任务输出与(2)与所述训练图像相关联的所述任务的对应参考任务输出的单任务损失的梯度范数;以及基于所述任务的所述单任务损失确定所述任务的相对训练速率;确定包括(1)针对每个任务所确定的梯度范数与(2)对应的目标梯度范数之间的差的梯度损失函数,所述对应的目标梯度范数是基于以下来确定的:(a)所述多个任务的平均梯度范数,(b)所述任务的所述相对训练速率,以及(c)超参数;确定所述梯度损失函数相对于所述多个任务中的每个任务的任务权重的梯度;以及使用所述梯度损失函数相对于所述任务权重的所述梯度,确定所述多个任务中的每个任务的更新任务权重。

在第2方面中,根据方面1所述的系统,其中,所述硬件处理器还由所述可执行指令编程为:确定(1)使用具有所述训练图像作为输入的所述多任务网络所确定的每个任务的任务输出与(2)与所述训练图像相关联的所述任务的所述对应任务输出的单任务损失。

在第3方面中,根据方面2所述的系统,其中,所述非暂时性存储器被配置为还存储:与所述多个任务相关联的多个损失函数。

在第4方面中,根据方面3所述的系统,其中,为了确定所述单任务损失,所述硬件处理器还由所述可执行指令编程为:使用所述多个损失函数中与所述任务相关联的损失函数来确定(1)使用具有所述训练图像作为输入的所述多任务网络所确定的每个任务的任务输出与(2)与所述训练图像相关联的所述任务的所述对应任务输出的所述单任务损失。

在第5方面中,根据方面1-4中任一项所述的系统,其中,所述硬件处理器还由所述可执行指令编程为:确定包括由每个任务的任务权重调整的所述单任务损失的多任务损失函数;确定所述多任务损失函数相对于所述多任务网络的所有网络权重的梯度;以及基于所述多任务损失函数的所述梯度,确定所述多任务网络的更新网络权重。

在第6方面中,根据方面1-5中任一项所述的系统,其中,由所述任务权重调整的所述单任务损失的所述梯度范数是由所述任务权重调整的所述单任务损失的l2范数。

在第7方面中,根据方面1-6中任一项所述的系统,其中,所述梯度损失函数是l1损失函数。

在第8方面中,根据方面1-7中任一项所述的系统,其中,所述硬件处理器还由所述可执行指令编程为:将所述多个任务的所述梯度范数的平均值确定为所述平均梯度范数。

在第9方面中,根据方面1-8中任一项所述的系统,其中,所述对应的目标梯度范数是基于以下来确定的:(a)所述多个任务的平均梯度范数,(b)所述任务的所述相对训练速率的逆,以及(c)超参数。

在第10方面中,根据方面9所述的系统,其中,所述硬件处理器进一步由所述可执行指令编程为:将所述多个任务的所述平均梯度范数乘以所述任务的所述逆相对训练速率的所述超参数的幂确定为所述对应的目标梯度范数。

在第11方面中,根据方面9-10中任一项所述的系统,其中,为了基于所述任务的所述单任务损失来确定所述任务的所述相对训练速率,所述硬件处理器还由所述可执行指令编程为:基于所述任务的所述单任务损失与所述任务的另一单任务损失的损失比率,确定所述任务的所述相对训练速率的逆。

在第12方面中,根据方面11所述的系统,其中,为了确定所述任务的所述相对速率的逆,所述硬件处理器还由所述可执行指令编程为:确定所述任务的所述损失比率与所述多个任务的损失比率的平均值的比率,作为所述相对训练速率的逆。

在第13方面中,根据方面1-12中任一项所述的系统,其中,为了确定所述梯度损失函数的所述梯度,所述硬件处理器还由所述可执行指令编程为:确定所述梯度损失函数相对于所述多个任务中的每个任务的任务权重的梯度,同时保持所述任务的所述目标梯度范数不变。

在第14方面中,根据方面1-13中任一项所述的系统,其中,所述硬件处理器还由所述可执行指令编程为:归一化所述多个任务的所述更新权重。

在第15方面中,根据方面14所述的系统,其中,为了归一化所述多个任务的所述更新权重,所述硬件处理器还由所述可执行指令编程为:将所述多个任务的所述更新权重归一化到所述多个任务的数量。

在第16方面中,根据方面1-15中任一项所述的系统,其中,所述多个任务包括回归任务、分类任务、或它们的组合。

在第17方面中,根据方面16所述的系统,其中,所述分类任务包括感知、面部识别、视觉搜索、手势识别、语义分割、对象检测、房间布局估计、长方体检测、照明检测、同时定位和映射、重新定位、语音处理、语音识别、自然语言处理、或其组合。

在第18方面中,根据方面1-17中任一项所述的系统,其中,所述多任务网络包括多个共享层和包括多个任务特定过滤器的输出层。

在第19方面中,根据方面18所述的系统,其中,所述多任务网络的所述输出层包括仿射变换层。

在第20方面中,公开了一种用于训练多任务网络的方法。所述方法在硬件处理器的控制下,并且包括:接收多个训练数据中的训练数据,每个训练数据与用于多个任务的多个参考任务输出相关联;对于所述多个任务中的每个任务,相对于所述多任务网络的多个网络权重,确定由所述任务的任务权重调整的单任务损失的梯度范数,所述单任务损失是(1)使用具有所述训练数据作为输入的多任务网络所确定的所述任务的任务输出与(2)与所述训练数据相关联的所述任务的对应参考任务输出的单任务损失;以及基于所述任务的所述单任务损失确定所述任务的相对训练速率;确定包括(1)所确定的每个任务的梯度范数与(2)对应的目标梯度范数之间的差的梯度损失函数,所述对应的目标梯度范数是基于以下来确定的:(a)所述多个任务的平均梯度范数,和(b)所述任务的所述相对训练速率;以及使用梯度损失函数相对于所述任务权重的梯度确定所述多个任务中的每个任务的更新任务权重。

在第21方面中,根据方面20所述的方法,其中,所述多个训练数据包括多个训练图像,并且其中,所述多个任务包括计算机视觉任务、语音识别任务、自然语言处理任务、医学诊断任务、或其组合。

在第22方面中,根据方面20-21中任一项所述的方法,还包括:确定(1)使用具有所述训练图像作为输入的所述多任务网络所确定的每个任务的任务输出与(2)与所述训练图像相关联的所述任务的所述对应任务输出的单任务损失。

在第23方面中,根据方面22所述的方法,其中,确定所述单任务损失包括:使用所述多个损失函数中与所述任务相关联的损失函数来确定(1)使用具有所述训练图像作为输入的所述多任务网络所确定的每个任务的任务输出与(2)与所述训练图像相关联的所述任务的所述对应任务输出的所述单任务损失。

在第24方面中,根据方面20-23中任一项所述的方法,还包括:确定包括由每个任务的任务权重调整的所述单任务损失的多任务损失函数;确定所述多任务损失函数相对于所述多任务网络的所有网络权重的梯度;以及基于所述多任务损失函数的所述梯度,确定所述多任务网络的更新网络权重。

在第25方面中,根据方面20-24中任一项所述的方法,其中,由所述任务权重调整的所述单任务损失的所述梯度范数是由所述任务权重调整的所述单任务损失的l2范数。

在第26方面中,根据方面20-25中任一项所述的方法,其中,所述梯度损失函数是l1损失函数。

在第27方面中,根据方面20-26中任一项所述的方法,还包括:将所述多个任务的所述梯度范数的平均值确定为所述平均梯度范数。

在第28方面中,根据方面20-27中任一项所述的方法,还包括:所述对应的目标梯度范数是基于以下来确定的:(a)所述多个任务的平均梯度范数,(b)所述任务的所述相对训练速率,以及(c)超参数。

在第29方面中,根据方面20-27中任一项所述的方法,还包括:所述对应的目标梯度范数是基于以下来确定的:(a)所述多个任务的平均梯度范数,(b)所述任务的所述相对训练速率的逆,以及(c)超参数。

在第30方面中,根据方面29所述的方法,还包括:将所述多个任务的所述平均梯度范数乘以所述任务的所述逆相对训练速率的所述超参数的幂确定为所述对应的目标梯度范数。

在第31方面中,根据方面29-30中任一方面所述的方法,其中,基于所述任务的所述单任务损失来确定所述任务的所述相对训练速率包括:基于所述任务的所述单任务损失与所述任务的另一单任务损失的损失比率,确定所述任务的所述相对训练速率的逆。

在第32方面中,根据方面31所述的方法,其中,确定所述任务的所述相对速率的逆包括:确定所述任务的所述损失比率与所述多个任务的损失比率的平均值的比率,作为所述相对训练速率的逆。

在第33方面中,根据方面20-32中任一项所述的方法,还包括:确定所述梯度损失函数相对于所述多个任务中的每个任务的任务权重的梯度。

在第34方面中,根据方面33所述的方法,其中,确定所述梯度损失函数的梯度包括:确定所述梯度损失函数相对于所述多个任务中的每个任务的任务权重的梯度,同时保持所述任务的所述目标梯度范数不变。

在第35方面中,根据方面20-34中任一项所述的方法,还包括:归一化所述多个任务的所述更新权重。

在第36方面中,根据方面35所述的方法,其中,归一化所述多个任务的所述更新权重包括:将所述多个任务的所述更新权重归一化到所述多个任务的数量。

在第37方面中,根据方面20-36中任一项所述的方法,其中,所述多个任务包括回归任务、分类任务或它们的组合。

在第38方面中,根据方面37所述的方法,其中,所述分类任务包括感知、面部识别、视觉搜索、手势识别、语义分割、对象检测、房间布局估计、长方体检测、照明检测、同时定位和映射、重新定位、语音处理、语音识别、自然语言处理或其组合。

在第39方面中,根据方面20-38中任一项所述的方法,其中,所述多任务网络包括多个共享层和包括多个任务特定过滤器的输出层。

在第40方面中,根据方面39所述的方法,其中,所述多任务网络的所述输出层包括仿射变换层。

在第41方面中,公开了一种头戴式显示系统。所述系统包括:非暂时性存储器,其被配置为存储:可执行指令,以及根据方面1-40中任一项所述的多任务网络;显示器;传感器;以及与所述非暂时性存储器和所述显示器通信的硬件处理器,所述硬件处理器由所述可执行指令编程为:接收由所述传感器捕获的传感器数据;使用具有所述传感器数据作为输入的所述多任务网络确定所述多个任务中的每个任务的任务输出;以及使所述显示器向增强现实设备的用户显示与所确定的任务输出有关的信息。

在第42方面中,公开了一种头戴式显示系统。所述系统包括:非临时存储器,其被配置为存储:可执行指令;以及用于确定与多个任务相关联的输出的多任务网络,其中,所述多任务网络使用以下内容来训练:相对于所述多任务网络的多个网络权重的由所述任务的任务权重调整的(1)使用具有训练数据作为输入的所述多任务网络所确定的所述多个任务中的任务的任务输出与(2)与所述训练数据相关联的所述任务的对应参考任务输出的单任务损失的梯度范数,基于所述任务的所述单任务损失所确定的所述任务的相对训练速率,包括(1)所确定的所述任务的梯度范数与(2)对应的目标梯度范数之间的差的梯度损失函数,所述对应的目标梯度范数是基于以下来确定的:(a)所述多个任务的平均梯度范数,(b)所述任务的所述相对训练速率,以及(c)超参数,使用所述梯度损失函数相对于所述任务的所述任务权重的梯度的所述任务的更新任务权重;显示器;传感器;以及与所述非暂时性存储器和所述显示器通信的硬件处理器,所述硬件处理器由所述可执行指令编程为:接收由所述传感器捕获的传感器输入;使用所述多任务网络确定所述多个任务中的每个任务的任务输出;以及使所述显示器向增强现实设备的用户显示与所确定的任务输出有关的信息。

在第43方面中,根据方面42所述的系统,其中,所述传感器包括惯性测量单元、面向外部的照相机、深度感测照相机、麦克风、眼睛成像照相机、或其组合。

在第44方面中,根据方面42-43中任一项所述的系统,其中,所述多个任务包括一个或多个感知任务、一个或多个回归任务、一个或多个分类任务、语音识别任务、自然语言处理任务、医学诊断任务或其组合。

在第45方面中,根据方面44所述的系统,其中,所述感知任务包括所述面部识别、视觉搜索、手势标识、语义分割、对象检测、照明检测、同时定位和映射、重新定位或其组合。

在第46方面中,根据方面44-45中任一项所述的系统,其中,所述分类任务包括感知、面部识别、视觉搜索、手势识别、语义分割、对象检测、房间布局估计、长方体检测、照明检测、同时定位和映射、重新定位、语音处理、语音识别、自然语言处理或其组合。

在第47方面中,根据方面42-46中任一项所述的系统,其中,通过以下步骤来训练所述多任务网络:接收多个训练数据中的训练数据,每个训练数据与用于多个任务的多个参考任务输出相关联;对于所述多个任务中的每个任务,相对于所述多任务网络的多个网络权重,确定由所述任务的任务权重调整的单任务损失的梯度范数,所述单任务损失是(1)使用具有所述训练数据作为输入的多任务网络所确定的所述任务的任务输出与(2)与所述训练数据相关联的所述任务的对应参考任务输出的单任务损失;以及基于所述任务的所述单任务损失确定所述任务的相对训练速率;确定包括(1)所确定的每个任务的梯度范数与(2)对应的目标梯度范数之间的差的梯度损失函数,所述对应的目标梯度范数是基于以下来确定的:(a)所述多个任务的平均梯度范数,和(b)所述任务的所述相对训练速率;以及使用梯度损失函数相对于所述任务权重的梯度确定所述多个任务中的每个任务的更新任务权重。

在第48方面中,根据方面47所述的系统,其中,所述多个训练数据包括多个训练图像,并且其中,所述多个任务包括计算机视觉任务。

在第49方面中,根据方面47-48中任一项所述的系统,其中,通过以下步骤来训练所述多任务网络:确定(1)使用具有所述训练图像作为输入的所述多任务网络所确定的每个任务的任务输出与(2)与所述训练图像相关联的所述任务的所述对应任务输出的单任务损失。

在第50方面中,根据方面49所述的系统,其中,确定所述单任务损失包括:使用所述多个损失函数中与所述任务相关联的损失函数来确定(1)使用具有所述训练图像作为输入的所述多任务网络所确定的每个任务的任务输出与(2)与所述训练图像相关联的所述任务的所述对应任务输出的所述单任务损失。

在第51方面中,根据方面47-50中任一项所述的系统,其中,通过以下步骤来训练所述多任务网络:确定包括由每个任务的任务权重调整的所述单任务损失的多任务损失函数;确定所述多任务损失函数相对于所述多任务网络的所有网络权重的梯度;以及基于所述多任务损失函数的所述梯度,确定所述多任务网络的更新网络权重。

在第52方面中,根据方面47-51中任一项所述的系统,其中,由所述任务权重调整的所述单任务损失的梯度范数是由所述任务权重调整的所述单任务损失的l2范数。

在第53方面中,根据方面47-52中任一项所述的系统,其中,所述梯度损失函数是l1损失函数。

在第54方面中,根据方面47-53中任一项所述的系统,其中,通过以下步骤来训练所述多任务网络:将所述多个任务的所述梯度范数的平均值确定为所述平均梯度范数。

在第55方面中,根据方面47-54中任一项所述的系统,其中,通过以下步骤训练所述多任务网络:基于(a)所述多个任务的平均梯度范数、(b)所述任务的所述相对训练速率、以及(c)超参数来确定所述对应目标梯度范数。

在第56方面中,根据方面47-54中任一项所述的系统,其中,通过以下步骤训练所述多任务网络:基于(a)所述多个任务的平均梯度范数、(b)所述任务的所述相对训练速率的逆、以及(c)超参数来确定所述对应目标梯度范数。

在第57方面中,根据方面56所述的系统,通过以下步骤来训练所述多任务网络:将所述多个任务的所述平均梯度范数乘以所述任务的所述逆相对训练速率的所述超参数的幂确定为所述对应的目标梯度范数。

在第58方面中,根据方面56-57中任一项所述的系统,其中,基于所述任务的所述单任务损失来确定所述任务的所述相对训练速率包括:基于所述任务的所述单任务损失与所述任务的另一单任务损失的损失比率,确定所述任务的所述相对训练速率的逆。

在第59方面中,根据方面58所述的系统,其中,确定所述任务的所述相对速率的逆包括:确定所述任务的所述损失比率与所述多个任务的损失比率的平均值的比率,作为所述相对训练速率的逆。

在第60方面中,根据方面47-59中任一项所述的系统,其中,通过以下步骤来训练所述多任务网络:确定所述梯度损失函数相对于所述多个任务中的每个任务的任务权重的梯度。

在第61方面中,根据方面60所述的系统,其中,确定所述梯度损失函数的梯度包括:确定所述梯度损失函数相对于所述多个任务中的每个任务的任务权重的梯度,同时保持所述任务的所述目标梯度范数不变。

在第62方面中,根据方面47-61中任一项所述的系统,其中,通过以下步骤来训练所述多任务网络:归一化所述多个任务的所述更新权重。

在第63方面中,根据方面62所述的系统,其中,归一化所述多个任务的所述更新权重包括:将所述多个任务的所述更新权重归一化到所述多个任务的数量。

在第64方面中,根据方面47-63中任一项所述的系统,其中,所述多任务网络包括多个共享层和包括多个任务特定过滤器的输出层。

在第65方面中,根据方面64所述的系统,其中,所述多任务网络的所述输出层包括仿射变换层。

在第66方面中,公开了一种用于训练用于确定与多个任务相关联的输出的多任务神经网络的方法。所述方法在硬件处理器的控制下并且包括:接收与用于所述多个任务的多个参考任务输出相关联的训练样本集;至少部分地基于单任务损失函数的加权组合来计算多任务损失函数,其中,在加权的多任务损失函数中的权重能够在每个训练步骤变化;在所述训练期间,确定每个所述单任务损失函数的权重,以使得所述多个任务中的每个任务以相似的速率被训练;以及至少部分地基于所述训练来输出所训练的多任务神经网络。

在第67方面中,根据方面66所述的方法,其中,所述任务包括计算机视觉任务、语音识别任务、自然语言处理任务、或医学诊断任务。

在第68方面中,根据方面66-67中任一项所述的方法,其中,所述多任务损失函数是所述权重和所述单任务损失函数的线性组合。

在第69方面中,根据方面66-68中任一项所述的方法,其中,确定每个所述单任务损失函数的权重包括:当从所述多个任务中的第一任务开始的反向传播梯度与从所述多个任务中的第二任务开始的反向传播梯度基本上不相同时,对所述多任务神经网络进行惩罚。

在第70方面中,根据方面66-69中任一项所述的方法,其中,确定每个所述单任务损失函数的权重包括:当所述多个任务中的第一任务的第一训练速率超过所述多个任务中的第二任务的第二训练速率时,相对于所述第二任务的第二权重减小所述第一任务的第一权重。

在第71方面中,根据方面66-70中任一项所述的方法,其中,确定每个所述单任务损失函数的权重包括:在训练时相对于所述权重,评估所述多个任务中的每个任务的加权的单任务损失函数的梯度范数;在所述训练时评估在所有任务上的平均梯度范数;计算所述多个任务中的每个任务的相对逆训练速率;以及至少部分地基于每个所述加权的单任务损失函数的梯度范数与所述平均梯度范数乘以所述相对逆训练速率的函数之间的差来计算梯度损失函数。

在第72方面中,根据方面71所述的方法,其中,所述梯度损失函数包括l-1损失函数。

在第73方面中,根据方面71-72中任一项所述的方法,其中,所述相对逆训练速率的所述函数包括幂律函数。

在第74方面中,根据方面73所述的方法,其中,所述幂律函数具有在-1至3范围内的幂律指数。

在第75方面中,根据第73方面所述的方法,其中,所述幂律函数具有在所述训练期间变化的幂律指数。

附加注意事项

在此描述和/或在附图中描绘的每个过程、方法和算法可以体现在由一个或多个物理计算系统、硬件计算机处理器、专用电路和/或被配置为执行特定和特别计算机指令的电子硬件的代码模块中并且可以完全或部分地由其自动化。例如,计算系统可包括用特定计算机指令编程的通用计算机(例如,服务器)或专用计算机、专用电路等。代码模块可被编译并链接到可执行程序中,安装在动态链接库中,或者可以用解释性编程语言编写。在一些实施方式中,特定的操作和方法可以由特定于给定功能的电路执行。

此外,本公开的功能的某些实施方式在数学、计算或技术上都足够复杂,以至于可能需要专用硬件或一个或多个物理计算设备(利用适当的专用可执行指令)来执行功能,例如,由于所涉及计算的量或复杂性,或者要基本上实时地提供结果。例如,视频可以包括许多帧,每个帧具有数百万个像素,并且需要专门编程的计算机硬件来处理该视频数据,以在商业上合理的时间量内提供所需的图像处理任务或应用。作为另一个示例,使用本文所述的gradnorm方法的实施例训练深度多任务网络在计算上具有挑战性,并且可以在图形处理单元(gpu)、专用集成电路(asic)或浮点门阵列(fpga)上实现。

代码模块或任何类型的数据可以存储在任何类型的非暂时性计算机可读介质上,例如包括硬盘驱动器、固态存储器、随机存取存储器(ram)、只读存储器(rom)、光盘的物理计算机存储设备,易失性或非易失性存储设备,它们的组合和/或类似物。方法和模块(或数据)还可以作为生成的数据信号(例如,作为载波或其他模拟或数字传播信号的一部分)在各种计算机可读传输介质(包括基于无线的和基于有线的/电缆的介质)上发送,并且可以采用各种形式(例如,作为单个或复用模拟信号的一部分,或作为多个离散数字分组或帧)。所公开的过程或过程步骤的结果可以永久地或以其他方式存储在任何类型的非暂时性有形计算机存储设备中,或者可以经由计算机可读传输介质进行传递。

在此描述的和/或在附图中描绘的流程图中的任何过程、块、状态、步骤或功能应被理解为潜在地表示包括一个或多个用于实现过程中的特定功能(例如逻辑或算术)或步骤的可执行指令的代码模块、代码段或代码部分。各种过程、块、状态、步骤或功能可以与本文提供的说明性示例相结合、重新布置、添加、删除、修改或以其他方式改变。在一些实施例中,附加的或不同的计算系统或代码模块可以执行本文描述的一些或全部功能。本文描述的方法和过程也不限于任何特定的顺序,并且与之相关的块、步骤或状态可以以适当的其他顺序来执行,例如串行、并行或以某些其他方式。可以将任务或事件添加到所公开的示例实施例中或从中删除。此外,本文描述的实施方式中的各种系统组件的分离是出于说明的目的,并且不应被理解为在所有实施方式中都需要这种分离。应当理解,所描述的程序组件、方法和系统通常可以被集成在一起在单个计算机产品中或包装到多个计算机产品中。许多实施方式的变型是可能的。

可以在网络(或分布式)计算环境中实现过程、方法和系统。网络环境包括企业范围的计算机网络、企业内部网、局域网(lan)、广域网(wan)、个人区域网(pan)、云计算网络、众包计算网络、互联网和万维网。该网络可以是有线或无线网络或任何其他类型的通信网络。

本公开的系统和方法各自具有若干创新方面,其中没有一个对本文公开的期望属性负有单独责任或要求。本文描述的各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合旨在落入本公开的范围内。对本公开中描述的实施方式的各种修改对于本领域技术人员而言是显而易见的,并且在不脱离本公开的精神或范围的情况下,本文中定义的一般原理可以应用于其他实施方式。因此,权利要求书无意限于本文所示的实施方式,而是应被赋予与本文所揭示的本公开、原理及新颖特征一致的最广范围。

在本说明书中在单独的实施方式的上下文中描述的某些特征也可以在单个实施方式中组合实现。相反,在单个实施方式的上下文中描述的各种特征也可以分别在多个实施方式中或以任何合适的子组合来实现。而且,尽管以上可以将特征描述为以某些组合起作用并且甚至最初如此声称,但是在某些情况下,可以从该组合中切除所要求保护的组合中的一个或多个特征,并且可以将所要求保护的组合用于子组合或子组合的变体。对于每个实施例,没有单个特征或一组特征是必要的或必不可少的。

本文使用的条件语言,尤其例如“可以”、“可”、“可能”、“能”、“例如”等,除非另有明确说明,或者在上下文中另外理解,通常意在传达某些实施例包括而其他实施例不包括某些特征、元素和/或步骤。因此,这样的条件语言通常不旨在暗示特征、元素和/或步骤以任何方式对于一个或多个实施例是必需的,或者一个或多个实施例必然包括用于决定(无论是否有作者输入或提示)是否将在任何特定实施例中包括或执行这些特征、元素和/或步骤的逻辑。术语“包括”、“包含”、“具有”等是同义词,以开放式方式包含性地使用,并且不排除附加要素、特征、动作、操作等。同样,术语“或”以其包含的含义使用(而不是以其排他的含义使用),使得例如在用于连接元素列表时,术语“或”表示列表中的一个、一些或全部元素。另外,在本申请和所附权利要求书中使用的“一”、“一个”和“该”应被解释为表示“一个或多个”或“至少一个”,除非另有说明。

如本文所使用的,指代项目列表中的“至少一个”的短语是指那些项目的任何组合,包括单个成员。例如,“a、b或c中的至少一个”旨在涵盖:a、b、c、a和b、a和c、b和c、以及a、b和c。除非另外特别说明,否则诸如短语“x、y和z中的至少一个”之类的连词(conjunctivelanguage)应与上下文一起理解,该上下文通常用于传达项目、术语等可以是x、y或z中的至少一个。因此,这种连词通常并非旨在暗示某些实施例要求存在x中的至少一个、y中的至少一个和z中的至少一个。

类似地,尽管可以以特定顺序在附图中描绘操作,但是要认识到,不需要以示出的特定顺序或顺序执行这样的操作,或者不需要执行所有示出的操作来实现理想的结果。此外,附图可以以流程图的形式示意性地描绘一个或多个示例过程。然而,未示出的其他操作可以结合在示意性示出的示例方法和过程中。例如,可以在任何所示操作之前、之后、同时或之间执行一个或多个附加操作。另外,在其他实施方式中,可以重新布置或重新排序这些操作。在某些情况下,多任务和并行处理可能是有利的。此外,在上述实施方式中的各种系统组件的分离不应被理解为在所有实施方式中都需要这种分离,并且应当理解,所描述的程序组件和系统通常可以被集成在一起在单个软件产品中或打包到多个软件产品中。另外,其他实施方式在所附权利要求的范围内。在某些情况下,可以以不同的顺序执行权利要求中记载的动作,并且仍然实现期望的结果。

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