在机器人之间共享学习的信息转让专利

申请号 : CN201880084815.9

文献号 : CN111601684A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : N.拉吉库马尔P.勒格N.哈德逊K.尚卡尔R.赫斯默

申请人 : X开发有限责任公司

摘要 :

用于在机器人之间共享学习的信息的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。在一些实现方式中,机器人获得指示物体的特性的传感器数据。机器人为物体确定分类并且利用由该机器人存储的机器学习模型为物体生成嵌入。机器人存储生成的嵌入和指示对物体的分类的数据。机器人将生成的嵌入和指示分类的数据发送到服务器系统。机器人从服务器系统接收由第二机器人生成的嵌入和相应的分类。机器人将接收的嵌入和相应的分类存储在机器人的本地缓存中。机器人随后可使用缓存中的信息来识别物体。

权利要求 :

1.一种由计算机实现的方法,包括:

由机器人获得指示物体的特性的传感器数据;

由所述机器人为所述物体确定分类;

由所述机器人利用由所述机器人存储的机器学习模型为所述物体生成第一嵌入;

由所述机器人在所述机器人的本地缓存中存储生成的第一嵌入和指示对所述物体的分类的数据;

由所述机器人通过通信网络向服务器系统发送生成的第一嵌入和指示所述分类的数据;

由所述机器人通过所述通信网络从所述服务器系统接收第二嵌入和相应的分类,其中接收的第二嵌入是由第二机器人生成的并且对应于第二物体;并且由所述机器人将接收的第二嵌入和相应的分类存储在所述机器人的本地缓存中。

2.如权利要求1所述的由计算机实现的方法,还包括:由所述机器人使用所述本地缓存中的第一嵌入或第二嵌入来认识所述机器人的环境中的一个或多个物体。

3.如权利要求2所述的由计算机实现的方法,其中由所述机器人使用所述本地缓存中的第一嵌入或第二嵌入来认识所述机器人的环境中的一个或多个物体包括:由所述机器人生成描述所述机器人的环境中的特定物体的传感器数据;并且由所述机器人利用所述机器学习模型和描述所述特定物体的传感器数据为所述特定物体生成嵌入;

由所述机器人将所述特定物体的嵌入与所述第一嵌入和所述第二嵌入相比较;并且由所述机器人基于所述特定物体的嵌入与所述第一嵌入和所述第二嵌入的比较来为所述特定物体指派分类。

4.如任何在前权利要求所述的由计算机实现的方法,其中所述机器学习模型是第一机器学习模型,所述方法还包括:由所述机器人通过所述通信网络从所述服务器系统接收第二机器学习模型;

由所述机器人使用所述第二机器学习模型来认识一个或多个物体;并且从所述机器人的本地缓存中去除利用所述第一机器学习模型生成的嵌入。

5.如任何在前权利要求所述的由计算机实现的方法,其中发送生成的嵌入包括指定生成的嵌入来与其他机器人共享。

6.如权利要求4所述的由计算机实现的方法,其中指定生成的嵌入来与其他机器人共享包括:带着指定所述嵌入应当被共享的标签或元数据发送生成的嵌入或者利用用于共享嵌入的应用编程接口发送生成的嵌入。

7.如任何在前权利要求所述的由计算机实现的方法,还包括由所述机器人存储用于生成到用于生成所述嵌入的机器学习模型的输入的传感器数据。

8.如任何在前权利要求所述的由计算机实现的方法,其中利用由所述机器人存储的机器学习模型为所述物体生成所述第一嵌入包括:基于利用所述机器学习模型处理从所述物体的传感器数据提取的特征数据来生成所述第一嵌入。

9.如权利要求8所述的由计算机实现的方法,其中所述机器学习模型是神经网络模型,并且其中所述第一嵌入是从所述神经网络模型的输出层处的输出得出的。

10.如权利要求8所述的由计算机实现的方法,其中所述机器学习模型是神经网络模型,并且其中所述第一嵌入是从指示所述神经网络模型的隐藏层处的激活的数据得出的。

11.一种机器人,包括:

一个或多个处理器;以及

存储指令的一个或多个机器可读介质,所述指令当被所述一个或多个处理器执行时使得所述机器人执行操作,所述操作包括:由所述机器人获得指示物体的特性的传感器数据;

由所述机器人为所述物体确定分类;

由所述机器人利用由所述机器人存储的机器学习模型为所述物体生成第一嵌入;

由所述机器人在所述机器人的本地缓存中存储生成的第一嵌入和指示对所述物体的分类的数据;

由所述机器人通过通信网络向服务器系统发送生成的第一嵌入和指示所述分类的数据;

由所述机器人通过所述通信网络从所述服务器系统接收第二嵌入和相应的分类,其中接收的第二嵌入是由第二机器人生成的并且对应于第二物体;并且由所述机器人将接收的第二嵌入和相应的分类存储在所述机器人的本地缓存中。

12.如权利要求11所述的机器人,还包括:

由所述机器人使用所述本地缓存中的第一嵌入或第二嵌入来认识所述机器人的环境中的一个或多个物体。

13.如权利要求12所述的机器人,其中由所述机器人使用所述本地缓存中的第一嵌入或第二嵌入来认识所述机器人的环境中的一个或多个物体包括:由所述机器人生成描述所述机器人的环境中的特定物体的传感器数据;并且由所述机器人利用所述机器学习模型和描述所述特定物体的传感器数据为所述特定物体生成嵌入;

由所述机器人将所述特定物体的嵌入与所述第一嵌入和所述第二嵌入相比较;并且由所述机器人基于所述特定物体的嵌入与所述第一嵌入和所述第二嵌入的比较来为所述特定物体指派分类。

14.如权利要求11-13的任何一项所述的机器人,其中所述机器学习模型是第一机器学习模型,还包括:由所述机器人通过所述通信网络从所述服务器系统接收第二机器学习模型;

由所述机器人使用所述第二机器学习模型来认识一个或多个物体;并且从所述机器人的本地缓存中去除利用所述第一机器学习模型生成的嵌入。

15.如权利要求11-14的任何一项所述的机器人,其中发送生成的嵌入包括指定生成的嵌入来与其他机器人共享。

16.存储指令的一个或多个非暂态机器可读介质,所述指令当被一个或多个处理设备执行时使得机器人执行操作,所述操作包括:由所述机器人获得指示物体的特性的传感器数据;

由所述机器人为所述物体确定分类;

由所述机器人利用由所述机器人存储的机器学习模型为所述物体生成第一嵌入;

由所述机器人在所述机器人的本地缓存中存储生成的第一嵌入和指示对所述物体的分类的数据;

由所述机器人通过通信网络向服务器系统发送生成的第一嵌入和指示所述分类的数据;

由所述机器人通过所述通信网络从所述服务器系统接收第二嵌入和相应的分类,其中接收的第二嵌入是由第二机器人生成的并且对应于第二物体;并且由所述机器人将接收的第二嵌入和相应的分类存储在所述机器人的本地缓存中。

17.如权利要求16所述的一个或多个非暂态机器可读介质,还包括:由所述机器人使用所述本地缓存中的第一嵌入或第二嵌入来认识所述机器人的环境中的一个或多个物体。

18.如权利要求17所述的一个或多个非暂态机器可读介质,其中由所述机器人使用所述本地缓存中的第一嵌入或第二嵌入来认识所述机器人的环境中的一个或多个物体包括:由所述机器人生成描述所述机器人的环境中的特定物体的传感器数据;并且由所述机器人利用所述机器学习模型和描述所述特定物体的传感器数据为所述特定物体生成嵌入;

由所述机器人将所述特定物体的嵌入与所述第一嵌入和所述第二嵌入相比较;并且由所述机器人基于所述特定物体的嵌入与所述第一嵌入和所述第二嵌入的比较来为所述特定物体指派分类。

19.如权利要求16-18的任何一项所述的一个或多个非暂态机器可读介质,其中所述机器学习模型是第一机器学习模型,还包括:由所述机器人通过所述通信网络从所述服务器系统接收第二机器学习模型;

由所述机器人使用所述第二机器学习模型来认识一个或多个物体;并且从所述机器人的本地缓存中去除利用所述第一机器学习模型生成的嵌入。

20.如权利要求16-19的任何一项所述的一个或多个非暂态机器可读介质,其中发送生成的嵌入包括指定生成的嵌入来与其他机器人共享。

说明书 :

在机器人之间共享学习的信息

技术领域

[0001] 本说明书概括而言涉及在机器人之间共享学习的信息。

背景技术

[0002] 机器人可被配置为执行多种任务。机器人一般需要某种形式的感知来完成任务,例如对物体的认识或识别。机器人可遇到它们的编程或训练没有使它们准备好适当应对的物体和情形。例如,虽然机器人可能够认识许多不同类型的物体,但有可能机器人将可能遇到其不认识的新物体。

发明内容

[0003] 在一些实现方式中,机器人可执行过程来从其遇到的情形中学习新信息和新能力。本文公开的技术可使得机器人能够纳入新信息,使得机器人几乎瞬时从用户反馈或其他信息来源学习。例如,机器人可具有本地缓存,其中存储了某些类型的学习的信息。当机器人获取新信息,例如对于先前未知的物体的分类时,机器人可将新信息的表示存储在缓存中以使得该信息立即可供机器人使用。此技术可允许机器人的接近瞬时的学习,因为纳入新信息,例如生成表示并且将其保存在由机器人系统访问的缓存中的计算需求是极低的。例如,该表示可能已经作为机器人的连续机载推断过程的一部分被计算。结果,当用户向机器人提供先前未知物体的分类时,机器人可存储该信息并且以最低延迟将其应用到当前和未来的任务。
[0004] 此外,个体机器人可与其他机器人共享学习的信息,允许了机器人的机群中的每个机器人从机群中的所有机器人迅速地获取组合的学习。学习的信息可被频繁地分发给机器人,而没有对机器人使用的机器学习模型的重训练或修改。例如,机群中的每个机器人可与服务器系统通信以上传最近学习的信息的表示,例如机器人观察到的并且先前不能识别、但此后已学习来适当分类的物体的分类。服务器系统收集表示、处理它们并且将表示的组合集合分发给机群中的机器人。学习、上传和分发由机器人学习的信息的表示的这个过程可被持续地执行,例如每小时、每日或者每星期地周期性执行,或者被连续地执行,即表示一旦被学习就在机器人之间被分发。在机器人之间共享表示的过程允许了以迅速且高效的方式的遍及机群的学习。具体地,与更新机器学习模型以反映同样的信息将会花费的时间相比,新学习的信息可被机器人在短得多的时间中分发和使用。
[0005] 从多个机器人收集的学习的信息可用于重训练或更新机器学习模型,机器学习模型随后可被分发到每个机器人。例如,服务器可周期性地更新机器人使用的机器学习模型,更新的间隔远长于在机器人之间共享学习表示的间隔。例如,如果表示在机器人之间被每日更新,则机器学习模型可被每星期、每两星期或者每月更新。更新的机器学习模型可纳入在先前间隔中(例如,上星期或上月)在整个机群中发生的机器人学习的组合集合。
[0006] 在一些实现方式中,服务器可每星期或者每两星期向机群发送更新的机器学习模型。服务器也可在每次机器人学习的新集合被服务器接收到时以嵌入的形式或者以其他表示更频繁地提供更新的学习的信息。机群中的机器人可将这个学习的信息存储在缓存中并且将其与机器学习模型的最新近版本一起使用。为缓存接收新的信息可在每日或者在每次机器人学习的新集合被提供给机器人时细调机群中的每个机器人的整体感知系统的行为。从而,机器人可使用更新的机器学习模型来纳入来自机群的学习,并且可清除其本地缓存,因为缓存的信息已被纳入到模型中。
[0007] 一般而言,机器人的知识和能力的许多方面可由例如神经网络之类的训练的机器学习模型来提供。虽然这些模型是强大的并且运行起来经常是高效的,但训练或更新机器学习模型经常是一个耗时且计算上密集的过程,并且训练过程频繁地要求训练数据的大集合有效。作为示例,神经网络经常被用迭代过程来训练,该迭代过程使用许多训练示例来确定适当的神经网络参数。在一些情况下,复杂的神经网络模型,例如被配置为识别数千个不同类型的项目的那种,可要求数日或者甚至数星期来训练,即使当使用分布式计算技术时也是如此。在许多实例中,个体机器人根本就没有电池电力或计算力来在合理量的时间中更新机器学习模型的训练,更不用说实时更新了。如果用户向机器人提供新物体的分类,理想情况将是机器人没有延迟地从目前开始保持并使用该分类,尤其因为用户可随后向机器人发出关于该物体的命令。
[0008] 如上文和下文进一步论述的,本技术可使得机器人能够将学习的信息,例如物体特性和相应的分类,编码为机器人的缓存中的离散表示。机器人可被设计为将该缓存用于其感知处理或其他处理中,使得保存表示允许了机器人立即将新信息应用到任务。从而,个体机器人可能够实时地学习和扩展其能力。此外,表示可被共享于机器人之间以允许机群中的所有机器人迅速且高效地获取和使用新信息。同时,在机器人使用共享的表示并从而已经受益于机群的集体学习的同时,远程计算系统可基于新学习的信息为机群更新机器学习模型。不时地,计算系统将更新的模型分发给机器人,其中更新的模型纳入了一段时间中在整个机群中汇编的学习。然而,由于表示的持续共享,机器人可在学习的信息被纳入到模型更新中之前很久就已经应用了学习的信息。
[0009] 在一些实现方式中,机器人学习的信息的表示可以是利用机器学习模型生成的嵌入。例如,嵌入可表示从神经网络模型的输出层或者从神经网络模型的隐藏层得出的信息。当输入信息的集合,例如描述物体的传感器数据,被提供到机器学习模型时,机器学习模型的处理可将信息编码为被直接用作嵌入的形式,或者被进一步处理来生成嵌入的形式。结果,嵌入可以是物体或其他观察的压缩表示,其中嵌入的具体值可取决于用于生成嵌入的机器学习模型的结构和训练状态。
[0010] 在一个一般方面中,一种方法包括:由机器人获得指示物体的特性的传感器数据;由机器人为物体确定分类;由机器人利用由机器人存储的机器学习模型为物体生成第一嵌入;由机器人在机器人的本地缓存中存储生成的第一嵌入和指示对物体的分类的数据;由机器人通过通信网络向服务器系统发送生成的第一嵌入和指示分类的数据;由机器人通过通信网络从服务器系统接收第二嵌入和相应的分类;其中接收的第二嵌入是由第二机器人生成的并且对应于第二物体;并且由机器人将接收的第二嵌入和相应的分类存储在机器人的本地缓存中。
[0011] 这些和其他实施例可各自可选地包括以下特征中的一个或多个,单独地或者组合地。例如,一个实施例包括所有以下特征的组合。
[0012] 在一些实现方式中,该方法包括,由机器人使用本地缓存中的第一嵌入或第二嵌入来认识机器人的环境中的一个或多个物体。
[0013] 在一些实现方式中,该方法还包括由机器人生成描述机器人的环境中的特定物体的传感器数据。
[0014] 在一些实现方式中,该方法包括由机器人利用机器学习模型和描述特定物体的传感器数据为特定物体生成嵌入。该方法包括由机器人将特定物体的嵌入与第一嵌入和第二嵌入相比较。
[0015] 在一些实现方式中,该方法包括由机器人基于特定物体的嵌入与第一嵌入和第二嵌入的比较来为特定物体指派分类。
[0016] 在一些实现方式中,该方法包括由机器人通过通信网络从服务器系统接收第二机器学习模型。
[0017] 在一些实现方式中,该方法包括由机器人使用第二机器学习模型来认识一个或多个物体。
[0018] 在一些实现方式中,该方法包括从机器人的本地缓存中去除利用第一机器学习模型生成的嵌入。
[0019] 在一些实现方式中,该方法包括指定生成的嵌入来与其他机器人共享。
[0020] 在一些实现方式中,该方法包括带着指定该嵌入应当被共享的标签或元数据发送生成的嵌入或者利用用于共享嵌入的应用编程接口来发送生成的嵌入。
[0021] 在一些实现方式中,该方法还包括由机器人存储用于生成到用于生成嵌入的机器学习模型的输入的传感器数据。
[0022] 在一些实现方式中,该方法包括基于利用机器学习模型处理从物体的传感器数据提取的特征数据来生成第一嵌入。
[0023] 在一些实现方式中,机器学习模型是神经网络模型,并且第一嵌入是从神经网络模型的输出层处的输出得出的。
[0024] 在一些实现方式中,机器学习模型是神经网络模型,并且第一嵌入是从指示神经网络模型的隐藏层处的激活的数据得出的。
[0025] 在另一个一般方面中,一种方法包括:由一个或多个计算机从多个机器人接收物体分类示例,其中每个物体分类示例包括(i)机器人利用机器学习模型生成的嵌入,以及(ii)与该嵌入相对应的物体分类;由一个或多个计算机基于接收的物体分类示例的嵌入与其他嵌入的相似性来评估物体分类示例;由一个或多个计算机基于对嵌入的质量的评估来选择物体分类示例的子集;并且由一个或多个计算机将物体分类示例的子集分发到多个机器人中的机器人。
[0026] 实现方式可包括以下特征中的一个或多个。例如,在一些实现方式中,对于每个物体分类示例,嵌入是由机器人基于由该机器人生成的描述由该机器人的传感器检测到的物体的传感器数据来生成的,并且嵌入的相应物体分类为检测到的物体指示分类。各个分类示例的嵌入包括由不同机器人生成的嵌入,其中每个机器人使用具有特定训练状态的特定机器学习模型来生成嵌入。分发分类示例的子集包括将分类分发到多个机器人,每个机器人存储具有特定训练状态的同一特定机器学习模型的拷贝。
[0027] 在一些实现方式中,分发分类示例的子集包括向多个机器人中的每个机器人发送子集中的分类示例并且指定发送的分类示例被存储在每个机器人的本地缓存中。
[0028] 在一些实现方式中,分发分类示例的子集包括同步多个机器人中的机器人的本地缓存,使得多个机器人的每一者在该机器人的本地缓存中存储所选子集中的每个分类示例。
[0029] 在一些实现方式中,该方法包括:利用分类示例的所选子集训练第二机器学习模型并且将经训练的机器学习模型分发给多个机器人中的机器人。
[0030] 在一些实现方式中,训练第二机器学习模型包括生成用于生成嵌入的机器学习模型的经更新版本。分发经训练的机器学习模型包括分发机器学习模型的经更新版本作为对多个机器人中的每个机器人处存储的机器学习模型的替代。
[0031] 在一些实现方式中,该方法包括向多个机器人中的每个机器人提供从该机器人的本地缓存中去除分发的分类示例的指令。
[0032] 在一些实现方式中,该方法包括对于每个物体分类示例接收描述与该物体分类示例相对应的物体的传感器数据。训练第二机器学习模型包括基于为物体分类示例接收的传感器数据来训练第二机器学习模型。
[0033] 在一些实现方式中,该方法包括对于每个物体分类示例接收由机器人生成的描述与该物体分类示例相对应的物体的传感器数据。评估物体分类示例包括基于接收的传感器数据来评估分类示例的质量。
[0034] 在一些实现方式中,评估物体分类示例包括对于特定物体分类示例的特定嵌入确定该特定嵌入相对于具有与该特定物体分类示例相同的物体分类的一个或多个其他嵌入的相似性的水平。选择物体分类示例的子集包括基于确定相似性的水平满足阈值来选择特定物体分类示例来包括在子集中。
[0035] 在一些实现方式中,评估物体分类示例包括对于特定物体分类示例的特定嵌入确定该特定嵌入相对于具有与该特定物体分类示例不同的物体分类的一个或多个其他嵌入的相似性的水平。选择物体分类示例的子集包括基于确定相似性的水平满足阈值来从子集中排除该特定物体分类示例。
[0036] 在一些实现方式中,评估物体分类示例包括对于特定物体分类示例的特定嵌入确定该特定嵌入相对于一个或多个其他嵌入的相似性的水平,其中相似性的水平指示出在向量空间中该特定嵌入和一个或多个其他嵌入之间的距离。
[0037] 在一些实现方式中,评估物体分类示例包括对于特定物体分类示例的特定嵌入确定表示物体分类匹配与该特定物体分类示例相对应的物体的可能性的质量得分。选择物体分类示例的子集包括基于质量得分满足阈值来选择特定物体分类示例来包括在子集中。
[0038] 在一些实现方式中,评估物体分类示例包括对于特定物体分类示例的特定嵌入基于以下来确定质量得分:分析由多个机器人提供的传感器数据的质量水平;分析物体分类示例如何调整机器学习模型的整体准确性;并且分析由多个机器人提供的其他物体分类示例的质量的先前水平。
[0039] 在一些实现方式中,分析由多个机器人提供的传感器数据的质量的水平还包括:通过将传感器数据提供到机器学习模型来确定传感器数据和嵌入之间的匹配;将来自机器学习模型的输出嵌入与该嵌入相比较;将来自机器学习模型的输出分类标签与对应于该嵌入的物体分类相比较;并且响应于确定来自机器学习模型的输出分类标签不匹配对应于该嵌入的物体分类,重训练机器学习模型以检测嵌入并且产生匹配物体分类的正确分类标签。
[0040] 在另一个一般方面中,一种方法包括:由机器人存储利用第一机器学习模型生成的第一嵌入,其中机器人将第一嵌入存储在该机器人的缓存中,其中第一嵌入包括不与其他机器人共享的一个或多个第一私密嵌入;由机器人通过通信网络从服务器系统接收第二机器学习模型;由机器人为缓存中的一个或多个第一私密嵌入的每一者生成第二私密嵌入,其中第二私密嵌入的每一者是利用第二机器学习模型生成的;由机器人将第二私密嵌入添加到机器人的缓存;并且由机器人从机器人的缓存中去除一个或多个第一私密嵌入。
[0041] 实现方式可包括以下特征中的一个或多个。例如,在一些实现方式中,第一嵌入包括与服务器系统共享的一个或多个公共嵌入。该方法包括:确定特定嵌入是公共嵌入;并且在接收到第二机器学习模型之后,基于确定特定嵌入是公共嵌入而从机器人的缓存中去除该特定嵌入。
[0042] 在一些实现方式中,该方法包括由机器人存储用于生成一个或多个第一私密嵌入的传感器数据。为缓存中的一个或多个第一私密嵌入的每一者生成第二私密嵌入包括利用第二机器学习模型从存储的用于生成一个或多个第一私密嵌入的传感器数据生成第二私密嵌入的每一者。该方法还包括将第二私密嵌入存储在机器人的缓存中。
[0043] 在一些实现方式中,从存储的传感器数据生成第二私密嵌入包括通过向第二机器学习模型输入从用于为物体生成第一私密嵌入的传感器数据得出的特征值来为该物体生成第二私密嵌入。
[0044] 在一些实现方式中,该方法包括:由机器人访问与第一嵌入的特定嵌入相关联的元数据;并且通过对照由机器人存储的一个或多个共享规则分析与特定嵌入相关联的元数据来确定该特定嵌入是不与服务器系统共享的私密嵌入。
[0045] 在一些实现方式中,第一嵌入除了一个或多个第一私密嵌入以外还包括一个或多个第一公共嵌入。该方法包括由机器人将一个或多个第一公共嵌入提供到服务器系统并且不将一个或多个第一私密嵌入提供到服务器系统。
[0046] 在一些实现方式中,该方法包括:对于第一嵌入的每一者确定是否存储用于生成该第一嵌入的传感器数据,其中确定是否存储用于生成第一嵌入的传感器数据是基于该第一嵌入是私密的还是公共的;并且其于该确定,由机器人为一个或多个第一私密嵌入的每一者存储传感器数据,并且不为一个或多个第一公共嵌入存储传感器数据。
[0047] 在一些实现方式中,由第一机器学习模型生成的第一嵌入包括由机器人通过通信网络从服务器系统接收的一个或多个接收的嵌入。该方法还包括确定第一嵌入的特定嵌入是接收的嵌入之一;并且在接收第二机器学习模型之后,基于确定特定嵌入是接收的嵌入之一从缓存中去除该特定嵌入。
[0048] 在一些实现方式中,缓存是存储在机器人的数据存储设备上的本地缓存。
[0049] 在一些实现方式中,第一机器学习模型是第一神经网络模型,并且第二机器学习模型是第二神经网络模型。
[0050] 在一些实现方式中,该方法包括:由机器人获得描述物体的传感器数据;由机器人基于传感器数据为物体生成嵌入;由机器人确定要将该嵌入指定为私密嵌入还是公共嵌入;并且由机器人存储该嵌入和指定该嵌入是私密嵌入还是公共嵌入的数据。
[0051] 在一些实现方式中,确定要将该嵌入指定为私密嵌入还是公共嵌入包括:确定物体或机器人的位置;确定该位置在不共享信息的预定区域内;并且基于确定该位置在该预定区域内,将该嵌入指定为私密嵌入。
[0052] 在一些实现方式中,确定要将该嵌入指定为私密嵌入还是公共嵌入包括:确定由机器人观察到的物体的物体类型;确定该物体类型是物体类型的预定集合之一;并且基于确定该物体类型是物体类型的预定集合之一来确定要将该嵌入指定为私密嵌入。
[0053] 在一些实现方式中,确定要将该嵌入指定为私密嵌入还是公共嵌入包括:访问指示出对机器人获得的信息的共享的一个或多个限制的共享规则,其中该一个或多个限制对如下信息的共享进行限制:(i)由机器人在某个时间或场所观察到的信息,或者(ii)描述具有某个物体类型或物体特性的物体的信息;基于物体的传感器数据确定共享规则对于共享数据描述的物体限制信息的共享;并且基于确定共享规则对于该物体限制信息的共享,将该物体的嵌入指定为私密嵌入。
[0054] 在一些实现方式中,该方法包括接收用户输入,该用户输入指示出一个或多个标准,包括限制信息的共享的时间、场所、物体类型或者物体特性;并且存储将满足一个或多个标准的物体的嵌入指定为私密嵌入的共享规则。确定要将嵌入指定为私密嵌入还是公共嵌入包括确定该嵌入是否满足一个或多个标准。
[0055] 本公开的这些和其他方面的其他实施例包括相应的系统、装置和编码在计算机存储设备上的被配置为执行这些方法的动作的计算机程序。一个或多个计算机的系统可凭借安装在系统上的软件、固件、硬件或者它们的组合而如此配置,这些软件、固件、硬件或它们的组合在操作时使得系统执行这些动作。一个或多个计算机程序可凭借具有指令而如此配置,所述指令当被数据处理装置执行时使得该装置执行这些动作。
[0056] 本说明书的主题的一个或多个实施例的细节在附图和以下描述中记载。主题的其他特征、方面和优点将从描述、附图和权利要求中变得清楚。

附图说明

[0057] 图1是图示出用于在机器人之间共享学习的信息的系统的示例的框图。
[0058] 图2是图示出用于训练机器人来认识物体的系统的示例的框图。
[0059] 图3是图示出机器人认识物体的示例的框图。
[0060] 图4是图示出用于在机器人之间共享学习的信息的另一系统的示例的框图。
[0061] 图5是图示出用于向机器人提供更新的机器学习模型的系统的示例的框图。
[0062] 图6是图示出用于在机器人之间共享学习的信息的过程的示例的流程图。
[0063] 图7是图示出用于在机器人之间选择性地共享学习的信息的系统的示例的框图。
[0064] 图8是图示出用于评价机器人学习的信息的质量的系统的示例的框图。
[0065] 图9是图示出用于测试机器学习模型的系统的示例的框图。
[0066] 图10是图示出用于评价和共享机器人学习的信息的过程的示例的流程图。
[0067] 图11是图示出用于增强机器人学习的示例系统的图。
[0068] 图12是图示出用于在机器人的机群之间选择性地共享信息的示例系统的图。
[0069] 图13是图示出用于机器人对嵌入的重生成和存储的示例系统的图。
[0070] 图14是图示出用于增强机器人学习的过程的流程图。
[0071] 在各幅图中相似的标号和命名指示相似的元素。

具体实施方式

[0072] 图1是图示出用于在机器人之间共享学习的信息的系统100的示例的框图。系统100包括机器人104A-104D、客户端设备108、网络110、服务器系统112和数据库114。服务器系统112可包括在本地连接或者通过网络连接的一个或多个计算机,其中网络可包括一个或多个公共或私有网络并且可包括互联网。示例示出了与机器人104A-104D交互的人类用户106。图1的示例示出了住宅102中的机器人104A-104D,但机器人104A-104D可替换地位于不同的住宅中或者其他类型的建筑物或区域中。图1图示了可按指示的序列或者按另一序列执行的阶段(A)至(E)中的各种操作。
[0073] 一般而言,机器人指的是可能够至少部分自主地执行一系列动作的可编程机器。例如,机器人可能够执行涉及与机器人的物理周边交互或者改变物理周边(例如,布置或操纵物体)的任务。除了响应来自人类的输入和命令以外,机器人还可基于其编程和其检测到的条件自行发起动作。机器人可包括用于与其环境中的物体交互(例如,物理地操纵)的组件。例如,机器人可包括具有致动器来抓握或者以其他方式移动物体的臂。例如,致动器可以是具有手指状元件来抓握物体的机械手。机器人也可包括允许运动的组件。示例包括机动化元件,例如轮子、腿、连续轨道等等,以允许机器人从一个位置行进到另一个位置。机器人可包括导航组件,允许其设置行程并且沿着自引导的路径行进。机器人可包括感官能力,允许机器人感知其周围环境。机器人可包括身体组件,例如机壳和其他连接组件。身体组件可允许机器人组件相对于彼此的各种类型的运动,例如旋转、回转、移位等等。机器人可包括各种其他组件,例如为机器人供电的电池、发送器、接收器、传感器、数据处理器以及为机器人存储编程的指令的存储器。
[0074] 在图1的示例中,机器人的机群使用分布式学习来学习识别新物体。机器人机群不要求机群中的每个机器人被个体训练来识别新物体。相反,机器人机群采用分布式学习技术,其中一个机器人可学习识别物体并且产生与该物体相对应的嵌入。该机器人可通过通信网络以允许机群中的所有机器人识别新识别的物体的方式与其他机器人共享该嵌入。提供嵌入和相应的分类信息允许了接收数据的机器人即刻学习对该物体分类。该技术可使用机器学习模型来产生描述识别的物体的特性的嵌入。这可能是有益的,因为用户只需要训练一个机器人来识别物体,则不是每个机器人。此外,在机器人之间共享嵌入通过允许机器人在不必在每个机器人上重训练机器学习模型的情况下学习而节约了处理资源。
[0075] 可使用各种类型的机器学习模型的任何一者。示例包括神经网络、最大熵分类器、决策树、随机森林分类器、提升树、逻辑回归模型和强化学习模型。可利用有监督或无监督训练来训练机器学习模型。机器学习模型可具有基于各种不同示例来学习或训练的参数,这些示例可来自于多种来源。
[0076] 在一些实现方式中,可向机群中的所有机器人执行共享。或者,可向特定组织内的机器人执行共享。例如,机器人104A可与住宅相关联并且机器人104B可与工厂相关联。此外,可向特定域中的机器人执行共享。例如,机器人104C可以是医院机器人并且机器人104D可以是旅馆机器人。在一些实现方式中,可经由由服务器系统112管理的访问控制列表在机器人的特定群组之间执行共享。换言之,服务器系统112可选择性地仅在具有某些共性的机器人之间共享学习的信息的,所述共性例如是相同的硬件型号、相同的角色或职责、相同类型的位置、相同的拥有者、相同的群组或机群识别符,等等。
[0077] 在一些实现方式中,机器人机群中的每个机器人位于单个位置中,例如住宅102或工厂。在其他实现方式中,机器人机群中的机器人位于不同的位置或设置中。例如,机器人104A可位于住宅102中;机器人104B可位于在住宅102的街对面的住宅中;机器人104C可位于杂货店;并且机器人104D可位于机场。位于不同位置的机器人可通过通信网络110与彼此通信。机群中的机器人可表示分布在许多位置的机器人的大群组,例如由一厂商提供的所有机器人,这些机器人被许多不同用户在不同设置中拥有或使用。
[0078] 在一些实现方式中,机器人机群中的机器人被编程为协助家中的人类。例如,人类可向第一机器人发出指示命令以请求取回该人类的蜂窝电话。作为响应,第一机器人可在家中搜索人类的蜂窝电话,通过将蜂窝电话与其他家用物品相区分来识别蜂窝电话,并且将蜂窝电话返回给人类。虽然机器人可包括物体认识模型来使得机器人能够认识家用物品,但训练的模型可不能够对一些类型的物体分类。当物体认识模型没有使得机器人能够识别物体时,人类用户可就物体的特性训练第一机器人以允许第一机器人能够定位并返回该物体。一旦第一机器人已学习了识别物体,其就可与其他机器人共享学习的信息。然后,如果用户要求第二机器人取回相同物体或者相同类型的物体,则第二机器人可使用从第一机器人接收的数据来识别该物体。这样,即使第二机器人的感知模型没有认识出该物体并且即使第二机器人从未被直接训练来认识该物体,第二机器人也仍可基于来自第一机器人的共享学习来认识该物体。
[0079] 机器人机群之间的分布式学习的过程可通过在机器人之间共享嵌入来迅速地执行。嵌入可以是表示物体的特性或者物体的一种指纹的诸如向量、代码、文件或其他数据之类的值的集合。嵌入可通过向例如机器学习物体认识模型之类的感知模型提供描述物体的数据(例如,从描述物体的传感器数据提取的特征)来生成。例如,嵌入可以是表示物体的编码形式的特性的多维向量或数字,其中编码是基于利用训练的机器学习对物体特征数据的处理的。遇到新物体并且学习正确分类的机器人与机群的其余部分共享关于该物体的嵌入,使得每个机器人不需要被个体地训练来识别该物体。结果,当人类训练单个机器人来识别物体时,系统使得其他机器人也能够识别该物体,这是由于接收相应的嵌入和分类信息。
[0080] 例如,人类可训练第一机器人识别咖啡杯。人类可将咖啡杯举起在第一机器人面前以让第一机器人的传感器捕捉咖啡杯的特性。第一机器人可从各种角度获取咖啡杯的图像以确定咖啡杯的特性。第一机器人随后可使用这些特性来产生嵌入,该嵌入与指明该嵌入表示咖啡杯的数据一起被存储在第一机器人的本地缓存中。一旦嵌入和分类被存储,第一机器人就将能够即刻使用该新信息来在未来认识杯子。结果,下次人类请求第一机器人取回咖啡杯时,第一机器人可通过将对于咖啡杯存储的嵌入与第一机器人从描述第一机器人的当前环境的实况传感器数据产生的嵌入相比较来识别并取回咖啡杯。
[0081] 一般而言,机器人学习技术允许了单个机器人的立即本地学习,以及与其他机器人的共享学习。用户可从供单个机器人上使用的项目的主列表(例如,知识图谱)解锁物体类型。如果在解锁物体类型之后,机器人仍不能正确地识别物体,则用户可教导机器人来对物体分类。这个过程可涉及向机器人展示物体类型的示例或“实例”。这个学习的示例被称为“教导”并且可被表达为嵌入和相应的分类。教导在被教导的机器人上立即起作用。此外,机器人周期性地向服务器上传其接收的教导。其他机器人也做同样的事。来自所有机器人的教导被服务器聚集并且现有的模型被细调。细调以两种方式发生。首先,教导的集合,例如嵌入和分类,可在整个机群中被每日推送到所有机器人。机群中的所有机器人现在可基于来自个体机器人的教导来检测更新的物体。第二,被完全重训练的模型,例如基于来自所有机器人的聚集教导被重训练的机器学习模型,可被每星期或每两星期推送给机器人。
[0082] 当机器人遇到未知的物体时,用户可与机器人交互以从已知物体类型的主列表解锁物体类型(例如,使之可供使用)。用户将这个解锁的物体类型关联到机器人遇到的未知物体。机器人现在可检测这个新解锁的物体类型的物体。一般而言,机器人可使用被设计为对许多类型的物体分类的感知系统。然而,为了降低假阳性的风险,个体机器人可被配置为最初只检测物体类型的总集合的子集。例如,物体类型的主列表可包括一万或更多不同的物体类型,而个体机器人可让某个子集,例如这些物体类型中的仅一百或者一千个,被解锁并且可用来容易检测。如果机器人没有正确地检测物体,则用户可被展示一界面以从主列表中选择适当的项目,从而其将被解锁并且可供机器人检测。这可允许用户通过诸如应用或网页之类的远程界面来扩展其机器人可检测的物体的范围
[0083] 然而,在一些实例中,简单地解锁物体类型可不足以允许机器人可靠地检测物体并且避免假阳性。为了改善性能,尤其是纠正机器人的差错,用户可识别物体类型的实例并且使得样本图像或其他传感器数据能够被获取。例如,用户可使用他的蜂窝电话来从不同侧面捕捉物体的图像,同时跟踪每个图像的相机位置。作为另一示例,在用户向机器人指出物体之后,机器人获取适当的图像。在新物体的教导期间,机器人可确保物体被从所有侧面、在各种距离以及在不同的光照条件下看见。为此,机器人可能需要:行驶到物体周围的不同位置来以不同的照明看到物体的不同侧面;摇动和倾斜机器人的头部(例如,传感器组装件)来在图像的不同部分中捕捉物体,这导致了由透视变形引起的物体的2D外观的变化;摇动和倾斜头部以捕捉由整体图像曝光引起的颜色/亮度的变化。
[0084] 图像快照和相应的嵌入可被不断地生成,直到机器人确定物体可再次被确定性地识别为止。当信息与模型的现有表现充分不同时,嵌入可被保存为新的学习信息。例如,在物体的标准嵌入向量和最近教导示例的嵌入向量之间的向量距离超过阈值之后,嵌入可被保存为新的学习示例。此时,新的嵌入向量被添加为教导的示例,无论是对于不在主列表中的新物体类型、对于被锁定的物体类型还是为了为已经解锁的物体类型细化差错。
[0085] 用户可向机器人指出停止识别来自提供的列表的一个或多个先前学习的物体类型。用户可取消选择如提供的列表中所示的任何先前学习的物体类型。例如,用户可发出语音命令,与和机器人通信的客户端设备108的显示器交互,或者与机器人的屏幕交互,来取消选择任何先前学习的物体类型以不识别。用户可取消选择先前学习的物体类型,因为该物体不再存在于住宅102中。此外,用户可能希望取消选择一个或多个先前学习的物体类型,因为住宅102包括该物体类型的新版本。例如,用户可从提供的列表中取消选择铲子,因为用户带了一把更新的铲子到住宅102。更新的铲子包括机器人利用来自先前学习的铲子物体的信息可不能够检测的不同样子的头部和手柄形状。
[0086] 响应于从用户接收到取消选择,机器人可锁定取消选择的物体类型。在一些实现方式中,机器人可在存储器中存储先前学习的物体类型的锁定列表。机器人将不会识别锁定列表中列出的任何物体。例如,如果机器人取回更旧的铲子模型,则机器人将不能够将更旧的铲子模型识别为铲子。
[0087] 在一些实现方式中,用户可解锁先前锁定的学习的物体类型。用户可请求机器人提供包括锁定的和解锁的物体类型的先前学习的物体类型的列表。机器人可将该列表提供到本地显示器或者提供到客户端设备108的显示器。用户可选择解锁先前学习的物体类型,使得机器人可识别先前学习的物体类型。用户可在用户将先前学习的物体类型带到住宅102时试图解锁这些物体类型。例如,用户可确定更旧的铲子模型表现得比更新的铲子模型更好,并且因此,丢弃更新的铲子模型。在此情况下,用户解锁机器人对提供的列表中的更旧铲子模型的识别。机器人将更新的列表存储在存储器中。
[0088] 在一些实现方式中,对先前学习的物体类型的选择和取消选择仅适用于单个机器人。机器人的先前学习的物体类型的列表是每个特定机器人本地的并且每个本地列表不被发送到其他机器人。列表保持本地,使得每个用户可个性化每个个体机器人来检测和识别对于该机器人的设置最适用的物体类型。个性化允许了用户在指示特定机器人识别特定的感兴趣项目时是具体的。
[0089] 此外,第一机器人可通过通信网络发送其本地缓存中的嵌入,使得这些嵌入可被与其他机器人共享来允许其他机器人能够识别类似的物体。例如,第一机器人可向第二机器人和第三机器人发送其本地缓存中存储的允许第一机器人识别咖啡杯的嵌入。在第二机器人和第三机器人接收到用于识别咖啡杯的嵌入之后,第二和第三机器人可在在该机器人的环境中观察到咖啡杯的情况下即刻识别咖啡杯。类似地,第二机器人可向第一机器人和第三机器人传送允许机器人识别物体(例如帽子)的嵌入。结果,一旦第一机器人和第三机器人接收并在其各自的本地缓存中存储描述帽子的嵌入,第一和第三机器人就将能够在用户请求的情况下识别和取回帽子。
[0090] 在一些实现方式中,机群中的每个机器人存储可用于产生嵌入的机器学习模型。机器学习模型可接收物体的特性的输入并且将输出表示描述物体的紧凑编码表示的嵌入。
嵌入是基于通过机器学习的数据的传播来生成的,因此响应于输入数据的集合而生成的嵌入是机器学习模型的结构和训练状态的函数。结果,为了让每个机器人使用由其他机器人生成的嵌入,每个机器人中的机器学习模型可以是相同的,例如具有相同的结构和训练状态。这允许了机器人将该机器人生成的嵌入与其他机器人提供的嵌入相比较并且具有有意义的结果。否则,如果两个机器人使用不同的机器学习模型,则两个机器人对于完全相同的物体可产生非常不同的嵌入,并且机器人将不能够正确地解读接收的嵌入。
[0091] 系统可包括与机器人分离的服务器,其管理对于机器人的机器学习模型的训练和版本控制。服务器可周期性地向机器人发送更新的机器学习模型并且确保机器人具有相同的模型。在一些实现方式中,服务器可在接收到来自机器人的新嵌入时更新机器学习模型。服务器可将更新的机器学习模型发送到每个机器人。可按规律的间隔提供更新的机器学习模型,例如每两星期、每月等等,或者可根据需要提供更新的模型。在许多机器人间具有共同的相同机器学习模型可提供若干个优点。例如,训练模型的计算花费可在服务器处对于每个模型更新进行一次,这避免了个体机器人为模型训练花费电力和计算资源的需要。分发相同的更新模型也与机器人共享了机器人机群的组合学习。所有机器人接收到提供更大认识能力的更新模型,允许了每个机器人的性能以标准化且可预测的方式改善。
[0092] 系统100图示了在机器人之间共享物体识别能力的技术。例如,该示例图示了机器人104B识别物体,生成表示该物体的嵌入118,并且与其他机器人104A、104C和104D共享嵌入118和附加数据。该示例还示出了服务器系统112训练机器学习模型以添加识别由共享的嵌入表示的物体的能力,并且服务器系统112将经训练的机器学习模型130分发给机器人104A-104D。
[0093] 图1中所示的处理实现了两个重要任务。第一,与要求用户个体训练每个机器人如何识别物体的系统不同,服务器系统112聚集并且共享来自机器人104A-104D的每一者的嵌入以使得只要求一个机器人学习识别新物体。作为响应,服务器系统112在机器人之间分发聚集的嵌入,使得每个机器人104A-104D可识别由聚集的嵌入表示的新物体,即使人类从来没有训练过其他机器人104A-104D识别新识别的物体。
[0094] 第二,服务器系统112可将新训练的机器学习模型130分发给机器人104A-104D的每一者,而无需每个机器人重训练其自己的本地机器学习模型。结果,系统100允许了学习,同时避免了每个机器人104A-104D执行训练机器学习模型所要求的计算的需要。
[0095] 在一些实现方式中,服务器系统112可在机器人104A-104D的每一者上本地存储机器学习模型的拷贝。机器人104A-104D和服务器系统112每一者具有相同的机器学习模型来确保物体的分布式学习在整个机器人机群中是统一的。如果用户训练机器人104A识别新物体,例如钢笔,则机器人104A将钢笔的特性输入到产生嵌入作为输出的本地机器学习中。嵌入输出表示钢笔物体的表征或指纹。此外,用户可向机器人104A提供描述由嵌入表示的物体的类型的分类标签。分类标签可以是将该嵌入标记为“钢笔”的听觉或文本输入。分类标签与嵌入一起被存储在机器人104A的本地缓存中。或者,机器人104A可从存储在机器人104A的本地缓存中的先前识别的钢笔物体来确定嵌入的分类标签。
[0096] 在一些实现方式中,机器人104A将产生的嵌入和分类标签发送到服务器系统112以存储在数据库114中。数据库114可包括与由机器人产生的嵌入相对应的分类标签的表格。数据库114也可包括传感器数据、从传感器数据提取的特征数据或者用于生成嵌入的其他信息。服务器系统112可利用新接收的特征数据来训练机器学习模型。服务器系统112训练它的机器学习的拷贝以能够在后续过程中认识新物体。在利用各种机器人104A-104D的嵌入来训练之后,服务器系统112将经训练的机器学习模型130发送到机器人104A-104D的每一者。机器人104A-104D的每一者擦除其当前本地存储的机器学习模型并且利用来自服务器系统112的经更新的、新训练的机器学习模型130来替换它并且清除其各自的本地缓存。此系统100的示例在下文进一步描述。
[0097] 在阶段(A)期间,用户106指示机器人104B取回杯子116。用户106向机器人104B说出命令,例如,“机器人,请取回我的杯子”。说出的话语可包括针对每个机器人104的各种类型的短语和/或指令。如果机器人104B不理解说出的话语,则机器人104B可请求用户106重复该指令。例如,机器人104B可利用话音识别来处理说出的话语以确定指令的上下文。
[0098] 机器人104B首先使用其感知模型来尝试识别杯子。如果机器人104B在其即时环境中或者在其住宅的内容的地图中发现杯子,则机器人104B可定位杯子116并且执行请求的命令。然而,如果机器人104B确定其无法找到杯子116,或者其分类模型不具有认识提及的物体的能力,则机器人104B可说道“哪个物体是“我的杯子”?”来响应用户106。作为响应,用户106可采取一个或多个动作来训练机器人104B识别杯子116。
[0099] 在一些实现方式中,用户106可训练机器人104B识别杯子116。例如,用户可指向杯子116,并且机器人104B可移动来从杯子116的不同侧面捕捉图像。作为另一示例,用户106可在机器人104B面前举起杯子116,从而机器人的传感器捕捉并学习杯子116的特性。机器人104B可从各种角度观察杯子116以学习杯子116的各种特性。举例来说,这些特性可包括杯子的形状、颜色、大小、轮廓和纹理。此外,机器人104B可利用捕捉红、蓝、绿和深度数据的RGBD传感器。此信息——可能与机器人捕捉的LIDAR、3D深度数据或雷达数据相结合——可允许机器人104B确定杯子116的三维形状和体积。机器人104B也可在分析杯子116的同时捕捉音频数据或其他数据。机器人104B可包括传感器,举例来说,例如相机、LIDAR传感器、邻近传感器、红外传感器、加速度计、触摸传感器、麦克风、深度相机和位置传感器。可使用其他类型的传感器,并且先前提及的传感器类型是作为示例描述的。
[0100] 在阶段(B)期间,机器人104B处理关于物体的传感器数据。例如,在用户已为机器人104B识别了杯子116并且机器人已为杯子116捕捉了图像或其他传感器数据之后,机器人104B处理传感器数据以识别物体的特性。机器人104B从所获得的物体的特性生成特征数据
122。特征数据122可包括来自传感器的形状、颜色、大小、轮廓、深度和纹理数据的表示。机器人104B提供特征数据122作为到其本地机器学习物体认识模型的输入。
[0101] 本地机器学习物体认识模型可以是包括输入层、输出层和一个或多个隐藏层的神经网络。在一些实现方式中,物体认识模型的主要目的是认识物体,而不仅仅是产生嵌入。例如,物体认识模型可被配置为提供表示在该模型被配置为认识的许多类型的物体上的概率分布的得分。例如,如果模型被训练来认识10000个不同类型的项目,则该模型可以有具有10000个元素的输出层,每个元素对应于不同类型的项目。在输出层处为每个元素生成的值可指示出提供到模型的输入特征数据表示相应的物体类型的概率。也可使用其他模型配置,包括主要或唯一目的是生成嵌入的专用编码网络。
[0102] 随着机器学习模型处理输入特征数据,模型生成可用于为由输入特征数据描述的物体得出嵌入118的信息。例如,嵌入118可以是在神经网络的输出层处提供的值的集合。作为另一示例,嵌入118可以是表示神经网络的隐藏层处的激活的值的集合,例如最终隐藏层处的节点的激活的集合。作为另一示例,函数或变换可被应用到从模型的输出层和/或隐藏层得出的信息来生成嵌入118。除了神经网络以外,其他类型的机器学习模型的输出,也可用于生成嵌入。
[0103] 嵌入118表示杯子116的特性的编码表示。一般而言,不同物体的嵌入可各自具有共同的格式和大小,例如每个嵌入可以是128单元向量,例如其中每个单元包括64比特数据值。在另一示例中,嵌入可以是表示物体的256单元嵌入。256单元嵌入可以比128单元嵌入指示表示物体的更高保真度嵌入,但代价是利用更多存储器。可为由机器人104B观察到的每个物体利用本地机器学习生成嵌入。然而,机器人104B不为物体认识模型已经能够认识的物体在其缓存中存储嵌入。相反,缓存被用于为新学习的物体存储嵌入,或者在物体认识模型不能适当地认识物体时存储从其他机器人接收的表示新学习的物体的嵌入。从而,缓存一般用于为物体认识模型未被训练来检测的物体存储嵌入,或者用于纠正物体认识模型对物体不正确地分类的差错。缓存中的嵌入和分类信息可补充被训练的机器学习模型的认识能力,并且甚至推翻模型作出的不正确分类。
[0104] 在一些实现方式中,用户106可为机器人104B产生的嵌入118提供分类标签120。例如,机器人104B可请求用户106为机器人不能认识的物体提供分类标签120。用户106可以各种方式的任何一种提供分类标签120,例如语音输入到机器人,或者将信息输入到客户端设备108,例如与每个机器人104通信的电话或计算机。客户端设备108可通过任何通信协议,例如蓝牙或Wi-Fi,与机器人104A-104D通信。例如,用户106可将分类标签120“杯子”键入到客户端设备108中。或者,用户可说出被客户端设备108检测到的话语,如图1中所示,说道:“这是“杯子””。在其他实现方式中,用户106可直接与机器人104B通信以利用对机器人104B的文本输入或说话来提供分类标签120。
[0105] 在一些实现方式中,用户106可向机器人104A-104D提供听觉教导。听觉教导可纳入例如机器人104A理解的先前已知的分类标签以便理解听觉教导。例如,机器人104A可包括与“啤酒杯”相对应的嵌入和与“啤酒斯坦(beer stein)”物体相对应的另一嵌入。如果用户106指示机器人104A取回“啤酒斯坦”,则机器人104A将知道将“啤酒杯”与“啤酒斯坦”关联起来并且取回“啤酒斯坦”物体。
[0106] 作为响应,机器人104B将产生的嵌入118、相应的分类标签120以及特征数据122存储在机器人104B的本地缓存中。在一些实现方式中,对于单个分类标签121可存储多个嵌入,以示出相同类型的项目的不同示例。机器人104B可捕捉从各种角度示出物体的特性的传感器数据。机器人捕捉的物体的每个角度产生不同的传感器数据,该传感器数据可被提供给本地机器学习以产生不同的嵌入。作为另一示例,物体的多个视图可用于生成表示物体的三维方面的单个嵌入。在一些实现方式中,机器人可观察相同类型的多个物体,并且使用物体类型的不同实例来产生不同的嵌入。例如,住宅102可具有不同形状和大小的多支钢笔,但其中每一者仍是“钢笔”分类的有效示例。结果,机器人104B可为“钢笔”分类存储多个嵌入,其中每个嵌入表示由机器人104B观察到的不同物理钢笔。
[0107] 此外,机器人104B可存储与分类标签120和嵌入118相对应的附加元数据。机器人104B可为在机器人104B上存储的当前机器学习模型存储版本代码。版本代码号描述用于生成嵌入118的当前机器学习的状态。例如,版本可以是版本号“1.0”或者与安装机器学习模型的时间相对应的数据。机器人104B也可存储与对应于嵌入的物体所位于之处相对应的位置信息。位置信息可包括位置的类型(例如,家、商店、图书馆等等,或者在家中的客厅、厨房、餐厅等等)、位置的GPS坐标以及日期/当日时间。例如,用户106可利用客户端设备108或者通过直接与机器人104B交互来将位置的类型提供给机器人104B。例如,位置的类型可以是“厨房”
[0108] 在一些实现方式中,附加元数据也可包括对于机器人104B是如何确定所识别的物体的分类的描述。例如,分类可以是利用用户输入确定的,例如用户106将分类标签120输入到机器人。或者,分类可以是由机器人104B自身确定的。例如,机器人104B可在其移动经过住宅102的每个房间时扫描一个或多个物体。当扫描物体时,机器人104B将物体的特性作为输入提供到机器人104B的本地机器学习模型。本地机器学习模型的输出产生描述物体的表示的嵌入,例如嵌入118。机器人104B可将嵌入118输出与其本地缓存中的存储的嵌入相比较。如果机器人104B确定产生的嵌入与本地存储中的嵌入的至少一者相似匹配,则机器人104B可将产生的嵌入与来自本地缓存的分类标签一起存储在本地缓存中。这个过程将在下文中进一步描述。
[0109] 在一些实现方式中,附加元数据可包括与识别了物体的机器人104B相对应的标识。例如,机器人104B的标识可包括标识号,例如“0001”,来识别机器人104B。附加元数据可包括机器人104B的群组ID和拥有者ID号。群组ID号指定机器人104B属于可包括其他机器人的群组。例如,群组ID号2可指定机器人104B在具有机器人104A和机器人104C的群组中。拥有者ID号将机器人104B指定给特定的拥有者。
[0110] 在一些实现方式中,附加元数据还可包括机器人类型。机器人类型可指示出机器人的物理型号、机器人的角色或者对机器人的目的的描述。即使机器人在物理上是相同或相似的,其编程和功能也可以是不同的。例如,用户106可将机器人104B指定为是“厨房机器人”并且将机器人104A指定为是“高尔夫机器人”。其他机器人类型是可能的,例如“旅馆机器人”、“医院机器人”、“仓库机器人”和“车库机器人”。这些机器人可被不同地训练,以更好地履行其各自的角色。因为它们执行不同类型的任务,所以一种类型的机器人学习的信息和能力对于另一类型的机器人可能不是始终适用或有帮助的。通过利用相应的机器人类型来标记嵌入,服务器系统112可选择性地共享嵌入,使得机器人接收对于其机器人类型适用的嵌入(例如,由相同机器人类型中的其他机器人生成的那些),而不接收不适用的嵌入。
[0111] 在阶段(C)期间,机器人104B将嵌入118和相应的分类标签120通过网络110发送到服务器系统112。机器人104B也可发送相应的特征数据122或者用于生成嵌入118的原始传感器数据,以及关于嵌入118或机器人104B的任何元数据。机器人104B可利用对服务器系统112的对目的地的指示来标记嵌入118。例如,标记可包括指示,指出嵌入是“新的”,例如表示模型不能够认识的新学习的分类,并且指出应当与其他机器人共享该信息。服务器系统
112确定新的嵌入和分类可被分发给其他机器人104A、104C和104D。作为另一示例,机器人
104B的标签可包括指示,指出嵌入是“已知”的,例如嵌入是已经知道的分类的另一示例,这可用于细化模型。服务器系统112可使用与嵌入一起提供的特征数据122来细化和训练服务器系统112存储的机器学习模型。
[0112] 在一些实现方式中,服务器系统112可将接收的嵌入118、接收的相应分类标签120和特征数据122存储在数据库114中。数据库114可包括一个或多个表格,这些表格包括分类标签、描述物体的特征数据或传感器数据以及由系统100中的机器人产生的相应嵌入。数据库114可附加地存储与每个嵌入相对应的每个机器人生成的元数据。服务器系统112在训练本地机器学习模型时可从数据库114取回分类标签、特征数据和相应的附加元数据。
[0113] 在阶段(D)期间,服务器系统112将接收的嵌入、相应的分类标签和特征数据分发给其他机器人。在服务器系统112从机器人104B接收到嵌入118、相应的分类标签120和特征数据122之后,服务器系统112可确定嵌入118和相应的分类标签120表示可被分发给其他机器人的新学习。例如,服务器系统112可基于由机器人104B提供的指示标签确定嵌入118和相应的分类标签120应当被分发给其他机器人。例如,如果指示标记读起来是“新的”,则服务器系统112的下一个动作是将嵌入118和相应的分类标签120分发给机器人104A、104C和104D。此外,服务器系统112可将附加元数据与嵌入118和相应的分类标签120一起发送给机器人104A、104C和104D。
[0114] 在一些实现方式中,服务器系统112可单基于接收到的分类标签120确定嵌入118应当被发送给其他机器人。例如,服务器系统112可将接收到的分类标签120与数据库114中存储的分类标签相比较。如果服务器系统112确定接收到的分类标签120不匹配数据库114中存储的分类标签的任何一者,或者根据上下文没有匹配发生,则服务器系统112将新接收的嵌入118和接收到的分类标签120存储在数据库114中。
[0115] 在一些实现方式中,例如,上下文匹配例如在服务器系统112接收到“杯子”的分类标签120并且服务器系统112在数据库114中找到“咖啡杯”的分类标签时发生。虽然分类标签具有不同的字符串字符,但“杯子”和“咖啡杯”的上下文具有相似的特性。如果上下文匹配确实发生,则服务器系统112可向设备108发送通知以通知用户106两个嵌入对应于不同的或相似的物体。或者,服务器系统112可在每次从机器人接收到新嵌入时存储和分发新嵌入,无论新嵌入是否不同于数据库114中存储的嵌入。
[0116] 在阶段(E)期间,在从机器人104A-104D收集嵌入之后,服务器系统112更新机器学习模型并且将经更新的机器学习模型130发送到机器人104A-104D的每一者。在一些实现方式中,服务器系统112可利用来自机器人104A-104D的任何新接收的特征数据来训练它的机器学习模型的拷贝。同时,在训练在服务器系统112处正在进行的同时,机器人104A-104D仍然能够使用通过模型训练纳入的学习。服务器系统112已经共享了描述在模型训练过程中正使用的示例的嵌入和分类。因此,机器人104A-104D即使在接收到经更新的模型之前也能够利用嵌入来认识或分类新物体。
[0117] 在一个示例中,机器人104D可学习识别住宅102中的物体124。在捕捉描述物体124的传感器数据并且学习分类132之后,机器人104D可将特性转换成特征数据128并且将特征数据128作为输入提供到其本地机器学习模型。从本地机器学习模型的输出,机器人104D产生嵌入126。机器人104D还例如基于来自用户106的输入确定与嵌入126相对应的“相机”的分类标签132。机器人104D将嵌入126、用于生成嵌入126的特征数据128和分类标签132上传到服务器系统112。服务器系统112将嵌入126和分类标签132分发给其他机器人104A-104C,机器人104A-104C将该信息存储在其本地缓存中。服务器系统112还使用嵌入126、分类标签132和特征数据128来进一步训练物体认识模型。
[0118] 服务器系统112可利用来自机器人104A-104D的每一者的特征数据和分类标签来训练机器学习模型。例如,服务器系统112可基于来自机器人104B的特征数据122和分类标签120以及特征数据128和分类标签132来训练神经网络。通过利用来自机器人104A-104D的每一者的示例和学习来训练机器学习模型,服务器系统112可改善机器学习模型以正确地认识机器人104A-104D的每一者已学习认识的物体。
[0119] 图2是图示出用于训练机器人来检测物体的系统的示例的框图。在一些实现方式中,用户106可训练机器人,例如机器人104A,来识别和检测物体,例如图2的示例中的杯子。训练机器人104A-104D来识别和检测物体允许了用户106在以后某个时间点请求机器人
104A-104D取回该物体。
[0120] 在一些实现方式中,每个机器人104A-104D可包括图2中所示的组件。例如,如前文所提及,机器人104A包括机器人传感器202。机器人传感器202向机器人提供解读其环境的方法。例如,举例来说,机器人传感器202可包括相机、LIDAR传感器、邻近传感器、红外传感器、加速度计、触摸传感器、麦克风和位置传感器。机器人104A可利用这些传感器的每一者来在住宅102内各处移动的同时避开障碍物,来理解机器人104A抓握的遇到的物体,以及来接收来自用户106的请求。
[0121] 在一些实现方式中,机器人传感器202产生传感器数据204。传感器数据204包括图像数据206和深度信息208,并且可包括其他传感器数据。此外,传感器数据204可包括轮廓、形状和纹理数据。图像数据206可包括物体的一个或多个视频和/或一个或多个静止图像。图像数据206可包括颜色信息(例如,红、绿和蓝或RGB信息)和/或单色图像数据。
[0122] 在一些实现方式中,深度信息208是利用相机模块确定的。此信息可利用立体相机来生成,其中在两个图像传感器之间图像之间的差异用于确定物体与相机的距离。此外,或者作为替换,深度信息208可利用LIDAR系统、雷达系统或者机器人104A的其他深度传感器来生成。
[0123] 在一些实现方式中,机器人104A可从传感器数据204生成特征数据212。特征数据212可以是机器学习模型214被配置为接收作为输入的传感器数据204的表示。
[0124] 机器人104A包括本地机器学习模型214。本地机器学习模型214可被存储在机器人104A的存储器中,可选地与本地缓存218分离。服务器系统112可通过网络为机器人104A提供机器学习模型214,并且可确保每个机器人104A-104D使用相同的机器学习模型214,例如最当前版本。
[0125] 机器人104A确定表示由图像数据206、深度信息208和由机器人104A产生的任何其他传感器数据描述的杯子的编码表示的嵌入118。嵌入118与用户106提供的分类标签120一起被存储在机器人104A的本地缓存218中。用户106可通过与客户端设备108的交互来提供分类标签120。或者,用户106可通过与机器人104A的直接交互,通过向机器人104A上的麦克风说话或者通过经由机器人104A上的终端输入文本,来提供分类标签120。
[0126] 在一些实现方式中,本地缓存218为每个物体存储数据的集合220。例如,关于最近训练的“杯子”物体的数据的集合220A包括嵌入118、与嵌入118相对应的分类标签120和与嵌入相对应的传感器数据204。通过将数据的集合220存储在本地缓存218中,机器人104A可迅速地访问数据集合来用于认识其遇到的物体。机器人104A可将从服务器系统112接收的任何嵌入和分类标签存储在其本地缓存中。
[0127] 在一些实现方式中,当机器人从服务器系统112接收嵌入和分类标签时,只有嵌入和分类标签被接收,而没有相应的传感器数据或特征数据。嵌入是用于参考图3进一步论述的物体认识过程中的比较的数据元素。只要用于生成接收的嵌入的机器学习模型是接收嵌入的机器人104A使用的同一个机器学习模型,就不需要用于生成嵌入的传感器数据或特征数据。
[0128] 图3是图示出机器人检测物体的系统300的示例的框图。在一些实现方式中,每个机器人104A-104D执行以下步骤来检测和识别物体。
[0129] 在一些实现方式中,机器人104D可在住宅102中找到物体,例如相机。机器人104D利用传感器202捕捉描述相机的传感器数据302。机器人104D可在各种角度和距离扫描物体124以得到物体124的完全视图。传感器数据302可包括图像数据304和深度信息306,以及描述物体124的其他信息。
[0130] 机器人104D将传感器数据302,或者从传感器数据302生成的特征数据,提供给存储在机器人104D本地的机器学习模型214。机器人104D使用的模型214可以是其他机器人104A-104C存储和使用的同一个机器学习模型214的拷贝。机器学习模型214被配置为产生指示出输入数据表示不同类型的物体的可能性的信息。例如,模型214可输出形成一组物体类型上的概率分布的值的集合,例如,其中一个值指示出输入数据描述“勺子”的可能性,另一值指示出输入数据描述“书”的可能性,等等依此类推。从模型214的输出,机器人104D可选择模型输出指示出最有可能描述观察到的物体124的物体类型。例如,机器人104D可识别指示最高概率的模型输出,并且选择与该输出相对应的分类。在该示例中,模型214基于其训练指示出观察到的物体124最有可能是由分类标签312表示的“盒子”,并且对于该分类的置信得分310是50%。置信得分310指示出分类标签312准确地描述物体124的置信水平,并且可基于机器学习模型214的输出或者基于对模型的输出的另一评估来确定。
[0131] 除了使用机器学习模型214来为物体124预测分类以外,机器人104D还使用机器学习模型214的处理来为物体124生成嵌入314。例如,嵌入可从模型214的一个或多个隐藏层处的激活和/或从模型214的输出层处的数据得出。
[0132] 机器人104D将为物体124生成的嵌入314与存储在机器人的本地缓存218中的嵌入相比较。机器人104D可将嵌入314与本地缓存218中的每个嵌入分开比较。例如,机器人104D将嵌入314与数据集合220A至220N中的嵌入相比较并且生成指示出缓存的嵌入有多紧密地匹配嵌入314的数据,例如置信得分。为了执行该比较,机器人104D可执行按比特比较、向量距离确定或者其他比较来生成嵌入之间的相似性的度量。
[0133] 在一些实现方式中,每个比较可产生置信得分。例如,嵌入314和数据集220A中的嵌入之间的比较产生10%的置信得分320。嵌入314和数据集220B中的嵌入之间的比较产生30%的置信得分322。嵌入314和数据集220C中的嵌入之间的比较产生90%的置信得分324。
嵌入314和数据集220D中的嵌入之间的比较产生50%的置信得分326。嵌入314和数据集
220N中的嵌入之间的比较产生50%的置信得分328。
[0134] 机器人104D随后识别哪个嵌入具有最高的置信得分或者与嵌入314的相似性的度量。在图3中所示的示例中,这是数据集220C中的嵌入,其具有“相机”的相应分类标签330。
[0135] 机器人104D随后选择是使用由机器学习模型214预测的分类还是利用缓存218确定的分类。例如,机器人104D将90%的置信得分324与由机器学习模型214产生的50%的置信得分310相比较。机器人104D选择与置信得分中的更高者相对应的分类。在此示例中,机器人104D选择数据集220C中的分类标签来与嵌入314相对应,因为90%的置信得分324高于50%的置信得分310。这允许了本地缓存318提供新的或者比机器学习模型214提供的更高质量的分类结果。
[0136] 在一些实现方式中,机器人104D可在使用分类之前应用阈值来确保分类至少具有最小置信得分。例如,在机器人104D接受分类结果之前,可要求分类具有至少70%的置信得分。
[0137] 在基于利用本地缓存218找出紧密匹配来选择了“相机”的分类作为物体124的最可能分类后,机器人104D可将该分类提供给机器人104D的其他模型和模块以执行任务。例如,机器人104D在用户要求该物体时可取回相机。
[0138] 机器人104D可对机器人104D观察到的每个物体重复图3中论述的过程以对机器人104D遇到的物体分类。这个认识或分类过程可被非常频繁地进行,例如随着机器人观察其周边而几乎连续地进行,并且对于在任何给定的时间可在视野中的多个物体进行。结果,该过程在计算上高效并且功率上高效是重要的。这里论述的体系结构提供了这些益处,因为机器学习模型的处理可非常快速且高效,并且使用本地缓存中的数据集的查找和比较过程可类似地快速且高效。
[0139] 一般而言,关于观察到的物体124的嵌入314和传感器数据302在认识物体124之后被丢弃。然而,在一些实现方式中,此信息可被保存并且作为物体类型的附加示例数据被提供给服务器系统112,并且服务器系统112在进一步训练机器学习模型214时可使用此信息。
[0140] 图4是图示出用于在机器人之间共享学习的信息的另一系统400的示例的框图。图4图示了在机器人104A、104B和104C之间共享感知信息的示例。每个机器人104A、104B和
104C存储和使用同一机器学习模型402的拷贝。结果,每个机器人104A-104C在观察相似的物体时产生相似的嵌入。机器人104A-104C的每一者具有本地缓存404A-404C,其中存储了嵌入和相应的分类。
[0141] 机器人104A的本地缓存406A最初包括数据集406A,其是由机器人104A基于机器人104A捕捉到的传感器数据生成的。数据集406A可至少包括嵌入和相应的分类标签。机器人
104A也可发送与数据集合406A中的嵌入相对应的传感器数据和元数据。机器人104A通过网络110将数据集406A发送到服务器系统112。机器人104A可指定数据集406A应当与其他机器人共享。类似地,机器人104A可指示出数据集406A是新的,或者其表示解决机器学习模型
402的不足或差错的分类示例。
[0142] 机器人104B的本地缓存404B最初包括数据集406B,其是基于机器人104B捕捉到的传感器数据的。数据集406B包括嵌入和分类,但是关于与数据集合406A表示的那个不同的物体的。机器人104B通过网络110将数据集合406B发送到服务器系统112。
[0143] 服务器系统112分发数据集合406A和406B,使得每个机器人为其本地缓存接收该信息。例如,服务器系统112将机器人104B生成的数据集合406B发送到机器人104A。服务器系统112将机器人104A生成的数据集合406A发送到机器人104B。服务器系统112将数据集合406A和406B发送到机器人104C。
[0144] 由于服务器系统112进行的分发,机器人104C将能够识别由数据集406A和406B中的每个嵌入表示的物体,而不必被用户106训练来检测这些物体。此外,机器人104B将能够识别由数据集406A中的嵌入表示的物体,而无需被用户106训练来检测该物体。类似地,机器人104A将能够识别由数据集406B中的嵌入表示的物体,而不必被用户106训练来检测该物体。通过网络110在机器人之间共享数据集中的信息(例如,嵌入)减少了训练机器人认识新物体所要求的时间。
[0145] 服务器系统112也可将数据集406A和406B存储在数据库114中。服务器系统112在一段时间中从机器人收集数据集合,并且进一步训练机器学习模型402的拷贝以能够认识数据集406A和406B中指示的物体。
[0146] 在一些实现方式中,服务器系统112可在机器人104A至104C之间执行周期性同步以确保每个机器人包括嵌入的最新集合。例如,周期性同步可按预定义的速率发生,例如每小时、每日、每星期等等,并且同步可由机器人或者由服务器系统112发起。周期性同步可包括从服务器系统112到机器人104A-104D的每一者的请求,请求上传自从上次同步以来的任何新的嵌入。每个机器人104A-104D也可提供其缓存中的数据集的识别符的列表,使得服务器系统112可具体确定哪些数据集应当被发送并且哪些已经存在。服务器系统112确定向机器人104A-104D提供哪些嵌入,使得每个机器人104A-104D在其本地缓存中包括来自其他机器人104A-104D的每一者的最新嵌入。
[0147] 图5是图示出用于向机器人提供更新的机器学习模型的系统500的示例的框图。周期性地,例如,每月,服务器系统112可生成并分发纳入了来自机器人104A-104D提供的各种数据集的组合学习的经更新的机器学习模型。图5图示了向机器人104A、104B和104C提供经更新的机器学习模型的示范性分发。如先前在图4中所示,每个机器人104A、104B和104C包括了相同的机器学习模型402。此外,每个机器人104A、104B和104C具有其自己单独的本地缓存404A、404B和404C。
[0148] 服务器系统112包括迭代地训练机器学习模型504的模型训练器502。在训练之前,此模型504可以是机器人104A-104D使用的同一个模型402,或者其可表示不同的模型。训练过程的结果是纳入了各种机器人104A-104D在一时间段中已学习的东西的经更新的机器学习模型506。模型训练器502可基于机器人指定为新学习的分类的每个接收到的数据集来更新机器学习模型504。在一些实现方式中,模型训练器502可利用表示模型402已经能够准确认识的分类的附加示例的数据,例如利用强化学习,来训练机器学习模型504。通过基于“新的”和“已知的”数据集训练机器学习模型504,服务器系统112可创建经更新的机器学习模型506来对于新的物体类型和模型已经预测的物体类型两者准确地认识来自真实世界观察的物体。
[0149] 在一些实现方式中,服务器系统112将经更新的机器学习模型506通过网络110发送到每个机器人104A、104B和104C。响应于机器人104A-104D接收到经更新的机器学习模型506,机器人104A-104D将去除机器学习模型402并且使用经更新的机器学习模型506来替代它。从此时开始,机器人104A-104D使用经更新的机器学习模型506并且受益于其提供的改善的准确性。
[0150] 当机器人104A-104D接收到经更新的机器学习模型506时,机器人104A-104D清除其本地缓存404A-404D。例如,数据集406A和406B被删除。缓存中的数据集所表示的分类现在由经更新的模型506直接预测,因此不再需要存储的数据集。另外,由于缓存中的数据集是利用旧的机器学习模型402生成的,所以来自这些数据集的嵌入将与经更新的机器学习模型506不兼容。如果有一些数据集尚未被机器人共享、但尚未被纳入到经更新的机器学习模型506的训练中,则服务器系统112可使用机器人提供的传感器数据来利用经更新的机器学习模型506生成嵌入。服务器系统112随后可将对于经更新的模型506兼容的具有嵌入的经更新的数据集发送到机器人104A-104D以便存储在本地缓存中并且与经更新的模型506一起使用。
[0151] 图6是图示出用于在机器人之间共享学习的信息的过程600的示例的流程图。第一机器人,例如机器人104A,可执行过程600。
[0152] 在过程600中,第一机器人获得指示物体的特性的传感器数据(602)。机器人可包括传感器,举例来说,例如相机、LIDAR传感器、邻近传感器、红外传感器、加速度计、触摸传感器、麦克风和位置传感器。例如,机器人可从若干个不同的角度捕捉和学习物体的特性。机器人可自身移动或者将其传感器移动到不同的位置以获得这些不同的视图。所获得的特性可包括关于物体的形状、颜色、轮廓、纹理和深度信息。机器人可将所获得的物体的传感器数据转换成特征数据以便机器学习模型处理特征数据。
[0153] 机器人为物体确定分类(604)。例如,用户可为物体提供分类。用户可利用到客户端设备108的语音输入或文本输入来提供物体的分类。或者,用户可通过与机器人自身交互来为物体提供分类。该分类可以是向物体标记的文本标签。
[0154] 机器人利用由第一机器人存储的机器学习模型来为物体生成嵌入(606)。机器人为物体从传感器数据提取特征数据122。特征数据可包括机器学习模型所理解的传感器数据的数字版本,例如表示传感器数据的各方面的得分或值。例如,机器人104B提供特征数据122作为到其本地机器学习模型的输入。机器学习模型处理特征数据以产生嵌入。
[0155] 在一些实现方式中,机器学习模型是神经网络模型,并且嵌入可从神经网络模型的输出层处的输出得出。在其他实现方式中,嵌入是从指示神经网络模型的隐藏层处的激活的数据得出的。嵌入的具体值可取决于机器学习模型的结构和训练状态。
[0156] 机器人在第一机器人的本地缓存中存储所生成的第一嵌入和指示物体的分类的数据(608)。例如,机器人在机器人的本地缓存中存储生成的第一嵌入和物体的分类标签。此外,机器人可将所识别的物体的相应传感器数据与生成的第一嵌入和分类标签一起存储在本地缓存中。
[0157] 机器人通过通信网络将生成的第一嵌入和指示分类的数据发送到服务器系统(610)。机器人也可将元数据发送到服务器系统。元数据可指定例如是否要与其他机器人共享第一嵌入。元数据也可包括信息,例如用于生成第一嵌入的机器学习模型的版本代码或识别符。作为另一示例,元数据可指示机器人的机器人识别符、机器人的类型或型号或者机器人的角色的识别符和/或指示机器人所属的机器人的群组的数据。服务器系统可使用此信息来选择哪些机器人应当接收共享的嵌入,例如可能将共享限制到在同一群组中的机器人之间发生,或者在相同类型、型号或角色的机器人之间发生。在一些实现方式中,可利用用于共享的应用编程接口(application programming interface,API)发送第一嵌入,使得第一嵌入和利用该API发送的其他数据由于是通过该API发送的而被指定为要被共享。
[0158] 机器人通过通信网络从服务器系统接收第二嵌入和相应的分类(612)。第二嵌入可以是第二机器人生成的那个。例如,第二机器人生成的嵌入和相应分类可以是对于第一机器人尚未学习来认识的物体的。
[0159] 机器人将接收的嵌入和相应分类存储在机器人的本地缓存中(614)。机器人随后可对于机器人观察到的物体和对于接收到的表示机器人未观察到的物体的数据都使用缓存中的嵌入和分类,以在执行任务时认识物体。
[0160] 在一些实现方式中,机器人可随后使用本地缓存中的第一嵌入或第二嵌入来认识机器人的环境中的一个或多个物体。当机器人使用生成的第一嵌入或生成的第二嵌入来认识环境中的一个或多个物体时,机器人生成描述机器人在机器人的环境中观察到的特定物体的传感器数据。机器人利用第二机器学习模型和描述该特定物体的传感器数据为该特定物体生成嵌入。机器人随后将为特定物体新生成的嵌入与第一嵌入和第二嵌入相比较。机器人基于特定物体的嵌入与生成的第一嵌入和生成的第二嵌入的比较来为该特定物体指派分类。如上所述,如果特定物体的嵌入对于缓存中的任何嵌入不在阈值水平的相似度内(例如,嵌入之间的向量距离小于最大阈值),则机器学习模型指示的分类被使用。另一方面,如果特定物体的嵌入在阈值水平的相似度内,或者至少足够相似从而使得置信得分指示出比机器学习模型指示的更好的匹配,则机器人可使用与缓存中的最相似嵌入相对应的分类作为该特定物体的分类。
[0161] 在一些实现方式中,机器人可通过通信网络从服务器系统接收第二机器学习模型。接收到的第二机器学习模型可以是服务器系统生成的那个。第二机器学习模型可以是已被基于在先前的时间间隔中(例如上星期或上月)在整个机群中发生的机器人学习的组合集合来更新的经更新的机器学习模型。机器人可使用第二机器学习模型来认识一个或多个额外物体和先前识别的物体。此外,机器人可从其本地缓存去除利用第一机器学习模型生成的嵌入。
[0162] 图7是图示出用于在机器人之间选择性地共享学习的信息的系统700的示例的框图。如上所述,机器人共享其学习的信息,使得机群中的所有机器人能够更迅速地学习并且改善其能力,是有利的。然而,机器人学习的一些信息可能是低质量的,例如不正确的或者冲突的信息。在机器人的整个机群中传播低质量信息可减弱性能或者在机器人感知中引入差错。类似地,利用低质量信息训练机器学习模型可降低模型准确性。为了确保机器人学习的共享改善性能,计算系统可评估机器人学习的信息并且将信息的共享限于对于机群有益的项目。计算系统也可为机器学习模型的训练设置质量阈值和质量检查,使得对模型的更新改善性能并且是基于有效示例的。这些评估和过滤步骤也可通过阻止恶意或故意不正确的信息在机器人之间传播并且降低机器人性能来提供安全性的措施。
[0163] 在图7中,服务器系统112评估机器人104A-104D上传的数据集。服务器系统112只分发通过某些质量测试的数据集。与图4类似,每个机器人104A-104C分别包括本地缓存404A-404C。每个机器人104A-104C也存储和使用相同的机器学习模型402。与图4不同,服务器系统112不会自动与其他机器人共享上传的数据集,而是在将数据集分发给其他机器人之前验证该数据集的质量(例如,准确性)。
[0164] 在该示例中,机器人104A通过网络110将新获取的数据集406A和406B发送给服务器系统112。机器人104A可将每个数据集406A和406B指定为可与服务器和与其他机器人共享的信息。服务器系统112将评估这些数据集406A和406B以确定它们是否应当被共享,例如被发送到其他机器人104B和104C。在一些实现方式中,共享可利用访问控制列表对机器人的群组执行,对某个域内的机器人执行,或者对机群中的每个机器人执行。为了避免篡改,机器人104A-104D可对数据集406加密或者对数据集406进行安全签名,使得服务器系统112可安全地接收到发送的数据集406。
[0165] 在服务器系统112将数据集406A和406B分发给其他机器人104B和104C之前,服务器系统112可至少部分基于数据集中的嵌入来评价数据集406A和406B的质量。服务器系统112也可将数据集406A和406B存储在数据库114中。
[0166] 服务器系统112可包括质量确保系统702,其提供对从机器人104A-104D接收的每个数据集的质量评价。质量确保系统702包括分析从机器人104A-104D接收的每个嵌入的质量分析模块704。质量分析模块704产生指示数据集406中的嵌入的质量的质量得分。质量分析模块704如何分析数据集406中的嵌入以及产生指示嵌入的质量的质量得分将在下文进一步说明。例如,质量分析模块704对于数据集406A产生“82”的质量得分。此外,质量分析模块704对于数据集406B产生“46”的质量得分。响应于确定与数据集中的嵌入相对应的质量得分,质量分析模块704将所确定的质量得分的每一者与质量阈值相比较。
[0167] 质量确保系统702可存储并且向被评价的数据集应用质量阈值。质量阈值可以是预定义的或者可以是根据被评价的数据动态设置的。如图7中所示,质量分析模块704将质量阈值设置到“70”,意思是个体数据集在其可被分发给其他机器人之前可被要求具有至少这个最小值的质量得分。
[0168] 质量分析模块704将每个数据集406的质量得分与质量阈值相比较。如果质量分析模块704确定质量得分大于或等于质量阈值,则质量分析模块704允许服务器系统112将数据集发送到其他机器人104A-104D。如果质量分析模块704确定质量得分小于质量阈值,则数据集不被发送。在一些实现方式中,质量分析模块704对于是否共享数据集406的指示被存储在数据库114中。
[0169] 例如,质量分析模块704将数据集406A的“82”的质量得分与质量阈值“70”相比较。质量分析模块704确定数据集406A的“82”的质量得分大于“70”的质量阈值。结果,质量分析模块704向服务器系统112指示共享数据集406A。
[0170] 质量分析模块704还将数据集406B的质量得分与质量阈值“70”相比较。质量分析模块704确定数据集406B的“46”的质量得分小于“70”的质量阈值。结果,质量分析模块704向服务器系统112指示不共享数据集406B。
[0171] 根据对数据集的评估,服务器系统112选择性地将数据集发送到机器人104B和104C。例如,质量分析模块704基于将其各自的质量得分与质量阈值的比较来确定共享数据集406A并且不共享数据集406B。如图7中所示,服务器系统112将数据集406A发送到机器人
104B和104C。每个机器人104B和104C随后将数据集406A存储在各自的本地缓存404B、404C中。在一些实现方式中,质量分析模块704可向发送了它的机器人104A提供发送的嵌入具有特定质量的指示。例如,该指示可指示出发送的嵌入具有低质量或者具有高质量。通过指示质量水平或质量得分,机器人104A-104D可适当地对数据集406A加权,以例如向其指明的分类给予更多或更少的可信度。
[0172] 服务器系统112可指令机器人104A-104D将数据集406A存储在其本地缓存中。例如,该指定可包括数据标志、标签、指令、本地缓存的版本号和发送到机器人104A-104D的消息头部中的指示符。版本号可以是对个体数据集提供的,对整个缓存的状态提供的,和/或被提供来指示出用于生成数据集中的嵌入的机器学习模型的状态。通过指明缓存内容的适当版本,如果机器人取消更新或者半途丢失连通性,则服务器系统可检查最近完成的缓存更新的版本以确定机器人需要什么更新。在其他示例中,服务器系统112通过经由某个源、端口或特定的API发送数据集406A来指明数据集406A应当被缓存。本地缓存的版本号允许了机器人104A-104D跟踪本地缓存中应当包括什么嵌入。服务器系统112可基于本地缓存的版本号来验证每个机器人104A-104D的本地缓存中存储的嵌入。
[0173] 服务器系统112可在机器人104A-104D的每一者之间同步本地缓存中的数据集。服务器系统112可周期性地每日、每星期或者每月在机器人104A-104D的每一者之间同步本地缓存。服务器系统112通过从机器人104A-104D的每一者取回数据集来同步本地缓存。服务器系统112分发从机器人104A-104D的每一者取回的数据集,使得机器人104A-104D的每一者包括来自其他机器人104A-104D的每一者的数据集。结果,机器人104A至104D的每一者在每次同步之后包括相同的数据集。
[0174] 图8是图示出质量分析模块704评价来自机器人的信息的质量的示例的框图。质量分析模块704评价从机器人104A-104D接收的嵌入信息的质量。质量分析模块704通过利用各种标准评估和过滤数据集来评价数据集。例如,举例来说,各种标准可包括分类的准确性、与参考数据的一致性和相对于其他数据集的冗余性。
[0175] 质量分析模块704可用来评估数据集的一种技术是将嵌入映射到高维空间,例如向量空间,并且评价嵌入在该空间中的相对位置。一般而言,嵌入编码了物体的特性,因此同一类型的物体的嵌入应当是相似的。这一般将导致同一类型的物体的嵌入在高维空间中大致集群在一起。集群之间的间隔可指示出由集群中的嵌入表示的物体类型之间的区别。这些属性可用于评估机器人104A-104D上传到服务器系统112的数据集的质量。例如,物体的嵌入可被评价来确定该嵌入是否适当地接近同一物体类型的其他嵌入,并且与不同物体类型的嵌入至少相距合理的距离。
[0176] 质量分析模块704将数据集406中的接收的嵌入映射到高维空间802。高维空间802可以是N维空间,其中N表示每个嵌入中的维度的数目(例如,值的数目)。例如,数据集中的每个嵌入可以是64比特值的128元素阵列,并且因此可被与128维度空间中的其他嵌入相比较。取决于嵌入中提供的维度的数目,其他N维空间是可能的。
[0177] 图8中提供的图示示出了图例801来说明绘制的元素。高维空间802的图示示出了映射的嵌入,其中每个嵌入由“X”表示。还示出了参考点“·”来表示被验证为表示某个物体类型的嵌入的位置。为了获得参考数据来评价新学习的分类的质量,训练数据或其他高质量示例可被提供到机器学习模型并且用于生成嵌入。例如,已知示出杯子并且被机器学习模型准确地分类为是杯子的图像可用于为“杯子”物体分类生成嵌入。已知是对于杯子的正确表示的这个嵌入可用作高维空间802中的参考点,其他嵌入可被与其相比较。
[0178] 当服务器系统112从机器人接收数据集时,质量分析模块704执行各种步骤来评价该数据集的质量。例如,质量分析模块704可将接收的嵌入825与其他嵌入相比较,无论是来自由其他机器人上传的数据集还是具有已知正确分类的参考嵌入。
[0179] 质量分析模块704可在步骤808中就冗余性过滤接收的嵌入825,在步骤810中就恶意性过滤接收的嵌入825,在步骤812中就传感器数据质量过滤接收的嵌入825,并且在步骤814中就机器学习模型版本过滤接收的嵌入825。最后,质量分析模块704在步骤816中对接收的嵌入825应用阈值比较。
[0180] 例如,接收的嵌入825与利用机器学习模型生成的嵌入。高维空间802包括与各种物体相对应的区域。例如,高维空间802包括如下区域:包括物体类型“手表”的嵌入的区域818,包括物体类型“马克杯”的嵌入的区域822,包括物体类型“鞋子”的嵌入的区域826,包括物体类型“钢笔”的嵌入的区域830,以及包括物体类型“纸”的嵌入的区域836。
[0181] 质量分析模块704将接收的嵌入825映射到高维空间802中的位置。质量分析模块704将接收的嵌入825映射得越接近高维空间802中的区域之一,接收的嵌入825表示由高维空间802中的该区域描述的物体的可能性就越高。例如,质量分析模块704将接收的嵌入825映射在最接近包括物体类型“马克杯”的嵌入的区域822的位置中。由于接收的嵌入825与区域822的中心的邻近,接收的嵌入825表示“马克杯”的可能性更大。
[0182] 在一些实现方式中,接收的嵌入825被与从存储在服务器系统112上的机器学习模型402得出的参考嵌入相比较。例如,表示“马克杯”物体的区域822中的参考点“·”图示了物体“马克杯”的已验证准确嵌入。这个参考点表示从存储在服务器系统112上的机器学习模型402得出的嵌入。质量分析模块可为每个物体类型确定一个或多个参考嵌入,为服务器系统112上的机器学习模型402产生的高维空间802中定义的每个物体的理想嵌入。具体而言,标准检查804通过分析存储在数据库114上的表示相同物体(例如“马克杯”)的各种嵌入来确定理想嵌入。例如,标准检查804可使用各种嵌入输出的平均来确定理想嵌入。在另一实例中,标准检查804可选择各种嵌入之一来代表理想嵌入。在另一实例中,标准检查804可使用试探、贝叶斯或者任何其他类型的统计模型来确定理想嵌入。质量分析模块704将理想嵌入存储在数据库114中以便进一步比较。
[0183] 在一些实现方式中,质量分析模块704确定接收的嵌入825在高维空间802中最紧密对应于哪个理想嵌入。例如,质量分析模块704可采用最近邻居算法来确定接收的嵌入825在高维空间802中与哪个理想嵌入处于最紧邻。质量分析模块704将接收的嵌入825与“手表”818的理想嵌入、与“马克杯”822的理想嵌入、与“鞋子”826的理想嵌入以及与“钢笔”
830的理想嵌入相比较。结果,质量分析模块704确定接收的嵌入825与“马克杯”822的理想嵌入处于最紧邻。
[0184] 在一些实现方式中,质量分析模块704将与接收的嵌入相对应的分类标签和与最接近接收的嵌入的理想嵌入相对应的标签相比较。例如,“马克杯”的分类标签的理想嵌入可与包括“马克杯”的分类标签的接收的嵌入825最紧邻。或者,质量分析模块704可将接收的嵌入与对应于两个不同分类标签的一个或多个其他嵌入相比较。作为响应,考虑到两个嵌入在彼此的近邻,然而包括不同的分类标签,质量分析模块704可省略这些嵌入的一者或两者。质量分析模块704可通过不与其他机器人104A-104D共享、不存储在数据库114中或者不用来训练机器学习模型506来省略这些嵌入的一者或两者。
[0185] 然后,质量分析模块704测量接收的嵌入825和理想嵌入点821之间的距离824并将其与阈值比较。例如,质量分析模块704使用向量测量来确定接收的嵌入825和理想嵌入点821之间的向量距离824。如果质量分析模块704确定向量距离824大于阈值,则质量分析模块704丢弃接收的嵌入825并且等待从机器人104或数据库114接收到的下一个嵌入。否则,质量分析模块704前进到下一个过程。
[0186] 在一些实现方式中,质量分析模块704在808中就冗余性对接收的嵌入825过滤。更确切地说,数据库114存储不同的嵌入以确保机器人104A-104D具有数据的更多样集合来改善对相似和不同的物体的识别,是重要的。
[0187] 在一些实现方式中,质量分析模块704在步骤810中过滤接收的嵌入825以避免不安全的或者恶意的输入。例如,质量分析模块704可确定嵌入是否已被篡改或者被指派了不正确的分类。用户16可能为物体输入了错误的分类标签,例如,可能教导机器人为物体提供了错误的分类。在一些实例中,数据集可被伪造,其中正确的嵌入可被替换成不同的一个。质量分析模块704可通过将接收的嵌入与同一分类的参考嵌入相比较来检测数据集中的这些差错或误分类。例如,如果接收的嵌入被分类为杯子,但与已知正确的杯子的嵌入的向量距离,则该数据集可被确定为有差错。类似地,服务器系统112可使用与数据集一起上传的传感器数据来生成相应的嵌入。如果该嵌入不匹配上传的嵌入,则服务器系统112可确定嵌入可能被伪造了。
[0188] 在一些实现方式中,质量分析模块704就传感器数据质量对接收的嵌入825进行过滤(步骤812)。质量分析模块704通过分析图像是否太暗、太亮、失焦或者图像是否未被包括在数据集的特征数据中来检查传感器数据质量。此外,质量分析模块704检查图像中的检测到的物体的阻碍以及深度信息的形状和图像数据之间的任何不一致。质量分析模块704还检查缺失的传感器信息、时间戳、附加元数据中的GPS位置信息以及附加元数据的存在。
[0189] 在一些实现方式中,质量分析模块704可例如通过确定平均亮度来评价图像是否太暗或太亮。在一些实现方式中,质量分析模块704可执行评价图像数据是否失焦或者模糊。例如,应用可执行边缘检测或者执行离散傅立叶变换(discrete Fourier transform,DFT)来评价图像质量。如果这些过程表现出不良的边缘对比度或者低数量的高频率,则图像数据和整个数据集可被认为是不令人满意的并且不被用于训练模型。
[0190] 在一些实现方式中,质量分析模块704可利用外部服务器进行图像数据的外部验证。例如,外部服务器可执行图像认识过程或者形状认识过程来对图像数据中的物体分类。质量分析模块704可将图像数据和相应的分类标签从数据集406发送到外部服务器来看看图像认识过程或者形状认识过程的结果是否与相应的分类标签一致。如果图像认识过程或者形状认识过程的结果与相应的分类标签匹配,则质量分析模块704可将数据集406传递到
814中的过程。如果图像认识过程或者形状认识过程的结果不与相应的分类标签匹配,则服务器系统112可向用户106的客户端设备108发送通知,指出对于该嵌入存在不正确的分类标签。这样,服务器系统112可向用户106请求对分类标签的编辑。或者,服务器系统112可提供对图像认识过程或形状认识过程的更新,如果它们的结果不正确并且在数据集406中提供的分类标签是正确的。
[0191] 在一些实现方式中,质量分析模块704在814中就机器学习模型版本号对接收的嵌入825进行过滤。例如,质量分析模块704分析数据集406中的附加元数据。如先前提及的,数据集406中的附加元数据包括在发送了数据集406的机器人104上存储的当前机器学习模型的版本代码号。附加元数据还可包括与机器人104是否识别了由该嵌入表示的物体相对应的位置信息。此外,附加元数据还可包括对于机器人104如何确定了所识别的物体的分类的描述,例如通过用户输入或者通过与机器人104的本地缓存中存储的其他分类标签和相应嵌入的比较。
[0192] 在一些实现方式中,质量分析模块704将所取回的存储在机器人104上的当前机器学习模型的版本代码号与存储在服务器系统112上的机器学习模型402上的机器学习模型的版本号相比较。如果质量分析模块704确定两个机器学习模型(例如,机器人104上的机器学习模型和服务器系统112上的机器学习模型)之间的版本号匹配(例如,指示出相同的机器学习模型存在于机器人104和服务器系统112两者上),则质量分析模块704前进到下一过程。否则,质量分析模块704向服务器系统112指示出机器人104,例如发送了数据集406A的机器人104A,不包括最新机器学习模型402。这样,标准检查804丢弃数据集406A。此外,服务器系统112向机器人104A发送机器学习模型402。作为响应,机器人104A将从存储器中去除其机器学习模型402并且擦除其本地缓存404A中的数据集。在一些实现方式中,服务器系统112向每个机器人104发送指令以擦除其各自的本地缓存中的数据集。该指令可与发送的机器学习模型402包括在一起。在其他实现方式中,服务器系统112将该指令作为个体消息发送。响应于机器人104接收到该指令,机器人104擦除其本地缓存的内容。
[0193] 在一些实现方式中,质量分析模块704在816中通过将接收的嵌入825在高维空间802中的位置与阈值相比较来对接收的嵌入825进行过滤。例如,高维空间802中的每个区域定义一物体,例如定义“马克杯”的区域822,定义“手表”的区域818,定义“纸”的区域836,定义“钢笔”的区域830,以及定义“鞋子”的区域826。每个区域包括用于过滤目的的阈值区域。
例如,用于“马克杯”物体的阈值区域827,用于“鞋子”物体的阈值区域829,用于“钢笔”物体的阈值区域831,用于“纸”物体的阈值区域833,以及用于“手表”物体的阈值区域835。每个阈值区域定义物体类型的理想嵌入周围的N维区域,这允许了同一物体类型的可接受嵌入。
[0194] 在一些实现方式中,质量分析模块704测量接收的嵌入825的位置与高维空间802中最紧邻接收的嵌入825的位置的理想嵌入的位置之间的向量距离。这个过程允许了质量分析模块704确定哪个理想嵌入在高维空间802中最紧邻接收的嵌入825。一旦确定了最接近接收的嵌入825的位置的理想嵌入,质量分析模块704就确定接收的嵌入825的位置是否落在与理想嵌入相对应的阈值区域内。例如,质量分析模块704确定接收的嵌入825最紧邻定义“马克杯”的区域822。结果,质量分析模块704确定接收的嵌入的位置是否落在“马克杯”的阈值区域827内。如图8中所示,接收的嵌入825落在阈值区域827内并且通过步骤816。或者,如果嵌入落在与最紧邻的理想嵌入相对应的阈值区域之外,则质量分析模块704丢弃包括该嵌入的数据集406。
[0195] 在其他实现方式中,质量分析模块704可将落在阈值区域(例如阈值区域827)内的嵌入指定为要发送到机器人104A-104D的嵌入。这是因为这些嵌入指示出表示阈值区域827内的物体的更高可能性。结果,质量分析模块704选择在阈值区域827之外找到的嵌入来存储在数据库114中。在一些实现方式中,质量分析模块704将在阈值区域(例如阈值区域827)之外找到的嵌入指定为不被用于训练机器学习模型506。在一些实现方式中,质量分析模块704将丢弃存在于在从理想嵌入起的阈值距离之外的任何嵌入。例如,嵌入837的位置存在于从高维空间802中的每个区域起的阈值距离之外。“鞋子”区域的理想嵌入和嵌入837之间的距离828。这样,质量分析模块704将丢弃与嵌入837相对应的数据集。
[0196] 在一些实现方式中,质量分析模块704产生指示通过了质量分析模块704中的步骤806至816的每一者的接收的嵌入825的嵌入的质量的质量得分。质量得分表示质量分析模块704对于接收的嵌入表示某个物体(例如“马克杯”或“钢笔”)多有信心。
[0197] 在一些实现方式中,质量分析模块704基于由质量分析模块704执行来评价嵌入的质量的过程来产生质量得分。例如,如806中所述,质量分析模块704利用接收的嵌入825的位置与高维空间802中的定义物体类型的区域的接近度来生成邻近得分。接收的嵌入825的位置越接近该区域的理想嵌入的位置,邻近得分就越高。类似地,接收的嵌入825的位置越远离该区域的理想嵌入的位置,邻近得分就越低。质量分析模块704将邻近得分作为质量得分提供到质量确保系统702以便与质量阈值进一步比较。
[0198] 在其他示例中,质量分析模块704基于其他标准产生质量得分。其他标准包括机器人104为相应数据集406提供的特征或传感器数据的水平质量。其他标准也可包括在高维空间802中邻近接收的嵌入825的嵌入的一致性。例如,嵌入值与彼此有多接近;与邻近接收的嵌入825的每个嵌入相对应的特征数据的特性与彼此有多紧密对应,以及提供了该嵌入的机器人的标识。
[0199] 在一些实现方式中,质量分析模块704可基于接收的嵌入825如何改变了机器学习模型506的准确性来产生接收的嵌入825的质量得分。如果接收的嵌入825增大了机器学习模型506的准确性,则质量分析模块704可生成更高值的质量得分。或者,如果接收的嵌入825减小了机器学习模型506的准确性,则质量分析模块704可生成更低值的质量得分。在一些实现方式中,机器学习模型506的准确性可为嵌入825接收到的特定物体类型进行调整。
[0200] 在一些实现方式中,如果相应的分类标签包括个性化信息,则质量分析模块704可调整接收的嵌入825的质量得分。例如,如果接收的嵌入825的分类标签包括诸如“我最喜爱的勺子”、“约翰的玩具”或“布莱恩的眼镜”之类的个性化方面。质量分析模块704可搜索分类标签中的关键短语,例如“我的”或者指示出接收的嵌入825表示的物体的个性化方面的任何名字。如果识别出个性化方面,则质量分析模块704可通过增大质量得分的值来调整质量得分。
[0201] 在一些实现方式中,机器人104可具有与提供的数据集406的类型相对应的历史。例如,机器人104C可具有提供更高质量嵌入的历史,而机器人104A可具有提供更低质量嵌入的历史。机器人104A随着时间的流逝提供的更低质量嵌入可指示出机器人104A包括不良组件,例如坏掉的相机。或者,机器人104A提供的更低质量嵌入可指示出需要对其本地存储的机器学习模型402的更新。结果,质量分析模块704基于对机器人104提供高或低质量数据集406的历史的确定来为该接收的嵌入825调整质量得分。
[0202] 图9是图示出用于测试机器学习模型506的系统900的示例的框图。机器学习模型506表示图7中使用的机器学习模型402的经更新版本。一旦识别了一组高质量数据集,机器学习模型506被训练来纳入这些数据集中表示的分类信息。机器学习模型506在训练之后被测试,或者作为训练的一部分被测试。测试具有验证机器学习模型506的准确性的一般目的。例如,测试可评价训练是否有效地实现了教导机器学习模型对机器人上传的数据集中指示的物体的新类型分类的目标。如果机器学习模型506没有响应于关于数据集合的输入数据提供准确的分类(例如,提供与机器人学习的那个不同的分类),则训练可继续,直到机器学习模型506可准确地对物体分类为止。
[0203] 作为另一示例,测试可确定机器学习模型506对于为其先前可分类的物体分类是否维持适当水平的准确性。训练模型应当改善准确性,而不是减弱准确性,因此服务器系统112可实施如下规则:训练不应当降低关于物体的一些或所有类别的性能。如果训练减小了机器学习模型准确地对特定类型的物体分类的能力,则服务器系统112可继续训练并且使用该特定类型的示例。这个测试和继续的训练可提供不被新训练示例不恰当影响的全面的模型。这样,模型的性能可随着时间的流逝稳定地改善,因为用户不会希望物体认识性能随着时间的流逝减弱或者在一次更新到下一次之间取决于物体类型而波动。
[0204] 系统在训练模块902和评估/测试模块904中测试机器学习模型506的质量。系统通过将来自数据集406的数据提供到存储在服务器系统112上的机器学习模型506并且作为响应评价机器学习模型506的输出来测试机器学习模型506的质量。
[0205] 在一些实现方式中,系统在每次机器人学习新物体时提供来自机器人104A-104D提供的数据集406的数据。机器人,例如机器人104C,可学习其本地机器学习模型402尚未学习识别的物体,例如“图片”。机器学习模型402的输出,或者机器学习模型402的层,可产生机器人104C还未理解的新嵌入。这是因为机器人104C在第一次学习“图片”物体。机器人104C向用户106请求用于此新物体的分类标签。用户106为物体“图片”提供分类标签“图片”并且机器人104C将新接收到的分类标签在数据集406中与新产生的嵌入和机器人104C捕捉的特征数据对应起来。机器人104C将数据集406提供给服务器系统112以提供给其他机器人并且更新存储在服务器系统112上的机器学习模型506。
[0206] 在一些实现方式中,系统提供来自从数据库114取回的数据集406的数据以测试存储在服务器系统112上的机器学习模型506的输出层或隐藏层。在服务器系统112训练机器学习模型506来检测由机器人104A-104D提供的新数据集406之后,服务器系统112验证从机器学习模型506得出的数据集406。服务器系统112利用来自数据库114的数据集406执行此验证以确保可从机器学习模型506得出正确的嵌入和分类输出。在一些实现方式中,一旦服务器系统112确定了可从机器学习模型506恰当地得出正确的输出,服务器系统112就将机器学习模型506提供给机器人104A-104D。
[0207] 在一些实现方式中,训练模块902试图用新接收的数据集406训练机器学习模型506。例如,机器人104A为“自行车”物体提供数据集406C并且机器人104B为“眼镜”物体提供数据集406D。数据集406C包括特征数据908、嵌入910和表示“自行车”物体的分类标签912。
数据集406D包括特征数据914、嵌入916和表示“眼镜”物体的分类标签918。
[0208] 在一些实现方式中,服务器系统112将来自每个数据集406的特征数据提供给机器学习模型506。例如,服务器系统112将“眼镜”物体的特征数据914提供给机器学习模型506。如训练模块902中所示,机器学习模型506的一层可产生包括嵌入920和相应分类标签922的输出。服务器系统112将表示“铅笔”的输出分类标签922与数据集406D中提供的相应分类标签918相比较。比较的结果不匹配,因为表示“铅笔”的分类标签922不与表示“眼镜”的分类标签918相同。作为响应,训练模块902更新机器学习模型506。
[0209] 在一些实现方式中,训练模块902通过将接收到的“眼镜”的特征数据914和表示“眼镜”的分类标签918作为输入提供到机器学习模型506来更新机器学习模型506。作为响应,机器学习模型506产生与表示“眼镜”的分类标签918相对应的嵌入920。服务器系统112将特征数据914、产生的嵌入920和表示“眼镜”的分类标签918存储在数据库114中。然后,训练模块902将下一个随后的数据集,即数据集406C,提供到机器学习模型506来评估其在特定层处的输出。
[0210] 在一些实现方式中,评估模块904评估机器学习模型506的特定层处的输出。在训练模块902训练机器学习模型506之后,评估模块904利用存储在数据库114中的数据来评估新的机器学习模型506。存储在数据库114中的数据包括被信任并且被先前的机器学习模型版本所验证的参考数据。参考数据包括与嵌入和特征数据相对应的分类标签。例如,参考数据可包括“杯子”物体的分类标签、“杯子”物体的嵌入以及由机器人104捕捉的描述“杯子”物体的特征数据。评估模型904被要求评估机器学习模型506,因为机器学习模型506必须是后向兼容的。例如,机器学习模型506可识别“杯子”物体、“盘子”物体和“叉子”物体。训练模块902随后可训练机器学习模型506来识别“相机”物体。在训练模块902训练机器学习模型506来认识“相机”物体之后,新的机器学习模型506需要被评估以确保其仍能够认识“杯子”物体、“盘子”物体、“叉子”物体以及现在的“相机”物体。
[0211] 在一些实现方式中,参考数据可包括高质量数据集合。高质量数据集合可包括几乎表示理想嵌入的高质量嵌入。高质量嵌入可在数据库114中由指示符指示。高质量嵌入可包括高质量图像数据、高质量RGBD数据、高质量嵌入或者数据的组合。
[0212] 在一些实现方式中,评估模块904从数据库114取回数据906的特征数据924。数据906包括在数据集406中对于特定物体找到的相似数据。例如,例如“器皿”这样的特定物体的数据906包括描述器皿的特征数据、“器皿”的分类标签922和表示器皿的嵌入923。在另一示例中,“杯子”物体的数据906包括杯子的特征数据924、“杯子”的分类标签926和表示杯子的嵌入927。评估模块904将杯子的特征数据924作为输入提供给机器学习模型506。被训练的机器学习模型506产生嵌入928和相应的分类标签930。
[0213] 在一些实现方式中,为了评估机器学习模型506,评估模型904在比较模块932下执行测试以将机器学习模型506产生的嵌入928与存储在数据库114中的相似物体类型的一个或多个嵌入相比较。如果结果匹配,则评估模型904可确定机器学习模型506能够恰当地认识特定物体并且进而测试来自数据库114的下一个物体。
[0214] 在一些实现方式中,比较模块932包括评估模块904的测试以利用试探模型919来评估机器学习模型506的质量。此外,比较模块932包括利用阈值比较921的评估模块904的测试。例如,评估模型904可利用一个或多个试探模型将嵌入928与存储在数据库114中的嵌入相比较。数据库114可为“杯子”物体存储多个嵌入。评估模型904可使用一个或多个试探模型来将机器学习模型506产生的嵌入928与数据库114中的多个嵌入相比较。结果,评估模块904可确定机器学习模型506是否产生了正确的嵌入928。
[0215] 在一些实现方式中,评估模型904可使用阈值比较921来确定机器学习模型506是否产生了正确的嵌入928。例如,评估模型904可使用向量比较来比较嵌入928和数据库114中的表示“杯子”物体的每个嵌入之间的比特或字节。评估模型904可设置阈值,例如两个嵌入之间不多于10行可不同,以便嵌入928通过评价测试。评估模型904可设置其他阈值比较值。评估模型904利用阈值比较测试921来确定机器学习模型506是否产生了正确的嵌入928。
[0216] 在一些实现方式中,评估模型904在评估机器学习模型506之后向服务器系统112提供指示934。指示934可指示出机器学习模型506被恰当地训练。结果,服务器系统112可将机器学习模型506发送到机器人104A-104D以便存储。或者,指示934可指示出机器学习模型506没有认识出来自数据库114的一个或多个物体。例如,机器学习模型506认识了“杯子”和“器皿”物体,但没有认识“眼镜”物体。结果,服务器系统112将机器学习模型506提供到训练模块902以重训练机器学习模型506检测“眼镜”物体。此外,机器学习模型506可不认识多个物体,并且训练模块902可被用于重训练机器学习模型506以检测这多个物体的每一者。一旦评估模块904创建了指出机器学习模型506被恰当训练的指示934,则服务器系统112就将机器学习模型506发送到机器人104A-104D。
[0217] 在一些实现方式中,服务器系统112将机器学习模型506发送到机器人104A-104D的每一者以替代存储在机器人104A-104D的每一者上的机器学习模型504。机器人104A-104D响应于从服务器系统112接收到机器学习模型506而去除其先前的机器学习模型504。
此外,机器人104A-104D将数据集406从其各自的缓存中清除。
[0218] 图10是图示出用于评价和共享机器人学习的信息的过程1000的示例的流程图。过程1000可由一个或多个计算机执行。为了简单,过程被描述为由服务器系统112执行,但任何适当的计算系统或计算系统的组合都可被使用。
[0219] 在过程1000中,服务器系统112从多个机器人接收物体分类示例(1002)。每个物体分类示例可包括(i)机器人利用机器学习模型生成的嵌入,以及(ii)与该嵌入相对应的物体分类。每个机器人104A将每个数据集406指定为“新的”,向服务器系统112指示出将每个数据集406分发到其他机器人。在一些实现方式中,每个数据集406可包括嵌入、相应的分类标签、相应的特征或传感器数据以及与该嵌入相对应的附加元数据。
[0220] 在每个物体分类示例中,机器人利用其机器学习模型生成的嵌入是基于由该机器人生成的描述由该机器人的传感器检测到的物体的传感器数据的。例如,机器人利用机器人的传感器捕捉“杯子”物体的传感器数据。机器人将传感器数据作为输入提供到本地机器学习模型以从传感器数据生成嵌入。该嵌入的相应物体分类为检测到的物体指示分类。例如,用户可通过与客户端设备108或者与机器人本身交互来为“杯子”物体提供“杯子”的分类标签。
[0221] 在一些实现方式中,各个分类示例的嵌入包括由不同机器人生成的嵌入,其中每个机器人使用具有特定训练状态的特定机器学习模型来生成嵌入。例如,每个机器人104A-104D包括包含相同结构和训练状态的相同机器学习模型402。这允许了机器人104A-104D将该机器人生成的嵌入与其他机器人提供的嵌入相比较。如果两个机器人使用不同的机器学习模型,则这两个机器人可对同一物体产生不同的嵌入,引起物体的误分类。
[0222] 在一些实现方式中,服务器系统112对于接收到的物体分类示例的每一者接收由机器人生成的描述与该物体分类示例相对应的物体的传感器数据。例如,服务器系统112接收包括指示物体的形状、颜色、大小、轮廓和纹理的数据的传感器数据。服务器系统112基于从机器人104A-104D的每一者接收到的传感器数据评估分类示例的质量。
[0223] 服务器系统112基于接收到的物体分类示例的嵌入与其他嵌入的相似性来评估物体分类示例(1004)。服务器系统112的质量确保系统702提供从机器人104A-104D的每一者接收的嵌入的质量评价。质量确保系统702中包括的质量分析模块704产生指示出从每个机器人104接收的数据集406中的嵌入的质量的质量得分。质量分析模块704通过利用各种标准对嵌入信息进行评估和过滤,包括比较当被映射到高维空间时嵌入之间的距离,来评价嵌入信息。
[0224] 服务器系统112通过为特定物体分类示例的特定嵌入确定质量得分来评估物体分类示例。服务器系统112通过分析多个机器人提供的传感器数据的水平质量来确定质量得分。服务器系统112通过将传感器数据提供到存储在服务器系统112上的机器学习模型以确定传感器数据和嵌入之间的匹配来分析水平质量。机器学习模型提供输出嵌入,服务器系统112将该输出嵌入与接收到的特定嵌入相比较。此外,服务器系统112将来自机器学习模型的输出分类标签与来自特定物体分类示例的特定嵌入所对应的物体分类相比较。响应于服务器系统112确定来自机器学习模型的输出分类标签不匹配与特定嵌入相对应的物体分类,服务器系统112重训练机器学习模型以检测特定嵌入并且产生与物体分类匹配的正确分类标签。
[0225] 此外,服务器系统112通过分析物体分类示例如何调整机器学习模型的整体准确性来确定质量得分。例如,如果物体分类示例改善机器学习模型的整体准确性,则服务器系统增大与该特定嵌入相对应的质量得分。
[0226] 服务器系统112还通过分析多个机器人提供的其他物体分类示例的先前质量水平来确定质量得分。例如,服务器系统112在分析从机器人104B接收的特定嵌入时,分析来自机器人104A-104D的先前传感器数据、分类示例和相应质量得分。服务器系统112可使用这个先前数据来为来自例如机器人104B的特定嵌入确定质量得分。此外,服务器系统112可使用这个先前数据来为相似物体类型的来自任何机器人104A-104D的特定嵌入确定质量得分。当前数据与产生高质量得分的来自机器人104A-104D的任何一者的任何过去数据之间的相似性越大,该特定嵌入的质量得分就将越大。
[0227] 在一些实现方式中,质量得分表示物体分类匹配与该特定物体分类示例相对应的物体的可能性。例如,质量得分表示“杯子”的物体分类匹配与接收的嵌入相对应的实际物体的可能性(例如,接收的嵌入表示“杯子”物体)。物体分类分配与从机器人(例如机器人104A)接收的嵌入相对应的物体的可能性越高,质量得分就越大。
[0228] 在一些实现方式中,服务器系统112的质量确保系统702对于特定物体分类示例的特定嵌入确定该特定嵌入相对于具有与该特定物体分类示例相同的物体分类的一个或多个其他嵌入的相似性水平。例如,质量确保系统702确定“杯子”物体的接收的嵌入与“杯子”物体的一个或多个其他嵌入的相似性水平。质量确保系统702可通过比较在高维空间802中映射的两个嵌入之间的距离来确定相似性的水平。两个嵌入之间的距离(例如,向量距离)越近,两个嵌入之间的相似性的水平就越高。
[0229] 服务器系统112基于对嵌入的质量的评估来选择物体分类示例的子集(1006)。例如,质量分析模块704可将落在阈值区域内的嵌入指定为要发送到机器人104A-104D的嵌入。在阈值区域内指示出嵌入表示物体的更高可能性。另一方面,质量分析模块704将存在于阈值区域827之外的嵌入存储在数据库114中。在其他实现方式中,质量分析模块704丢弃存在于在从理想嵌入起的阈值距离之外的任何嵌入。通过丢弃嵌入,相应的数据集也被丢弃。
[0230] 服务器系统112基于质量得分满足阈值来选择特定的物体分类示例来包括在子集中。在一些实现方式中,服务器系统112基于质量得分大于60的阈值来选择特定的物体分类示例,例如表示“杯子”物体的嵌入。如果服务器系统112确定特定物体分类示例的质量得分不大于阈值,则服务器系统112不将特定物体分类示例包括在子集中。此外,服务器系统112可将该特定物体分类示例存储在数据库114中。或者,服务器系统112可丢弃该特定物体分类示例。
[0231] 在一些实现方式中,服务器系统112通过对于特定物体分类示例的特定嵌入确定该特定嵌入相对于具有与该特定物体分类示例不同的物体分类的一个或多个其他嵌入的相似性的水平,来评估物体分类示例。例如,服务器系统112可比较在高维空间中表示“杯子”物体的接收的嵌入与表示“铅笔”物体的映射的嵌入之间的距离。此外,服务器系统112可比较在高维空间中表示“杯子”物体的接收的嵌入与表示“帽子”物体的映射的嵌入之间的距离。接收的嵌入和另一个映射的嵌入之间的距离可在高维空间中被测量为向量距离。结果,服务器系统112基于它们在高维空间中存在得与彼此有多接近来确定接收的嵌入和一个或多个其他嵌入之间的相似性的水平。
[0232] 服务器系统112将物体分类示例的子集分发给多个机器人中的机器人(1008)。服务器系统112向多个机器人中的每个机器人发送物体分类示例的子集并且指定发送的分类示例被存储在每个机器人的本地缓存中。例如,服务器系统112利用例如“存储”之类的标签来标记物体分类示例的子集以向机器人指示存储在其各自的缓存中。虽然缓存被描述为是机器人本地的,但机器人在一些实例中也可利用基于网络的存储或者“云”存储。因此,取决于实现方式,机器人可在本地或远程存储一些或所有缓存的数据。另外,对于缓存使用远程存储可与共享嵌入以分发相分离,因为每个机器人可具有专门用于该机器人的私有缓存或网络存储账户。
[0233] 服务器系统112将物体分类示例的子集分发到各自存储相同机器学习模型402的拷贝的机器人104A-104D。每个机器学习模型402包括相同的训练状态和相似的结构。服务器系统112响应于质量分析模块704分析接收的嵌入而分发物体分类示例的子集。
[0234] 在一些实现方式中,服务器系统112同步多个机器人中的机器人的缓存,使得多个机器人的每一者将所选子集中的分类示例存储在该机器人的本地缓存中。例如,服务器系统112可周期性地每日、每星期或者每月在机器人104A-104D的每一者之间同步本地缓存。在同步之后,多个机器人中的每个机器人在其各自的本地缓存中包括相同的分类示例。
[0235] 在一些实现方式中,质量分析模块704产生指示出分析的嵌入的质量的质量得分。质量得分表示质量分析模块704对于接收的嵌入表示特定物体多有信心。
[0236] 在一些实现方式中,质量阈值704将每个数据集406的质量得分与质量阈值相比较。如果质量分析模块704确定质量得分大于质量阈值,则质量分析模块704允许服务器系统112将数据集发送到每个机器人104。机器人104A-104D将新的数据集存储在各自的本地缓存404中。
[0237] 在一些实现方式中,质量分析模块704对于是否共享数据集406的指示被与数据集406一起存储在数据库114中。服务器系统112将使用数据库114中存储的指示来确定是否使用特定的嵌入来生成经更新的机器学习模型506。例如,如果数据库114存储指出不共享嵌入的指示,则服务器系统112将不使用该嵌入来生成经更新的机器学习模型506。
[0238] 在一些实现方式中,服务器系统112利用分类示例的所选子集来训练第二机器学习模型。例如,服务器系统利用分类示例的所选子集来生成经更新的机器学习模型506。服务器系统112对于每个物体分类示例接收描述与该物体分类示例相对应的物体的传感器数据。服务器系统112可从机器人104A-104D的每一者接收传感器数据。例如,传感器数据可包括物体的形状、颜色、大小、轮廓和纹理。此外,传感器数据可包括RGBD传感器提供的红、蓝、绿和深度数据。
[0239] 在训练期间,服务器系统112生成机器学习模型504的经更新版本。例如,服务器系统112更新机器学习模型504的训练状态和结构以产生经更新的机器学习模型506。一旦训练进行到了服务器系统112确定可从经更新的机器学习模型506恰当地得出正确输出的点,服务器系统112就将机器学习模型506提供给机器人104A-104D。
[0240] 服务器系统112将经训练的第二机器学习模型506分发给多个机器人中的机器人。经训练的第二机器学习模型506替代存储在多个机器人中的每个机器人处的机器学习模型。此外,服务器系统112向多个机器人中的每个机器人提供指令来从该机器人的本地缓存中去除分发的分类示例。经训练的第二机器学习模型506包括检测去除的分发的分类示例所表示的物体的能力。结果,不要求分发的分类示例被每个机器人中的本地缓存存储。
[0241] 图11是图示出用于增强机器人学习的示例系统1100的图。如上所述,机器人可通过将信息与表示机器人做出的观察的嵌入相关联来迅速地获取关于其环境的知识。例如,机器人可捕捉示出该机器人不知道的物体的图像数据。机器人可使用机器学习模型,例如神经网络物体分类模型,来处理描述该物体的传感器数据,并且生成以编码形式表示该物体的嵌入,例如向量或者值的集合。如果物体分类模型不能确定物体的正确分类,则人类用户或另一机器人或系统可能够提供正确的分类。机器人随后可将该物体的嵌入与该物体的分类关联地存储,以便迅速地学习认识该物体。当物体再次被观察到时,机器人可处理传感器数据并且将得到的嵌入与存储的嵌入相比较。当生成的嵌入与存储的嵌入相匹配或者充分相似时,机器人可确定存储的嵌入的分类是适当的。
[0242] 为物体分类和其他任务生成、存储和使用嵌入的能力可允许机器人迅速且高效地学习在新环境和情形中工作。例如,生成和存储嵌入要求非常少量的时间和计算,并且允许机器人几乎即刻扩展其知识库。作为对比,重训练机器学习模型经常要求许多训练示例以及计算上要求高的迭代训练过程。
[0243] 使用嵌入的机器人学习的另一优点是机器人容易地与使用相同机器学习模型的其他机器人交换嵌入的能力。这允许了在机器人的机群之间迅速地散布学习的信息。然而,可能不希望机器人与远程服务器系统或者与机群中的其他机器人共享其生成的所有嵌入,尤其如果嵌入表示私密或机密信息的话。例如,机器人可与服务器系统共享与一般物体(例如,椅子、厨房工具)有关的嵌入,但其可不共享所生成的与专有物体(例如,专有机器)、个人物体(例如,用户最喜爱的马克杯)、包含个人可识别信息的物体(例如,信用卡)或者其他敏感物体(例如,贵重的绘画或者其他物体)有关的嵌入。为了控制对机器人学习的信息的使用,一些嵌入可被指定为被共享的“公共嵌入”并且其他嵌入可被指定为不被共享的“私密嵌入”。虽然机器人不与其他机器人或者中央服务器系统(为了分发)共享私密嵌入,但机器人可将私密嵌入保留在本地缓存中,使得其保留由这些嵌入表示的学习的信息的益处。当嵌入和关联的分类表示学习的物体时,私密嵌入可使得机器人能够在其遇到相应物体时认识它们。
[0244] 机器人可通过利用一组共享规则分析与该嵌入有关的信息(例如,分类、元数据、标记、标签、传感器数据或者嵌入本身)来确定嵌入的共享状态(例如,公共、私密或者受限共享)。在一些情况下,共享规则可以是预定的并且可基于各种因素的任何一者,包括嵌入的分类、与嵌入相关联的物体的位置或者其他因素。在一些实现方式中,机器人的用户可定制共享规则。在一些示例中,用户可指示机器人特定物体是私密的,使得其嵌入不被与服务器系统或者机群中的其他机器人共享。类似地,机器人可被配置为共享涉及当机器人在某些位置(例如,公共场所)中时观察到的物体的嵌入,而不共享与在其他位置中(例如,在私有住宅中)观察到的物体有关的嵌入。在一些情况下,机器人可被配置为只与其他机器人的有限子集共享特定的嵌入。例如,机器人可只与相似位置中的其他机器人共享某些嵌入(例如,在工厂中的机器人之间共享)或者只与相似角色的其他机器人共享某些嵌入(例如,在是家庭助理的机器人之间共享)。
[0245] 一般而言,利用机器学习模型生成的嵌入具有绑定到该机器学习模型的训练状态的唯一含义。嵌入可表示利用机器学习模型处理输入数据的结果,例如在神经网络模型的情况下,在神经网络的输出层处或者在神经网络的隐藏层处生成的信息。对于给定的观察(例如,在图像数据中检测到的物体),不同的机器学习模型参数将对于输入数据的相同集合产生不同的嵌入。结果,从第一机器学习模型改变到第二机器学习模型将意味着利用第一机器学习模型生成的先前存储的嵌入对于与由第二机器学习模型生成的嵌入相比较将不再有用。换言之,改变机器学习模型将可能引起缓存的嵌入所表示的学习丢失。
[0246] 由于此原因,未被利用关于物体的数据来训练的经更新的机器学习模型可能不能够正确地对物体分类,即使利用由先前模型生成的嵌入。然而,机器人可通过在接收到经更新的机器学习模型时重生成新的嵌入来维护由嵌入表示的知识的集合。机器人可利用新的机器学习模型为物体生成新的嵌入,并且使用新的嵌入以便在使用新的网络模型时继续认识该物体。
[0247] 在一些实现方式中,机器人可存储与生成的私密嵌入相关联的原始或经处理的传感器数据。例如,机器人可存储从与私密嵌入有关的传感器数据提取的特征、统计或得分。当机器人接收到经更新的机器学习模型时,机器人可利用经更新的机器学习模型和存储的与每个私密嵌入相关联的原始或经处理的传感器数据来重生成其本地缓存中的每个私密嵌入。机器人随后可将重生成的私密嵌入与关联的分类和原始或经处理的传感器数据一起存储在其本地缓存中。机器人随后可使用重生成的私密嵌入来利用其经更新的机器学习模型认识和分类相关私密物体。
[0248] 在一些实现方式中,在更新机器学习模型或者重生成私密嵌入之后,机器人可从其本地缓存去除由机器学习模型的先前版本生成的私密嵌入。在一些实现方式中,机器人可保留与私密嵌入相关联的信息,包括元数据、原始或经处理的传感器数据、物体分类以及共享状态,并且将该信息与重生成的私密嵌入相关联。
[0249] 这些技术可提供以下优点中的一个或多个。通过将一些嵌入指定为不与服务器系统或机群中的其他机器人共享的私密嵌入,个体机器人可各自保护该机器人的用户的隐私,同时仍允许机器人机群受益于不是私密的或者机密的信息的共享学习。机器人可接收和使用由其他机器人共享的嵌入,同时仍使用其自己的私密嵌入来认识和分类其周边的私密物体。另外,特定机器人可与服务器系统共享所生成的不私密的嵌入(即,受限或公共的嵌入)以便分发,使得机群中的其他机器人可接收并使用这些公共或受限嵌入,而不损害特定机器人的用户的隐私。通过允许用户定制用于确定嵌入的共享状态的共享规则,用户可根据其偏好来调整应用到嵌入的私密性。例如,偏好更高水平的私密性的用户可设置允许与机群中的其他机器人共享更少嵌入的共享规则。通过存储与私密嵌入有关的原始或经处理的传感器数据,机器人可在机器人接收到经更新的机器学习模型之后重生成私密嵌入。通过将重生成的私密嵌入存储在其本地缓存中,机器人可利用其经更新的机器学习模型来认识和分类与私密嵌入有关的物体,该机器学习模型可能尚未被基于这些特定物体来进行训练。
[0250] 仍参考图11,在系统1100中,机器人1110从机器人1110的一个或多个传感器接收数据。机器人1110的计算机系统使用传感器数据来识别和分类该机器人的周边中的一个或多个物体。在一些实现方式中,机器人1110的计算机系统可包括生成与机器人1110识别的物体有关的嵌入的机器学习模型。在一些情况下,用户可教导机器人对物体的分类。例如,机器人可位于用户的家中并且可识别是马克杯的物体。机器人1110的机器学习模型可生成与马克杯有关的嵌入并且用户可教导机器人所识别的物体是属于家里的特定居民的马克杯(即,“乔的马克杯”)。机器人1110随后可在机器人1110的本地缓存中存储与该物体相关联的嵌入,以及分类“乔的马克杯”。通过在机器人的本地缓存中存储嵌入和分类,机器人在未来可将该物体识别为“乔的马克杯”,而无需重训练机器学习模型。
[0251] 在一些实现方式中,机器人可与远程服务器系统共享其缓存中存储的嵌入,远程服务器系统随后可将这些嵌入分发给机群中的其他机器人。在一些情况下,机器人可能希望只与其他机器人共享其缓存中存储的嵌入中的一些。例如,机器人可不与其他机器人共享其确定为与专有或个人物体、包含个人可识别信息的物体或者其他敏感物体有关的嵌入。为了指示出其将共享哪些嵌入以及其不会共享哪些嵌入,机器人可将嵌入指定为“公共”(将被共享)、“私密”(不被共享)或者“受限”(与机器人的子集共享)。例如,位于家中的机器人可存储与被分类为“茶杯”的物体相关联的嵌入。因为“茶杯”是一般物体,所以机器人可确定与“茶杯”相关联的嵌入可与机器人机群共享并且因此将“茶杯”嵌入指定为“公共”。或者,机器人也可存储与被分类为“乔的马克杯”的物体相关联的嵌入。因为“乔的马克杯”是个人物体,所以机器人可确定可不与机器人机群共享与“乔的马克杯”相关联的嵌入并且因此将“乔的马克杯”嵌入指定为“私密”。
[0252] 在一些实现方式中,机器人可将嵌入指定为“受限”,其中机器人与其他机器人的子集共享嵌入(例如,只与特定位置或角色的机器人共享)。例如,位于家中的机器人可确定即使“乔的马克杯”是个人物体,但与它相关联的嵌入应当与家中的其他机器人共享,以便它们也可识别它。在此情况下,机器人可将“乔的马克杯”指定为可只与家中的其他机器人共享的受限嵌入。
[0253] 系统1100包括机器人1110,机器人1110可具有与上文论述的机器人104A-104D的任何一者相同的特征。例如,机器人1110可以是具有能够移动或者与其周边交互的计算能力的设备。机器人1110可包括计算系统,该计算系统包括计算机硬件,例如一个或多个处理器、芯片集、通用计算系统、存储器系统和数据存储系统。在一些情况下,机器人1110可包括专用计算硬件,包括但不限于微控制器、现场可编程门阵列(field programmable gate array,FPGA)或者专用集成电路(application specific integrated circuit,ASIC)。机器人1110的计算机硬件可被配置为执行控制机器人1110的运动和过程的软件。
[0254] 机器人1110的计算机系统也可包括本地缓存1150。本地缓存1150可以是机器人1110的存储器系统或存储器系统的一部分,其存储被机器人1110的计算机系统用于各种计算功能的数据。
[0255] 机器人1110也可包括从机器人的周边收集数据的传感器。例如,机器人1110可配备有捕捉机器人的周边的图像的一个或多个相机。传感器也可包括LIDAR、雷达、邻近传感器、光检测器或者使得机器人1110能够检测和识别其周边的物体的其他传感器。在一些实现方式中,传感器收集的传感器数据1115可包括由机器人1110的一个或多个相机捕捉的机器人1110的周边的图像。
[0256] 机器人1110的周边可包括可被机器人1110识别的一个或多个物体1120、1121、1130。位于不同环境中的机器人1110可识别在其周边的不同物体1120、1121、1130。例如,家中的机器人1110可识别包括家具(例如,桌子、椅子)、装饰物(例如,花瓶、绘画)和个人物品(例如,用户最喜爱的马克杯、特定小孩的床、宠物最喜爱的玩具)的物体1120、1121、1130。
工厂中的机器人1110可识别包括设备(例如,机器、工具)、保护装置(例如,安全帽、安全眼镜)或者输出产品(例如,个体制造的小部件、一盒小部件等等)的物体1120、1121、1130。机器人1110可识别其周边的各种物体的任何一者。在示例系统1100中,机器人的本地周边的物体1120、1121、1130包括马克杯(1121)、钻戒和玩偶(1120),以及茶杯和棒球帽(1130)。
[0257] 机器人1110可通过分析由机器人1110的传感器收集的传感器数据1115来识别其周边的物体1120、1121、1130。例如,机器人1110的相机可捕捉描绘机器人的周边的一个或多个物体1120、1121、1130的传感器数据图像1115。机器人1110的计算机系统可分析传感器数据图像1115以确定在机器人的本地周边中有物体1120、1121、1130。机器人1110的计算机系统可使用各种技术的任何一者来识别物体1120、1121、1130。例如,计算机系统可处理包含物体的图像的传感器数据图像1115,然后在该图像内生成遵循所识别的物体的轮廓的限界框。在示例系统1100中,传感器数据1115包括描绘物体1122的图像,物体1122是玩偶。
[0258] 在一些实现方式中,机器人1110的计算机系统可处理传感器数据1115以提取与所识别的物体1122有关的特征。例如,计算机系统可处理传感器数据1115以确定物体1122的物理特征,例如位置、大小、维度、形状、材料成分、朝向或者其他物理特征。在一些情况下,经处理的传感器数据1115可包括提取的物理特征、提取的统计特征或得分或者从收集的传感器数据1115确定的与物体1122有关的其他度量。机器人1110的计算机系统也可按其他方式分析或处理传感器数据1115,包括但不限于过滤、变换、截断、注释或增强传感器数据1115。在一些实现方式中,经处理的传感器数据1115可包括机器学习模型1140要求作为输入的所提取特征。
[0259] 在一些实现方式中,机器人1110可收集或生成与所识别的物体1122有关的附加数据。例如,机器人1110的计算机系统可收集或生成与物体1122有关的元数据,该元数据包括物体1122的位置、物体1122被识别的时间和日期或者与物体1122有关的其他信息。元数据还可包括与物体1122有关的其他信息,例如,元数据可指示出与物体1122相关联的用户。元数据可描述物体的大小、形状、材料、成分或其他属性。
[0260] 在一些实现方式中,机器人1110的计算机系统可将原始或经处理的传感器数据1115输入到机器学习模型1140中。机器学习模型1140可以是机器人1110的计算机系统的一部分并且可以用硬件、软件或者硬件和软件的任何组合来实现。机器学习模型1140接受原始或者经处理的传感器数据1115以及由机器人1110的计算机系统提供给它的任何其他数据作为输入,并且输出与从传感器数据1115识别的物体1122相对应的嵌入1142。例如,机器学习模型1140可接受包括提取的物体1122的特征的经处理的传感器数据1115作为输入。机器学习模型1140也可接受与传感器数据1115或物体1122相关联的元数据作为输入,例如指示出传感器数据1115是在何处被收集的位置信息。基于输入的传感器数据1115和元数据,机器学习模型1140可生成与识别的物体1122有关的嵌入1142。
[0261] 在一些实现方式中,机器学习模型1140与本文论述的其他机器学习模型一样可包括神经网络或其他类型的分类器。例如,机器学习模型1140可以是参数模型、非参数模型或者半参数模型。其可以是统计模型或经验模型。机器学习模型1140可包括各种概率分类器,包括贝叶斯分类器。机器学习模型1140可以用硬件、固件和/或软件的任何组合实现。
[0262] 嵌入1142可例如是机器学习模型1140的输出的多维向量表示。例如,一个嵌入表示可表示128元素向量,其中每个元素是64比特整数。为了图示的清晰,嵌入1142被表示为12位整数。在图11的示例中,机器人1110的计算机系统将与玩偶1122有关的传感器数据
1115提供给机器学习模型1140。基于输入的传感器数据1115,机器学习模型1140输出与玩偶1122有关的“129057892039”的嵌入1142。
[0263] 一般而言,机器学习模型1140生成的嵌入1142是与物体1122有关的原始或者经处理的传感器数据1115和机器学习模型1140的特定训练状态的唯一函数。例如,使用不同的参数或模型结构的两个机器学习模型1140对于与物体1122有关的相同输入传感器数据1115一般将生成两个不同的嵌入1142。结果,嵌入1142一般只有在与使用与用来生成嵌入
1142的那个相同的参数和训练状态的机器学习模型1140一起使用时才是有用或有意义的。
[0264] 在一些实现方式中,机器学习模型1140也可生成与物体1122有关的分类。例如,基于嵌入1142,机器学习模型1140可从已知分类的集合为物体1122生成分类。然而,对于一些物体1122,用户可能希望机器人1110向物体1122指派与机器学习模型1140生成的分类不同的分类。例如,用户可能希望纠正由机器学习模型1140生成的不正确分类(例如,机器学习模型1140将物体1122分类为“铅笔”,而其实际上是“钢笔”)。作为另一示例,用户可能希望比机器学习模型1140生成的分类更具体地或者不同地分类物体1122(例如,机器学习模型1140将物体1122分类为“马克杯”,而用户想要机器人1110将物体1122分类为“乔的马克杯”)。
[0265] 在用户希望机器人1110与生成的分类不同地对物体1122分类的情况下,用户可通过向机器人1110提供用户输入1145来教导机器人1110将新的分类1147与物体1122关联起来。用户可通过各种手段的任何一者向机器人1110提供用户输入1145,包括例如通过语音命令、通过与机器人1110通信的外围设备(例如,键盘、鼠标、触摸屏)或者通过无线或有线网络连接。在示例系统1100中,用户希望机器人1110不只是简单地将物体1122分类为“玩偶”,而是分类为“玩偶苏西”。因此,用户向机器人1110提供用户输入1145,指示出物体1122是“玩偶苏西”,并且机器人的计算机系统将分类1147“玩偶苏西”和与物体1122有关的嵌入1142关联起来。
[0266] 机器人1110的计算机系统随后可将嵌入1142和与物体1122有关的用户输入分类1147存储在机器人1110的本地缓存1150中。通过将嵌入1142和分类1147存储在机器人的本地缓存1150中,机器人1110的计算系统在未来可将物体1122识别为用户提供的分类1147,而无需重训练机器学习模型1140。在一些实现方式中,机器人1110的计算机系统也可在本地缓存1150中存储原始或者经处理的传感器数据1115和与嵌入1142有关的元数据的一些或全部,以及用于生成嵌入1142的机器学习模型的版本识别符。
[0267] 在图11的示例中,机器人1110的计算机系统在本地缓存1150的条目“3”中存储嵌入1142“129057892039”、分类1147“玩偶苏西”、传感器数据1115以及被机器学习模型1140用来生成嵌入1142的机器学习模型的版本(版本“1.0”)。在将嵌入1142和分类1147存储在本地缓存1150中后,下次机器人1110遇到物体1122时,其将能够将物体1122识别为“玩偶苏西”。
[0268] 在一些实现方式中,当机器人1110是机器人的机群的一部分时,机器人1110可与远程服务器系统共享来自其本地缓存1150的嵌入1142,该远程服务器系统将嵌入1142分发给机群中的其他机器人。在一些情况下,机器人1110可只与其他机器人共享其缓存1150中存储的嵌入1142中的一些。例如,机器人1110可共享表示一般物体,例如椅子,或者书籍,的嵌入1142,但机器人1110可不共享表示个人物体——例如驾驶执照或者用户最喜爱的玩具,或者贵重物体,例如一件珠宝或者昂贵的绘画,的嵌入1142。
[0269] 机器人1110可出于各种原因的任何一者而不共享与物体1122相关联的嵌入1142。例如,如果关联的物体1122被认为是受限制的或者机密的,则机器人1110可不共享嵌入
1142。例如,工厂中的机器人1110可不共享与专有机器或仪器相关联的嵌入1142。医院中的机器人1110可不共享与病人房间中的物体1122相关联的嵌入。机器人1110可不共享包含个人可识别信息(例如,驾驶执照或ID卡)的嵌入1142。在一些实现方式中,如果嵌入1142与个人物体1122相关联,则机器人1110可不共享嵌入1142。例如,家中的机器人1110可不共享与房主的房子钥匙相关联或者与居民最喜爱的马克杯相关联的嵌入1142。
[0270] 在一些情况下,机器人1110可不共享嵌入1142,因为用户指示机器人1110不共享与某个物体或物体的类别有关的信息。例如,用户可指示机器人1110不共享与用户的家中的贵重珠宝有关的任何嵌入1142或者用户可指示机器人1110不共享与位于用户的卧室中的物体有关的任何嵌入。一般而言,用户可指示机器人1110不共享与其希望保持私密的任何物体1122相关联的特定嵌入1142。
[0271] 在一些情况下,机器人1110可只与其他机器人的有限子集共享嵌入1142。例如,机器人1110可与同一组织中的其他机器人(例如,给定公司或给定餐馆的所有机器人)、与特定类型或域的其他机器人(例如,所有医院机器人或者所有厨房服务机器人)或者与给定位置的其他机器人(例如,家里的所有机器人)共享特定嵌入1142。在其他情况下,机器人1110可与机群中的所有其他机器人共享嵌入1142。
[0272] 为了指示出机器人1110将共享哪些嵌入1142以及它不会共享哪些嵌入1142,机器人1110可将每个嵌入1142与共享状态1162关联起来。在一些实现方式中,机器人1110可将每个嵌入1142的共享状态1162确定为“公共”(被共享的那些)、“私密”(不被共享的那些)或者“受限”(与机器人的子集共享的那些)。为了确定嵌入1142的共享状态1162,机器人1110的计算机系统可对照一组共享规则1160来分析与嵌入1142有关的信息。
[0273] 将受限嵌入1142共享到机器人的子集或群组可经由访问控制列表来实现,其中机器人1110的计算机系统维护可与之共享一个或多个受限嵌入1142的机器人的列表。在一些实现方式中,机器人1110的计算机系统可为不同的受限嵌入1142维护不同的访问控制列表。
[0274] 机器人1110的计算机系统可使用与嵌入1142有关的各种信息的任何一者来确定嵌入1142的共享状态1162。例如,计算机系统可使用嵌入1142自身、与嵌入1142相关联的分类1147或者与嵌入1142相关联的元数据。在一些情况下,计算机系统可使用指示出与嵌入1142有关的物体位于何处或者嵌入1142是在何时生成的元数据。机器人1110的计算机系统也可使用与嵌入1142相关联的其他数据或元数据来确定嵌入1142的共享状态1162。例如,计算机系统可使用传感器数据1115、由机器学习模型1140生成的分类、机器人1110的位置(例如,来自GPS)、来自机器人1110的传感器的其他数据、由用户提供的信息或者其他信息来确定嵌入1142的共享状态。
[0275] 共享规则1160提供使得机器人1110能够确定特定嵌入1142的共享状态的标准。共享规则1160可例如被存储在机器人1110的存储器系统中并且被机器人1110的计算机系统的处理器访问。在一些实现方式中,共享规则1160可以是预定的(例如,“默认”规则)。在一些实现方式中,共享规则1160可由机器人1110随着时间的流逝而学习。
[0276] 不同的机器人1110可利用不同的共享规则1160。例如,工厂中的机器人1110可使用一组共享规则1160,而医院中的机器人1110可使用不同的一组共享规则1160。在一些实现方式中,机器人1110可为与不同用户相关联的物体1122利用不同的共享规则1160。
[0277] 共享规则1160可包括考虑影响机器人1110是否将共享嵌入1142的各种因素的任何一者的规则。例如,共享规则1160可包括考虑物体1142的位置(例如,在卧室中、在厨房中、在室外)、物体1142的类型(例如,园艺工具、一件家具、个人物品、机器)、物体1142的分类(例如,比如“乔的马克杯”之类的个人物品)、机器人1110的位置(例如,家、工厂、餐馆、医院)或者其他因素的规则。例如,共享规则可以是:与位于用户的家中的物体1122相关联的任何嵌入1142是只与家中的其他机器人共享的受限嵌入,或者与包含个人可识别信息的物体1122相关联的任何嵌入1142是私密嵌入。
[0278] 在一些示例中,机器人1110可请求用户确定与物体1122相关联的嵌入1142的共享状态1162,其中机器人1110根据用户的响应来指定嵌入1142的共享状态1162。这里,用户可通过向机器人1110提供输入来教导机器人1110嵌入的共享状态1162,其中提供输入可例如通过向机器人提供语音命令或者通过外围设备(例如,键盘、鼠标或者触摸屏)将数据输入到机器人中来实现。
[0279] 在一些实现方式中,机器人1110的用户可定制、修改或者添加到共享规则1160。例如,机器人1110可具有默认共享规则1160,其指示出与位于用户的办公室中的物体1122有关的任何嵌入1142具有私密共享状态1162。在一些情况下,用户可修改共享规则1160以指示出只有与用户的桌上的物体1122相关联的嵌入将具有私密共享状态1162,而与在用户的办公室中但不在他的桌上的任何物体1122相关联的嵌入1142将具有公共共享状态1162。
[0280] 在一些实现方式中,机器人1110的用户可指明与之共享受限嵌入1142的机器人的群组。例如,机器人1110的用户可指明可只与同一位置中的其他机器人共享嵌入1142,或者只与同一组织中的其他机器人共享嵌入1142。
[0281] 基于共享规则1160和/或来自用户的输入,机器人1110的计算机系统将每个嵌入1142的共享状态1162确定为公共或私密。机器人1110的计算机系统将共享状态1162与嵌入
1142相关联并且将共享状态1162存储在本地缓存1150中。在一些实现方式中,机器人1110的计算机系统在机器学习模型1140生成嵌入1142时确定嵌入1142的共享状态1162。
[0282] 在一些实现方式中,机器人1110的计算机系统可维护存储嵌入的一个或多个缓存(例如,存储公共嵌入的一个缓存和存储受限和私密嵌入的第二缓存)。在一些示例中,机器人1110的计算机系统可将缓存的特定部分分配来存储公共、私密或受限嵌入和有关信息。
[0283] 在示例系统1100中,机器人1110的周边包括私密物体1120(“钻戒”和“玩偶苏西”)、受限物体1121(“乔的马克杯”)和公共物体1130(“茶杯”和“棒球帽”)。对于每个物体1120、1121、1130,机器人1110已从机器学习模型1140生成了嵌入(基于传感器数据)并且确定了分类(基于用户输入)。对于每个识别出的物体1120、1121、1130,计算机系统通过对照共享规则1160的集合分析与物体1120、1121、1130有关的信息来确定了共享状态并且将与生成的嵌入相关联的该共享状态存储在本地缓存1150中。这里,例如,用户指定“乔的马克杯”是受限嵌入,只与家中的其他物体共享。
[0284] 特别地,在图11的示例中,与嵌入1142相关联的元数据指示出玩偶1122是在用户的家中识别的。共享规则1160包括一规则,其声明除非用户另有指定,否则位于用户的家中的任何物体1122是私密的。基于共享规则1160,计算机系统确定与玩偶1122有关的嵌入1142是私密的。因此,机器人1110的计算机系统在本地缓存1150中存储与嵌入1142相关联的“私密”的共享状态1162。
[0285] 在一些实现方式中,机器人1110的计算机系统可基于嵌入1142的共享状态1162来确定是否存储与每个嵌入1142相关联的附加信息。例如,计算机系统可仅在嵌入1142是私密或受限的情况下存储与该嵌入1142相关联的原始或者经处理的传感器数据1115。
[0286] 图12是图示出用于在机器人的机群之间选择性地共享嵌入的示例系统1200的图。在系统1200中,机器人的机群中的一个或多个机器人与远程服务器系统共享来自其本地缓存的公共嵌入,但不共享私密嵌入。在一些情况下,机器人可与机群中的机器人的子集共享受限嵌入。这里,机器人使用相同的机器学习模型,从而一个机器人生成的嵌入可被另一机器人使用。远程服务器系统随后将共享的嵌入分发给机器人的机群中的一个或多个机器人。这样,机群中的机器人能够通过利用由另一机器人生成的公共和/或嵌入来利用其他机器人的学习,使得每个机器人能够认识与嵌入相关联的物体,而无需首先遇到该物体本身并且无需重训练机器学习模型。图12包括表示数据的流程的阶段(A)和(B)。
[0287] 系统1200包括系统1100的机器人1110,该机器人1110在其本地缓存1150中具有由机器人1110生成的嵌入的集合。在示例系统1200中,本地缓存1150最初包含由机器人1110生成的私密、受限和私密嵌入,具体而言是在本地缓存中指定为“1”的受限嵌入(“乔的马克杯”),在本地缓存1150中指定为“2”和“3”的私密嵌入(“钻戒”和“玩偶苏西”),以及在本地缓存1150中指定为“4”和“5”的公共嵌入(“茶杯”、“棒球帽”)。
[0288] 系统1200还包括一个或多个其他机器人1210。一个或多个机器人1210可以是与机器人1110相同类型的机器人或者是与机器人1110不同类型的机器人。无论机器人1110和1210是相同还是不同类型的,它们都可使用同一机器学习模型的拷贝来对物体分类。
[0289] 系统1200还包括远程服务器系统1270。远程服务器系统1270可例如是一个或多个计算机系统、服务器、分布式计算平台或者其他处理系统。在一些实现方式中,远程服务器系统1270可以是云计算系统。
[0290] 机器人1110和一个或多个其他机器人1210可能通过网络1280与远程服务器系统1270交换电子信息。网络1280可以是支持远程服务器系统1270和机器人1110、1210之间的数据的双向交换的任何通信基础设施。网络1280可包括局域网(local area network,LAN)、广域网(wide area network,WAN)、互联网或者其他网络拓扑。网络1280可以是无线或有线网络的任何一者或者组合并且可包括以太网、蜂窝电话和Wi-Fi技术。通过网络1280的通信可通过各种协议的任何一者或者组合实现,包括802.11、蓝牙、GSM、3G、4G、5G、LTE或者其他定制的或标准的通信协议。在一些实现方式中,网络1280可包括光数据链路。
[0291] 在阶段(A)中,机器人1110、1210向服务器系统1270发送与存储在其本地缓存中的共享(公共和受限)嵌入有关的信息。机器人1110、1210可向服务器系统1270发送与共享嵌入有关的各种信息。例如,机器人1110、1210可发送嵌入本身、分类、用于生成嵌入的机器学习模型的版本以及与共享嵌入有关的任何其他信息或元数据。然而,机器人1110、1210不向服务器系统1270发送与存储在其本地缓存中的私密嵌入有关的信息。
[0292] 在示例系统1200中,机器人1110向服务器系统1270发送与受限嵌入“1”和公共嵌入“4”和“5”相关联的信息,该受限嵌入“1”和公共嵌入“4”和“5”分别与“乔的马克杯”、“茶杯”和“棒球帽”有关。机器人1110不向服务器系统1270发送与私密嵌入“2”和“3”相关联的信息,私密嵌入“2”和“3”分别与私密物体“钻戒”和“玩偶苏西”有关。
[0293] 类似地,在阶段(A)期间,机器人1210向服务器系统1270发送与存储在其本地缓存中的公共和/或受限嵌入相关联的信息。机器人1210可不向服务器系统1270发送与存储在其本地缓存中的任何私密嵌入相关联的信息。
[0294] 在阶段(B)中,机器人1110、1210从服务器系统1270接收由其他机器人提供给服务器系统1270的嵌入。机器人1110、1210可接收与其他机器人提供给服务器系统1270的共享嵌入中的一些或全部有关的信息。机器人1110、1210可将与这些接收的嵌入相关联的信息存储在其本地缓存中,并且它们可将接收的嵌入用于物体识别和分类,其方式与其使用其生成的私密和公共嵌入的方式相同。
[0295] 在一些实现方式中,服务器系统1270可与机群中的所有机器人1110、1210共享公共嵌入,但可只与机群中的机器人1110、1210的指定子集共享受限嵌入。例如,服务器系统1270可向机器人1110发送由其他机器人1210共享的那些公共嵌入,以及由与机器人1110在相似设置中操作的机器人共享的那些受限嵌入(例如,在在室内操作的机器人之间共享受限嵌入)或者由与机器人1110以相似角色操作的机器人共享的那些受限嵌入(例如,仅在在工厂中工作机器人之间共享受限嵌入)。与之共享特定嵌入的机器人1110、1210的子集可由生成了该嵌入的机器人的用户、由服务器系统1270、由系统管理员或者由另一手段指明。
[0296] 在示例系统1200中,机器人1110接收与一公共嵌入有关的信息,该公共嵌入与被分类为“榆树”的一个接收到的物体1235相关联。特别地,在图12的示例中,机器人1110接收到嵌入、分类和用于生成与榆树1235相关联的嵌入的机器学习模型版本。机器人1110的计算机系统将与接收到的“榆树”嵌入相关联的信息添加到机器人1110的本地缓存1150。在一些实现方式中,机器人1110的计算机系统可确定接收的嵌入的共享状态是“公共”,因为其是由另一机器人1210作为公共嵌入生成的。在一些实现方式中,机器人1110的计算机系统可确定接收的嵌入的共享状态是“接收的”,指示出该嵌入是由机器人1110接收的并且是由不同的机器人1210生成的。机器人1110的计算机系统可将附加元数据与接收的嵌入一起存储,例如接收到嵌入的日期和时间、生成了嵌入的其他机器人1210、生成嵌入的位置或者与接收的嵌入有关的任何其他信息。
[0297] 类似地,在阶段(B)期间,在示例系统1200中,其他机器人1210接收与由机器人1110发送到服务器系统1270的公共嵌入有关的信息。在图12的示例中,与关于由机器人
1110生成的“茶杯”和“棒球帽”嵌入的公共嵌入相关联的信息被服务器系统1270分发给机器人1210。机器人1210随后将与“茶杯”和“棒球帽”公共嵌入相关联的信息存储在其本地缓存中。在示例系统1200中,没有一个机器人1210在被授权接收与“乔的马克杯”相关联的受限嵌入的机器人的群组中(即,没有一个机器人1210与机器人1110在同一个家中)。结果,服务器系统1270不与机器人1210共享受限嵌入“乔的马克杯”。
[0298] 在将接收的嵌入添加到其本地缓存之后,机器人将能够使用该嵌入来识别和分类与接收的嵌入相关联的物体。例如,在系统1200中,虽然机器人1110先前没有遇到过榆树并且其机器学习模型尚未被训练来认识榆树,但下次机器人1110遇到榆树时,其将能够基于接收的嵌入将其识别为“榆树”。这样,机器人1110能够利用机群中的其他机器人1210的学习来改善其物体识别和分类性能。
[0299] 图13是图示出用于机器人对嵌入的重生成和存储的示例系统1300的图。在一些实现方式中,在其本地缓存中存储有私密和/或受限嵌入的机器人可例如从远程服务器系统接收对其机器学习模型的更新。因为嵌入对于给定的机器学习模型是唯一的,所以利用先前的机器学习模型生成的存储在机器人的本地缓存中的私密和/或受限嵌入不与基于公共嵌入训练的经更新的机器学习模型兼容。结果,为了使得机器人能够继续利用经更新的机器学习模型来识别和分类与私密嵌入相关联的物体,机器人的计算机系统可生成新的经更新的私密嵌入。机器人的计算机系统通过向经更新的机器学习模型输入与私密嵌入相关联的原始和/或经处理的传感器数据来生成经更新的私密嵌入。机器人的计算机系统随后将重生成的私密嵌入与关联的原始和/或经处理的传感器数据一起存储在其本地缓存中。在一些实现方式中,计算机系统从缓存去除与先前机器学习模型相关联的私密和/或受限嵌入。图13包括阶段(A)至(C),它们表示数据的流程。
[0300] 系统1300包括系统1100和1200的同一机器人1110,以及来自系统1200的远程服务器系统1270。机器人1110的计算系统包括机器学习模型1340,以及本地缓存1150。在图13中,如所指示的,示出了私密嵌入的重生成之前和之后的机器人1110的本地缓存。
[0301] 在阶段(A)中,机器人1110在其本地缓存中维护嵌入。最初,机器人1110维护本地缓存1150(“重生成前的本地缓存”),其存储由机器人1110生成的私密和公共嵌入,以及由服务器系统1270分发给机器人1110的接收到的公共嵌入。在示例系统1300中,机器人的本地缓存1150存储由机器人1110生成的一个受限嵌入(分类为“乔的马克杯”的嵌入“1”)、由机器人1110生成的两个私密嵌入(分别分类为“钻戒”和“玩偶苏西”的嵌入“2”和“3”)、由机器人1110生成的两个公共嵌入(分别分类为“茶杯”和“积木”的嵌入“4”和“5”)和一个接收到的公共嵌入(分类为“榆树”的嵌入“6”)。这些嵌入全都是利用机器学习模型的版本1.0生成的,如本地缓存1150的表格中所指示。
[0302] 在阶段(B)中,机器人1110从服务器系统1270接收经更新的机器学习模型1343。在一些情况下,经更新的机器学习模型1343可能已被服务器系统1270利用由机器人1110和机群中的其他机器人与服务器系统1270共享的公共嵌入信息进行了更新和训练。结果,实现经更新的机器学习模型1343的机器人1110可能够正确地分类与共享的公共嵌入有关的物体,而无需参考其本地缓存1150中的嵌入。然而,因为经更新的机器学习模型1343只是基于公共嵌入来训练的,所以为了继续对与私密和/或受限嵌入相关联的物体正确分类,机器人1110必须利用经更新的机器学习模型1343来更新和重生成这些嵌入。
[0303] 在一些实现方式中,服务器系统1270可经由网络将经更新的机器学习模型1343发送到机器人1110,例如图12的网络1280。在一些示例中,经更新的机器学习模型1343可以是对存储在机器人1110的计算系统中的机器学习模型1340实现的模型的完全替代。在一些示例中,经更新的机器学习模型1343可只替代机器学习模型1340实现的先前模型的一些。例如,服务器系统1270可发送节点权重、层间节点连通性信息或者层内节点连通性信息中的一些或全部来更新机器学习模型。在一些示例中,服务器系统1270可通过只发送机器学习模型1343的相对于由机器学习模型1340实现的先前模型变化了的那些参数(例如,节点权重、节点互连性)来更新机器人的机器学习模型1340。在示例系统1300中,机器人1110的机器学习模型1340先前实现了机器学习模型的版本1.0并且服务器系统1270向机器人1110发送了机器学习模型1343的经更新版本2.0。
[0304] 在从服务器系统1270接收了经更新的机器学习模型1343之后,机器人1110的计算机系统利用经更新的机器学习模型1343来更新(例如,替代)机器学习模型1340。在一些实现方式中,机器人1110的计算机系统可通过将与经更新的机器学习模型1343相关联的一个或多个参数存储在机器人1110的存储器系统中来更新机器学习模型1340。在一些示例中,机器人1110可从机器人的计算机系统的存储器覆写或去除机器学习模型的先前版本。
[0305] 在阶段(C)中,机器人1110的计算机系统重生成存储在其本地缓存1150中的私密和受限嵌入。为了重生成私密嵌入1142,机器人1110的计算机系统向经更新的机器学习模型1340输入与原始嵌入1142相关联的原始和/或经处理的传感器数据1115。在一些示例中,传感器数据1115包括被机器人1110的计算机系统用于利用机器学习模型的先前版本生成原始嵌入1142的同样的原始或者经处理的数据1115。被经更新的机器学习模型1140使用的数据可包括由机器人1142上的传感器收集的原始传感器数据1115,可包括由机器人1110的计算机系统提取的物体1122的特征的经处理的传感器数据1115,以及其他数据,包括与嵌入1142有关的元数据。在一些情况下,传感器数据1115可被存储在机器人的本地缓存1150中。
[0306] 基于将数据1115输入到经更新的机器学习模型1340中,机器学习模型1340生成新的私密和/或受限嵌入1342。机器人1110的计算机系统将这个新嵌入1342和与先前嵌入1142相关联的分类1147和共享状态1162关联起来。新嵌入1342在更新前可不同于存储在本地缓存1150中的先前嵌入1142。例如,新嵌入1342可包含与先前嵌入1142不同的值,或者可具有不同维度。
[0307] 机器人1110的计算机系统随后将包括新嵌入1342以及与嵌入1342相关联的分类1147、共享状态1162和传感器数据1115的重生成的嵌入数据1355存储在本地缓存1150中。
在一些实现方式中,机器人1110的计算机系统也可保存用于生成新的私密和/或受限嵌入的机器学习模型1343的版本。
[0308] 在一些实现方式中,在接收经更新的机器学习模型1343之后或者在重生成先前的私密和/或受限嵌入之后,机器人1110的计算机系统可从本地缓存去除与机器学习模型的先前版本相关联的嵌入。例如,机器人1110的计算机系统可从本地缓存去除与由机器学习模型的先前版本生成的私密、公共、受限和接收的嵌入有关的信息。
[0309] 例如,在系统1300中,在利用经更新的版本2.0机器学习模型1343来更新机器学习模型1340之后,机器人1110的计算机系统生成三个新的嵌入来替代利用机器学习模型的版本1.0生成的其本地缓存1150(“重生成前的本地缓存”)中的三个先前的受限和私密嵌入(嵌入“1”、“2”和“3”)。机器人1110的计算机系统随后将先前嵌入的分类、传感器数据和共享状态与新嵌入关联起来并且将重生成的嵌入数据1355存储到其本地缓存1150中(“重生成后的本地缓存”)。
[0310] 图13的示例示出了私密嵌入“3”(1142)的重生成,其与物体1122“玩偶苏西”相关联。机器人1110的计算机系统通过将与原始嵌入1142有关的传感器数据1115输入到经更新的机器学习模型1340来为物体1122生成新嵌入。这里,机器学习模型1340实现由服务器系统1270提供给机器人1110的机器学习模型1343的经更新版本2.0。
[0311] 经更新的机器学习模型1340生成与物体1122有关的“554039487109”的新私密嵌入1342。这里,利用机器学习模型版本2.0(1343)生成的“554039487109”的新的私密嵌入1342不同于利用先前机器学习模型版本1.0生成的“129057892039”的私密嵌入1142,虽然这些嵌入与相同物体1122有关并且是利用相同数据1115得出的。
[0312] 在图13的示例中,机器人1110的计算机系统将新嵌入1324与先前私密嵌入1142的分类1147(“玩偶苏西”)、共享状态1162(“私密”)和传感器数据1115关联起来,然后将新的私密嵌入1324以及分类1147、共享状态1162、传感器数据1115和用于生成嵌入的机器学习模型的版本(“2.0”)存储在本地缓存1150中(“重生成后的本地缓存”)。机器人1110的计算机系统还从本地缓存1150去除与利用先前机器学习模型版本1.0生成的任何嵌入有关的信息。这里,机器人1110的计算机系统从本地缓存1150去除与私密物体1120和受限物体1121的先前嵌入有关的信息,以及与公共嵌入(分别与“茶杯”和“棒球帽”有关的条目“4”和“5”)和接收的嵌入(与“榆树”有关的条目“6”)有关的信息。
[0313] 在一些实现方式中,服务器系统1270可利用由机器人1110提供的公共嵌入和受限嵌入两者来生成经更新的机器学习模型1343(例如,经更新的模型是利用公共嵌入和受限嵌入两者来训练的)。在此情况下,机器人1110可能够利用经更新的机器学习模型1343来识别公共物体和受限物体并且机器人1110的计算机系统可只重生成和存储私密嵌入。
[0314] 随着新的机器学习模型被服务器系统1270提供给机器人1110,系统1300可重复阶段(A)至(C)。例如,服务器系统1270可向机器人1110发送经更新的机器学习模型版本3.0。在此情况下,机器人1110将更新其机器学习模型1140来实现经更新的机器学习模型版本
3.0并且生成新的私密和/或受限嵌入来替代利用机器学习模型版本2.0生成的嵌入数据
1355。机器人1110也可为利用机器学习模型版本2.0生成的任何额外的私密或受限嵌入生成新嵌入。
[0315] 图14是图示出用于机器人对私密嵌入的重生成和存储的过程1400的流程图。简言之,过程1400包括由机器人在该机器人的本地缓存中存储利用第一机器学习模型生成的第一嵌入,其中这些第一嵌入包括一个或多个第一私密嵌入(1402);由机器人通过通信网络从服务器系统接收第二机器学习模型(1404);由机器人利用第二机器学习模型为一个或多个第一私密嵌入的每一者生成第二私密嵌入(1406);由机器人将第二私密嵌入添加到机器人的缓存(1408);并且由机器人从机器人的缓存去除一个或多个第一私密嵌入(1410)。此过程可在每次机器人的机器学习模型被更新时被重复。
[0316] 更详细地说,过程1400包括由机器人存储利用第一机器学习模型生成的第一嵌入(1402)。在一些实现方式中,第一机器学习模型可以是用于对由机器人识别的物体分类的模型。机器学习模型可包括描述节点布置、层布置、节点互连性、层连通性、互连或节点权重(例如,突触权重)的信息,或者描述机器学习模型的体系结构和功能的其他参数。机器学习模型可以用硬件和软件的任何组合实现。在一些实现方式中,机器人的机群中的一个或多个机器人可实现相同的机器学习模型。在一些实现方式中,第一机器学习模型可能已由服务器系统提供给机器人。在一些实现方式中,机器人可在机器人的硬件中(例如,在机器人的缓存中)本地存储第一机器学习模型的拷贝。在一些实现方式中,机器人可访问存储在远程服务器系统(例如,云计算系统)上的第一机器学习模型的拷贝。
[0317] 机器人可在机器人的缓存中存储利用第一机器学习模型生成的第一嵌入。嵌入可例如是第一机器学习模型的表示物体的输出。在一些实现方式中,嵌入可以是多维数值、一个或多个数值、向量、张量、矩阵、阵列或者另一数值表示。
[0318] 在一些实现方式中,机器人可通过向机器学习模型输入与物体有关的传感器数据来为物体生成嵌入。在一些实现方式中,传感器数据可由机器人的传感器收集并且可包括图像或视频数据、深度数据、LIDAR、雷达、IR或邻近传感器数据。在一些实现方式中,机器人可在将传感器数据输入到机器学习模型来生成嵌入之前处理传感器数据。例如,机器人可处理传感器数据以提取与物体有关的统计或数值特征值。机器人也可过滤或变换传感器数据。机器人可将原始的、经处理的、经过滤的或者经变换的传感器数据的一些或全部输入到机器学习模型以生成嵌入。在一些实现方式中,机器人可存储用于生成一个或多个第一嵌入的传感器数据的一些或全部,包括原始的、经处理的、经过滤的或者经变换的数据。
[0319] 第一嵌入可包括一个或多个第一私密嵌入,其中第一私密嵌入是不与其他机器人或服务器系统共享的。例如,第一私密嵌入可表示机器人的用户不希望与服务器系统的其他机器人共享的私密物体(例如,个人物体、专有或机密物体、贵重物体等等)。
[0320] 机器人可通过各种技术的任何一者来确定第一嵌入是第一私密嵌入。例如,机器人可通过访问与第一嵌入相关联的共享状态来确定第一嵌入是第一私密嵌入。
[0321] 在一些实现方式中,机器人可访问与嵌入相关联的元数据,并且基于对照一个或多个共享规则分析元数据,机器人可确定嵌入是私密嵌入。元数据可例如是嵌入的分类、位置、日期或时间戳、与嵌入相关联的另一标记或标签或者嵌入表示的物体。元数据也可包括关于嵌入或者由机器人生成或接收的有关物体的其他信息。例如,元数据可包括描述物体的大小、形状、材料、成分或其他属性的信息。在一些实现方式中,机器人可将与一个或多个第一嵌入相关联的元数据存储在机器人的缓存中。
[0322] 在一些实现方式中,机器人可将一个或多个共享规则存储在机器人的本地存储器或缓存中。机器人可使用一个或多个共享规则来确定所识别的与物体相关联的嵌入是否是私密的。在一些示例中,共享规则可以是预定的(例如,默认规则)。在一些示例中,机器人可从服务器系统接收共享规则。在一些示例中,机器人的用户可定制或设置共享规则。在一些示例中,机器人可随着时间的流逝学习共享规则(例如,通过机器学习或其他自动化学习技术)。共享规则可基于各种因素的任何一者,包括与嵌入相关联的元数据、嵌入的分类、与嵌入相关联的物体的位置、与嵌入相关联的机器人的用户、或者其他因素。
[0323] 在一些实现方式中,存储在机器人的缓存中的第一嵌入可包括与服务器系统共享的一个或多个公共嵌入。公共嵌入可例如是表示机器人的用户希望与机器人的机群中的其他机器人共享的公共物体的嵌入。
[0324] 与私密嵌入类似,机器人可通过各种技术的任何一者确定特定嵌入是公共嵌入。例如,机器人可对照一个或多个共享规则分析与特定嵌入相关联的元数据以确定该嵌入是公共嵌入。
[0325] 在一些实现方式中,在第一嵌入包括一个或多个第一公共嵌入和一个或多个第一私密嵌入的情况下,机器人可将一个或多个第一公共嵌入提供给服务器系统并且不将一个或多个第一私密嵌入提供给服务器系统。
[0326] 在一些实现方式中,机器人可基于特定嵌入是私密的还是公共的来确定是否存储与一个或多个第一嵌入有关的传感器数据。例如,机器人可确定为一个或多个第一私密嵌入的每一者存储传感器数据,但不为一个或多个第一公共嵌入存储传感器数据。
[0327] 机器人可通过通信网络从服务器系统接收第二机器学习模型(1404)。第二机器学习模型可提供与第一机器学习模型相同的功能。在一些示例中,第二机器学习模型可以是第一机器学习模型的经更新或重训练的版本。第二机器学习模型可能已利用由机群中的一个或多个机器人提供的数据来更新或训练。在一些实现方式中,第二机器学习模型可以是第一机器学习模型的一对一替代。
[0328] 利用第二机器学习模型,机器人可为机器人的缓存中的一个或多个第一私密嵌入的每一者生成第二私密嵌入(1406)。在一些实现方式中,机器人可从存储的用于生成一个或多个第一私密嵌入的传感器数据生成第二私密嵌入。例如,机器人可通过向第二机器学习模型输入用于生成第一私密嵌入的原始或者经处理的传感器数据来生成第二私密嵌入。在一些情况下,机器人可通过向第二机器学习模型输入从用于为物体生成第一私密嵌入的传感器数据得出的特征值来为物体生成第二私密嵌入。
[0329] 在生成第二私密嵌入之后,机器人可将第二私密嵌入添加到机器人的缓存(1408)。在一些示例中,机器人也可从机器人的缓存去除一个或多个第一私密嵌入(1410)。
[0330] 在一些实现方式中,本地缓存中的第一嵌入可包括一个或多个公共嵌入。在接收到第二机器学习模型之后,机器人可基于确定嵌入是公共嵌入而从机器人的缓存中去除一个或多个公共嵌入。
[0331] 在一些实现方式中,本地缓存中的第一嵌入可包括由机器人通过通信网络从服务器系统接收的一个或多个接收的嵌入。例如,接收的嵌入可能是由机器人的机群中的不同机器人生成的并且是由该不同机器人与服务器系统共享的。机器人可确定第一嵌入的特定嵌入是接收的嵌入,并且在接收到第二机器学习模型之后,其可基于确定特定嵌入是接收的嵌入之一而从缓存中去除该特定嵌入。
[0332] 机器人可使用各种技术来确定要将关于观察到的物体的信息指定为公共的还是私密的。例如,当机器人获得描述物体的传感器数据时,机器人可基于传感器数据为该物体生成嵌入。机器人确定是将嵌入指定为私密嵌入还是公共嵌入,然后存储该嵌入和指定该嵌入是私密嵌入还是公共嵌入的数据。
[0333] 为了确定关于观察到的物体的信息应当是公共的(例如,与服务器系统和其他机器人共享)还是私密的,机器人可使用指示对由机器人获得的信息的共享的一个或多个限制的共享规则。这些限制可限制由机器人在某个时间或场所观察到的信息的共享,或者可限制描述具有某个物体类型或物体特性的物体的信息。类似地,这些限制可限制被应用了某些标签的信息的共享,例如个人指定,比如用户指明某个物品是某人的个人“最爱”物品。在一些实例中,用户可提供指出关于某个物体的信息应当被共享或者不应当被共享的具体指令。一般而言,限制和共享规则可由用户设置,或者可由机器人或促进共享的服务器系统设置。
[0334] 例如,在一些场所(例如,室外和公共场所中)观察到的物体可被设置为公共的,而在私密场所(例如,私人住宅或者用户指定为私密的场所)观察到的物体可被保持私密。当机器人观察到某个物品时,机器人可确定该物体或机器人的位置。机器人随后可确定该位置是否在对其不共享信息的预定区域内,例如用户可能标记为私密的住宅的某个房间,或者可以共享观察的公共场所。基于确定该位置在该预定区域内,机器人相应地将嵌入指定为公共或私密的。
[0335] 作为另一示例,机器人可为机器人观察到的物体确定物体类型,确定该物体类型是已被指定为私密或公共状态的物体类型的预定集合之一,并且机器人可基于物体类型确定来确定是否要将该嵌入指定为私密嵌入。
[0336] 一般而言,机器人可访问共享规则,然后基于物体的传感器数据或者处理传感器数据的结果,来确定共享规则限制对由共享数据描述的物体的信息的共享。基于确定共享规则限制对物体的信息的共享,机器人将物体的嵌入指定为私密嵌入。用户输入可指示一个或多个标准,包括对其限制信息的共享的时间、场所、物体类型或者物体特性。响应于此输入,机器人可存储将满足该一个或多个标准的物体的嵌入指定为私密嵌入的共享规则。确定是将嵌入指定为私密嵌入还是公共嵌入可包括确定该嵌入是否满足一个或多个标准。
[0337] 本说明书中描述的本发明的实施例和所有功能操作可以用数字电子电路实现,或者用计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等同物)实现,或者用它们中的一个或多个的组合来实现。本发明的实施例可实现为一个或多个计算机程序产品,即计算机程序指令的一个或多个模块,其被编码在计算机可读介质上,以供数据处理装置执行或者控制数据处理装置的操作。计算机可读介质可以是非暂态计算机可读存储介质、机器可读存储设备、机器可读存储基板、存储器设备、实现机器可读传播信号的组合物或者他们中的一个或多个的组合。术语“数据处理装置”涵盖了用于处理数据的所有装置、设备和机器,例如包括可编程处理器、计算机或者多个处理器或计算机。除了硬件外,装置还可包括为所关注的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。传播的信号是人工生成的信号,例如机器生成的电信号、光信号或电磁信号,该信号被生成来编码信息以传输到适当的接收器装置。
[0338] 计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言来编写,所述语言包括经编译或解释的语言,并且计算机程序可按任何形式来部署,包括被部署为独立程序或被部署为模块、组件、子例程或者适合用在计算环境中的其他单元。计算机程序不一定对应于文件系统中的文件。程序可被存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本)、存储在专用于所关注程序的单个文件中或者存储在多个协调的文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可被部署来在一个计算机或多个计算机上执行,所述多个计算机位于一个地点或分布在多个地点并由通信网络互连。
[0339] 本说明书中描述的过程和逻辑流程可通过一个或多个可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作并生成输出而执行功能,从而来执行。过程和逻辑流程也可由专用逻辑电路来执行,并且装置也可实现为专用逻辑电路,专用逻辑电路例如是FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
[0340] 适用于执行计算机程序的处理器例如包括通用和专用微处理器,以及任何种类的数字计算机的任何一个或多个处理器。一般而言,处理器将从只读存储器或随机访问存储器或者这两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。一般而言,计算机还将包括一个或多个大容量存储设备,或者操作性地耦合到一个或多个大容量存储设备以便从其接收数据或向其传送数据,或者既包括也操作性地耦合到一个或多个大容量存储设备,所述大容量存储设备用于存储数据,例如是磁盘、磁光盘或光盘。然而,计算机不是必须具有这种设备。另外,计算机可被嵌入在另一设备中,例如平板计算机、移动电话、个人数字助理(personal digital assistant,PDA)、移动音频播放器、全球定位系统(Global Positioning System,GPS)接收器,仅举几例。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,例如包括半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移除盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可被专用逻辑电路所补充,或者被包含在专用逻辑电路中。
[0341] 为了支持与用户的交互,本发明的实施例可实现在计算机上,该计算机具有用于向用户显示信息的显示设备,例如,CRT(阴极射线管)或LCD(液晶显示器)监视器,以及用户可用来向计算机提供输入的键盘和指点设备,例如鼠标或轨迹球。其他种类的设备也可用于支持与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或者触觉反馈;并且来自用户的输入可按任何形式被接收,包括声学、话音或者触觉输入。
[0342] 本发明的实施例可在计算系统中实现,该计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有用户可通过其来与本发明的实现方式交互的图形用户界面或Web浏览器的客户端计算机),或者一个或多个这种后端、中间件或前端组件的任何组合。系统的组件可由任何形式或介质的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网(local area network,“LAN”)和广域网(wide area network,“WAN”),例如互联网。
[0343] 计算系统可包括客户端和服务器。客户端和服务器一般可彼此远离并且通常通过通信网络来交互。客户端和服务器的关系是由于计算机程序在各计算机上运行且相互之间具有客户端-服务器关系而发生的。
[0344] 虽然上文详细描述了几个实现方式,但其他修改是可能的。例如,虽然客户端应用被描述为访问(一个或多个)代理,但在其他实现方式中,(一个或多个)代理可被由一个或多个处理器实现的其他应用所使用,例如在一个或多个服务器上执行的应用。此外,附图中描绘的逻辑流程要实现期望的结果并不要求所示出的特定顺序或者先后次序。此外,可以向描述的流程提供其他动作,或者可以从描述的流程中消除动作,并且可以向描述的系统添加其他组件,或者可以从描述的系统中去除组件。因此,其他实现方式在所附权利要求的范围内。
[0345] 虽然本说明书包含许多具体实现细节,但这些细节不应被解释为对任何发明的范围或可请求保护的范围的限制,而是对特定发明的特定实施例可能特有的特征的描述。本说明书中在分开的实施例的上下文中描述的某些特征也可在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可分开地或者按任何适当的子组合在多个实施例中实现。另外,虽然以上可将特征描述为按某些组合来动作,或者甚至最初权利要求是这样记载的,但来自要求保护的组合的一个或多个特征在一些情况下可被从该组合中删去,并且要求保护的组合可指向子组合或子组合的变体。
[0346] 类似地,虽然操作在附图中是按特定顺序描绘的,但这不应当被理解为为了实现期望的结果要求这种操作按所示出的特定顺序或按先后顺序执行,或者要求所有示出的操作都被执行。在某些情况中,多任务和并行处理可能是有利的。另外,在以上描述的实施例中各种系统模块和组件的分离不应当被理解为在所有实施例中都要求这种分离,并且应当理解所描述的程序组件和系统一般可被一起集成在单个软件产品中或被封装到多个软件产品中。
[0347] 已描述了主题的特定实施例。其他实施例在所附权利要求的范围内。例如,权利要求中记载的动作可按不同的顺序执行,而仍实现期望的结果。作为一个示例,附图中描绘的过程要实现期望的结果并非必然要求所示出的特定顺序或者先后顺序。在某些实现方式中,多任务和并行处理可能是有利的。