首页 / 用于神经网络的多任务学习的元学习

用于神经网络的多任务学习的元学习实质审查 发明

技术领域

[0003] 本公开总体上涉及用于机器学习的系统和方法,并且更具体地涉及使用元学习技术来训练机器学习模型。

相关背景技术

[0004] 深度神经网络(DNN)是一种计算机器学习方法。DNN属于一类人工神经网络(NN)。利用NN,可以构建一个模拟生物神经网络的特征的计算图。生物神经网络包括对计算很重要的特征,并负责生物系统的许多功能,这些功能否则可能很难通过其他方法捕获。在一些实施方式中,这样的网络被布置成其中连接是单向的顺序分层结构。例如,可以将特定层的人工神经元的输出连接到后续层的人工神经元的输入。DNN可以是具有大量层(例如,10、
100或更多层)的NN。
[0005] 不同的NN在不同的视角彼此不同。例如,拓扑或架构(例如,层的数量以及层如何互连)以及不同NN的权重可以不同。权重可以近似类似于生物系统中神经连接的突触强度。权重影响从一层传播到另一层的效果的强度。人工神经元的输出可以是其输入的加权和的非线性函数。NN的权重可以是出现在这些求和中的权重。

具体实施方式

[0014] 概述
[0015] 学习去学习或元学习对于训练DNN可能具有实质性的优势。针对一个特定任务(例如,语义分割)训练DNN,可以通过对网络架构的仔细设计来完成。然而,训练单个DNN以解决多个难题提出了挑战。例如,当存在多个目标时平衡学习目标就是一个这样的挑战。当每个目标具有不同的性质(例如,交叉熵、平方损失、余弦损失等)并且具有变化的规模时,该多目标问题可能变得更加困难。
[0016] 在某些情况下,如果已经用一种以上的目标函数训练了网络,则网络可能正在执行多任务学习。通过联合优化区域提议和最终检测目标,可以在卷积神经网络(CNN)(诸如快速/更快R-CNN)中执行隐式多任务学习。诸如YOLO/SSD(仅查看一次/单发多框检测)之类的单发对象检测器方法通过优化锚点分类损失,进一步消除区域提议结构,并在一次向前传递(one forward pass)中直接预测位置和包围框(bounding box)输出。即使最终目标只是单个任务,这些类型的模型也可能同时最小化一个以上的损失函数。
[0017] 隐式或显式多任务学习的一些实施例需要在训练期间手动调整或网格搜索不同任务之间的次优平衡权重(比率)。网格搜索可以涉及执行几次(通常是昂贵的)训练迭代,并且随着任务数量的增加而扩展很差。此外,在整个训练过程中固定平衡权重通常会导致次优训练,因为某些任务可能需要比其他任务更早地进行训练。
[0018] 因此,本公开提供了元学习方法的各种实施例,以利用单个深度网络自动学习多个任务。学习目标可以是提高或最大化所有任务及其各自性能的学习效率。数值实验表明,不同任务的测试性能可能受任务学习顺序的影响(例如,参见图1A-1C),因此可能需要在整个学习迭代期间动态地平衡多个目标以提高或优化性能。可以成功地利用元学习的实施例来进行损失平衡,并且使用启发式方法或网格搜索,一些这样的实施例可以优于静态地平衡损失。
[0019] 本文所指的一些实施例训练元网络以发现用于使用单个网络联合训练多个任务的任务级别课程。一些实施例涉及训练元网络,该元网络平衡用于训练多任务网络的多个目标。元网络的一些实施例以这样的方式学习平衡权重,使得一些任务以任务级别课程的方式优先于其它任务被学习。
[0020] 在一些实施例中,元网络预测每次训练迭代的损失之间的平衡权重。通过观察这些损失的轨迹,元网络可以学习发现用于使用单个网络联合训练多个任务的任务级别课程。任务级别课程可以对应于任务间学习动态,例如,某些任务(例如,可能更稳定/不变的任务)应该比其他任务(例如,可能更不稳定/变化的任务)要更早学习。
[0021] 一些实施例提供了当使用网格搜索方法时基于人类的直觉或资源繁重而困难的不同任务的学习时间表。元学习方法可以应用于许多现实世界数据集,包括用于计算机视觉、语音识别或自然语言处理的数据集。举例来说,本文所述的一些应用是用于计算机视觉任务的,例如房间布局中的场景理解(例如,语义分割、深度预测或表面法线估计)。
[0022] 在一个示例性元网络中联合训练语义分割、深度预测和表面法线估计的数值实验表明,元网络首先学习深度,然后逐渐集中于学习表面法线,最后学习语义分割。元网络发现的这种学习顺序遵循婴儿视觉皮层系统发展过程中发现的模式。
[0023] 申请人已经发现,在一些实施方式中,任务级别课程对于多任务学习可能是有利的。元网络的实施例能够在元学习框架中捕获该多任务动态,并且能够为不同的任务确定非显然(non-trivial)的学习时间表,而这些任务是无法通过使用人类直觉或穷举的网格搜索方法来找到的。
[0024] 任务级别课程学习
[0025] 用于训练多个任务的深度神经网络的一种方法是创建手动设计的算法/网络架构,以自动学习一组任务。但是,基于人类经验或手动设计的算法调整可能对于某些任务不是最佳的。人工设计的学习算法的一个示例是课程学习。课程学习不是按照随机顺序训练示例,而是着重于基于人工设计的难度度量使用有意义的顺序对训练示例进行重新加权(re-weighting)(例如,该顺序逐渐训练更多示例和逐渐训练更复杂的示例)。连续方法包括用于处理最小化非凸准则的优化策略。这些方法旨在首先通过简单的训练示例然后逐渐转向困难的训练示例来优化模型。一个基本的范例是首先优化平滑的目标并逐渐考虑减少平滑,直觉认为该问题的平滑版本会揭示全局情况。
[0026] 可以称为任务级别课程学习的另一示例训练方法处理在多任务神经网络中学习任务的顺序。这些类型的方法可以使用更简单的任务来预训练子网络,并且可以在预训练的子网络之上训练更难的任务。
[0027] 这里,描述了训练元网络以预测任务级别学习课程的系统和方法。在一些实施例中,元网络预测每次训练迭代的损失之间的平衡权重。通过观察这些损失的轨迹,元网络可以学习发现任务级别课程,以便使用单个网络联合训练多个任务。任务级别课程可以对应于任务间学习动态,例如,某些任务(例如,可能更稳定/不变的任务)应该比其他任务(例如,可能更不稳定/变化的任务)要更早学习。
[0028] 通过网格搜索在一个网络中训练多个任务
[0029] 可用于解决多任务学习的一种技术是通过使用网格搜索来找到针对K个不同任务的最优平衡权重αk。一旦选择权重αk后,权重可以在整个训练过程中保持不变。在一些实施例中,元网络可以首先确定正在训练的任务的顺序是否重要。为了解决这个问题,通过重新排列一个单个网络中被训练任务的顺序来进行消融(ablation)研究,以确定训练顺序如何影响学习。
[0030] 图1A-1C中示出了通过使用一个深度网络训练以不同顺序训练的多个任务而得到的示例观察结果。深度网络学习到的多个任务被标记为任务1、2和3,并分别涉及语义分割、深度预测和表面法线估计。DNN在NYUv2数据集上进行训练(如下所述)。
[0031] 图1A-1示出了训练期间对应于任务1和2的平衡权重阿尔法1(α1)和阿尔法2(α2)。图1A-2示出了使用图1A-1所示的平衡权重来自训练任务1和2的总训练损失和测试损失。图
1B-1示出了训练期间对应于任务2和3的平衡权重阿尔法2(α2)和阿尔法3(α3)。图1B-2示出了使用图1B-1所示的平衡权重来自训练任务2和3的总训练和测试损失。图1C-1示出了训练期间对应于任务1和3的平衡权重阿尔法1(α1)和阿尔法3(α3)。图1C-2示出了使用图1C-1所示的平衡权重来自训练任务1和3的总训练和测试损失。
[0032] 在图1A-1C中,符号“任务i->任务j”标示在训练开始时以高任务i权重αi为任务i分配高值,然后逐渐变为高任务j权重αj。在每个训练步骤中,任务权重被限制为总和为一。图1A-1、1B-1和1C-1示出了根据训练期间所采取的训练步骤的权重变化。
[0033] 如图1A-1和1A-2所示,从任务1(分割)到任务2(深度)或者从任务2(深度)到任务1(分割)的训练,网络大致收敛到相同的训练损失值。但是,测试损失揭示了一种截然不同的行为:从任务1开始的训练所产生的总体测试损失要低得多。该特定于任务顺序的网络训练行为也可以在图1B-2和1C-2中看到。请注意,在这些实验中,这种行为是在相同的训练时间量下发生的,并且在每个训练步骤中任务权重总和为一。换句话说,每个任务接受相同训练时间量。
[0034] 总之,图1A-1C演示了在具有不同任务重点的训练之间的示例差异。例如,对于图1A-2、1B-2和1C-2中的每个图,网络大致收敛到相同的训练损失值。但是,即使在相同的训练时间下,并且平衡权重总和为一,测试损失也揭示出截然不同的行为。因此,不同任务的测试性能可能会受训练期间学习任务的顺序影响。
[0035] 通过元学习的示例多任务学习
[0036] 在各个实施例中,以K个不同任务及其相关联权重αk的损失函数Lk的加权线性和的形式执行多任务学习:
[0037]
[0038] 该示例性多任务网络被标示为子(child)网络,作为对如何使用元(meta)网络在元学习框架中学习这样的子网络的介绍。
[0039] 在元学习的一些实施例中,目标是在训练集合χ上尽可能好地执行所有K个任务。这个目标可以由具有其参数φ的元网络目标函数 来捕获。最优子网络参数
可以是元网络参数φ和所讨论的损失函数的函数。给定损失函数 的
分布,我们可以将预期损失公式化为:
[0040]
[0041] 其中, 是子损失函数的期望算子。
[0042] 给定子网络的当前损失值和元网络的参数φ,元网络m产生自适应权重α。子网络因此可以利用该更新的α集合来从 计算更新的子网络参数θ。在一些实施例中,诸如长短期记忆(LSTM)模块的递归模型可以用作具有由h标示的隐藏状态的元网络m。等式(2)的输出在子网络的训练课程结束时提供实际的学习信号;因此,对于T步的训练窗口,具有取决于优化轨迹的目标可能会很方便,
[0043]
[0044] 其中
[0045] θt+1=θt+gt
[0046]
[0047]
[0048] 给定最新的学习轨迹 和LSTM隐藏状态ht,在每次训练迭代t时,元网络m都会产生一组新的平衡权重αk,t。
[0049] 在一些实施例中,可以使用φ上的梯度下降来减小或最小化元网络损失函数的值。代替通过人的直觉或启发式方法来搜索最优αk,一些实施例可以相对于φ以数据驱动的方式学习损失 的相对关系来减小或最小化该元学习目标。元网络可能会消耗许多优化曲线,并学习调整其参数以动态产生所有任务之间的最优关系系数α。这种方法不同于针对权重α直接优化 的方法,因为目标函数 无法访问训练轨迹的历史,并且只能让优化器基于当前目标值找到最佳权重α。
[0050] 图2是包括元网络204和子网络208的示例元学习系统200的框图。如参考等式(1)至(4)所述,元网络损失函数 可以取决于元网络的参数φ,以及子网络损失函数可以取决于子网络的参数θ,其可以可选地取决于训练迭代t。可以减小或最小化元网络损失函数的值,以为子网络提供一组自适应权重。如果子网络包括多任务网络,则自适应权重可以是每个任务α的权重。在一些实施例中,元网络可以包括隐藏状态212。元网络
204可以包括递归模型,诸如长短期记忆(LSTM)模块。因此,子网络可以利用该更新的一组自适应权重从其损失函数 计算更新的子网络参数θ。如上所述,元学习系统200可以迭代优化轨迹以最小化损失函数。
[0051] 示例元学习问题和元网络
[0052] 计算机视觉中最常见和自然的多任务学习问题之一是捕获场景几何形状并识别场景中的对象。对象识别具有广泛的应用,诸如用于增强现实的实时三维(3D)重建,以及将对象之间的支持关系推断为自动驾驶。
[0053] 关于等式(1)至(4)描述的元学习技术的实施例被应用于现实世界场景理解数据集NYUv2。NYUv2数据集包括640x480分辨率室内场景中的1449个密集标记的对齐(aligned)颜色(RGB)和深度图像对。在795个训练示例上训练了子网络和元网络,并且在654个单独的测试示例上计算了测试结果。在数值实验中,将图像降低采样为128x128分辨率以减小计算负担。
[0054] NYUv2数据集具有三个任务套件:语义分割、深度预测和表面法线估计,它们是多任务元学习场景的良好候选任务。
[0055] 语义分割包括理解像素级的图像。在具有NYUv2数据集中描述的13个语义标签的语义类集上评估了元学习。交叉熵损失函数用于语义分割,以学习逐像素(pixel-wise)分类概率,并使用交并比(intersection over union)(mIoU)度量的平均值报告测试集准确性。
[0056] 对于深度预测,L1损失函数被用于执行用于深度预测的逐像素监督深度回归训练。在数值实验中,以米为单位(从0到10米)测量深度以进行训练和测试,其中,从RGBD传感器捕获地面真实深度。
[0057] 对于表面法线训练,使用了逐像素余弦距离(例如,1-|cosθ|),其中θ测量地面真实表面法线向量和预测的表面法线向量之间的角度。每个表面法线向量包括三个分量,表示x、y和z方向。NYUv2工具箱用于根据深度地面真实情况和照相机参数生成表面法线地面真实情况。
[0058] 在数值实验中,元网络架构利用两层LSTM,每层具有20个隐藏单元。元网络的输出经过softmax函数,以确保生成的权重αk之和为一且大于零。通过使用学习速率为0.001的ADAM优化算法(自适应矩估计)随时间反向传播(BPTT)最小化等式(3)来训练元网络。在实验中,使用标准值为1的梯度裁剪来提高训练。发现该方法对隐藏单元的数量(20)相对不敏感,在整个实验过程中,隐藏单元的数量保持不变。
[0059] 在实验中,多任务子网络是深度全卷积网络,其包括步幅为1的六个3×3卷积层,但前两个卷积层的步幅为2。每个卷积层具有16个过滤器,其中,非线性是整流线性单元(ReLU)激活,然后进行批量归一化。在每个训练步骤中,元网络都会为所有三个训练过的任务生成一组新的任务平衡权重αk。子网络使用这些自适应权重来计算相对于其自身子网络参数θ的梯度。用标准随机梯度下降训练子网络,其动量(momentum)为0.9,学习速率为0.01,批量大小为10。所有参数均通过i.i.d.高斯分布来初始化。
[0060] 将来自元学习元网络的结果与以下两种常用的多任务学习技术进行比较:均等加权和网格搜索。均等加权技术对所有三个任务使用相同的α值0.333。对于网格搜索,对于每个αk,使用来自搜索空间的步长0.02,约束是权重之和为1且均为正。图3A-3F和表1总结了1200次网格搜索运行的最佳结果。
[0061] 图3A示出了示例元网络如何学习以下一组三个任务的学习轨迹的示例:语义分割(任务1)、深度检测(任务2)和表面法线估计(任务3)。图3A示出了学习轨迹对于0、100、200、300和400次训练迭代收敛到某个损失值。图3B示出了针对示例元网络的一个学习轨迹的三个任务的最终收敛的任务权重值α。
[0062] 图3C-3F示出了在由以下控制的多任务学习之间的比较:均等加权、网格搜索与NYUv2数据集上的用于学习如何学习语义分割(任务1)、深度检测(任务2)和表面法线估计(任务3)的元学习元网络的实施例。图3C示出了所有三个任务的总体训练损失和测试损失。图3D、3E、3F示出了针对每个单独任务的训练损失和测试损失:分割(图3D)、深度(图3E)和表面法线(图3F)。
[0063] 元网络实施例在训练的整个过程中针对不同任务动态地调整平衡权重α,并且与均等加权和网格搜索方法相比,导致更好的收敛速度和更低的测试损失。
[0064] 表1示出了本文所述的元学习技术与均等加权和网格搜索相比的对比实验结果的总结。表1还示出了与最近开发的不确定性加权方法的比较,该方法基于高斯似然假设计算每个任务的输出的同方差不确定性,并与原始任务目标联合学习不确定性任务平衡加权。
[0065] 表1
[0066]
[0067]
[0068] 从表1可以看出,当使用元学习多任务学习技术(例如,参见等式(1)至(4))的实施例在单任务模型、加权损失、网格搜索和不确定性加权上进行训练时,可以提高训练性能。
[0069] 多任务学习的示例元学习过程
[0070] 图4是用于使用元学习和元网络来训练子网络的示例过程800的流程图。子网络可以包括用于确定与多个任务(例如,场景理解)相关联的输出的多任务网络。子网络可以包括多个共享层和包括多个任务特定过滤器的输出层。诸如具有非暂时性存储器和硬件处理器的计算系统之类的计算系统可以执行过程800以训练子网络。计算系统的非暂时性存储器可以存储或被配置为存储可执行指令。硬件处理器可以与非暂时性存储器通信并且由可执行指令编程以使用元学习的实施例执行过程800以训练子网络。
[0071] 在框804,过程800访问训练数据。训练数据可以包括与子网络的多个参考任务输出相关联的训练图像。多个任务可以包括回归任务、分类任务或其组合。多个任务可以包括例如感知任务,诸如面部识别、视觉搜索、手势标识或识别、场景理解、语义分割、深度估计、表面法线估计、对象检测、房间布局估计、长方体检测、照明检测、同时定位和映射、对象或化身的重新定位或语音处理任务(诸如语音识别或自然语言处理)或其组合。
[0072] 在框808处,过程800访问子网络。子网络可以是多任务神经网络。子网络可以与子网络损失函数相关联,子网络损失函数可以取决于子网络的参数θ。例如,子网络损失函数可以包括针对K个不同任务的损失 及其相关联权重αk的加权线性组合(参见,例如,等式(1))。子网络参数θ可以取决于训练迭代时间t。
[0073] 在框812处,过程800访问元网络。元网络可以与元网络损失函数 相关联,网络损失函数 相关联可以取决于元网络的参数φ。在各个实施例中,元网络损失函数可以如以上参考等式(2)或(3)描述的那样被公式化。
[0074] 在框816处,过程800训练元网络以为子损失函数提供自适应权重。自适应权重可以是与多任务子网络的任务相关联的权重αk。在给定子网络的当前损失值和元网络的参数φ的情况下,训练的元网络从而产生自适应权重α。元网络可以包括递归模型,例如,长短期记忆(LSTM)模块。可以使用ADAM优化算法的实施例(例如,自适应矩估计)通过随机梯度下降或随时间反向传播(BPTT)来训练元网络。过程800可以使用等式(3)和(4)基于T步训练窗口的优化轨迹来训练元网络。在一些这样的实施例中,在每次训练迭代t,给定子的最新学习轨迹和元网络的隐藏状态ht,元网络产生一组新的平衡权重。
[0075] 在框820处,过程800基于在框816处学习的自适应权重来训练子网络。例如,子网络可以使用这些自适应权重来计算关于其自身的子网络参数θ的梯度,例如通过随机梯度下降。可以迭代框816和820,直到实现足够的收敛。
[0076] 在框824处,过程800输出训练的子网络。训练的子网络可以存储在AR、VR或MR显示设备的存储器中,并用于执行与子网络相关联的任务(参见例如,与参考图5描述的可穿戴系统相关联的描述)。
[0077] 示例NN层
[0078] 表示数据关系和模式的模型,诸如函数、算法、系统等,可以接受输入,并以某种方式产生与输入相对应的输出。例如,模型可以被实现为机器学习方法,诸如卷积神经网络(CNN)或深度神经网络(DNN)。深度学习是基于学习数据表示的思想而不是特定于任务的方法的更广泛的机器学习方法系列的一部分,并且在解决对增强现实(AR)、混合现实(MR)、虚拟现实(VR)和机器智能有用的视听计算问题方面显示出了希望。在机器学习中,卷积神经网络(CNN或ConvNet)可以包括一类深度且前馈人工神经网络,并且CNN已成功应用于分析视觉图像。机器学习方法包括一系列方法,这些方法可以为各种问题(包括眼睛图像分割或眼睛跟踪)提供鲁棒而准确的解决方案。
[0079] 诸如深度神经网络(DNN)之类的神经网络(NN)的一层可以对其输入应用线性或非线性变换以生成其输出。深度神经网络层可以是归一化层、卷积层、软符号层、整流线性层、级联层、池化层、递归层、类初始(inception)层或它们的任意组合。归一化层可以通过例如L2归一化来归一化其输入的亮度以生成其输出。归一化层可以例如一次相对于彼此归一化多个图像的亮度,以生成多个归一化图像作为其输出。用于归一化亮度的方法的非限制性示例包括局部对比度归一化(LCN)或局部响应归一化(LRN)。局部对比度归一化可以通过在每像素基础上对图像的局部区域进行归一化以使其平均值为零且方差为1(或平均值和方差的其他值)来非线性地归一化图像的对比度。局部响应归一化可以将局部输入区域上的图像归一化为平均值为零且方差为1(或平均值和方差的其他值)。归一化层可以加快训练过程。
[0080] 卷积层可以应用一组将其输入卷积以生成其输出的内核。软符号层可以将软符号函数应用于其输入。软符号函数(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图像。池化函数的非限制性示例包括最大池化、平均池化或最小池化。
[0081] 在时间点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层之类的整流线性层、级联层、池化层或其任意组合中的一个或多个。
[0082] 在不同的实施方式中,NN中的层数可以不同。例如,DNN中的层数可以是50、100、200或更多。在不同的实施方式中,深度神经网络层的输入类型可以不同。例如,一层可以接收多个层的输出作为其输入。一层的输入可以包括五层的输出。作为另一示例,一层的输入可以包括NN层的1%。一层的输出可以是多个层的输入。例如,一层的输出可用作五层的输入。作为另一个示例,一层的输出可用作NN层的1%的输入。
[0083] 一层的输入大小或输出大小可以非常大。图层的输入大小或输出大小可以为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或更大。
[0084] 在一些实施例中,NN可以指代一起计算NN的输出的多个NN。可以针对不同的任务训练多个NN中的不同NN。处理器(例如,参考图5描述的本地数据处理模块924的处理器)可以计算多个NN中的NN的输出以确定NN的输出。例如,多个NN中的NN的输出可以包括似然度得分。处理器可以基于多个NN中的不同NN的输出的似然度得分来确定包括多个NN的NN的输出。
[0085] 示例可穿戴显示系统
[0086] 在一些实施例中,用户设备可以是或可以包括在可穿戴显示设备中,其可以有利地提供更身临其境的虚拟现实(VR)、增强现实(AR)或混合现实(MR)体验,其中将数字再现的图像或其部分以看起来是或可被感知为是真实的方式呈现给穿戴者。
[0087] 不受理论的限制,据信人眼通常可以解释有限数量的深度平面以提供深度感知。因此,可以通过向眼睛提供与这些有限数量的深度平面中的每个相对应的图像的不同呈现,来实现感知深度的高度可信的模拟。例如,包含波导的堆叠的显示器可以被配置为穿戴在用户或观看者的眼睛前面。通过使用多个波导来引导来自图像注入设备(例如,离散的显示器或复用显示器的输出端,其通过一个或多个光纤管道传输图像信息)的光以对应于与特定波导相关联的深度平面的特定角度(和发散量)到观看者的眼睛,可以利用波导的堆叠为眼睛/大脑提供三维感知。
[0088] 在一些实施例中,可以利用波导的两个堆叠来向每只眼睛提供不同的图像,一个堆叠用于观看者的一只眼睛。作为一个示例,增强现实场景可以使得AR技术的穿戴者看到现实世界的公园般的设置,该设置以人物、树木、背景中的建筑物以及混凝土平台为特征。除了这些物品之外,AR技术的穿戴者还可能会感知到他“看”到了站在现实世界平台上的机器人雕像,并且飞过其身边的卡通般的化身角色似乎是大黄蜂的象征(personification),即使机器人雕像和大黄蜂在现实世界中不存在。波导的堆叠可以用于生成与输入图像相对应的光场,并且在一些实施方式中,可穿戴显示器包括可穿戴光场显示器。在美国专利公开号2015/0016777中描述了用于提供光场图像的可穿戴显示设备和波导堆叠的示例,该专利公开的全部内容通过引用合并于此。
[0089] 图5示出了可穿戴显示系统900的示例,其可用于向显示系统穿戴者或观看者904呈现VR、AR或MR体验。可穿戴显示系统900可被编程为执行本文中所描述的任何应用或实施例(例如,执行CNN或DNN、对输入激活图或内核的值进行重新排序、眼睛图像分割或眼睛跟踪)。显示系统900包括显示器908以及支持该显示器908的功能的各种机械和电子模块和系统。显示器908可以耦合至框架912,该框架可由显示系统穿戴者或观看者904穿戴并且被配置为将显示器908定位在穿戴者904的眼睛前面。显示器908可以是光场显示器。在一些实施例中,扬声器916耦合到框架912,并在用户的耳道附近定位,未示出的另一个扬声器在用户的另一耳道附近定位,以提供立体声/可成形的声音控制。显示系统900可以包括可以获取穿戴者904周围的环境的图像(例如,静止图像或视频)的面向外部的成像系统944(例如,一个或多个照相机)。通过面向外部的成像系统944获得的图像可以通过在穿戴者904周围的环境中参考图2和图4描述的元学习方法900训练的多任务网络的实施例来分析。
[0090] 显示器908可以例如通过有线引线或无线连接可操作地耦合920到本地数据处理模块924,该本地数据处理模块924可以以各种配置安装,例如固定地附接到框架912、固定地附接到用户穿戴的头盔或帽子、嵌入耳机中或以其他方式可拆卸地附接到用户904(例如,以背包式配置、皮带耦合式配置)。
[0091] 本地处理和数据模块924可以包括硬件处理器以及非暂时数字存储器(例如非易失性存储器(例如闪存)),两者均可以用于协助处理、缓存和存储数据。数据可以包括:(a)从传感器(其可以例如可操作地耦合到框架912或以其他方式附接到穿戴者904)捕获的数据,传感器例如图像捕获设备(例如照相机)、麦克风、惯性测量单元、加速度计、指南针、GPS单元、无线电设备和/或陀螺仪;和/或(b)使用远程处理模块928和/或远程数据存储库932获取和/或处理的数据,可能在这样的处理或检索之后传递给显示器908。本地处理和数据模块924可以通过通信链路936、940(例如经由有线或无线通信链路)可操作地耦合到远程处理模块928和远程数据存储库932,使得这些远程模块928、932可操作地彼此耦合并且可用作本地处理和数据模块924的资源。图像捕获设备可以用于捕获在眼睛图像分割或眼睛跟踪过程中使用的眼睛图像。
[0092] 在一些实施例中,远程处理模块928可以包括一个或多个处理器,该处理器被配置为分析和处理数据和/或图像信息,例如由图像捕获设备捕获的视频信息。视频数据可以本地存储在本地处理和数据模块924中和/或远程数据存储库932中。在一些实施例中,远程数据存储库932可以包括数字数据存储设施,其可以通过互联网或“云”资源配置中的其他网络配置来使用。在一些实施例中,所有数据被存储并且所有计算在本地处理和数据模块924中执行,从而允许来自远程模块的完全自主的使用。
[0093] 在一些实施方式中,本地处理和数据模块924和/或远程处理模块928被编程为执行对本文公开的输入激活图或内核的值进行重新排序、眼睛图像分割或眼睛跟踪的实施例。例如,本地处理和数据模块924和/或远程处理模块928可以被编程为使用参考图2和4描述的方法90训练的多任务网络执行任务预测和确定的实施例。图像捕获设备可以捕获特定应用的视频(例如增强现实(AR)、人机交互(HCI)、自动驾驶汽车、无人机或一般地机器人技术)。可以通过处理模块924、928中的一个或两个使用CNN对视频进行分析。在某些情况下,将输入激活图或内核的值进行重新排序、眼睛图像分割或眼睛跟踪中的至少一些卸载到远程处理模块(例如,在“云”中)可以提高计算效率或速度。CNN或DNN的参数(例如,权重、偏差项、用于池化层的子采样因子、不同层中内核的数量和大小、特征图的数量等)可以存储在数据模块924和/或932中。例如,数据模块924、932可以存储已经使用本文所述的元学习和元网络从训练中学到的参数。
[0094] 任务预测或确定的结果(例如,参考图2和图4描述的元学习多任务网络900的输出)可以由处理模块924、928中的一个或两个用于附加操作或处理。例如,可穿戴显示系统900的处理模块924、928可被编程为基于多任务网络的输出执行附加应用(诸如增强现实、人机交互(HCI)、自动驾驶汽车、无人机或一般的机器人技术中的应用)。
[0095] 附加任务
[0096] 元学习的实施例不限于计算机视觉任务,其中在图像或视觉数据上训练元网络。在其他实施例中,训练样本可以包括由传感器捕获的非图像数据,例如音频数据、加速度数据、定位数据、温度数据、射频数据和光学跟踪数据。传感器的示例包括音频传感器(例如,麦克风)、惯性测量单元(IMU)、加速计、指南针、陀螺仪、温度传感器、运动传感器、深度传感器、全球定位系统(GPS)单元和无线电设备。在其他实施例中,训练样本可以包括诸如性别、年龄、心率、体温、白细胞计数、疾病状态、疾病进展、症状、疾病诊断等的测量。例如,对于与语音识别或自然语言处理有关的任务,训练样本可以包括音频数据集(或视频附带的音频数据)或单词、句子、段落和文本的电子表示或嵌入(例如,n-gram)。任务可以包括例如词性(POS)标记、分块依赖性解析、语义相关性或文本含义。
[0097] 可以由多网络学习的任务可以包括回归任务、分类任务或其组合。任务可以包括例如感知任务,例如面部识别、视觉搜索、手势标识或识别、语义分割、对象检测、房间布局估计、长方体检测、照明检测、同时定位和映射、对象或化身的重新定位、或语音处理任务(例如语音识别或自然语言处理)或其组合。
[0098] 可以由多网络学习的任务可以与医学治疗或医学决策有关。例如,任务可以包括确定应该对患有特定疾病的患者进行哪些实验室测试或进行哪些风险评估。举例来说,训练数据可包括患有特定疾病或症状(例如肺炎)的患者的测量(例如性别、年龄、心率、体温、白细胞计数等)。元学习的实施例可用于训练用于预测患者的风险评估或实验室测试的多任务网络。
[0099] 因此,元学习所使用的训练数据可以包括图像、视频、音频、电子记录、数据库等,其可以与相应的训练标签、分类或信号相关联。
[0100] 在一些实施例中,本文公开的元学习方法可以具有在计算机视觉、自然语言处理、语音合成、特定于领域的应用(例如交通预测)、通用跨领域应用或课程学习中的应用。在一些实施方式中,基于诸如总损失减少之类的全局奖励来联合训练任务。元学习的实施例可以应用于训练用于增强现实、混合现实或虚拟现实的多任务神经网络(参见例如参考图5描述的增强现实系统,其可以存储和利用这种元学习训练的神经网络,用于与AR相关的任务,例如计算机视觉或语言处理)。
[0101] 附加方面
[0102] 在第1方面中,公开了一种用于使用元学习来训练多任务神经网络的系统。该系统包括:非暂时性存储设备,其被配置为存储:多任务神经网络,其被配置为确定与多个任务相关联的输出,该多个任务中的每个任务与任务损失函数相关联,与多任务损失函数相关联的该多任务神经网络包括针对该多个任务中的每个任务的任务权重和任务损失函数的组合;元网络,其被配置为输出与该多个任务中的每个任务相关联的任务权重,与元网络损失函数相关联的该元网络包括至少部分地基于该多任务损失函数的预期损失;与该非暂时性存储设备通信的硬件处理器,该硬件处理器被编程为:访问与用于该多个任务的多个参考任务输出相关联的训练数据;减小或最小化该元网络损失函数以确定与该多个任务中的每个任务相关联的估计任务权重;至少部分地基于该估计任务权重,减小或最小化该多任务损失函数;以及输出训练的多任务神经网络。
[0103] 在第2方面中,根据方面1所述的系统,其中,该多任务神经网络的任务与场景理解相关联。
[0104] 在第3方面中,根据方面1或2中任一项所述的系统,其中,任务包括语义分割、深度或表面法线中的至少一项。
[0105] 在第4方面中,根据方面1-3中的任一项所述的系统,其中,该多任务损失函数包括用于该多个任务中的所有任务的任务权重乘以该任务损失函数的线性组合。
[0106] 在第5方面中,根据方面1-4中任一项所述的系统,其中,该元网络包括长短期记忆(LSTM)模块。
[0107] 在第6方面中,根据方面1-5中任一项所述的系统,其中,该元网络损失函数包括该多任务损失函数在训练窗口的优化轨迹上的总和。
[0108] 在第7方面中,根据方面1-6中任一项所述的系统,其中,为了减小或最小化该元网络损失函数,该硬件处理器被编程为使用自适应矩估计来应用随时间反向传播。
[0109] 在第8方面中,根据方面1-7中任一项所述的系统,其中,为了减小或最小化该多任务损失函数,该硬件处理器被编程为应用随机梯度下降。
[0110] 在第9方面,根据方面1-8中任一项所述的系统,其中,该多任务神经网络包括卷积神经网络。
[0111] 在第10方面中,根据方面1-9中任一项所述的系统,其中,该硬件处理器还被编程为:在每个训练时间监测该多任务损失函数和该元网络损失函数的值;以及确定用于联合训练该多个任务的任务级别课程。
[0112] 在第11方面中,描述了一种用于使用元学习和元网络来训练子神经网络的方法。该方法包括:访问被配置为输出用于子神经网络的自适应权重的元网络;至少部分地基于用于该子神经网络的子损失函数来训练该元网络,该子损失函数至少部分地取决于该自适应权重;通过该元网络输出更新的自适应权重;使用该更新的自适应权重训练该子神经网络;以及输出训练的子网络。可以在硬件处理器的控制下执行该方法。该硬件处理器可以与被配置为存储该元网络和该子神经网络的非暂时性存储器通信。
[0113] 在第12方面中,根据方面11所述的方法,还包括访问用于训练该元网络和该子网络的训练数据集。
[0114] 在第13方面中,根据方面11或12中任一项所述的方法,其中,该元网络包括递归神经网络。
[0115] 在第14方面中,根据方面13所述的方法,其中,该递归神经网络包括长短期记忆(LSTM)模块。
[0116] 在第15方面中,根据方面11-14中任一项所述的方法,其中,该子神经网络包括多任务神经网络。
[0117] 在第16方面中,根据方面15所述的方法,其中,该多任务神经网络包括多任务损失函数,该多任务损失函数包括与各个任务相关联的自适应权重和任务损失函数的组合。
[0118] 在第17方面中,根据方面11-16中任一项所述的方法,还包括确定与联合训练该各个任务相关联的任务级别课程。
[0119] 在第18方面中,根据方面11-17中任一项所述的方法,其中,训练该元网络包括监测元网络损失函数在训练窗口上的轨迹。
[0120] 在第19方面中,描述了一种头戴式显示系统。该头戴式显示系统包括:非暂时性存储器,其被配置为存储:可执行指令,以及用于确定与多个任务相关联的输出的多任务网络,其中,使用以下来训练该多任务网络:被配置为输出用于该多任务网络的该多个任务的自适应权重的元网络;用于该多任务神经网络的多任务损失函数,该多任务损失函数至少部分地取决于该元网络学习的该自适应权重;显示器;传感器;以及与该非暂时性存储器以及该显示器和该传感器通信的硬件处理器,该硬件处理器由该可执行指令编程为:接收由该传感器捕获的传感器数据;使用以该传感器数据作为输入的该多任务网络,针对该多个任务中的每个任务确定任务输出;以及使该显示器向该头戴式显示系统的用户显示与该确定的任务输出有关的信息。
[0121] 在第20方面中,在第19方面的系统中,其中,该多个任务包括多个感知任务。
[0122] 在第21方面中,在第20方面的系统中,其中,该多个感知任务包括面部识别、视觉搜索、手势标识、语义分割、深度估计、表面法线估计、场景识别、对象检测、照明检测、同时定位和映射、重新定位或其组合。
[0123] 在第22方面中,根据方面19-21中任一项所述的系统,其中,该传感器包括惯性测量单元、面向外部的照相机、深度感测照相机、麦克风、眼睛成像照相机或它们的组合。
[0124] 在第23方面中,描述了一种用于训练神经网络以学习一组任务的系统。该系统包括:非暂时性存储器,其被配置为存储:可执行指令;以及用于学习多个任务的子网络,其中,该子网络与该多个任务的损失函数相关联,并且为该多个任务中的每个任务分配任务权重;与该非暂时性存储器通信的硬件处理器,该硬件处理器由该可执行指令编程为:确定与该子网络的该损失函数相关联的第一子网络损失;基于该第一子网络损失,为该多个任务中的每个任务确定更新的任务权重;基于该多个任务中的每个任务的该更新的任务权重,确定更新的子网络;确定与该更新的子网络的该损失函数相关联的第二子网络损失;以及至少基于该第二子网络损失,针对该多个任务中的每个任务确定第二更新的任务权重。
[0125] 在第24方面中,根据方面23所述的系统,其中,该硬件处理器还被编程为学习该第一子网络损失与该第二子网络损失之间的关系。
[0126] 在第25方面中,根据方面23或24中任一项所述的系统,其中,该硬件处理器被编程为至少基于该第一子网络损失与该第二子网络损失之间的该关系来确定该第二更新的任务权重。
[0127] 在第26方面中,根据方面23-25中任一项所述的系统,其中,该多个任务至少包括语义分割、深度预测和表面法线估计。
[0128] 在第27方面中,根据方面23-26中任一项所述的系统,其中,该多个任务包括回归任务、分类任务或其组合。
[0129] 在第28方面中,根据第27方面所述的系统,其中,该分类任务包括感知、面部识别、视觉搜索、手势识别、语义分割、对象检测、房间布局估计、长方体检测、照明检测、同时定位和映射、重新定位、语音处理、语音识别、自然语言处理或它们的组合
[0130] 附加注意事项
[0131] 在此描述和/或在附图中描绘的每个过程、方法和算法可以体现在由一个或多个物理计算系统、硬件计算机处理器、专用电路和/或被配置为执行特定和特别计算机指令的电子硬件的代码模块中并且可以完全或部分地由其自动化。例如,计算系统可包括用特定计算机指令编程的通用计算机(例如,服务器)或专用计算机、专用电路等。代码模块可被编译并链接到可执行程序中,安装在动态链接库中,或者可以用解释性编程语言编写。在一些实施方式中,特定的操作和方法可以由特定于给定功能的电路执行。
[0132] 此外,本公开的功能的某些实施方式在数学、计算或技术上都足够复杂,以至于可能需要专用硬件或一个或多个物理计算设备(利用适当的专用可执行指令)来执行功能,例如,由于所涉及计算的量或复杂性,或者要基本上实时地提供结果。例如,视频可以包括许多帧,每个帧具有数百万个像素,并且需要专门编程的计算机硬件来处理该视频数据,以在商业上合理的时间量内提供所需的图像处理任务或应用。作为另一个示例,使用本文所述的元学习方法的实施例训练深度多任务网络在计算上具有挑战性,并且可以在图形处理单元(GPU)、专用集成电路(ASIC)或浮点门阵列(FPGA)上实现。
[0133] 代码模块或任何类型的数据可以存储在任何类型的非暂时性计算机可读介质上,例如包括硬盘驱动器、固态存储器、随机存取存储器(RAM)、只读存储器(ROM)、光盘的物理计算机存储设备,易失性或非易失性存储设备,它们的组合和/或类似物。方法和模块(或数据)还可以作为生成的数据信号(例如,作为载波或其他模拟或数字传播信号的一部分)在各种计算机可读传输介质(包括基于无线的和基于有线的/电缆的介质)上发送,并且可以采用各种形式(例如,作为单个或复用模拟信号的一部分,或作为多个离散数字分组或帧)。所公开的过程或过程步骤的结果可以永久地或以其他方式存储在任何类型的非暂时性有形计算机存储设备中,或者可以经由计算机可读传输介质进行传递。
[0134] 在此描述的和/或在附图中描绘的流程图中的任何过程、块、状态、步骤或功能应被理解为潜在地表示包括一个或多个用于实现过程中的特定功能(例如逻辑或算术)或步骤的可执行指令的代码模块、代码段或代码部分。各种过程、块、状态、步骤或功能可以与本文提供的说明性示例相结合、重新布置、添加、删除、修改或以其他方式改变。在一些实施例中,附加的或不同的计算系统或代码模块可以执行本文描述的一些或全部功能。本文描述的方法和过程也不限于任何特定的顺序,并且与之相关的块、步骤或状态可以以适当的其他顺序来执行,例如串行、并行或以某些其他方式。可以将任务或事件添加到所公开的示例实施例中或从中删除。此外,本文描述的实施方式中的各种系统组件的分离是出于说明的目的,并且不应被理解为在所有实施方式中都需要这种分离。应当理解,所描述的程序组件、方法和系统通常可以被集成在一起在单个计算机产品中或包装到多个计算机产品中。许多实施方式的变型是可能的。
[0135] 可以在网络(或分布式)计算环境中实现过程、方法和系统。网络环境包括企业范围的计算机网络、企业内部网、局域网(LAN)、广域网(WAN)、个人区域网(PAN)、云计算网络、众包计算网络、互联网和万维网。该网络可以是有线或无线网络或任何其他类型的通信网络。
[0136] 本公开的系统和方法各自具有若干创新方面,其中没有一个对本文公开的期望属性负有单独责任或要求。本文描述的各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合旨在落入本公开的范围内。对本公开中描述的实施方式的各种修改对于本领域技术人员而言是显而易见的,并且在不脱离本公开的精神或范围的情况下,本文中定义的一般原理可以应用于其他实施方式。因此,权利要求书无意限于本文所示的实施方式,而是应被赋予与本文所揭示的本公开、原理及新颖特征一致的最广范围。
[0137] 在本说明书中在单独的实施方式的上下文中描述的某些特征也可以在单个实施方式中组合实现。相反,在单个实施方式的上下文中描述的各种特征也可以分别在多个实施方式中或以任何合适的子组合来实现。而且,尽管以上可以将特征描述为以某些组合起作用并且甚至最初如此声称,但是在某些情况下,可以从该组合中切除所要求保护的组合中的一个或多个特征,并且可以将所要求保护的组合用于子组合或子组合的变体。对于每个实施例,没有单个特征或一组特征是必要的或必不可少的。
[0138] 本文使用的条件语言,尤其例如“可以”、“可”、“可能”、“能”、“例如”等,除非另有明确说明,或者在上下文中另外理解,通常意在传达某些实施例包括而其他实施例不包括某些特征、元素和/或步骤。因此,这样的条件语言通常不旨在暗示特征、元素和/或步骤以任何方式对于一个或多个实施例是必需的,或者一个或多个实施例必然包括用于决定(无论是否有作者输入或提示)是否将在任何特定实施例中包括或执行这些特征、元素和/或步骤的逻辑。术语“包括”、“包含”、“具有”等是同义词,以开放式方式包含性地使用,并且不排除附加要素、特征、动作、操作等。同样,术语“或”以其包含的含义使用(而不是以其排他的含义使用),使得例如在用于连接元素列表时,术语“或”表示列表中的一个、一些或全部元素。另外,在本申请和所附权利要求书中使用的“一”、“一个”和“该”应被解释为表示“一个或多个”或“至少一个”,除非另有说明。
[0139] 如本文所使用的,指代项目列表中的“至少一个”的短语是指那些项目的任何组合,包括单个成员。例如,“A、B或C中的至少一个”旨在涵盖:A、B、C、A和B、A和C、B和C、以及A、B和C。除非另外特别说明,否则诸如短语“X、Y和Z中的至少一个”之类的连词(conjunctive language)应与上下文一起理解,该上下文通常用于传达项目、术语等可以是X、Y或Z中的至少一个。因此,这种连词通常并非旨在暗示某些实施例要求存在X中的至少一个、Y中的至少一个和Z中的至少一个。
[0140] 类似地,尽管可以以特定顺序在附图中描绘操作,但是要认识到,不需要以示出的特定顺序或顺序执行这样的操作,或者不需要执行所有示出的操作来实现理想的结果。此外,附图可以以流程图的形式示意性地描绘一个或多个示例过程。然而,未示出的其他操作可以结合在示意性示出的示例方法和过程中。例如,可以在任何所示操作之前、之后、同时或之间执行一个或多个附加操作。另外,在其他实施方式中,可以重新布置或重新排序这些操作。在某些情况下,多任务和并行处理可能是有利的。此外,在上述实施方式中的各种系统组件的分离不应被理解为在所有实施方式中都需要这种分离,并且应当理解,所描述的程序组件和系统通常可以被集成在一起在单个软件产品中或打包到多个软件产品中。另外,其他实施方式在所附权利要求的范围内。在某些情况下,可以以不同的顺序执行权利要求中记载的动作,并且仍然实现期望的结果。

当前第1页 第1页 第2页 第3页